2012-11-19 32 views
3

我修正了。問題解決了。如何將精靈添加到box2d主體?

我是新來的as3和box2D,所以至少我在學習。我有一個問題,我的精靈(動畫片段)添加到一個動態的身體。精靈出現了,但它給了我一個錯誤,因爲所有的遊戲原型都不好。靜態我沒有任何問題。我能做什麼?

這是我的代碼:

private var player:b2Body; 
private var mc_player:MovieClip; 

首先我的動態身體功能的作用:

public function createPlayer(px:int, py:int):void 
    { 
     mc_player = new _pork(); 
     addChild(mc_player); 

     var playerDef:b2BodyDef = new b2BodyDef(); 
     playerDef.position.Set(px/worldScale, py/worldScale); 
     playerDef.type = b2Body.b2_dynamicBody; 


     var playerShape:b2PolygonShape = new b2PolygonShape(); 
     playerShape.SetAsBox(25/2/worldScale, 40/2/worldScale); 

     var playerForce:b2FixtureDef = new b2FixtureDef(); 
     playerForce.shape = playerShape; 

     player = world.CreateBody(playerDef); 
     player.CreateFixture(playerForce); 
    } 

那麼功能添加

我將它們設置爲變量的代碼之前mc(movieclip):

private function drawPlayer():void 
    { 
     mc_player.x = player.GetPosition().x * worldScale; 
     mc_player.y = player.GetPosition().y * worldScale; 
    } 

而在更新我叫它:

private function update(e:Event):void 
      { 
       drawPlayer(); 
       } 

其他禮儀我說,像組力和重力,這是沒問題的。 這是哪裏,我認爲是問題的一部分...

Flash中的錯誤:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo. at Main/drawPlayer() at Main/update()

我沒有任何想法,我怎麼能解決這個問題

任何幫助,請..

Thx everyone!

編輯:

解決方案:

對不起大家我在我的代碼失敗。錯誤在於,我從來沒有對遊戲說過,當玩家在舞臺上時(我的意思是在關卡中)而不是在菜單中......因爲這個,我在玩家出現之前就打電話給玩家。對不起我的錯誤.. 那麼,類似的東西來調用影片剪輯播放:

private function update(e:Event):void 
{ 
//Call movieclips 
if (mc_player) { 
drawPlayer(); } 
} 

回答

1

當/如何更新()獲取調用?在mc_player初始化之前是否創建了回調函數?

+0

我想你問我的是這樣的: addEventListener(Event.ENTER_FRAME,update); 這就是功能主體(主體) – Gabriel

+0

確保在添加ENTER_FRAME回調函數之前已將球員添加到階段。類似於:http://stackoverflow.com/a/13457986/1809570 – Gone3d

+0

是的,我修好了它...我編輯我的問題,並找到解決方案...至少我沒有任何問題..通過方式謝謝:) – Gabriel