1

在 Main.as 我有以下内容:

package  {

    import flash.display.MovieClip;

    public class Main extends MovieClip {

        public var damage:Number;

        public function Main() {
            // constructor code

            var char:Character = new Character();
            addChild(char);
        }
    }
}

我还有另一个包叫做 Character.as

package  {

    import flash.display.MovieClip; 

    public class Character extends MovieClip{

        public function Character() {
            trace(damage);
        }
    }
}

我需要能够与角色分享 main.as 中设置的伤害。有没有办法让速度更全球化?

4

2 回答 2

2

为什么不破坏角色的公共财产,然后通过 Main 类可以轻松访问它,如下所示:

char.damage = 100;
trace (char.damage);

为此,只需将属性添加到您的 Character 类中,如下所示:

public class Character extends MovieClip {

    public var damage:Number;

    public function Character() {
        trace(damage);
    }
}

但是鉴于您的评论,我认为您宁愿一切都是全球性的并且随处可访问,而不是应用 OOP 概念。

如果是这样...只需将其定义为 Main 类中的公共静态,如下所示:

public static var damage:Number;

并在您执行此操作的任何地方访问它:

Main.damage = 100; 
trace(Main.damage);
于 2013-10-06T21:52:21.333 回答
0

还有另一种通过包发送值的方式(这种方式并不是真正共享变量,但它可能对您有用)。这段代码的作用是类 Character 创建了一个变量,这个变量从 Main 包中获取一个值:

将 character.as 更改为:

package  {

import flash.display.MovieClip; 

public class Character extends MovieClip{

    public function Character(a:int) {
      //output will be the integer 10   
              trace(a);
    }
}
}

和 main.as 至:

package  {

import flash.display.MovieClip;

public class Main extends MovieClip {

    private var damage:int = 10;

    private var char:Character = new Character(damage);

    public function Main() {

    }
}
}
  • 编辑:对实时应用程序没有用,因为 的值private var damage只会在private var char:Character = new Character(damage).
于 2013-10-06T23:07:25.027 回答