我正在为iOS构建一个使用Starling框架的Flash游戏。我也在使用Nape,一个2D物理引擎。我遇到的问题是Nape引擎上使用flash.display.DisplayObject的一种特殊方法,但是,由于我使用的是Starling框架,所以我不得不使用starling.display.DisplayObject。它返回此错误:
1067:将flash.display:DisplayObject类型的值隐式强制为不相关的starling.display:DisplayObject。
没有办法调整这种方法。Nape引擎被编译成一个.swc,我无法编辑它。这个引擎也是开源的,但是它是用Haxe语言完成的,一旦我编辑了它,我就想不出如何编译它了。
源可以在以下位置下载:http://deltaluca.me.uk/docnew/
我需要将nape.utils.Debug类中的所有nape.utils.Debug更改为starling.display.DisplayObject。
如果你能给我任何建议,我会很好的。
发布于 2013-11-25 16:29:57
我就是这么做的,很简单。如果你还有什么问题请告诉我。
创建场景时,创建空间-typically时:
/**
* Create debug drawing space to overlay on assets if flag enabled in Release config
*/
if(Release.DEBUG_PHYSICS){
_debug = new ShapeDebug(320*2, 480*2, 0x000000);
_debug.drawConstraints = true;
_debug.drawCollisionArbiters = true;
var MovieClipDebug:MovieClip = new MovieClip();
MovieClipDebug.addChild(_debug.display);
Starling.current.nativeOverlay.addChild(MovieClipDebug);
}当舞台被摧毁时:
if(Release.DEBUG_PHYSICS){
_debug.clear();
_debug = null;
}当图形引擎更新时:
/**
* Update the positions of the depug layer
*/
if(Release.DEBUG_PHYSICS){
_debug.clear();
_debug.draw(_space);
_debug.flush();
_debug.display.x = this.x;
_debug.display.y = this.y;
// handles camera zooming in/out
_debug.display.scaleX = this.scaleX;
_debug.display.scaleY = this.scaleY;
}发布于 2012-05-29 22:19:42
希望您知道调试实用程序仅用于调试目的。最后不要使用nape.utils.Debug来呈现您的空间。
我也在制作starling+nape游戏。我在我的空间中遍历身体,读取它们的x,y,旋转值,在我的舞台上呈现星空的图像和MovieClips。我想说的是,使用Starling编写自己的“调试绘图”非常简单。总之,您必须在某些时候编写它,因为nape.utils.Debug只用于调试;)。
https://stackoverflow.com/questions/10805828
复制相似问题