as3 呼叫外部資原始檔(swf檔案、圖片檔案)
一、目標
1. 在aa.swf中呼叫bb.swf
2. bb.swf中有一個動態文字 txt1,aa.swf呼叫後,更改此文字的顯示內容
二、步驟
生成bb.swf檔案
1.新建bb.fla,並在上面加入一個動態文字,名命為"txt1"。 txt1的初始顯示為"hello"
2.Ctrl + Enter執行 bb.fla, 會生成bb.swf檔案
呼叫bb.swf
1.新建aa.fla,在時間軸加如入程式碼
ch();
function ch() {
//呼叫swf檔案部分
var lr:LoadResource = new LoadResource('bb.swf', 120, 200);
lr.addEventListener(Event.COMPLETE, cc);
addChild(lr);
//呼叫圖片部分
//var lr:LoadResource = new LoadResource('http://img1.gtimg.com/gamezone/pics/21519/21519683.jpg', -1, -1);
//lr.addEventListener(Event.COMPLETE, cc);
//addChild(lr);
}
function cc(e:Event) {
//改變swf檔案中MC物件的屬性
var mc:MovieClip = MovieClip(e.target.content);
mc.txt1.text = 'bbbb';
//改變圖片的顯示屬性
//e.target.content.height = 100;
//e.target.content.width = 100;
//e.target.content.alpha = .5;
}
說明:上面程式碼中將圖片呼叫部分註釋掉了,需要測試呼叫圖片的,可自行開啟
三、通用呼叫資源類
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.*;
import flash.net.URLRequest;
//載入資源(swf jpg png gif)
public class LoadResource extends MovieClip {
private var _url:String; //待請求的URL
private var _height:int; //MC的高度
private var _width:int; //MC的寬度
//本次載入的內容(注意: 1.要在丟擲Event.COMPLETE事件後,才能使用 2.載入swf檔案時,該變數是MovieClip; 載入圖片時,該變數是Bitmap)
public var content:DisplayObject;
public function LoadResource(url:String, h:int, w:int) {
_url = url;
_height = h;
_width = w;
configureAssets();
}
private function configureAssets():void {
var loader:Loader = new Loader(); //此處用的是 flash.display.Loader,而不是URLLoader
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
var request:URLRequest = new URLRequest(_url);
loader.load(request);
addChild(loader);
}
private function completeHandler(e:Event){
content = e.target.content;
//設定返回物件的寬和高
if(_height != -1){
content.height = _height;
}
if(_width != -1){
content.width = _width;
}
dispatchEvent(e); //丟擲一個”Event.COMPLETE“事件,讓呼叫層可以做一些額外處理
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("Unable to load image: " + event.text);
}
}
}
四、其它
Loader載入過來的資料型別:
Loader 是用來代替原來MovieClip 的loadMovie 功能,用於載入外部的圖片檔案,SWF檔案。
* 如果載入圖片檔案(jpg,gif,png等)時,Loader.content 得到資料型別是Bitmap 物件;
* 如果載入SWF檔案(flash 9 版本)時,Loader.content 得到資料型別是MovieClip 物件;
* 如果載入SWF檔案(flash 9 以前版本) 時, Loader.content 得到資料型別是AVM1Movie 物件;