从单独的类访问变量

时间:2016-10-14 19:37:31

标签: actionscript-3 flash-cs6 flashdevelop

嘿大家所以我试图使用我的主类<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="styles/bundle.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="UTF-8"> <meta property="og:title" content="UCR" /> <meta property="og:type" content="website" /> <meta property="og:image" content="" /> <meta property="og:image:width" content="200"> <meta property="og:image:height" content="500"> <!-- <meta property="og:url" content="http://dev.cr/" /> --> <meta property="og:description" content="" /> <!-- <script> $(".se-pre-con").fadeOut("slow"); </script> --> </head> <body aurelia-app="main" class="uscr-body"> <div class="se-pre-con"><!--<h1 class="uscr-h1-loading">Cargando UCR</h1> --></div> <script src="js/jquery-2.1.3.min.js"></script> <script src="js/bootstrap.min.js"></script> <script src="jspm_packages/system.js"></script> <script src="config.js"></script> <script> System.baseUrl = 'dist'; System.import('aurelia-bootstrapper').catch(console.error.bind(console)); </script> </body> </html> 从一个名为mcPressMachine的单独类中访问布尔变量。我想要做的是当得分为> = 6时,然后在我的主引擎类输入帧事件中更改布尔值:

SmashyFoodEngine

在我的if (nScore >= 6) { for each(var AllPresses:mcPressMachine in aPressMachineArray) { AllPresses.level_1 = false; AllPresses.level_2 = true; } } 课程中,我设置了布尔值来控制下一个播放时间轴上该Movie Clip类的哪些帧。所以基本上如果level_1为真,那么如果level_2为真,那么从(1,8)播放randome帧然后是frame(9,13)等...在pressMachine类中设置如此:

mcPressMachine

所以当我跟踪它并且得分为> = 6时,布尔值完全改变但屏幕上没有任何反应。电影剪辑完全相同,不会更改为level_2帧(9-13);

这也是我的主类中的影片剪辑添加到舞台上并且我试图改变:

public var level_1:Boolean = true;
public var level_2:Boolean = false;

private function init():void 
    {

        if (level_1)
        {
            var randomFrameLevel_1:Number = randomNumber(1, 8);
            this.gotoAndStop(randomFrameLevel_1);

        }

        if (level_2)
        {
            var randomFrameLevel_2:Number = randomNumber(9, 13);
            this.gotoAndStop(randomFrameLevel_2);

        }
    }

有谁能看出我做错了什么?我没有因为工作不正常而得到任何错误。任何建议都会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

这是我目前能做的最好的事情。

main

这会将您的参数传递给构造函数代码将值保存在该类实例的属性中。

甚至更简单

var _var1:Boolean;
var _var2:Boolean;

public function MyClass(first:Boolean,second:Boolean):void{
    this._var1 = first;
    this._var2 = second;
    if (_var1 == true) {
    // stuff
    }
    if (_var2 == true){
    // etc.
    }

您在此注意到我已将var _level:int; public function MyClass(lev:int=1):void{ this._level = lev; if (lev == 1){ // do stuff } else if (lev==2){ // etc } 值设置为等于_level参数。如果你需要这个类的实例为其他东西提供lev属性,那真的是必要的。你看我也可以这样做:

_level

我在类定义和构造函数代码中都省略了public function MyClass(lev:int=1):void{ if (lev == 1){ // do stuff } else if (lev==2){ // etc } 属性的声明。这意味着您可以将变量传递给构造函数,而不会将该信息永久存储在该类的特定实例中,但仍然会使这些参数永久地影响结果。

然后当您实例化该类的新实例时,只需执行

_level

或我更好,更简单的版本

var myInstance = new MyClass(true, false); // using the first example