我是AS3的新手,想了解外部加载的SWF如何在AS3中工作。自Flash 4/5以来,通常在Flash Web项目中有一个主SWF文件,然后将其他SWF文件加载到其中,通常用于网站或Web项目的各个“部分”。在主文件中,我们将使用蒙版动画制作容器动画片段(其中加载了外部片段/ SWF文件),并在动画和转场随着片段完成加载并显示加载的内容时播放。加载和使用SWF文件
在AS3中,我使用Loader类加载和显示外部文件,我的主要问题是在与加载内容沟通,调用它的函数,或调用它根本职能。
在AS2中,我们可以使用someMovieClip.loadMovie(“ExternalContent.swf”)并将ExternalContent文件加载到someMovieClip中。您可以使用someMovieClip.function();访问“External.swf”主时间轴上的函数。在“ExternalContent.swf”中,我们可以使用_root.function()来访问正在加载的ExternalContent主文件中的函数。在AS3中这样做看起来很奇怪和神经质,我觉得我在这里错过了一些相当基本的东西。
//Loading in ExternalContent.swf into the sprite
//ExternalContent has a movieclip called "boxes" on it's main timeline
//boxes has a boxesPrompt() function in it's timeline.
var sprite:Sprite = new Sprite();
addChild(sprite);
var loader:Loader = new Loader();
loader.load(new URLRequest("ExternalContent.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded);
function onLoaded(event:Event):void
{
sprite.addChild(event.target.content);
sprite.boxes.boxesPrompt();
//Flash gives the following compiler error at the above
//Scene 1, Layer 'Layer 1', Frame 1, Line 21 1119: Access of possibly undefined property boxes through a reference with static type flash.display:Sprite.
//But when I comment out sprite.boxes.boxesPrompt() and use this, it works:
event.target.content.boxes.boxesPrompt()
}
里面的“ExternalContent.swf”只是跟踪它的父,宏伟的父母,和伟大的盛大母公司的boxesPrompt()函数 - 跟踪(this.parent.parent.parent);.当我使用“event.target.content.boxes.boxesPrompt()”在onLoaded事件处理程序中调用该函数时,它显示Boxes对象(位于External.SWF的主时间轴上)具有父级动作片段,一个grand-parent sprite和一个伟大的祖父对象mainTimeline。
我想重新养育加载的内容到精灵将允许为使用loadMovie()曾经是我的轻松访问加载的内容 - 访问加载的内容就像是它在加载的剪辑中直接存在的,但这根本不起作用。
所以要改一下,我的问题是:
如何从主“装载机”的SWF文件进行通信,与在加载的内容我不想使用event.target沟通.content。{etc},因为那样我只能解决Loader的event.complete事件处理程序中加载的内容。
如何“重新加载”加载的内容,因此我可以将它放在加载器文件的主时间轴上的某个movieclip/sprite内,而不是使用一些真正漫长的复杂方式。
如何从加载内容到主/加载程序文件进行通信。之前,我们会使用_root.functionName()来执行一些操作,例如播放从当前外部加载的“部分”跳转到另一部分的动画。我怎么去做这件事。
感谢您的帮助。这件事并不能安静工作,但你的改变提供了有用的见解。 后精灵= event.target.content;正如你所建议的那样,我必须再次添加Child()来显示它。尽管之前将精灵添加到显示列表中,但当它指向event.target.content(不在显示列表上的东西)时,它并未显示。 盒的母公司仍是SWF‘盒子’的‘根’影片剪辑坐在,并加载到精灵后,精灵包含一个影片剪辑(加载SWF的根)和影片剪辑包含框。我无法到达盒子,因为我不知道root的名字。 – Qasim 2012-03-26 06:49:57