【发布时间】:2017-10-11 15:55:45
【问题描述】:
首先感谢您对阅读此问题的任何人的关注
我是印度尼西亚人,如果我的英语不好,请见谅。
我目前正在一个学校项目中使用 Flash ActionScript 3 或 Unity 创建触摸屏 Android 游戏,我当前的项目是使用 Flash 和 ActionScript 3 制作的。我目前的工作是一个类似于 Feeding Frenzy 的游戏,其中涉及一名女性潜水员将消灭掉入水下的鱼弹。
我正试图让潜水员警告屏幕上的所有炸弹。我有一个 BombsLayer 类,它将调用一个 RegularBomb 类以随机 x 位置。所有RegularBomb实例都被放入一个数组中,然后我使用hitTestObject进行每个循环,因此如果潜水员击中movieclip内的透明圆圈,则会出现一个感叹号并将潜水员类中的readyToDefuse布尔值设置为true,并且当潜水员是远离炸弹,布尔值将设置为假,感叹号将消失。
我的问题是潜水员只能与数组中的最后一个炸弹影片剪辑实例进行交互。当第一个炸弹子添加到数组中并且潜水员到达它时,会出现感叹号,但是每次实例化新炸弹时,感叹号都会消失,我必须让潜水员移动到实例化的新炸弹以制作标志出现。
我已阅读有关此问题的建议:AS3 - array hit test in 'for each' loop only works properly with last object in array 删除 for each 循环中的 else 语句,但删除它将使 readyToDefuse 保持为 True 并且感叹号仍然出现。
我已经进行了谷歌搜索,但似乎没有任何问题可以解决我的问题,我必须在一周内完成这个游戏直到演示,这让我在过去的几天里感到困惑..
这是我的 Bombslayer 类的完整代码:
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
public class BombsLayer extends MovieClip{
public var area:Sprite;
public var bombs:Array;
public var bomb:RegularBomb;
public var bombground:BombGround;
public var diver:Diver;
public var warner:BombWarn;
public function BombsLayer(character:Diver, warn:BombWarn){
// constructor code
area = new Sprite();
area.graphics.beginFill(000000, 0);
area.graphics.drawRect(0,0,2200,720);
area.graphics.endFill();
addChild(area);
diver = character;
warner = warn;
bombs = new Array();
var newBomb = new RegularBomb(Math.random()*area.width, diver, warner);
bombs.push(newBomb)
addChild(newBomb);
bombground = new BombGround(0, 670, this);
addChild(bombground);
this.addEventListener(Event.ENTER_FRAME, moveBomb);
}
function moveBomb(event:Event){
if(Math.random() <= 0.0005){
var newBomb = new RegularBomb(Math.random()*area.width, diver, warner);
bombs.push(newBomb)
addChild(newBomb);
}
for each(var bomb:RegularBomb in bombs){
bomb.moveDown();
if(diver.hitTestObject(bomb)){
warner.visible = true;
diver.readyToDefuse = true;
}
else{
warner.visible = false;
diver.readyToDefuse = false;
}
}
}
}
}
如果需要我也可以上传完整的项目..
所有帮助将不胜感激。 谢谢!
【问题讨论】:
标签: arrays actionscript-3 flash collision-detection movieclip