我正在使用Starling Framework在Flash for iOS中构建游戏。我也在使用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/
我需要将flash.display.DisplayObject
课程中的所有nape.utils.Debug
更改为starling.display.DisplayObject
。
如果你能借给我任何建议,我会非常感激。
答案 0 :(得分:3)
希望您知道debug utils仅用于调试目的。不要使用nape.utils.Debug最终渲染你的空间。
我也在制作八哥+颈背游戏。我正在迭代我的空间中的物体并读取它们的x,y,旋转值以在我的舞台上渲染starling的Images和MovieClips。我想说的是使用Starling编写自己的“调试绘图”非常简单。总而言之,你必须写一些,因为nape.utils.Debug仅用于调试目的;)。
答案 1 :(得分:1)
这是我的工作,非常简单。如果您还有其他问题,请与我们联系。
创建场景时,通常情况下创建 Space :
/**
* 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;
}