2011-11-08 18 views
1

starlingオブジェクトに統合されているときに、box2dでDebugDrawを使用する際に問題があります。私はflash.display.spriteを使用して問題を持っているとさえ をstarling.core.Starlingする誰もが解決策を持っているん上記のコードではas3 starling using box2d

var debugSprite:Sprite = new Sprite(); 
addChild(debugSprite); 
var debugDraw:b2DebugDraw = new b2DebugDraw(); 
debugDraw.SetSprite(debugSprite); 
debugDraw.SetDrawScale(30); 
debugDraw.SetLineThickness(1.0); 
debugDraw.SetAlpha(1); 
debugDraw.SetFillAlpha(0.4); 
debugDraw.SetFlags(b2DebugDraw.e_shapeBit); 
PhysicsCore.World.SetDebugDraw(debugDraw); 

+0

あなたの質問は何ですか?すべてのエラー? – Mattias

答えて

1

私はこの脅威が少し古くなっていることを知っていますが、私はこの問題を自分で見つけました。 debugDraw.SetSprite()は、flash.display.Spriteを想定しています。スターリングはstarling.display.Spriteを使用します。

flash.display.Spriteを使用している場合は、ステージに追加できません。

これは、私の周りの仕事であるが見つかりました:メインクラスで

:ゲームクラスで

mStarling = new Starling(Game, stage); 
stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, onContextCreated); 

private function onContextCreated(e:Event):void 
{ 
    var debugSprite:Sprite=new Sprite(); 
    addChild(debugSprite); 
    (mStarling.stage.getChildAt(0) as Game).setDebugDraw(debugSprite) 
} 

:あなたが最新に最も必要になります

public function setDebugDraw(debugSprite:flash.display.Sprite):void{ 

    var debugDraw:b2DebugDraw = new b2DebugDraw(); 
    debugDraw.SetSprite(debugSprite); 
    _world.SetDebugDraw(debugDraw); 

} 

注意をStarlingのバージョン。 3か月前に、ステージパラメタをStarlingに追加しました。それがなければ、動作しません。

これは私の元になった:これはあなたがBOX2Dは、フラッシュ層上に描画したい場合、あなたはこれを行うことができ

ウィル

+0

またここで注意するべきことは、starlingステージの上にflash.display.Spriteを追加すると、アプリケーションが遅くなることです。スターリングをフルに活用するには、単にステージングを無効にするのではなく、公開するときにステージから除外してください。 – WillDonohoe