2013-09-21 37 views
0

我正在制作一个游戏,让玩家(枪)射击敌人(坏人)以获得分数。我已经设置了它,所以你有三条生命(生命),直到它结束。我正在尝试添加一个addLife函数,该函数在您的播放器收集对象(waterMelon)时起作用,它会获得生命。我添加了一个运行addLife函数的计时器事件,该函数每5秒将一个影片剪辑的实例添加到舞台上。在该函数中,ive创建了另一个名为checkCollisions的函数,用于检查玩家的碰撞情况,将物体从舞台上移除,然后添加生命。在AS3中检测到碰撞时移除对象

var timer2:Timer = new Timer(5000); 

timer2.addEventListener(TimerEvent.TIMER, addLife); 
timer2.start(); 
var watermelon:waterMelon = new waterMelon(); 

function addLife(evt:TimerEvent):void{ 
    watermelon.x = Math.random() * stage.stageWidth; 
    watermelon.y = Math.random() * stage.stageHeight; 

    addChild(watermelon); 
    watermelon.push(waterMelon); 

    checkCollision(); 
} 

function checkCollision(){ 
    if (gun.hitTestObject(watermelon)){ 
    removeChild(watermelon); 
    lives++; 
    livesDisplay.gotoAndStop(livesDisplay.currentFrame-1); 
    } 
} 

的作品是西瓜增添了舞台,但是当我的球员与它相撞,它不会从舞台上删除代码的唯一部分。有人可以告诉我,当玩家与它碰撞时,我怎样才能让我的西瓜完全从舞台上消失,并为我的玩家增添了生命。每个对象再次等于这个; =播放器,西瓜 =对象/西瓜, =生命,livesDisplay =生命物理显示。

+1

什么是watermelon.push(waterMelon);意思? – Pan

回答

0

您试图从舞台上删除数组(西瓜)而不是对象(waterMelon)。虽然通过外观你正在使用阵列,所以你将不得不找到与阵列西瓜枪相撞的对象的索引。你用for循环做这个。

for (melonCount:int = 0; melonCount>watermelon.length;melonCount--) 
{ 
if (gun.hitTestObject(watermelon[melonCount])) 
{ 
    removeChild(watermelon[melonCount]) 
    watermelon.splice(melonCount, 1) 
    melonCount-- 
} 
}