从单独的 class 访问变量
Accessing Variables from separate class
大家好,我正在尝试使用我的主 class SmashyFoodEngine
从名为 mcPressMachine
的单独 class 访问布尔变量。我想做的是当分数 >= 6 时,然后在我的主引擎中像这样更改布尔值 Class Enter Frame Event:
if (nScore >= 6)
{
for each(var AllPresses:mcPressMachine in aPressMachineArray)
{
AllPresses.level_1 = false;
AllPresses.level_2 = true;
}
}
在我的 mcPressMachine
class 中,我设置了布尔值来控制接下来将播放时间轴上该影片剪辑 class 的哪些帧。所以基本上,如果 level_1 为真,则从 (1,8) 开始播放随机帧,如果 level_2 为真,则播放帧 (9,13) 等......在 pressMachine [=32] 中的设置就像这样=]:
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);
}
}
所以当我跟踪它并且分数 >= 6 时,布尔值完美地改变但屏幕上没有任何反应。影片剪辑完全相同,不会更改为 level_2 帧 (9-13);
这也是我的主 Class 中添加到舞台上的电影剪辑,我正在尝试更改:
private function addNewPressMachines():void
{
//have array of press machines come out 5 at a time.
for (var i:int = 0; i < 2; i++)
{
//trace(aPressMachineArray.length + "PRESS MACHINES");
pressMachine = new mcPressMachine();
pressMachine.x = startPoint.x + (xSpacing * i);
pressMachine.y = (stage.stageHeight / 2);
stage.addChildAt(pressMachine, 1);
aPressMachineArray.push(pressMachine);
pressMachine.inner.top.visible = false;
pressMachine.inner.top.topText.text = " " + sharedObjectHighScore.data.highScore;
}
}
谁能看看我做错了什么?我没有收到任何错误,只是无法正常工作。任何建议都会很棒。谢谢!
这是我目前能做的最好的。
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.
}
这会将您的参数从中传递到构造函数代码中并且将值保存在该class实例的属性中。
或者更简单
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
参数。只有当你需要这个 class 的实例有一个 _level
属性 用于其他事情时,这才是真正必要的。你看我也可以这样做:
public function MyClass(lev:int=1):void{
if (lev == 1){
// do stuff
} else if (lev==2){
// etc
}
其中我在 class 定义和构造函数代码中都省略了 _level
属性 的声明。这意味着您可以将变量传递给构造函数,而无需将该信息永久存储在 class 的特定实例中,但这些参数仍然会永久影响结果。
然后当您实例化该 class 的新实例时,只需执行
var myInstance = new MyClass(true, false); // using the first example
或者我更好、更简单的版本
var myInstance:MyClass = new MyClass(2); // for the second example
大家好,我正在尝试使用我的主 class SmashyFoodEngine
从名为 mcPressMachine
的单独 class 访问布尔变量。我想做的是当分数 >= 6 时,然后在我的主引擎中像这样更改布尔值 Class Enter Frame Event:
if (nScore >= 6)
{
for each(var AllPresses:mcPressMachine in aPressMachineArray)
{
AllPresses.level_1 = false;
AllPresses.level_2 = true;
}
}
在我的 mcPressMachine
class 中,我设置了布尔值来控制接下来将播放时间轴上该影片剪辑 class 的哪些帧。所以基本上,如果 level_1 为真,则从 (1,8) 开始播放随机帧,如果 level_2 为真,则播放帧 (9,13) 等......在 pressMachine [=32] 中的设置就像这样=]:
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);
}
}
所以当我跟踪它并且分数 >= 6 时,布尔值完美地改变但屏幕上没有任何反应。影片剪辑完全相同,不会更改为 level_2 帧 (9-13);
这也是我的主 Class 中添加到舞台上的电影剪辑,我正在尝试更改:
private function addNewPressMachines():void
{
//have array of press machines come out 5 at a time.
for (var i:int = 0; i < 2; i++)
{
//trace(aPressMachineArray.length + "PRESS MACHINES");
pressMachine = new mcPressMachine();
pressMachine.x = startPoint.x + (xSpacing * i);
pressMachine.y = (stage.stageHeight / 2);
stage.addChildAt(pressMachine, 1);
aPressMachineArray.push(pressMachine);
pressMachine.inner.top.visible = false;
pressMachine.inner.top.topText.text = " " + sharedObjectHighScore.data.highScore;
}
}
谁能看看我做错了什么?我没有收到任何错误,只是无法正常工作。任何建议都会很棒。谢谢!
这是我目前能做的最好的。
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.
}
这会将您的参数从中传递到构造函数代码中并且将值保存在该class实例的属性中。
或者更简单
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
参数。只有当你需要这个 class 的实例有一个 _level
属性 用于其他事情时,这才是真正必要的。你看我也可以这样做:
public function MyClass(lev:int=1):void{
if (lev == 1){
// do stuff
} else if (lev==2){
// etc
}
其中我在 class 定义和构造函数代码中都省略了 _level
属性 的声明。这意味着您可以将变量传递给构造函数,而无需将该信息永久存储在 class 的特定实例中,但这些参数仍然会永久影响结果。
然后当您实例化该 class 的新实例时,只需执行
var myInstance = new MyClass(true, false); // using the first example
或者我更好、更简单的版本
var myInstance:MyClass = new MyClass(2); // for the second example