我們都知道,SWF文件是Flash輸出的標準文件格式之一,它的應用十分廣泛,在PowerPiont、Authorware等軟件中都可以輕松調用。那么如何在Flash中使用SWF文件呢?本文將為大家詳細介紹相關的技術。
在使用Flash制作課件時,常常需要使用一些現成的SWF文件,通過Flash中的導入命令使用SWF文件,會徹底破壞原有的文件結構。另外,對于大型的課件,我們可以進行分組合作,然后通過調用SWF將課件組合起來,這樣可以減小課件主文件的體積,也便于整體合作制作大型課件。
SWF文件的調用及控制
下面我們通過介紹課件《只有一個地球》(如圖所示)的制作方法,來學習調用并控制SWF文件。在圖中,灰色部分的尺寸為340×300(像素),這部分就是SWF文件的播放區域。右側是文字按鈕(如:片段一、片段二……),它們是SWF文件的調用按鈕,下方是SWF文件的控制按鈕,從左往右可以實現的功能有:播放、暫停、快退、快進、回到開頭、跳到結尾、增加音量和減小音量。在課件的存放目錄中有6個SWF文件,它們是被調用的文件,名稱分別為:片段一、片段二、片段三……這些文件的場景尺寸跟灰色部分一樣大,都是340×300(像素),另外還有一個片頭動畫名為:片頭動畫.swf。
第1步 啟動Flash Mx 2004,使用繪圖工具箱中的工具繪制界面,并添加一些文字。分別按“Ctrl+F8”創建所需要的按鈕,然后拖放到界面的合適位置。按“Ctrl+F8”創建一個名為“SWF”的影片(MovieClip),里面不進行任何設置,然后按“Ctrl+L”打開Library庫,將SWF影片拖放到場景中,并將其中心點和灰色區域的左上角重合,再單擊〔Properties〕(屬性)按鈕,將其“Instance Name”設置為“swf”,最后保存文件到某個文件夾(注意:所調用的SWF也要放置在這個文件夾中,否則將不能調用,如果原SWF文件設置了背景色,在調用時都會自動去除成為透明色)。
第2步 為場景的第1幀添加如下Actions語句:
fscommand("fullscreen", true);
//設置課件全屏播放。
fscommand("allowscale", false);
//當課件窗口大小改變時,課件中的內容保持原有尺寸。
loadMovie("片頭動畫.swf", "swf");
//調用片頭動畫到影片SWF中。
movie_sound = new Sound(swf);
//捆綁影片SWF中的聲音文件。
movie_sound.setVolume(50);
//設置影片SWF中音樂的音量為50,最高是100。
yinliang = movie_sound.getVolume();
//設置變量yinliang,使其值與影片SWF的音量相等。
第3步 為場景右側的文字按鈕加上Actions 語句,“片段一”按鈕的語句如下:
on (release) {
unloadMovie("swf");
//將SWF影片中的原有內容清除。
loadMovie("片段一.swf", "swf");
//調用片段一文件至SWF影片中。
}
“片段二”按鈕的語句如下:
on (release) {
unloadMovie("swf");
loadMovie("片段二.swf", "swf");
}
其余的幾個文字按鈕的語句與上面類似,只需要改變調用文件的名稱即可。
第4步 下面分別來設置控制按鈕的Actions語句:
“播放”按鈕:
on (release) {
root.swf.play();
}//當單擊該按鈕時,當前場景中的SWF影片播放。
“暫停”按鈕:
on (release) {
_root.swf.stop();
}//當單擊該按鈕時,當前場景中的SWF影片暫停。
“快退”按鈕:
on (release) {
if (_root.swf._currentframe>=40) {
_root.swf.gotoAndStop(_root.swf._currentframe-40);
//當單擊該按鈕時,如果當前幀大于或等于40時,場景中的SWF影片從當前幀處減去40幀,實現快退,這里的40可根據具體情況設置。
} else {
_root.swf.gotoAndStop(1);
//否則SWF影片跳轉到第1幀。
}
}
“快進”按鈕:
on (release) {
_root.swf.gotoAndStop(_root.swf._currentframe+40);
}//單擊該按鈕,SWF影片從當前幀加上40幀,從而實現了快進。
“回到開頭”按鈕:
on (release) {
_root.swf.gotoAndStop(1);
}
“跳到結尾”按鈕:
on (release) {
dangqianzhen = _root.swf._totalframes;
//設置變量dangqianzhen的數值等于SWF影片的總幀數,即最后一幀。
root.swf.gotoAndStop(dangqianzhen);
//讓SWF影片跳轉到最后一幀。
}
“增大音量”按鈕:
on (release) {
if (_root.yinliang<=90) {
_root.yinliang = _root.yinliang+10;
_root.movie_sound.setVolume(_root.yinliang);
//如果當前音量的數值小于或等于90就加上10,然后設置SWF影片中的音樂音量為增加后的值。
} else {
_root.movie_sound.setVolume(100);
//否則設置音量為100,這是最大音量。
}
}
“減小音量”按鈕:
on (release) {
if (_root.yinliang>=10) {
_root.yinliang = _root.yinliang-10;
_root.movie_sound.setVolume(_root.yinliang);
//如果當前音量的數值大于或等于10就減去10,然后設置SWF影片中的音樂音量為減少后的值。
} else {
_root.movie_sound.setVolume(0);
//否則設置音量為0,這樣就沒有聲音了。
}
}
最后在課件發布時,一定要把所有的SWF文件都放置到同一個文件夾中,否則在使用課件時,會提示調用的SWF文件找不到。
特殊SWF文件調用技巧
并不是所有的SWF文件都正好與我們的調用要求相符合,對于一些不合乎我們要求的SWF文件,我們也可以通過設置其屬性,力求讓其與我們的要求相吻合。下面介紹三種特殊情況的處理方法。
1. SWF文件的尺寸不符合:當調用的SWF文件的尺寸大于或小于顯示區域時,我們可以通過設置SWF影片的坐標和尺寸實現精確定位。語句示例如下:
_root.swf._X=0;
_root.swf._Y=0;
//設置SWF影片橫坐標和縱坐標的數值,可根據具體情況設置。
_root.swf._width =340;
_root.swf.._height = 300;
//設置SWF影片長度和寬度的數值,可根據具體情況設置,單位為像素。
_root.swf._xscale=50;
_root.swf._yscale=50;
//設置SWF影片縱橫比例為原來的二分之一,默認的原尺寸為100,可根據具體情況設置。
2. 只需要SWF文件中的一部分:當調用的SWF文件中的前一部分我們不需要,可以在使用loadMovie調用時,加上一句語句:_root.swf.gotoAndPlay(150)(假設從150幀處是我們需要的內容)。當SWF文件的后一部分不需要時,我們只需要在播放到該部分時,讓影片暫停即可。其實當SWF文件加載到影片中的時候,影片的所有控制語句都可以用來對SWF文件進行控制,如:透明度(_alpha),角度(_rotation)等。
3. SWF文件中有特殊標志:一些SWF文件中的某個位置可能會有單位或作者的標志,在調用時會影響課件的整體效果。此時可以在SWF影片所在層的上面再增加一個新層,然后在新層中對應的位置繪制自己的標志遮擋原有的標志,如果原有的標志是運動的,繪制的標志也應進行相應的運動。