如何向box2d体添加精灵?

时间:2012-11-19 14:31:44

标签: actionscript-3 flash box2d

我修好了。问题解决了。

我是as3和box2D的新手,所以至少我在学习。我有一个问题是将我的精灵(movieclip)添加到一个动态的身体。精灵出现,但它给了我一个错误,因为所有的游戏原型都很糟糕。随着静态我没有任何问题。我该怎么办?

这是我的代码:

在代码之前我将它们设置为变量:

 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:错误#1009:没有一个联盟的una piedde加入una propiedad   métododeuna referencia an un objeto nulo。在Main / drawPlayer()处   主/更新()

我不知道如何解决它

任何帮助,请..

大家好!

修改:

解决方案:

抱歉我的代码中的每个人都失败了。错误是我从未对游戏中的玩家说过,当它处于舞台中时(我的意思是在关卡中)而不是在菜单中...因为这样我在播放玩家之前就打电话给玩家。抱歉我的错误.. 所以就像调用movieclip播放器一样:

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

1 个答案:

答案 0 :(得分:1)

何时/如何调用update()?是否在mc_player初始化之前创建了回调?