Actionscript 3 使用box2d的as3椋鸟
当DebugDraw集成到starling对象中时,我在box2d中使用它时遇到问题Actionscript 3 使用box2d的as3椋鸟,actionscript-3,box2d,starling-framework,Actionscript 3,Box2d,Starling Framework,当DebugDraw集成到starling对象中时,我在box2d中使用它时遇到问题 var debugSprite:Sprite = new Sprite(); addChild(debugSprite); var debugDraw:b2DebugDraw = new b2DebugDraw(); debugDraw.SetSprite(debugSprite); debugDraw.SetDrawScale(30); debugDraw.SetLineThickness( 1.0); de
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);
在上面的代码中,我使用flash.display.sprite甚至starling.core.starling都有问题
有人有解决办法吗 我知道这个威胁现在已经有点过时了,但我自己刚刚遇到这个问题。debugDraw.SetSprite()需要flash.display.Sprite。Starling使用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个月前,他们将stage参数添加到Starling中,没有它,它将无法工作
这是我的消息来源:
希望这有帮助
将如果您想在flash层上绘制Box2D,可以执行以下操作:
debugDraw.SetSprite(Starling.current.nativeOverlay);
你的问题是什么?有错误吗?这里也需要注意,在starling stage上添加flash.display.Sprite会降低应用程序的速度。要充分利用starling,请确保在发布时将其从后台删除,而不是仅禁用它。