使变量对所有 类、ActionScript 3 可用

Making variables available to all classes, ActionScript 3

我在我的 fla 文档 class (main.as) 中声明了一些 variables。我希望我所有程序的 classes.

都可以访问这些 variables

深入细节:

main.as-class 声明了一些 public variables。然后它继续添加一个名为 scene 的 MovieClip 实例,它基本上用作我程序其余内容的容器。最后,它在 scene 中添加了一些 children。这些 children 的 class 从这里接管。

所以层次结构基本上是这样的:stage=>scene=>children.

应用本身:

当您打开程序时,您会看到一个迷你游戏列表。选择小游戏后,将添加该小游戏的 child,即 scene.

内的 child

无论您选择的是什么小游戏,都会有一个 scoreboard 系统来确定您的积分,即 variables.

每个迷你游戏都会以自己的方式操纵这些点和 scoreboard 条件。这些条件和点(variables)简单地声明在main.as.

感谢所有帮助!

另一个选项(假设以前的答案)正在使用 static 关键字

a static variablefunction 将随时随地可用而无需定义定义它们的 class 的任何实例。 请注意,静态函数仅在其内部接受静态变量。 现在,例如,如果您在 Main class

中定义了这个(以下代码)
public static var myGlobalVariable:*;

要访问 myGlobalVariable,只需从任何地方使用它:

Main.myGlobalVariable;

对于这个问题通常好的解决方案是:如果一个对象需要一些东西,这个东西作为参数传递给它。

Each mini-game will manipulate these points and scoreboard conditions in it's own way. These conditions and points (variables) are simply declared in main.as.

你的积分不应该是像int这样的基本变量,例如:

var points:int = 0;

问题在于您不能通过引用传递它们。这意味着您不能将它们传递给游戏。如果这样做,则会创建一个副本,游戏只会修改其副本。

相反,您应该为您的积分创建一个 class,我们称之为 Score

package
{
    public class Score
    {
        private var _points:int;

        public function Score ()
        {
            _points = 0;
        }

        public function get points():int
        {
            return _points;
        }

        public function set points(value:int)
        {
            _points = value;
        }
    }
}

然后在main.as中实例化一个Score对象:

var score:Score = new Score();

当您创建游戏时,将该对象传递给您的每个游戏,例如:

var game:Game1 = new Game1(score);

现在每个游戏都知道 Score 对象并且可以操纵该对象。例如,每个游戏都可以使用其构造函数接收到的对象的引用来执行以下操作:

score.points += 5;

Scoreclass代表scoreboard系统。


tl;博士

  1. 创建一个专用的 class,其中包含与得分和记分板相关的所有变量。
  2. main.as
  3. 中创建 class 的实例
  4. 将实例传递给每个单独的游戏,以便它可以操纵分数