2012-05-29 4 views
3

Я создаю игру во Flash для iOS, используя Starling Framework. Я также использую Nape, движок 2D Physics. Проблема, которую я испытываю, - это особый метод для движка 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/

мне нужно изменить все flash.display.DisplayObject в nape.utils.Debug класса starling.display.DisplayObject.

Если вы можете дать мне какие-либо советы, я был бы очень благодарен.

+0

Какую ОС вы используете? Nape выглядит так, как будто он хочет скомпилироваться в системе * nix. –

ответ

1

Вот что я делаю, довольно просто. Позвольте мне знать, если у вас есть еще вопросы.

При создании пространства -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; 
} 
3

Надеюсь, вы знаете, что утилиты отладки предназначены только для целей отладки. Не используйте nape.utils.Debug для окончательного рендеринга вашего пространства.

Я делаю скворец + игру на затылке. Я повторяюсь через тела в своем Пространстве и читаю их значения x, y, вращения, чтобы изобразить на экране сцены и ролики скрининга. Я хочу сказать, что довольно просто написать собственную «отладочную ничью» с помощью Starling. В общем, вам придется писать это когда-то, потому что nape.utils.Debug предназначен только для отладочных целей;).

+0

Спасибо, я посмотрю, что :) – CptRayMar