Question

I am building a game in Flash for iOS using the Starling Framework. I am also using Nape, a 2D Physics engine. The problem I am experiencing is a particular method on the Nape engine uses flash.display.DisplayObject, however, because I am using the Starling framework, I instead have to use starling.display.DisplayObject. It returns this error:

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

There is no way to adjust this method. The Nape engine is compiled into a .swc, which I am unable to edit. The engine is also open source, but it is done in Haxe, and I cannot figure out how to compile it once I have edited it.

The source can be downloaded here: http://deltaluca.me.uk/docnew/

I need to change all the flash.display.DisplayObject in the nape.utils.Debug class to starling.display.DisplayObject.

If you can lend me any advice I'd be really greatful.

Was it helpful?

Solution

Here is what I do, pretty simple. Let me know if you have any more questions.

When creating the Space -typically when the scene is created:

/**
 * 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);
}

When the stage is destroyed:

if(Release.DEBUG_PHYSICS){
    _debug.clear();
    _debug = null;
}

When the graphical engine updates:

/**
 * 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;
}

OTHER TIPS

Hope you are aware that debug utils are for debugging purposes only. Do not use nape.utils.Debug for rendering your space finally.

I'm making starling+nape game also. I'm iterating through bodies in my Space and reading their x, y, rotation values to render starling's Images and MovieClips on my stage. What I want to say is that it's pretty simple to write your own 'debug draw' using Starling. All in all you will have to write it somewhen because nape.utils.Debug is only for debug purposes ;).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top