ネイティブDisplayObjectを使用するクラスで動作するスターリングフレームワークを作成する
-
28-10-2019 - |
質問
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.
解決
君の MainMenu.swf
メインクラスはする必要があります extend starling.display.Sprite
それらは異なる構造などであるため...フラッシュはネイティブスプライトを星のスプライトに変換することはできません。
その後、荷重が完了した後:
mm = queue.content as Sprite; // ( starlig )
通常のDisplayObjectsとStarling DisplayObjectsを使用する場合は、異なるDisplayObjectsを拡張する別のMC /スプライトに配置する必要があります。
ステージ
|...|
starling.display.sprite->ここでは、通常のスターリングベースのスプライト / Movieclipsを追加します
|...|
flash.display.sprite->ここでネイティブスプライト / Movieclipsを追加する
所属していません StackOverflow