教你如何在FLASH中載入外部SWF檔案
阿新 • • 發佈:2019-01-27
方法很簡單,但是卻相當實用,比如做一個flash全站,需要按功能將網站分解成多個flash,然後利用本例中的原理,通過一個首頁flash呼叫其他各個頁面的flash檔案即可實現。本例為基礎示例,可以根據需要進行擴充套件,關鍵是要學會變通,將其變為自己的東西。
實現方法:
1、新建一個flash文件,要求大小最好和你要載入的那個flash相同;
2、在場景中放一個動態文字框,設定變數名為 opentxt(也可以取其他名字,但下面的程式碼中也得相應的修改);
3、選中第一幀,開啟動作面板,加入如下程式碼:
var fdTemp = createEmptyMovieClip("fdtemp", 1);
var L = createEmptyMovieClip("loadswf", 2);
L.loadMovie("外部影片.swf");
fdTemp.onEnterFrame = function() {
var a = this._parent["loadswf"].getBytesLoaded();
var b = this._parent["loadswf"].getBytesTotal();
opentxt = int(a*10000/b)+"%";
if (a>=b and a>10) {
opentxt.removeTextField();
}
};
把其中的 外部影片.swf 改成你的那個 flash的名稱即可!
這個loading只有顯示百分比,其他的與一般的loading動畫做法一樣!
stop();
var bl = 0;
var bt = 0;
this.createEmptyMovieClip("mcLoader", 1);
//--------------- 定位 ---------------
mcLoader._x = 50;
mcLoader._y = 50;
//--------------- 裝載 ----------------
mcLoader.loadMovie("影片.swf");
//------------ 計算程序 -------------
this.onEnterFrame = function() {
bl = mcLoader.getBytesLoaded();
bt = mcLoader.getBytesTotal();
txt1.text = int(bl/bt*100)+"%";
loadbar._width = 200*bl/bt;
//...
if (bl>=bt && bl) {
delete this.onEnterFrame;
// 停止計算
}
};
多個swf的loading
假如你有3個“swf”檔案,其中一個是主場景檔案,名為“main_page.swf”,其他兩個我們分別取名為“a.swf”&“b.swf”...
首先來製作“main_page.swf”這個檔案...
在它的主場景有兩個關鍵幀,在第一幀&第二幀分別加上“stop()”語句,
然後在第一幀上拖入一個你製作的“Loading”影片剪輯,命名為“my_load_bar”(這個影片剪輯共有100幀,在第一幀上加上stop()語句,在第100幀加上gotoAndStop(1)語句,
然後你再做你想要的loading動畫...
我想這個我不用再說了吧...
並且在庫中連線它...
連線名為“my_load_bar”)。
回到主場景在第一幀上加上如下語句:
//這是用於主場景的loading語句...(加在第一幀)
_root.onEnterFrame = function ()
{if(_root.getBytesLoaded() < _root.getBytesTotal())
{Loaded = _root.getBytesLoaded()/1000Total = _root.getBytesTotal()/1000goto =(Loaded/Total)*100_root.my_load_bar.gotoAndStop(int(goto))
}
else
{_root.gotoAndStop(2)_root.onEnterFrame = null}
}
stop()
假如你要在主場景載入後轉道第二幀的時候同時載入“a.swf”&“b.swf”兩個檔案,並且顯示相應的進度 ,
建立兩個空的影片剪輯,分別命名為“a”,“b”,拖到主場景,後在主場景第二幀上加入如下語句:
//呼叫庫中的“my_load_bar”影片剪輯...
_root.attachMovie("my_load_bar","a_load_bar",100)
_root.attachMovie("my_load_bar","b_load_bar",100)
_root.a_load_bar._x=你想要的位置
_root.a_load_bar._y=你想要的位置
_root.b_load_bar._x=你想要的位置
_root.b_load_bar._y=你想要的位置
_root.a.loadMovie("a.swf")
_root.b.loadMovie("b.swf")
然後在“a.swf”檔案第一幀寫入:(此檔案共兩幀)
this.onEnterFrame = function ()
{if(this.getBytesLoaded() < this.getBytesTotal())
{Loaded = this.getBytesLoaded()/1000Total = this.getBytesTotal()/1000goto = (Loaded/Total)*100_root.a_load_bar.gotoAndStop(int(goto))}
else{
gotoAndStop(2)this.onEnterFrame = null}
}
stop()
然後在“b.swf”檔案第一幀寫入:
(此檔案共兩幀)
this.onEnterFrame = function ()
{if(this.getBytesLoaded() < this.getBytesTotal()){Loaded = this.getBytesLoaded()/1000Total = this.getBytesTotal()/1000goto = (Loaded/Total)*100_root.b_load_bar.gotoAndStop(int(goto))}
else
{gotoAndStop(2)this.onEnterFrame = null}}
stop()
這兩個檔案第一幀都是程式碼幀,沒有任何影片...,
大概就是這樣,自己再琢磨琢磨,方法不是一種,要學著變成自己的東西...
loadMovie("xx.swf", mymc);
mymc._x = 0;
mymc._y = 0;
mymc._xscale = 100; 這個是寬
mymc._yscale = 100; 這個是長,不過這裡的100是一倍的意思,不要理解錯了
載入外部swf影片並控制它的大小和位置 |;B7Q0
要在課件中實現畫中畫的效果,可以利用“loadMovie”語句來載入外部的 swf 檔案。閃吧新社群
為了控制外來動畫的大小與位置,我們需要先製作一個空 MC。現在我們假定要載入的 swf
b9[ a)n e6l A0檔案是“bb.swf” 。 閃吧新社群
新建一個 Flash 文件,插入一個影片剪輯元件,命名為“MC” ,無內容放空。將 MC 放
於你希望 bb.swf載入進來播放的位置,比如x=300 y=200 命名其例項名為“load” 。
建一按鈕,加上語句:
on(release) { 閃吧新社群H#[)| G7Y ^ [ ? k
_root.load.loadMovie("bb.swf"); 閃吧新社群I ^0u w)x
setProperty(_root.load, _xscale,60);
setProperty(_root.load, _yscale,60);
}
第二句的意思是當釋放按鈕後,就載入“bb.swf”給名為“load”的 MC 例項。第四句是 閃吧新社群把
這個 MC 縮小了 60%,_xscale是指原 MC 的寬,60 是百分比。在這裡,你可以隨意的改 變縮入比例了
。 閃吧新社群&N8F z x O V'n*V%o
要想實現解除安裝,可以重新建立一個按鈕元件,輸入如下語句:
on(release) {
root.load.unloadMovie("bb.swf")
} 閃吧新社群
如果只是簡單的載入,我們也可以使用 Flash MX 2004 中【行為面板】中提供的【影片剪輯】|【載入外
部影片剪輯】與【解除安裝影片剪輯命令】。
實現方法:
1、新建一個flash文件,要求大小最好和你要載入的那個flash相同;
2、在場景中放一個動態文字框,設定變數名為 opentxt(也可以取其他名字,但下面的程式碼中也得相應的修改);
3、選中第一幀,開啟動作面板,加入如下程式碼:
var fdTemp = createEmptyMovieClip("fdtemp", 1);
var L = createEmptyMovieClip("loadswf", 2);
L.loadMovie("外部影片.swf");
fdTemp.onEnterFrame = function() {
var a = this._parent["loadswf"].getBytesLoaded();
var b = this._parent["loadswf"].getBytesTotal();
opentxt = int(a*10000/b)+"%";
if (a>=b and a>10) {
opentxt.removeTextField();
}
};
把其中的 外部影片.swf 改成你的那個 flash的名稱即可!
這個loading只有顯示百分比,其他的與一般的loading動畫做法一樣!
stop();
var bl = 0;
var bt = 0;
this.createEmptyMovieClip("mcLoader", 1);
//--------------- 定位 ---------------
mcLoader._x = 50;
mcLoader._y = 50;
//--------------- 裝載 ----------------
mcLoader.loadMovie("影片.swf");
//------------ 計算程序 -------------
this.onEnterFrame = function() {
bl = mcLoader.getBytesLoaded();
bt = mcLoader.getBytesTotal();
txt1.text = int(bl/bt*100)+"%";
loadbar._width = 200*bl/bt;
//...
if (bl>=bt && bl) {
delete this.onEnterFrame;
// 停止計算
}
};
多個swf的loading
假如你有3個“swf”檔案,其中一個是主場景檔案,名為“main_page.swf”,其他兩個我們分別取名為“a.swf”&“b.swf”...
首先來製作“main_page.swf”這個檔案...
在它的主場景有兩個關鍵幀,在第一幀&第二幀分別加上“stop()”語句,
然後在第一幀上拖入一個你製作的“Loading”影片剪輯,命名為“my_load_bar”(這個影片剪輯共有100幀,在第一幀上加上stop()語句,在第100幀加上gotoAndStop(1)語句,
然後你再做你想要的loading動畫...
我想這個我不用再說了吧...
並且在庫中連線它...
連線名為“my_load_bar”)。
回到主場景在第一幀上加上如下語句:
//這是用於主場景的loading語句...(加在第一幀)
_root.onEnterFrame = function ()
{if(_root.getBytesLoaded() < _root.getBytesTotal())
{Loaded = _root.getBytesLoaded()/1000Total = _root.getBytesTotal()/1000goto =(Loaded/Total)*100_root.my_load_bar.gotoAndStop(int(goto))
}
else
{_root.gotoAndStop(2)_root.onEnterFrame = null}
}
stop()
假如你要在主場景載入後轉道第二幀的時候同時載入“a.swf”&“b.swf”兩個檔案,並且顯示相應的進度 ,
建立兩個空的影片剪輯,分別命名為“a”,“b”,拖到主場景,後在主場景第二幀上加入如下語句:
//呼叫庫中的“my_load_bar”影片剪輯...
_root.attachMovie("my_load_bar","a_load_bar",100)
_root.attachMovie("my_load_bar","b_load_bar",100)
_root.a_load_bar._x=你想要的位置
_root.a_load_bar._y=你想要的位置
_root.b_load_bar._x=你想要的位置
_root.b_load_bar._y=你想要的位置
_root.a.loadMovie("a.swf")
_root.b.loadMovie("b.swf")
然後在“a.swf”檔案第一幀寫入:(此檔案共兩幀)
this.onEnterFrame = function ()
{if(this.getBytesLoaded() < this.getBytesTotal())
{Loaded = this.getBytesLoaded()/1000Total = this.getBytesTotal()/1000goto = (Loaded/Total)*100_root.a_load_bar.gotoAndStop(int(goto))}
else{
gotoAndStop(2)this.onEnterFrame = null}
}
stop()
然後在“b.swf”檔案第一幀寫入:
(此檔案共兩幀)
this.onEnterFrame = function ()
{if(this.getBytesLoaded() < this.getBytesTotal()){Loaded = this.getBytesLoaded()/1000Total = this.getBytesTotal()/1000goto = (Loaded/Total)*100_root.b_load_bar.gotoAndStop(int(goto))}
else
{gotoAndStop(2)this.onEnterFrame = null}}
stop()
這兩個檔案第一幀都是程式碼幀,沒有任何影片...,
大概就是這樣,自己再琢磨琢磨,方法不是一種,要學著變成自己的東西...
loadMovie("xx.swf", mymc);
mymc._x = 0;
mymc._y = 0;
mymc._xscale = 100; 這個是寬
mymc._yscale = 100; 這個是長,不過這裡的100是一倍的意思,不要理解錯了
載入外部swf影片並控制它的大小和位置 |;B7Q0
要在課件中實現畫中畫的效果,可以利用“loadMovie”語句來載入外部的 swf 檔案。閃吧新社群
為了控制外來動畫的大小與位置,我們需要先製作一個空 MC。現在我們假定要載入的 swf
b9[ a)n e6l A0檔案是“bb.swf” 。 閃吧新社群
新建一個 Flash 文件,插入一個影片剪輯元件,命名為“MC” ,無內容放空。將 MC 放
於你希望 bb.swf載入進來播放的位置,比如x=300 y=200 命名其例項名為“load” 。
建一按鈕,加上語句:
on(release) { 閃吧新社群H#[)| G7Y ^ [ ? k
_root.load.loadMovie("bb.swf"); 閃吧新社群I ^0u w)x
setProperty(_root.load, _xscale,60);
setProperty(_root.load, _yscale,60);
}
第二句的意思是當釋放按鈕後,就載入“bb.swf”給名為“load”的 MC 例項。第四句是 閃吧新社群把
這個 MC 縮小了 60%,_xscale是指原 MC 的寬,60 是百分比。在這裡,你可以隨意的改 變縮入比例了
。 閃吧新社群&N8F z x O V'n*V%o
要想實現解除安裝,可以重新建立一個按鈕元件,輸入如下語句:
on(release) {
root.load.unloadMovie("bb.swf")
} 閃吧新社群
如果只是簡單的載入,我們也可以使用 Flash MX 2004 中【行為面板】中提供的【影片剪輯】|【載入外
部影片剪輯】與【解除安裝影片剪輯命令】。