我有一个SWF应用程序(A),它有一个在X轴和Y轴上移动的绿色对象, 此SWF应用程序仅与其SWF加载程序(B)一起运行。
我创建了另一个加载SWF加载器(B)的SWF加载器(C)。我想知道是否有可能获得该绿色对象及其属性的实例。
或者在舞台上搜索绿色并使用getPixels()
方法返回X,Y位置?
答案 0 :(得分:0)
不,你不应该使用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
生成事件并在加载程序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));