我解决了。问题解决了。
我是 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: No se puede acceder a una propiedad oa un método de una referencia a un objeto nulo。在 Main/drawPlayer() 在 Main/update()
我不知道如何解决它
任何帮助,请..
谢谢大家!
编辑:
解决方案:
对不起,我的代码失败了。错误是我从来没有说过游戏在舞台上(我的意思是在关卡中)而不是在菜单中时调用玩家......因为这个我在出现玩家之前调用了玩家。对不起我的错误..调用movieclip播放器是这样的:
private function update(e:Event):void
{
//Call movieclips
if (mc_player) {
drawPlayer(); }
}