我有一个 SWF 应用程序 (A),它有一个在 X 轴和 Y 轴上移动的绿色对象,这个 SWF 应用程序只运行它的 SWF 加载程序 (B)。
我创建了另一个加载 SWF 加载器 (B) 的 SWF 加载器 (C)。我想知道是否可以获得该绿色对象的实例及其属性。
或者制作一个函数来搜索舞台上的绿色并使用该getPixels()
方法返回X,Y位置?
我有一个 SWF 应用程序 (A),它有一个在 X 轴和 Y 轴上移动的绿色对象,这个 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);
另一种方法是事件冒泡。您可以从应用程序生成事件A
并在 loader 中监听它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));