Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 从另一个SWF文件访问一个文件中的MovieClips_Flash_Actionscript 3 - Fatal编程技术网

Flash 从另一个SWF文件访问一个文件中的MovieClips

Flash 从另一个SWF文件访问一个文件中的MovieClips,flash,actionscript-3,Flash,Actionscript 3,我对Flash和AS都是新手。 我必须在as2和as3中分别加载两个swf文件,我已经在as3 swf中加载了swf文件(as2),它可以工作,但我需要从(swf(as2))访问所有movieclip并动态更改属性(如样式)。我该怎么做呢 这是我的密码: var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleComplete); addChild(load

我对Flash和AS都是新手。 我必须在as2和as3中分别加载两个swf文件,我已经在as3 swf中加载了swf文件(as2),它可以工作,但我需要从(swf(as2))访问所有movieclip并动态更改属性(如样式)。我该怎么做呢

这是我的密码:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleComplete);
addChild(loader);
loader.load(new URLRequest("games.swf"));
loader.x = 50;
loader.y = 125;

function handleComplete(event:Event):void{


    trace("swf loaded");
}
上述代码工作正常,swf文件也已加载。如何从swf as2文件访问单个movieclip。。我也知道电影剪辑的名字(ID)


帮助我克服此问题…提前感谢..

我建议使用Event.INIT而不是Event.COMPLETE。INIT在加载完成后获得触发器加载的swf中的所有类/实例都已初始化并准备好使用

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit);
addChild(loader);

function handleInit(e:Event):void{
var as2Movie:AVM1Movie = e.target.content as AVM1Movie;
}
您可以通过Loader类的content属性访问加载的内容。 并非如此,因为您正在将as2电影加载到as3电影中,所以应用了一些限制:

“AVM1Movie是一个表示AVM1电影剪辑的简单类,它使用ActionScript 1.0或2.0。(AVM1是用于运行ActionScript 1.0和2.0的ActionScript虚拟机。AVM2是用于运行ActionScript 3.0的ActionScript虚拟机。)当加载程序对象加载Flash Player 8或更早版本的SWF文件时,将创建AVM1Movie对象。AVM1Movie对象可以使用从DisplayObject类继承的方法和属性(例如x、y、width等)。但是,没有互操作性(例如调用方法或使用参数)允许在AVM1Movie对象和AVM2对象之间切换

AVM2 SWF文件加载的AVM1 SWF文件有几个限制:

加载的AVM1Movie对象作为AVM1 SWF文件及其加载的所有AVM1 SWF文件的psuedo根对象运行(就像ActionScript 1.0 lockroot属性设置为true一样)。AVM1影片始终是任何子级中任何ActionScript 1.0或2.0代码执行的顶部。加载子级的_root属性始终是此AVM1 SWF文件,除非在加载的AVM1 SWF文件中设置了lockroot属性。 AVM1内容无法将文件加载到级别。例如,它无法通过调用loadMovieNum(“url”,levelNum)来加载文件。 由AVM2 SWF文件加载的AVM1 SWF文件无法将另一个SWF文件加载到此文件中。也就是说,它无法在自身上加载另一个SWF文件。但是,由此SWF文件加载的子精灵对象、MovieClip对象或其他AVM1 SWF文件可以加载到此文件中。”来自as3文档

有关更多信息,请参阅

如果您想从as3调用as2电影,则需要使用本地连接在两个SWF之间建立通信

为这种情况写了一个方便的东西(as2到as3的简单通信)。值得一试


祝你好运

将所有示例代码放在代码框中。这有点令人困惑