我是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