AS2.0中有和全局中有函數可以動態加載圖片,但是這不是異步加載,而且沒法知道圖片大小。在AS3.0中,有類來實現從外部載入swf和各種圖片。
效果如下,載入的過程中會有進度條提示,載入完成過后可以根據圖片的尺寸進行縮放本地圖片加載 網頁,按比例的縮小放在400×300的方框中,居中顯示
AS代碼
. = false;
.(.CLICK,r);
r(e:) {
(.value);
}
var :;
(url:) {
if( == null){
= new ();
}else{
.();
.text = "";
}
..(Event.,);
..("",);
var : = new (url);
var : = new (true);
.load(,);
. = true;
}
var :int = .;
var :int = .width;
(e:Event) {
.text = "* Load !";
var pic: = . as ;
pic. = true;
var :int = .width;
var :int = .;
if( > ){
= ;
= /.width * .;
}
if( > ){
= ;
= /. * .width;
}
..width = ;
.. = ;
.x = ( - )/2;
.y = ( - )/2;
.();
. = false;
}
(e:Event){
. = false;
.text = "* Url is , try again for url!";
}
關鍵在于對類的使用,具有屬性,此屬性是一個類的實例,用來控制加載外部資源的進度,因此就可以在上注冊各種事件,這里只用了事件,用于加載完成時調用。
還具有屬性,實例本身就是一個可視對象,也是一個可視對象本地圖片加載 網頁,如果加載的地址是一個圖片的話,是一個對象,所以可以通過轉型來使得載入的圖片在縮小的時候消除鋸齒,將的屬性設置為true即可。
////////////////////////////////////////////////////////////////////////方式二
_root.("圖MC", 1);
//創建一個MC來裝加載進來的圖片
var 下載 = new ();
//創建一個下載類
下載.("", 圖MC);
//下載圖片到MC。
//這樣就完成了外部加載圖片,如果想知道加載圖片的詳細信息,就要偵聽加載的過程
/////////////////////////////////////////////////////////////
//怎么知道圖片開始下載呢?用這個方法,開始下載后會告訴你!
偵聽 = new ();
偵聽. = () {
trace("圖片已經開始下載");
};
/////////////////////////////////////////////////////
///怎么知道圖片已經下載完成呢?用或,下載完成告訴你!
偵聽. = () {
trace("圖片已經下載完成");
};
///我想知道下載的進度呢?用,下載多少告訴你!
偵聽. = (mc:, :, :) {
trace("下載進度="+/*100)+"%";
};
/////////////////////////////////////////////////////////
偵聽. = () {
trace("這個和一樣是圖片下載完成后使用");
trace("區別是加載完成SWF后會初試化SWF加載進來的數據");
trace("而不會初試化");
};
下載.(偵聽);
//偵聽出錯的方法這個自己看看吧!!
////////////////////////////////////////////////////////////////////////////////////////方式三
1.建立一個文件夾,名稱隨意,這里以flash命名;在此文件夾中建立一個名為“img”的文件夾,用來存放圖片,圖片名稱1.jpg,2.jpg.....
2.在img文件夾中新建名為info的文本文件,在其中輸入num=x,x為文件夾中的圖片數量,比方說num=6,num=12等等。
3.在flash中新建的fla文檔,保存在flash文件夾下。
4.在flash中建立兩個層,分別名為"as","btn"。在btn層中建立兩個按鈕,位置自取,實例名為,.
5.as層中代碼如下.
//初始化函數
init() {
();
//載入變量
this.("", 1);
//創建一個空影片剪輯用來存放圖片
i = 1;
(, i);
//程序第一次運行時載入第一張圖片
}
//載入變量函數
() {
("img/"+"info.txt", 0);
//從文本文件中載入變量Num
this. = () {
if (Num) {
this.;
}
//變量如果載入,刪除函數
};
//用函數判斷變量是否載入
}
//加載圖片的函數,把圖片加載到影片剪輯mc中,i表示圖片序號
(mc, i) {
mc.("img/"+i+".jpg");
//把圖片加載到影片剪輯mc中
this. = () {
if (mc.) {
this.;
mc.();
//圖片過渡效果
(, 1);
/*設置后退按鈕,當顯示第一張圖片時,后退按鈕的透明為50,不可用,其他情況按鈕正常*/
(, num);
/*設置前進按鈕,當顯示最后一張圖片時,后退按鈕的透明為50,不可用,其他情況按鈕正常*/
}
};
}
//設置控制函數,obj為按鈕實例名,n代表圖片的序號
(obj, n) {
if (i == n) {
obj. = 50;
obj. = false;
//如果圖片的當前序號為n,設置按鈕的透明度為50,按鈕不可用
} else {
obj. = 100;
obj. = true;
//如果圖片的當前序號不為n,設置按鈕的透明度為100,按鈕可用
}
}
//圖片過渡效果函數
.. = () {
var mc = this;
//定義一個影片剪輯類型變量
mc._x = (400-mc.)/2;
mc._y = (300-mc.)/2;
//圖片在新場景中居中分布,場景大小為
mc. = 0;
mc. = () {
mc. += (100-mc.)/10;
//圖片透明度遞增
if (mc.>=95) {
mc.;
}
};
};
init();
//調用初始化函數
. = () {
i -= 1;
//變量-1
(, i);
};
//釋放后退按鈕執行動作
. = () {
i += 1;
//變量+1
(, i);
};
//釋放前進按鈕執行動作