所以...我正在制作一个国际象棋游戏,并试图让“公共(public)静态 boolean 值”(转弯)决定哪个玩家可以下棋。这个 boolean 值属于一个类 (Board.as),它导入所有棋子的所有类(例如 QueenW.as(白皇后))。
我尝试了多种方法:尝试让函数不再运行,并将片段(按钮)替换为其他对象(不可点击的动画片段)。决定选择后者。我已经在 ENTER_FRAME 函数中跟踪了棋子类和 Board 类中的 boolean 值。当值发生变化时,两者似乎都能正确追踪。
问题是:Flash 不会删除棋子并将其替换为不可单击的对象,即使它应该发生的类 (Board.as) 在跟踪时确实会监听 boolean 值。有人知道解决方案吗?
我的一小段代码,与问题相关:
Board 类(这是我的 .fla 文件的文档类)
package
{
import QueenWclass; //imports the class used for example.
public class Board extends MovieClip
{
public static var turn:Boolean = new Boolean; //creates public static bool.
var queenW:QueenWclass = new QueenWclass(); //creates aforementioned chess-piece.
var queenWnoturn:QueenWnoturn = new QueenWnoturn; //creates a non-clickable object.
}
public function Board()
{
turn = true;
this.addEventListener(Event.ENTER_FRAME, frameEnter);
addChild(queenW); //adds pieces to the screen.
}
if (turn == true)
{
}
if (turn == false)
{
removeChild(queenW); //Removes chess-piece.
addChild(queenWnoturn); //Adds a non-clickable object.
}
}
还有我的 QueenWclass.as 类:
package
{
public class QueenWclass extends MovieClip
{
var queenW:QueenW = new QueenW();
}
public function QueenWclass()
{
addChild(queenW);
this.addEventListener(MouseEvent.CLICK, CLICKqueenW);
}
function CLICKqueenW(event.MouseEvent):void
{
Board.turn = false;
}
}
我希望我正确且易于理解地编写了这个示例。我的项目没有真正的时间限制,因为我已经不得不在一个小时前完成它(但由于努力以及我在这个相当复杂的游戏中取得的进展,仍然得到了 6/10)。我只想自己完成它...提前致谢!
最佳答案
可能是代码没抄对或者有小问题。
这段代码:
if (turn == true)
{
}
if (turn == false)
{
removeChild(queenW); //Removes chess-piece.
addChild(queenWnoturn); //Adds a non-clickable object.
}
只会运行一次,创建“Board”时,“turn”状态改变时不会运行。
关于actionscript-3 - AS3 : if-function doesn't listen to a boolean in another class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13194651/