2015-08-21 38 views
0

我正在使用AS3在Flash CS4中製作自上而下的射擊遊戲。在Flash CS4 AS3中使用localToGlobal

當我射擊子彈。我已經將其開始的位置設爲player.x和player.y。但這正是玩家動畫片的「頭像」所在。我希望它是從槍的地方創建的。

我在播放器movieclip內製作了另一個名爲「NewShootingPoint」的動畫片段,並將其定位在槍的位置。

我無法找到任何適當的localToGlobal引用來指導我。我知道localToGlobal將movieclip的本地位置轉換爲全球位置。但我該怎麼做?

我嘗試這樣做:(新代碼)

package { 

import flash.display.MovieClip; 
import flash.geom.Point; 
import flash.display.Stage; 
import flash.events.MouseEvent; 
import flash.events.Event; 

public class Main extends MovieClip { 

    //var myPoint : Point = new Point(340.1, 232.2); 
    var player : Player = new Player; 
    var origin : Gun = new Gun(); 
    var bullet : Bullet = new Bullet();  

    public function Main() { 

     stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); 
     player.x = stage.stageWidth/2; 
     player.y = stage.stageHeight/2; 
     stage.addChild(player); 

    } 

    function onMouseDownHandler(e:Event) { 

     // I want this to happen. 
     bullet.x = origin.x; 
     bullet.y = origin.y; 
     // But it's still stuck at (0,0) 
     stage.addChild(bullet); 
     bullet.addEventListener(Event.ENTER_FRAME, thingy); 

    } 

    function thingy(e:Event) { 

     bullet.x += 10; 
     bullet.y += 10; 

    } 

} 

} 

是。我知道我應該使用類。我會稍後再做。 請指教!

+0

localToGlobal用於獲取物體的座標根據階段,但因爲你添加的一切舞臺,開始與localToGlobal是沒有用的,你的。 – BotMaster

回答

0

The documentation on localToGlobal is here.

的關鍵是瞭解和使用方法,對正確的本地座標空間和局部座標,其文檔狀態清楚,但仍然會造成混淆。

根據我的經驗,儘管使用目標對象的x,y作爲本地點本能,但通常最簡單的方法是使用目標對象作爲點的本地座標空間0,0。例如,你的情況,這將是:

var bulletOrigin:Point = player.shootingPoint.localToGlobal(new Point(0, 0));