2

我正在尝试在 Starling Framework 项目上使用 Greensock LoaderMax,但由于 Starling 有很多自己的类,我如何才能使其与使用本机类的其他类一起工作?

经验:

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import starling.core.Starling

    [SWF(width="1280",height="800",frameRate="60",backgroundColor="#002143")]

    public class Main extends Sprite
    {
        private var mStarling:Starling

        public function Main():void
        {
            mStarling = new Starling(Game, stage)
            mStarling.antiAliasing = 1
            mStarling.start()
        }
    }
}

package
{
    import com.greensock.events.LoaderEvent;
    import com.greensock.loading.display.ContentDisplay;
    import com.greensock.loading.SWFLoader;
    import starling.display.Sprite;
    import starling.events.Event;

    public class Game extends Sprite
    {       
        private var queue:SWFLoader
        private var mm:ContentDisplay

        public function Game():void
        {
            if (stage)
                init()
            else
                this.addEventListener(Event.ADDED_TO_STAGE, init)
        }

        private function init(e:Event = null):void
        {
            queue = new SWFLoader("MainMenu.swf", {onComplete: completeHandler})
            queue.load()
        }

        private function completeHandler(e:LoaderEvent):void
        {
            mm = queue.content
            addChild(mm)
        }   
    }
}

将返回错误:

 Error: Implicit coercion of a value of type com.greensock.loading.display:ContentDisplay to an unrelated type starling.display:DisplayObject.
4

1 回答 1

4

你的MainMenu.swf主要课程需要extend starling.display.Sprite

因为它们是不同的结构等等......闪存不能将原生精灵转换为八哥精灵。

然后加载完成后:

mm = queue.content as Sprite; // ( starlig )

如果您仍想使用普通的 DisplayObjects 和 Starling displayObjects,您需要将它们放置在扩展不同 displayObjects 的不同 mc / sprites 中。

阶段

|...|

starling.display.Sprite -> 在这里添加普通的 Starling Based Sprites / MovieClips

|...|

flash.display.Sprite -> 在这里添加原生 Sprites / MovieClips

于 2011-12-06T08:32:31.237 回答