Starling,Nape,Flash,Haxe Dilemma

时间:2012-05-29 19:58:11

标签: ios actionscript-3 haxe starling-framework

我正在使用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

如果你能借给我任何建议,我会非常感激。

2 个答案:

答案 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;
}