這是因爲你只有1顆子彈。
可以創建子彈的陣列,因此改變
public var bullet:Bullet = new Bullet();
到
public var bullets:Array = [];
然後,
ship.addEventListener(MouseEvent.CLICK, shoot);
function shoot(e:MouseEvent):void
{
var b:Bullet=new Bullet();
b.addEventListener(Event.ENTER_FRAME, bulletflies);
stage.addChild(b);
bullets.push(b);
}
function bulletflies(e:Event):void
{
e.currentTarget.y -= 5;
if(e.currentTarget.y < 0 || e.currentTarget.y > stage.height) {
stage.removeChild(e.currentTarget);
bullets.splice(bullets.indexOf(e.currentTarget), 1);
}
}
- 編輯 -
響應於您的評論
我不喜歡有它自己的ENTER_FRAME
添加一行stage.addEventListener(Event.ENTER_FRAME, bulletflies);
下ship.addEventListener(MouseEvent.CLICK, shoot);
刪除b.addEventListener(Event.ENTER_FRAME, bulletflies);
,並更改事件處理程序,以每顆子彈的想法這樣的:
function bulletflies(e:Event):void
{
for each(var b:Bullet in bullets) {
b.y -= 5;
if(b.y < 0 || b.y > stage.height) {
stage.removeChild(b);
//bullets.splice(bullets.indexOf(b), 1);
}
}
}
問題是什麼? –
那麼,如果子彈在屏幕中間停下來,當我拍攝另一顆子彈時,是因爲我犯了一些錯誤。 – Daniel
使用上面的代碼只有一次子彈的實例將存在。既然你說在屏幕上可以有兩顆子彈,我假設你已經遺漏了代碼,你不斷創造更多的子彈? – Allan