2012-06-25 18 views
0

我想要這種效果:在360度傳播中拍攝多顆子彈?

http://i.imgur.com/xGi46.png

所以,在我點擊,它使得使用子彈炸彈類型 - 影響。 到目前爲止,我的代碼如下。現在它只能在鼠標方向創建子彈。 對不起,如果代碼是混亂的。

shotDex = new Timer(timerDelay2); 
shotDex.addEventListener(TimerEvent.TIMER, shot); 

stage.addEventListener(MouseEvent.MOUSE_DOWN, shootBullet); 
stage.addEventListener(MouseEvent.MOUSE_UP, dontShoot); 

    public var angleRadian = Math.atan2(mouseY + 42.75,mouseX + 331.7); 
    public var angleDegree = angleRadian * 180/Math.PI; 
    public var speed1:int = 10; 

    public var shotDex:Timer; 
    public var timerDelay2:int = (250); 
    public function shot(tEvt:TimerEvent) 
    { 
     var _bullet2:bullet2 = new bullet2; 
     _bullet2.x = 300; 
     _bullet2.y = 300; 
     _bullet2.angleRadian = Math.atan2(mouseY + 42.75,mouseX + 331.7); 
     _bullet2.addEventListener(Event.ENTER_FRAME, bulletEnterFrame); 
     stage.addChild(_bullet2); 
    } 
    public function shootBullet(evt:MouseEvent) 
    { 
     var _bullet2:bullet2 = new bullet2; 
     _bullet2.x = 300; 
     _bullet2.y = 300; 
     _bullet2.angleRadian = Math.atan2(mouseY + 42.75,mouseX + 331.7); 
     stage.addChild(_bullet2); 
     _bullet2.addEventListener(Event.ENTER_FRAME, bulletEnterFrame); 
     shotDex.start(); 
    } 
    public function bulletEnterFrame(evt:Event) 
    { 
     var _bullet2 = evt.currentTarget; 
     _bullet2.x += Math.cos(_bullet2.angleRadian) * speed1; 
     _bullet2.y += Math.sin(_bullet2.angleRadian) * speed1; 
     _bullet2.rotation = _bullet2.angleRadian * 180/Math.PI; 
     if (_bullet2.x < 0 || _bullet2.x > 600 || _bullet2.y < 0 || _bullet2.y > 600) 
     { 
      stage.removeChild(_bullet2); 
      _bullet2.removeEventListener(Event.ENTER_FRAME, bulletEnterFrame); 
     } 
    } 
    public function dontShoot(evt:MouseEvent) 
    { 
     shotDex.stop(); 
    } 

回答

2

您需要提供用於每個子彈一個不同的角度,其中0弧度和2 * Math.PI弧度之間均勻間隔的值:

public function shootBulletCircle(evt:MouseEvent) { 
    var shots:Number = 12; // Number of shots in the circle 
    for (var i=0; i<shots; i++) { 
     var _bullet2:bullet2 = new bullet2; 
     _bullet2.x = 300; 
     _bullet2.y = 300; 
     _bullet2.angleRadian = (i/shots)*(2*Math.PI); 
     stage.addChild(_bullet2); 
     _bullet2.addEventListener(Event.ENTER_FRAME, bulletEnterFrame); 
    } 
} 

作爲一種可選的邊注:DisplayObject(這可能是類的超類您的Bullet s)具有rotation屬性,該屬性在繪製時會自動使用,但它預計的是以度爲單位的值。您可以嘗試計算度數,將其存儲爲子彈的旋轉值,並完全擺脫angleRadian

+0

完美的工作!非常感謝:D –

+0

很高興幫助,@Matt!如果你的問題解決了,你應該接受答案。這也可能適用於您之前的一些問題。 :) – CheeseWarlock