0

我希望我能以一种有意义的方式问这个问题。

我什至不确定我的标题问题是否是我需要做的。所以这里什么都没有。

我正在尝试创建一个游戏,基本上我正在创建一个设置“地图”的二维数组。

stage.addChild(new Grid5(stage,g1A,20,20));

所以 stage 是我的 stageReference,g1A 是我的“grid1Array”,然后是 x 和 y。在 Grid5 中,我运行一个 for 循环来检查数组中所有内容的值,如果找到 2,它会创建一个新的“播放器”

然后玩家在地图上设置并添加键盘事件侦听器,但在这个游戏中有 2 或 3 个地图,因此有 2 或 3 个玩家(每个地图上 1 个)。这一切都很好,一切正常,但是玩家需要到达地图上的某个位置,当他们这样做时,我将布尔值设置为 true。每个玩家都有自己的布尔值......我需要做的是找到一种方法来检查所有 3 个玩家的布尔值是否都设置为 true 以知道游戏已经结束。

所以我有一个名为finished(). 问题是,如果我把它放在 Player 类中,我只能检查它自己的布尔值,这意味着当任何 3 个玩家结束时,游戏就会结束。我以为我需要将布尔值的结果传递回构造函数,然后循环遍历所有玩家,但是我不确定如何引用它们,因为它们是在网格类中创建的。

4

1 回答 1

0

拳法

舞台如何添加事件监听器(或者您可以在播放器的某些父级上添加事件监听)。

stage.addEventListener("Finish", onPlayerFinish);

private function onPlayerFinish(e:Event):void {
    var player:Object = e.target;
}

玩家如何调度事件

player.dispatchEvent("Finish", true, false);

假设你有一个名为 Main 的类来控制事物。

  1. 创建玩家时,派发一个事件通知添加了新玩家,在 Main 中可以使用字典来保留玩家,如 dic[player1] = false, dic[player2] = false, false 表示玩家没有' t 完成,true 表示完成。

  2. 当一个玩家结束时,你也可以发送一个事件来通知玩家已经结束,并设置 dic[targetPlayer] = true。然后使用 dic 进行循环检查,当所有值都为真时游戏结束。

关于气泡 气泡流的链接

另一种方式

使用全局变量来保存玩家状态(不是一种优雅的方式)。您可以通过 set 函数更新全局变量,然后在调用更新函数时检查播放器状态。

于 2013-08-13T09:51:05.350 回答