直した。問題が解決しました。
私は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();
}
セットフォースや重力など、私が追加した他のプロパティは、問題ではありません。これが問題だと思う部分です...
フラッシュのエラー:
TypeError:エラー#1009:no se puede acceder a unapropiedadoaunmétododeunareferenciaa unobjetonulo。Main / drawPlayer()でMain / update()で
どうすれば修正できるのかわかりません
助けてください。
みなさん、ありがとう!
編集:
解決:
申し訳ありませんが、コードに失敗しました。エラーは、メニューにないステージ(レベル内を意味する)にいるときにプレーヤーに電話をかけるとゲームに言ったことがないということでした...このため、プレーヤーが表示される前にプレーヤーに電話をかけていました。私の間違いについて申し訳ありません。それで、ムービークリッププレーヤーを呼び出すためのそのようなものです:
private function update(e:Event):void
{
//Call movieclips
if (mc_player) {
drawPlayer(); }
}