首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

flash cs3开发的Flash怎么加载外部SWF

2012-04-06 
flash cs3开发的Flash如何加载外部SWF?我刚学FLASH。请赐教。【Flash cs3 + ActionScript 3.0】我用FLASH CS3

flash cs3开发的Flash如何加载外部SWF?
我刚学FLASH。请赐教。【Flash cs3 + ActionScript 3.0】

我用FLASH CS3开发了FLASH,名字叫photo1.fla。 脚本是as3.0。 AS文件(mytest.as)在另外一个文件夹(photo1_fla)里。
----photo1.fla
----photo1.swf
----photo1_fla
  +----------mytest.as
----myload.swf

问题背景:
我在主场景里添加了一个影片剪辑,名字叫mc1,
我希望在一打开的时候就在这个mc1里 加载myload.swf。让myload.swf出现在主场景的mc1里。

问题:
我发现在主场景里无法添加AS代码。必须要切换到专门的AS文件里操作。
那个文件是mytest.as,但是我不知道在mytest.as里怎么添加“载入”外部SWF的代码。
请高手教教我。

[解决办法]
package photo1_fla{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLRequest;
public class mytest extends Sprite{
public function mytest(){
var loader:Loader=new Loader();
loader.load(new URLRequest("myload.swf"));
mc1.addChild(loader);
}
}
}
[解决办法]
使用loader就可以实现。

在 ActionScript 3.0 中,SWF 檔是透過 Loader 類別載入。若要載入外部 SWF 檔,ActionScript 需要執行四項工作:

1.使用檔案的 URL 建立新的 URLRequest 物件。

2.建立新的 Loader 物件。

3.呼叫 Loader 物件的 load() 方法,將 URLRequest 實體當做參數傳遞。

4.針對顯示物件容器 (例如 Flash 文件的主要時間軸) 呼叫 addChild() 方法,以便將 Loader 實體加入顯示清單。

最後,完成的程式碼看起來像這樣:

var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);這個相同的程式碼透過指定影像檔案的 URL (而不是 SWF 檔的 URL),可用來載入如 JPEG、GIF 或 PNG 影像等外部影像檔案。SWF 檔和影像檔案的不同點是它可以包含 ActionScript。因此,雖然載入 SWF 檔也許和載入影像的程序相同,但是如果 Flash Player 或 AIR 正在播放 SWF,而且您想要使用 ActionScript 以任何方式與外部 SWF 檔進行通訊,那麼載入外部 SWF 檔時,載入端 SWF 檔與被載入端 SWF 檔都必須位於相同的安全執行程序中。此外,如果外部 SWF 檔中的類別和載入端 SWF 檔中的類別共享相同的命名空間時,您可能需要為被載入端 SWF 檔建立新的應用程式網域,如此才能避免命名空間衝突。如需有關安全性與應用程式網域考量的詳細資訊,請參閱使用 ApplicationDomain 類別與載入 SWF 檔和影像。

成功載入外部 SWF 檔後,您就可以透過 Loader.content 屬性來存取這個檔案。如果此外部 SWF 檔已經發佈為 ActionScript 3.0 的格式,根據它所擴充的類別型態,物件可以是一個影片片段或 Sprite。

載入舊版 SWF 檔的考量事項
如果外部 SWF 檔已經使用舊版的 ActionScript 發佈,就必須考慮一些重要的限制事項。和執行於 AVM2 (ActionScript Virtual Machine 2) 中的 ActionScript 3.0 SWF 檔不同的是,使用 ActionScript 1.0 或 2.0 發佈的 SWF 檔是在 AVM1 (ActionScript Virtual Machine 1) 中執行。

當成功載入 AVM1 SWF 檔後,載入的物件 (Loader.content 屬性) 將會是 AVM1Movie 物件。AVM1Movie 實體與 MovieClip 實體不同。而是顯示物件,但和影片片段不同的是,它不包括與時間軸相關的方法或屬性。父輩 AVM2 SWF 檔將無法存取載入的 AVM1Movie 物件之屬性、方法或物件。

在由 AVM2 SWF 檔載入的 AVM1 SWF 檔上有一些其它的限制。如需詳細資料,請參閱「ActionScript 3.0 語言和組件參考」中所列的 AVM1Movie 類別清單。

热点排行