【问题标题】:Access MovieClips in one file from another SWF file从另一个 SWF 文件访问一个文件中的影片剪辑
【发布时间】:2010-10-26 10:36:32
【问题描述】:

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

这是我的代码::

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 文件访问单个影片剪辑。我也知道影片剪辑的所有名称(ID)。

帮助我克服这个问题...提前谢谢..

【问题讨论】:

  • 将所有示例代码放入代码框中。有点混乱

标签: flash actionscript-3


【解决方案1】:

我建议使用 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 是一个简单的类,它表示使用 ActionScript 1.0 或 2.0 的 AVM1 影片剪辑。(AVM1 是用于运行 ActionScript 1.0 和 2.0 的 ActionScript 虚拟机。AVM2 是用于运行 ActionScript 3.0 的 ActionScript 虚拟机。)当 Flash Player 8 或更早版本的 SWF 文件由 Loader 对象加载时,会创建一个 AVM1Movie 对象。AVM1Movie 对象可以使用从 DisplayObject 类继承的方法和属性(例如 x、y、width 等) . 但是,AVM1Movie 对象和 AVM2 对象之间不允许互操作(例如调用方法或使用参数)。

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

加载的 AVM1Movie 对象作为 AVM1 SWF 文件及其加载的所有 AVM1 SWF 文件的伪根对象运行(就像 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 文件加载的子 Sprite 对象、MovieClip 对象或其他 AVM1 SWF 文件可以加载到此。"来自 as3 文档。

有关更多信息,请参阅AMV1Movie Reference

如果你想从 as3 调用 as2 电影,你需要使用本地连接来建立 2 个 swf 之间的通信。

Grant Skinner 为这种情况写了一个名为SWF Bridge 的方便的东西(易于 as2 到 as3 通信)。值得一试。

祝你好运!

【讨论】:

    猜你喜欢
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多