X 軸と Y 軸の両方で動く緑色のオブジェクトを持つ SWF アプリケーション (A) があります。この SWF アプリケーションは、SWF ローダー (B) でのみ実行されます。
SWF ローダー (B) をロードする別の SWF ローダー (C) を作成しました。その緑色のオブジェクトとそのプロパティのインスタンスを取得できるかどうかを知りたいです。
または、ステージ上のその緑色を検索し、getPixels()
メソッドを使用して X、Y 位置を返す関数を作成しますか?
X 軸と Y 軸の両方で動く緑色のオブジェクトを持つ SWF アプリケーション (A) があります。この SWF アプリケーションは、SWF ローダー (B) でのみ実行されます。
SWF ローダー (B) をロードする別の SWF ローダー (C) を作成しました。その緑色のオブジェクトとそのプロパティのインスタンスを取得できるかどうかを知りたいです。
または、ステージ上のその緑色を検索し、getPixels()
メソッドを使用して X、Y 位置を返す関数を作成しますか?
getPixels
いいえ、そのようなタスクにはやり過ぎになるので、使用しないでください。実際Loader
にはcontent
プロパティがあります:
load() または loadBytes() メソッドを使用してロードされた SWF ファイルまたはイメージ (JPG、PNG、または GIF) ファイルのルート表示オブジェクトが含まれます。
表示リストを操作するだけで、目的の緑色のオブジェクトを取得でき、コンポーネントがロードされた後に何をしているのかを理解できます。読み込み操作ごとに表示リストに追加する場合content
(例: addChild(loader.content)); たとえば、緑色のオブジェクトには名前 (例: 'greenLantern') があり、完全にロードした後、参照を取得できます。
//After full loading, Code in loader C
var containerB: DisplayObjectContainer = getChildAt(0) as DisplayObjectContainer;
var appA: DisplayObjectContainer = containerB.getChildAt(0) as DisplayObjectContainer;
var greenLantern: DisplayObject = appA.getChildByName("greenLantern");
trace(greenLantern.magicProperty1, greenLantern.x, greenLantern.y);
もう 1 つのアプローチは、イベント バブリングです。アプリケーションからイベントを生成A
し、ローダーでリッスンできC
ます。
//Loader C
addEventListener("greenLanternHere", onGreenLanternEvent);
function onGreenLanternEvent(e:Event):void {
//Heeeellooooo moving green object
trace(e.target);
}
//Application A
greenLanternInstance.dispatchEvent(new Event("greenLanternHere", true));