Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 使用box2d的as3椋鸟_Actionscript 3_Box2d_Starling Framework - Fatal编程技术网

Actionscript 3 使用box2d的as3椋鸟

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

当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);
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,请确保在发布时将其从后台删除,而不是仅禁用它。