2012-05-29 45 views
3

我正在使用Starling Framework構建Flash for iOS遊戲。我也在使用Nape這個2D物理引擎。我遇到的問題是Nape引擎使用flash.display.DisplayObject的特定方法,但是,因爲我使用的是Starling框架,所以我不得不使用starling.display.DisplayObject。它返回此錯誤:Starling,Nape,Flash,Haxe Dillemma

1067: Implicit coercion of a value of type flash.display:DisplayObject to an unrelated type starling.display:DisplayObject.

無法調整此方法。 Nape引擎被編譯成一個.swc文件,我無法編輯。這個引擎也是開源的,但它是在Haxe中完成的,我不知道如何在編輯它之後編譯它。

源可以在這裏下載:http://deltaluca.me.uk/docnew/

我需要改變所有的nape.utils.Debugflash.display.DisplayObjectstarling.display.DisplayObject

如果你可以借我任何建議,我會非常感激。

+0

你在使用什麼操作系統? Nape看起來像是想在* nix系統上編譯。 –

回答

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; 
} 
3

希望您知道調試應用程序僅用於調試目的。最後不要使用nape.utils.Debug來渲染你的空間。

我正在做starling + nape遊戲。我在我的空間中遍歷實體並讀取它們的x,y旋轉值,以在我的舞臺上呈現Starling的Images和MovieClip。我想說的是,使用Starling編寫自己的「調試繪圖」非常簡單。總之,你必須寫一些,因爲nape.utils.Debug僅用於調試目的;)。

+0

謝謝,我會看看:) – CptRayMar