3

我正在使用 Starling Framework 在 iOS 的 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/

我需要将flash.display.DisplayObject课堂nape.utils.Debug上的所有内容更改为starling.display.DisplayObject.

如果您能给我任何建议,我将非常感激。

4

2 回答 2

3

希望您知道调试工具仅用于调试目的。最后不要使用 nape.utils.Debug 来渲染你的空间。

我也在做八哥+颈背游戏。我在我的空间中遍历身体并读取它们的 x、y、旋转值,以在我的舞台上渲染 starling 的图像和影片剪辑。我想说的是,使用 Starling 编写自己的“调试绘图”非常简单。总而言之,您将不得不在某个时候编写它,因为 nape.utils.Debug 仅用于调试目的;)。

于 2012-05-29T22:19:42.317 回答
1

这就是我所做的,非常简单。如果您还有其他问题,请告诉我。

创建空间时 - 通常是在创建场景时:

/**
 * 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;
}
于 2013-11-25T16:29:57.777 回答