我希望我能以一种有意义的方式提出这个问题。
我甚至不确定我的标题问题是否是我需要做的。所以这里没什么。
我正在尝试创建一个游戏,基本上我正在创建一个2D数组,其中列出了一个“地图”。
stage.addChild(new Grid5(stage,g1A,20,20));
所以舞台是我的舞台参考,g1A是我的“grid1Array”,然后是x和y。 在Grid5里面我运行for循环来检查我的数组中的所有内容的值,如果它找到2就会创建一个新的“播放器”
播放器然后在地图上设置并添加键盘事件侦听器,但在此游戏中有2或3个地图,因此有2或3个玩家(每个地图上1个)。这一切都很好,一切正常,但玩家需要到达地图上的某个位置,当他们这样做时,我将布尔值设置为true。每个玩家都拥有它自己的布尔值...我需要做的是找到一种方法来检查所有3个玩家布尔值是否设置为真,以便知道游戏已经完成。
所以我有一个名为finished()
的函数。问题是,如果我把它放在Player类中,我只能检查它自己的布尔值,这意味着当任何3个玩家到达终点时,游戏就会结束。我想我需要将布尔值的结果传递给构造函数,然后循环遍历所有玩家,但是我不知道如何引用它们,因为它们是在网格类中创建的。
答案 0 :(得分:0)
拳头方式
阶段如何添加事件监听器(或者您可以在播放器的某个父级上添加事件监听)。
stage.addEventListener("Finish", onPlayerFinish);
private function onPlayerFinish(e:Event):void {
var player:Object = e.target;
}
球员派遣事件
player.dispatchEvent("Finish", true, false);
假设您有一个名为Main的类来控制事物。
创建播放器时,调度一个事件以通知新播放器已添加, 在Main中你可以使用字典来保存玩家,比如dic [player1] = false,dic [player2] = false,false表示玩家没有完成,true表示已完成。
当一个玩家完成时,您还可以发送一个事件来通知播放已完成,并设置dic [targetPlayer] = true。然后用dic进行循环检查,当所有值都为真时游戏结束。
关于泡泡的链接 bubble flow
另一种方式
使用全局变量来保存播放器状态(不是优雅的方式)。您可以通过set函数更新全局变量,然后在调用更新函数时检查播放器状态。