Flash常用的動作命令
一.Flash中的常用命令:
1、在當前幀停止播放
on(release){
stop();
}
2、從當前幀開始播放
on(release){
play();
}
3、跳到第 10 幀,並且從第 10 幀開始播放
on(release){
gotoAndPlay(10);
}
4、跳到第 20 幀,並且停止在該幀
on(release){
gotoAndStop(20);
}
5、跳到下一個場景,並且繼續播放
on(release){
nextScene();
play();
}
6、跳到上一個場景,並且繼續播放
on(release){
prevScene();
paly();
}
7、條到指定的某個場景,並且開始播放
on(release){
gotoAndPlay('場景名',1);
}
8、播放器窗口全屏顯示
on(release){
fscommand('fullscreen', true);
}
9、取消播放器窗口的全屏
on(release){
fscommand('fullscreen', false);
}
10、播放的畫面,隨播放器窗口大小的,改變而改變
on(release){
fscommand('allowscale', true);
}
11、播放的畫面,不論播放器窗口有多大,都保持原尺寸不變
on(release){
fscommand('allowscale', false);
}
12、打開一個網頁,如果該“網頁”和“flash動畫”在同一個文件夾里:
on(release){
getURL('http://ftg.5d6d.com');
}
13、打開一個網頁,如果該“網頁”是在網絡上的其他站點里:
on(release){
getURL(http://ftg.5d6d.com);
}
14.跳轉幀(按紐動作,釋放跳轉)
on (release) {
gotoAndPlay(1);
}
15.播放:
on(release){play();}
16.停止:
on(release){stop();}
17.跳到第N幀開始播放:
on(release){gotoAndplay(N);}
18.跳到第N幀停止:
on(release){gotoAndstop(N);}
二.Flash中關於聲音的常用命令:
1.new Sound()//創建一個新的聲音對象;
2.mysound.attachSound()//加載庫里的聲音
3.mysound.start()//播放聲音;
4.mysound.getVolume()//讀取聲音的音量
5.mysound.setVolume()//設置音量
6.mysound.getPan()//讀取聲音的平衡值
7.mysound.setPan()//設置聲音的平衡值
8.mysound.position//聲音播放的當前位置
9.mysound.duration//聲音的總長度;
FLASH動作腳本代碼集錦
1 、簡單 loading 代碼:
方法 1 、使用載入字節數判斷
b=getBytesTotal();// 獲取總的字節數
a=getBytesLoaded();// 已經下載的字節數
onEnterFrame=function(){// 進入幀時 , 進行判斷
if (a == b) {// 如果載入的字節數等於總的字節數
delete this.onEnterFrame// 刪除進入幀
gotoAndPlay('frame');// 轉入到你要播放的幀
] else {// 否則
a=getBytesLoaded();// 已經下載的字節數
percent=int(a/b*100)+'%';// 計算已經下載的百分比
]
}
把上面方法放入第一幀就可以了
方法 2 、使用載入的幀數判斷_
用 Action 語法地 if frame. is loaded 來實現 , 新建一層,這層專門放 Action,
第一幀,
ifFrameLoaded (' 場景 ', frame) {// 假如場景中地禎數已經載入
goto and play() // 跳至並播放某某禎 ( 自己設定 )
}
第二幀, O*Np@Q
goto and play(' 場景 1', 1)// 跳至並播放第一禎循環
再加上一個 load 地 MC 循環播放在這兩幀的中間,就 OK 了。
2 、用 flash 做那種彈出的小窗口
分兩步:
給 flash 中的按鈕加入如下 action:
on (release) { idd{
getURL ('MM_openBrWindow('newweb.htm','','width=600,height=100')');
在 HTML 頁面的 <head>...</head> 之間加入下面的 javascript. 代碼 .
<script. language='javascript'>
<!-- ~Y
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features); ;
}
//-->
</script>
3 、載入 swf 文件的控制
在 flash 中可以使用 loadmovie ()和 loadmovienum ()兩個函數控制,具體代碼如下:
loadmovie 載入的控制
_root.createEmptyMovieClip ( 'aa' , 1 );
with ( aa ) {
_x = 50 ;
_y = 100 ;
_width=200
_height=300
_alpha=50
loadMovie ( '02.swf' );
}
loadMovieNum 的載入控制:
loadMovieNum ( '02.swf' , 1 );
onEnterFrame. = function () {
if ( _level1 ) {
with ( _level1 ) {
_x = 50 ;
_y = 100 ;
}
delete onEnterFrame. ;
}
};
在 flash 2004 中,增加了 MovieClipLoader 類,使用它可以控制播放,下面是一個測試代碼:
var mcl= new MovieClipLoader(); // 定義新的 MovieClipLoader 對象~
var listener = new Object(); // 定義一個新的對象,用來監聽 load 進程
listener.onLoadProgress=function(target,loadedBytes,totalBytes ){ //onloadprogress 加載過程中每當將加載的內容寫入磁盤時調用
// 其中 loadedBytes 是已經下載的字節, totalBytes 是正在加在的文件的總字節數
x=loadedBytes
y=totalBytes
//trace(x+ ' bytes 已經 load 了 ');
//trace(totalBytes + ' bytes 需要 load');
d=x*100/y // 計算已經載入的百分比
)
listener.onLoadInit = function(target) // 當執行加載的剪輯的第一幀上的動作時調用
{
if(d<100){ // 如果沒有加載完成,不要播放
target.stop();
} else { // 加載完成,可以設置加載的 swf 文件開始播放的幀數
target.gotoAndPlay(2);
}
target._width=400 // 設置加載的影片的大小及其位置等相關屬性
target._height=350
target._x=25
target._y=50
}
mcl.addListener(listener); // 注冊一個新的監聽對象
mcl.loadClip('***.swf',1)// 使用自定義的對象,加載 swf 文件
4 、設為首頁
on (release) {
getURL('void(document.links.style.behavior='url(#default#homepage)');voiddocument.links.setHomePage('http://www.flash8.net/')','_self', 'POST');
}
注意要將網頁中的 flash 的 ID 號命名為 'links'
加入收藏夾
on (release) {
getURL('void window.external.AddFavorite('http://www.163.com',' 網頁 ');','_self', 'POST');
}
5 、如何隨機設置 MC 顏色?
方法 1 、 MC 實例名為 'mc'
mycolor=new Color('mc')
mycolor.setRGB(random(0xffffff))
方法 2 、 MC 實例名為 'mc'
mycolor=newColor('mc') [
mycolor.setRGB(random(16777215))
方法 3 、 myColor = new Color(mc);
myColorTransform. = new Object();// 用 new Object() 為
//setTrandform() 創建參數並隨機取值
myra = random(100);
myrb = random(255);
myga = random(100);
mygb = random(255);
myba = random(100);
mybb = random(255);
myaa = random(100);
myab = random(255);
myColorTransform. = {ra:myra, rb:myrb, ga:myga, gb:mygb, ba:myba, bb:mybb, aa:myaa, ab:myab};
myColor.setTransform(myColorTransform);
方法 4 、 mycolor = new Color(mc);
mycolor.setRGB(random(255)<<16|random(255)<<8|random(255));
6 、關於隨機數的技巧
用來產生 6--20 之間的 5 個不重復的隨機數
1): 首先產生一個隨機數 , 放在數組對象中的第一個位置
2): 產生一個新的隨機數
3): 檢查新產生的隨機數和所有目前已產生的隨機數是否相同 , 若是相同則返回 (2), 否則返回 (4)
4): 將新的隨機數加入數組對象中下一個數組元素內
5): 檢查數組對象個數是否已達到 5 個 , 若是跳到 (6), 否則返回 (2)
6): 結束
AS 如下 :
data1=newArray(5);
tot=1;
data1=[tot-1]=random(20-6+1)+6;
do{
gen_data=random(20-6+1)+6;
reapeat_data=0;
for(i=0,i<=tot-1;i++){
if(gen_data==data
reapeat_data=1;
break;
}
}
if(reapeat_data==0){
tot++
data[tot-1]=reapeat_data;
}
}while(tot<5);
trace(data1);
7 、如何禁止右鍵菜單、縮放、全屏
在第一楨中輸入下面命令:
全屏-> FS Command ('fullscreen', true)
禁止縮放-> FS Command ('allowscale', False)
禁止菜單-> FS Command ('showmenu', False)
fscommand 的方法還是只能適用於 fp ,在網頁中使用還是必須添加額外的參數
<PARAM Name='menu' value='false'>
或者用最簡單的一句 as ,在 fp 和網頁中均適用:
Stage.showMenu=false;
8 、如何實現雙擊效果?
把下面的代碼放到按鈕上:
on (press) {
time = getTimer()-down_time;
if (time<300) {
trace('ok');
}
down_time = getTimer();
}
這樣的話,如果都用比較麻煩,寫了一個類來判斷
MovieClip.prototype.doubleClick = function() {
this.timer2 = getTimer()/1000;
if ((this.timer2-this.timer)<0.25) {
return true;
} else {
this.timer = getTimer()/1000;
return false;
}
};
繼承了 mc 的類,可以重復使用,當然也可以封裝為 2 。 0 的類
9 、如果要在瀏覽器中實現全屏效果,只需在 html 文件中加入以下代碼即可:
<script>
window.open('*.swf','','fullscreen=1,menubar=no,width=800,height=600')
</script>
其中 *.swf 為要調用的 FLASH 文件,記住要將該文件放在 html 文件的同一路徑下面。要退出全屏狀態需按 ALT + F4 或退出。
如果在 swf 文件中,添加關閉按鈕,使用下面的代碼:
on(release) {
getURL('opener=null;window.close();');
}
10 、用 AS 怎么把影片倒放
function prev(target) {
target.gotoAndStop(target._totalframes);
target.onEnterFrame. = function() { [
if (this._currentframe>1) {
this.gotoAndStop(this._currentframe-1);
} else {
delete this.onEnterFrame;
}
};
}
prev(_root.mc); // 指定要倒退播放的 MC instance name 就可以了
11 、聲音相關
之前為 MYSOUND 鏈接一個屬性
1 : mysound=new Sound();// (注釋) mysound 是一個變量名, new Sound 是一個構造函數,表示 mysound 是一個 Sound 對象。
以后可以通過 mysound 來調用 Sound 方法 }*HK[
2: mysound.attachSound('name'); 這里的 NAME 就是你之前在標識符里寫的東西了,對應好了就 OK !
3: mysound.setVolume(50); 這個是控制聲音播放時的聲音大小,取值在 0 到 100 ,意義大家都知道吧,不會有人認為 0 是最大聲吧 ~
4:mysound.start(0.01); 這個語句是表示開始播放聲音,()里的參數表示聲音開始的位置,單位為秒,再來就是循環幾次 ~ 比如 mysound.start(30 , 2);// 聲音從 30 秒處開始循環 2 次。
12 、倒計時
首先新建文件以后,在主場景中分別用文字工具建立三個動態文本框,變量名字分別是: leftmin,leftsec,leftmilli, 也就是分別來顯示計時的分鍾、秒數和毫秒數。
然后新建一層,在第一楨寫上如下代碼即可:(已經做了詳細解釋,相信大部分朋友能夠理解這些代碼的意思)
onLoad = function(){// 當場景加載以后執行
totalmin = 40;
totalsec = 60;
totalmilli = 100;
// 初始化一些變量,在后面的計算中要用到這些變量
}
nEnterFrame. = function(){// 逐楨執行動作'
currentsec = Math.round(getTimer()/1000);
// 求出當前影片已經播放的秒數(取整)
currentmilli = Math.round(getTimer()/10);
// 求出當前影片已經播放的毫秒數(取整)
leftsec = totalsec- currentsec;~
// 剩余的秒數等於總的秒數減去已經播放的秒數
leftmin = totalmin; ^
// 開始分鍾數等於總的分鍾數,開始是不變的
leftmilli = totalmilli - currentmilli;
// 剩余的毫秒數等於總的毫秒數減去已經播放的毫秒數
if(leftsec<10){leftsec = '0'+leftsec}
if(leftmin<10){leftmin = '0'+leftmin}
if(leftmilli<10){leftmilli = '0'+leftmilli}
// 以上三句是當分鍾數、秒數、毫秒數小於 10 的時候,前面加上一個 “0” 。
if(leftmilli<=1){totalmilli+=100;} );
// 當計時剩下的毫秒小於 1 的時候,總秒數再加 100 ,以便下一次重新計時(這里注意得到的影片播放的毫秒數是一直增加的)
if(leftsec == 0){// 當剩余的秒數等於 0 的時候
totalsec+=60;// 類似上面的解釋,總秒數加 60
totalmin-=1;// 這時候相當於過了 60 秒,所以分鍾數要減 1
if(leftmin ==0){// 當分鍾數等於 0 的時候,計時結束
leftsec = '00'; ,
leftmin = '00';
leftmilli = '00';
// 將三個計時框都附值為 0
delete onEnterFrame;// 刪除這個逐楨動作,以節省資源
};
}
}
13 、鍵盤控制上下左右
怎樣用鍵盤中的上下左右控制動畫!
onClipEvent (load) {
speed = 5;// 當 MC 載入時,設置速度為 5 ,也就是說每按一下方向鍵,就移動 5 象素
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
this._x -= speed;// 當 ← 被按下時,自身的 X 位置不斷減 speed , X 軸坐標不斷減小,也就是不斷向左移動
}
if (Key.isDown(Key.RIGHT)) {
this._x += speed;// 當 → 被按下時,自身 X 位置不斷加 speed , X 軸坐標不斷增加,也就是不斷向右移動
}
if (Key.isDown(Key.UP)) {
this._y -= speed;// 當 ↑ 被按下時,自身的 Y 位置不斷減 speed , Y 軸坐標不斷減小,也就是不斷向上移動
}
if (Key.isDown(Key.DOWN)) {
this._y += speed;// 當 ↓ 被按下時,自身的 Y 位置不斷加 speed , Y 軸坐標不斷增加,也就是不斷向下移動
}
}
onEnterFrame. = function () {
if (Key.isDown(Key.LEFT)) {
mc._x -= 20;
}
if (Key.isDown(Key.RIGHT)) {
mc._x += 20;
}
if (Key.isDown(Key.UP)) {
mc._y -= 20;
}
if (Key.isDown(Key.DOWN)) {
mc._y += 20;
}
if (mc._x<0) {
mc._x = 0;
}
if (mc._x>550-mc._width) {
mc._x = 550-mc._width;
}
if (mc._y<0) {
mc._y = 0;
}
if (mc._y>400-mc._height) {
mc._y = 400-mc._height;
}
}
14 、隨機調用外部圖片
用 9 個圖片為例子,這個也可以使用 loadmovie 調用
num=Math.round(9*Math.random()+1)
// 設置隨即數字( 1-9 )
_root.createEmptyMovieClip('pic', 1);
// 創建一個空的 PIC MC 用來裝載外面載入的圖片
_root.pic._x = 200;
_root.pic._y = 200;
// 簡單設置一下 MC 的位置
_root.pic.loadMovie(num+'.jpg',1);
// 隨即載入外面的圖片
15 、暫停
可以把要暫停的地方 , 幀數放長啊,或者在當前幀寫
stop();
function pause(){
clearInterval(pauseInterval);
play();
pauseInerval=setInterval(pause,1000); //1000 是 1 秒
16 、怎樣改變某一影片剪輯的播放速度
function go(obj) {
with (obj) {
nextFrame();
if (_currentframe. == _totalframes) {
gotoAndStop(1);
}
}
)
go(mc);
setInterval(go, 100, mc);
17 、怎樣調用 .chm 文件
getURL(mk:@MSITStore:F:\...\xxx.chm::/index.htm)
18 、隨機生成一個有 30 個數字的數組,這 30 個數字隨機在 1~500 之間取,且不能重復,而且要亂序的。
tmp = new Array();
k = new Array();
for (i=0; i<=499; i++) {
tmp = i+1;
}
for (i=0; i<=29; i++) {
k = tmp.splice(random(tmp.length-1), 1);
}
trace(k);
Flash按鈕動作代碼
1、轉下一幀並繼續播放
on (release)
{
play();
}
2、轉第三幀並播放
on (release)
{
gotoAndPlay(03);
stopAllSounds();
}
3、全屏播放
fscommand('fullscreen', 'true');
4、退出
on (release)
{
if (substring(_root._url, 8, 1) == '/')
{
fscommand('quit');
}
else
{
getURL('javascript:window.close()');
} // end if
}
5、返回第一幀
on (release)
{
gotoAndPlay(01);
stopAllSounds();
}
FLASH腳本代碼大全
- Go to 跳轉到指定的幀
- Play 播放
- Stop 停止
- Toggle High Quality 在高畫質和低畫質間切換
- Stop All Sounds 停止所有聲音的播放
- Get URL 跳轉至某個超聯結
- FSCommand 發送FSCommand命令
- Load Movie 裝載影片
- Unload Movie 卸載影片
- Tell Target 告知目標
- If Frame Is Loaded ..判斷幀是否被完全載入
- On Mouse Event 鼠標事件
其他Actions。包括:
- break 跳出循環
- call 調用指定幀(一般喊有某個特定函數)
- comment 注釋
- continue 繼續循環
- delete 刪除一個對象(Object)中的變量
- do while do while循環
- duplicateMovieClip 復制MC
- else 否則(與if聯用)
- else if 否則如果(與if聯用)
- evaluate 調用自定義函數(Function)
- for for循環
- for .. in 依次取得對象(Object)中的各個屬性或者某個數組中的所有元素
- FSCommand 發送FSCommand命令
- function 聲明自定義函數
- getURL 跳轉至某個超聯結
- goto 跳轉到指定的幀
- if 如果
- ifFrameLoaded ..幀是否完全被載入
- include 讀入外部的ActionScript程序文件(.as)
- loadMovie 裝載MC
- loadVariables 轉載外部文件中的數據,這些外部文件可以是文本文件,或者是由ASP/CGI等腳本返回的文本值
- on 鼠標事件的觸發條件
- onClipEvent MC的事件觸發程序
- play 播放
- print 輸出到打印機
- removeMovieClip 刪除MC
- return 在函數(function)中返回一個值
- set variable 設定變量值
- setProperty 設定屬性
- startDrag 開始拖動
- stop停止
- stopAllSounds 停止所有聲音的播放
- stopDrag 停止拖動
- swapDepths 交換兩個MC的深度
- tellTarget 指定Action命令生效的目標
- toggleHighQuality 在高畫質和低畫質間切換
- trace 跟蹤調試
- unloadMovie 卸載MC
- var 聲明局部變量
- while 當..成立時..
- with 對..對象(Object)做..
操作符( Operators)
- ! 邏輯非操作
- != 不等於
- '' 字符串
- % 取余數
- && 邏輯與操作
- () 括號
- * 乘號
- + 加號
- ++ 變量自加一
- - 減號
- -- 變量自減一
- / 除號
- < 小於
- <= 小於等於
- <> 不等於
- == 相等
- > 大於
- >= 大於等於
- and 邏輯與
- not 邏輯非
- or 邏輯或
- typeof 返回變量類型
- void 實體,無返回
- | | 邏輯或操作
+ Bitwise Operators 位操作符
- & 位與操作
- << 位左移
- >> 位右移
- >>> 位右移(無符號)
- ^ 位異或操作
- | 位或操作
- ~ 補位操作
+ Compound Assign Operators 復合操作符
- %= A%=B 等效於 A=A%B
- &= A&=B 等效於 A=A&B
- *= A*=B 等效於 A=A*B
- += A+=B 等效於 A=A+B
- -= A-=B 等效於 A=A-B
- /= A/=B 等效於 A=A/B
- <<= A<<=B 等效於 A=A<<B
- >>= A>>=B 等效於 A=A>>B
- >>>= A>>>=B 等效於 A=A>>>B
- ^= A^=B 等效於 A=A^B
- |= A|=B 等效於 A=A|B
+ String Operators 字符串操作符(注:實質上是ASCII的比較)
- add 連接兩個字符串
- eq A eq B 字符串A值與字符串值B相等
- ge A ge B 字符串A值大於等於字符串B值
- gt A gt B 字符串A值大於字符串B值
- le A le B 字符串A值小於等於字符串B值
- lt A lt B 字符串A值小於字符串B值
- ne A ne B 字符串A值不等於字符串B值
+ Functions 函數
- Boolean 取表達式的布爾值(True 或 False)
- escape 除去URL串中的非法字符,將其參數按照URL編碼的格式轉化為字符串(String)
- eval 訪問並計算表達式(expression)的值,並以字符串(String)的形式返回該值
- false 布爾非值(0)
- getProperty 獲取屬性
- getTimer 獲取從電影開始播放到現在的總播放時間(毫秒數)
- getVersion 獲取瀏覽器的FLASHPlayer的版本號
- globalToLocal 場景(Scene)中的坐標轉換成MC中的坐標
- hitTest 測試一個點或者MC是否同另一個交叉(即沖突檢測)
- int 把十進制數值強制轉換成整數
- isFinite 測試數值是否為有限數
- isNaN 測試是否為非數值
- keycode 返回鍵盤按下鍵的鍵盤值(ASCII值)
- localToGlobal MC中的坐標轉換成場景(Scene)中的坐標
- maxscrol
一、FLASH腳本基礎入門講解
認識“動作”面板
在Flash中,動作腳本的編寫,都是在“動作”面板的編輯環境中進行,熟悉“動作”面板是十分必要的。
按【F9】鍵調出“動作”面板,可以看到“動作”面板的編輯環境由左右兩部分組成。左側部分又分為上下兩個窗口。。
左側的上方是一個“動作”工具箱,單擊前面的圖標展開每一個條目,可以顯示出對應條目下的動作腳本語句元素,雙擊選中的語句即可將其添加到編輯窗口。
下方是一個“腳本”導航器。里面列出了FLASH文件中具有關聯動作腳本的幀位置和對象;單擊腳本導航器中的某一項目,與該項目相關聯的腳本則會出現在“腳本”窗口中,並且場景上的播放頭也將移到時間軸上的對應位置上。雙擊腳本導航器中的某一項,則該腳本會被固定。
右側部分是“腳本”編輯窗口,這是添加代碼的區域。可以直接在“腳本”窗口中編輯動作、輸入動作參數或刪除動作。也可以雙擊“動作”工具箱中的某一項或“腳本編輯”窗口上方的【添加腳本】工具,向“腳本”窗口添加動作。
在“腳本”編輯窗口的上面,有一排工具圖標,在編輯腳本的時候,可以方便適時的使用它們的功能。
在使用“動作”面板的時候,可以隨時點擊“腳本”編輯窗口左側的箭頭按鈕,以隱藏或展開左邊的窗口。將左面的窗口隱藏可以使“動作”面板更加簡潔,方便腳本的編輯。
好了,動作面板就介紹這些,有個印象,不要求記住,工具欄上每個工具的作用和功能將在以后的課程中邊用邊熟悉。
如何編寫flash中的腳本
首先,要知道編寫腳本,不需要用戶對AS有完全的了解!
現在要考慮的問題是,如何在你的flash中添加編寫腳本?簡單的說,添加腳本可分為兩種:一是把腳本編寫在時間軸上面的關鍵楨上面(注意,必須是關鍵楨上才可以添加腳本)。二是把腳本編寫在對象身上,比如把腳本直接寫在MC(影片剪輯元件的實例)上、按鈕上面。
此外,大家也需要簡單理解一下flash是如何執行你編寫的腳本的。當你在時間周的關鍵楨上添加了腳本,那么當flash運行的時候,它會首先執行這個關鍵楨上的腳本,然后才會顯示這個關鍵楨上的對象。
還有一些簡單的知識,AS中的對象都包括什么呢?它可以包含數據,也可以是舞台上的電影剪輯,也可以是舞台上的按鈕等。既然包含了那么多對象,那么每種對象肯定有各自的屬性!比如電影剪輯(movieclip)對象,它的:屬性就有_height(高度),_rotation(旋轉),等,這些屬性不需要你去特意的記憶,當使用的時候可以隨時翻閱腳本字典。在以后的教程中會陸續給大家介紹一些基礎腳本的使用技巧。
一、需要學到的基本AS命令如下:
stop()、
play()、
gotoandplay()、
gotoandstop()、
nextFrame()、
prevFrame()、
nextScene()、
prevScene();、
stopAllSounds();
按鈕的AS編寫規則
播放
on
(release)
{
_root.mc.play();
}
如果要在按鈕身上寫腳本的話,必須使用on(事件){//腳本程序}的格式來寫!上面的腳本作用就是:當你在這個按鈕上按一下鼠標(release事件)的時候,就會執行下面的_root.mc.play();程序,它的意思是讓舞台上的mc開始播放!
6、同理:咱們選中舞台上的暫停按鈕,在它上面輸入:
on
(release)
{
_root.mc.stop()
}
然后依次在快退上輸入:
on
(release)
{
_root.mc.prevFrame();
//prevFrame表示回到動畫的上一楨
}
在快進的按鈕上輸入:
on
(release)
{
_root.mc.nextFrame();
}
在停止的按鈕上輸入:
on
(release)
{
_root.mc.gotoAndStop(1);//跳到
mc影片的第一楨,並停止播放!
}
二、按鈕
AS的編寫
在flash中的交互功能一般是由按鈕來完成的。掌握按鈕的編寫規則也是一個閃客的基本技能。
OK,現在咱們來說說按鈕腳本如何編寫。上一講中提過,AS腳本編寫可以寫在時間軸的關鍵楨上,也可以寫在對象本身上面。按鈕也不例外,既可以寫在時間軸上,也可以寫在按鈕本身上面。只不過這兩種編寫規則都要遵循一定的規矩,這是后話。
現在咱們來做一個例子,做一個按鈕,這個按鈕要實現的功能就是打開一個指定的網頁。(這個例子非常基礎,用這個例子來講解按鈕AS兩種編寫方法。)
第一種:把腳本寫在按鈕本身。
一、在舞台上繪制一個矩形,選中矩形並按F8,將這個矩形轉換成按鈕元件。
二、編寫動作腳本:
選中按鈕,按F9,打開動作面板,在專家模式下輸入以下腳本:
on(release){
getURL('http://3800hk.com/','_blank')
}
現在這個按鈕就實現了一個打開網頁的功能。通過例子你應該注意到,按鈕的
AS書寫規則就是:
on(事件){
//要執行的腳本程序,剛才的例子是用getURL來打開一個網頁。你也可以使用腳本程序來執行其他功能,例如跳轉到某一個楨,或載入外部一個動畫文件。
}
大可以看到,其實就一個on語句,這個on語句就是按鈕的AS編寫規則了。
需要注意的是on里面的事件,這個事件你可以理解為是鼠標或鍵盤的動作。剛才的例子我們使用的事件是release(按一下鼠標)我現在把常用的按鈕事件列出來:
事件名字說明Press事件發生於鼠標在按鈕上方,並按下鼠標Release發生在按鈕上方按下鼠標,接着松開鼠標時。也就是“按一下”鼠標Releaseoutside發生於在按鈕上方按下鼠標,接着把光標移動到按鈕之外,然后松開鼠標
Rollover當鼠標滑入按鈕時
Rollout當鼠標滑出按鈕時
Dragover發生於按着鼠標不放,光標滑入按鈕
Dragout發生於按着鼠標不放,光標滑出按鈕
Keypress發生於用戶按下特定的鍵盤按鍵時
第二種按鈕AS的編寫方法。
這種方法是把腳本程序寫在時間軸上,而不是按鈕本身上面。
一、選中按鈕,在下面的屬性面板中為按鈕起一個名字,這里我起了一個
bt
二、選中時間軸的第一楨,按F9打開動作面板。輸入如下腳本:
bt.onrelease=function()
{
getURL('http://http://3800hk.com/',
'_blank');
};
這種編寫
AS的方法要遵循的規則就是下面的公式而已:
按鈕實例的名字.事件名稱=function(){
//要執行的腳本程序。
}
大家只要記住這個公式就可以套用了。
按鈕的AS就先將到這了,這個可以算是基本技能了。希望大家都能掌握。
三、影片剪輯的AS編寫影片剪輯在flash中可以說是使用最多的一種元件了,那么對於它的AS也是不少。
在講解之前,我還是要重新說一下電影剪輯AS的編寫規則,和上次講按鈕一樣,
分為兩種,一種是寫在電影剪輯本身上,一種是寫在時間軸上面。
一、首先我們先來做個簡單的小例子。
或許你不用AS就能做出一個小球的移動動畫。但是如果讓你用AS來實現小球的移動呢?
下面來看看如何用AS來實現吧。
在這個例子里,你首先會了解到如何在電影剪輯本身上編寫AS,以及編寫規則。
1、新建立一個影片剪輯元件,里面你就隨便畫一個圓吧。之后把這個影片剪輯拖放到舞台之中(也就是創建一個此影片剪輯的實例)。
2、現在開始編寫腳本,選中這個MC,按F9打開動作面板,按照圖01顯示選擇
onClipEvent,之后在顯示的事件中選擇enterFrame,然后在里面編寫腳本如下:
this._x+=5
這個腳本編寫之后應該是:
onClipEvent
(enterFrame)
{//
enterFrame的意思四以影片幀頻不斷地觸發此動作this._x+=5;//this代表這個影片剪輯自身。_x表示影片剪輯的X軸坐標。
}
呵呵,按下你的ctrl+回車測試一下吧,一個簡單的移動動畫就搞定了。
從這個例子咱們不難看出,如果把AS寫在影片剪輯本身上,那么它是有自己的書寫格式的。正確的書寫格式就是:
onClipEvent
(事件){
//需要執行的腳本程序
}
這個可以看成是公式,你記住就行了,是寫在影片剪輯身上的。括號里的“事件”其實是個觸發器,當事件發生時,執行該事件后面花括號中的語句。,具體有哪些事件,我把它們都列出來。
-load影片剪輯一旦被實例化並出現在時間軸中時,即啟動此動作。
-unload在從時間軸中刪除影片剪輯之后,此動作在第一幀中啟動。處理與
Unload影片剪輯事件關聯的動作之前,不向受影響的幀附加任何動作。
-enterFrame以影片幀頻不斷地觸發此動作。
-mouseMove每次移動鼠標時啟動此動作。
_xmouse和_ymouse屬性用於確定當前鼠標位置。
-mouseDown當按下鼠標左鍵時啟動此動作。
-mouseUp當釋放鼠標左鍵時啟動此動作。
-keyDown當按下某個鍵時啟動此動作。使用Key.getCode方法獲取最近按下的鍵的有關信息。
-keyUp當釋放某個鍵時啟動此動作。使用Key.getCode方法獲取最近按下的鍵的有關信息。
-data當在loadVariables或loadMovie動作中接收數據時啟動此動作。當與
loadVariables動作一起指定時,data事件只發生一次,即加載最后一個變量時。當與loadMovie動作一起指定時,獲取數據的每一部分時,data事件都重復發生。
了解了事件之后,你可以自己試着修改一下腳本,如果讓你們點一下鼠標,舞台上的圓就移動一下,該怎么做呢?
關於把AS寫在影片剪輯本身的例子先講到這,下面來看看如果把AS寫在時間軸上面的話,應該怎么寫。
首先你把剛才的腳本去掉。然后需要為這個影片剪輯實例起一個名字,比如起名為mc,在選中時間軸的第一楨,打開動作面板,輸入以下腳本:
mc.onEnterFrame
=function(){
this._x
+=5;//你也可以把這句改為mc._x+=5自己想一下為什么。
};
顯而易見,在時間軸上的寫法就應該套用以下公式:
實例名.事件名稱=function(){
//腳本程序
}
需要注意的是,這種寫法的事件名稱不要忘了在前面加一個
on,比如,事件如果是enterframe的話,你就應該寫成onenterframe
下面簡單說一下影片剪輯的屬性。比如,影片剪輯有自己的X、Y軸坐標,有自己的透明度(_alpha),這些都是它的屬性。
那么如何使用這些屬性呢?你可以使用“點”語法來對屬性進行設置。
把上面的腳本修改一下。
mc.onenterframe
=function()
{
mc._x
+=5;
mc._alpha
=random(100);
};
這里我加了一句this._alpha=random(100),它是設置影片剪輯的透明度的,使用的語句就是_alpha。后面的random()函數是隨機選取一個100以內的數字作為它的透明度。從這個句子可以看出,“點”語法使用方法就是:實例名.屬性(mc._alpha),你甚至可以簡單理解為“點”就是“的”,那么this._alpha這句你就可以理解為:影片剪輯mc的透明度上面的腳本mc._alpha=random(100)也可以改為_root.mc._alpha=random(100)那么,你就可以理解為:舞台上的影片剪輯mc的透明度是隨機選擇100內的值。
四、動態文本框
一、flash中的動態文本使用方法
在flash中,文本工具提供了三種文本類型。分別是:靜態文本、動態文本和輸入文本。
下面講解的內容屬於動態文本的AS編寫規則。要創建一個動態文本非常簡單,
只需要選中文本工具,然后選擇動態文本類型,然后在舞台上拖拽出所需要的
動態文本框就行了。
二、如何為動態文本賦值
當在舞台上拖拽出動態文本框之后,可以直接在里面進行文本輸入或粘貼外部文本內容。那么用AS如何來對動態文本框賦值呢?在這里為大家介紹兩種方法進行賦值!
1、使用動態文本的實例名字來賦值
操作步驟:
(1)在舞台上創建一個動態文本框,並為這個動態文本實例起一個名字,例如
abc
(2)選中時間軸的第一楨,打開動作面板,輸入以下腳本:
abc.text
='愛國者安全網'按下ctrl+回車就可進行測試了。從這個簡單的例子可以知道,如果要用文本實例名字來進行賦值的話,必須使用以下格式:動態文本實例的名字.text=”需要賦值的內容”
2、使用變量來賦值
(1)在舞台上創建一個動態文本框,並為這個動態文本實例起一個變量名
3800hk。
(2)選中時間軸的第一楨,打開動作面板,輸入以下腳本:
3800hk='歡迎大家來到愛國者安全網學習!'
不難看出,使用變量賦值更為簡單實用!賦值格式為:變量名=“賦值的內容”
以上兩種賦值方法如果內容過多需要換行的時候,需要使用行用回車符(
“\r”即ASCII13)分隔!
三、如何載入外部txt文本里的內容,當內容過多的時候,使用上面的方法並不是太好,我們可以使用下面的方法,從外部獲取文本資料內容!而外部的資料內容就放在一個普通的txt(記事本)文件中。
具體操作步驟如下:
1、創建一個動態文本實例,並為這個動態文本實例起一個變量名
hk
2、選中時間軸的第一楨,打開動作面板,輸入以下腳本:
loadVariablesNum('heiying.txt',0);//載入外部名字叫heiying.txt的文本文件,加載級別為0
3、現在來准備外部的heiying.txt文本文件了。注意:要把這個文本文件和你剛才做的flash文件放在一個文件夾里!這個txt文件里的資料應該按照如下格式編寫:flash中動態文本變量的名字=這里就是所需要的資料內容。對應上面的格式,外部heiying.txt中的內容為:hk=歡迎大家來到愛國者安全網學習!最后一點,需要將這個文本文件保存為UTF-8格式。
4、完成以上步驟之后,就可以進行測試了。
下面介紹另外一種載入外部文本資料的方法,並介紹當文本內容過多時候,如
何使用滾動條組件。
(1)創建一個動態文本實例,並並為這個動態文本實例起一個實例名字anquan
(注:是實例名而不是變量名)起一個變量名為hk
(2)打開
flash的組件面板(快捷鍵ctrl+F7),找到UIScrollBar(滾動條)組件。按着它不動,然后拖放此組件至剛才的動態文本實例的右部邊緣,如果成功的話,組件會和文本框結合在一起!
(3)選中舞台第一楨,編寫如下腳本:
tt=newLoadVars();//創建一個LoadVars對象的實例,這里的實例名字叫tt
tt.load('heiying.txt');//創建的tt實例需要載入的對象是heiying.txt文本文件。
tt.onLoad=function(s){//開始載入外部文件,具體格式請按照此例格式。參數s是指示load操作是否成功完成。如果完成,那么S的值就為true(真),反之為false(假)if(s){anquan.text=tt.hk;}//如果載入成功,則anquan文本框中的內容就等於tt.實例中的heiying的內容!(hk是我們外部文本文件中的變量。)};
(4)至於外部的heiying.txt還可以使用剛才所創建的文本文件,為了測試滾l 文本框的最大行度- newline 換行符- Number 將參數轉換成數值其返回值有以下四種情況:
如果 x 為一數字,則返回值即為該數字;
如果 x 為一布爾數,則返回0或1;
如果 x 為一字符串,則函數將x解釋為一個指數形式的十進制數;
如果x未定義,則返回0。
- parseFloat 將字符串轉換成浮點數
- parseInt 將字符串轉換成整數
- random 產生0到指定數間的隨機數
- scroll 文本框中的起始滾動行
- String 將參數轉換成字符串
- targetPath 返回指定實例MC的路徑字符串
- true 布爾是值(1)
- 保留字符串中的%XX格式的十六進制字符
+ String Functions 字符串函數
- chr 將ASCII碼轉換成相應字符
- length 返回字符串的長度
- mbchr 將ASCII/S-JIS編碼轉換成相應的多字節字符
- mblength 返回多字節字符串的長度
- mbord 將多字節字符轉換成相應的ASCII/S-JIS編碼
- mbsubstring 截取多字節字符串中的字串
- ord 將字符轉換成ASCII碼
- substring 截取字符串中的子串
+ Properties 屬性
- _alpha Alpha值(透明度值)
- _currentframe 在MC中的當前幀數
- _droptarget 當使用Start drag拖動一個MC時,實時地返回該MC的絕對路徑
- _focusrect 高亮按鈕或者某個當前區域的顯示與否(True顯示/Flase不顯示)
- _framesloaded 已載入的影幀數
- _height MC的高度
- _highquality 畫質的高低(True高畫質/False低畫質)
- _name MC的實例名
- _quality 當前畫質(字符串值) LOW,MEDIUM,HIGH,BEST
- _rotation MC旋轉的角度(單位:度)
- _soundbuftime 聲音的緩沖區大小(默認值5,單位:秒)
- _target MC的路徑
- _totalframes 總幀數
- _url 電影被調用的URL地址
- _visible 是否可視(True可視/False不可視)
- _width MC的寬度
- _x MC的x坐標
- _xmouse 鼠標的x坐標
- _xscale MC的X軸向縮放度
- _y MC的y坐標
- _ymouse 鼠標的y坐標
- _yscale MC的y軸向縮放度
+ Objects 對象
+ Array 數組
- concat 合並多個數組
- join 將一個數組中的元素轉化成字符串,並通過特定的分割符進行聯結,並返回結果字符串
- length 返回數組長度
- new Array 新建數組對象
- pop 出棧 (FILO 先入后出)
- push 入棧 (入隊列)
- reverse 反相(顛倒數組,及第一個元素和最后一個元素互換……)
- shift 出隊列 (FIFO 先入先出)
- slice 截取數組中的子串生成新的數組
- sort 數組元素的排序
- splice 從數組中指定元素起刪除指定個數的元素或者刪除指定元素
- unshift 從數組頭部插入一個元素
+ Boolean 布爾對象
- new Boolean 新建布爾型對象
- toString 將布爾型對象的值轉換成字符串值
- valueOf 獲取布爾型對象的值(返回值為布爾型)
+ Color 顏色對象
- getRGB 獲取顏色值的RGB分量(返回值0xRRGGBB十六進制)
- getTransform 獲取顏色值的轉換量(返回值 cxform 型) [不太清楚]
- new Color 新建一顏色對象
- setRGB 設置顏色值的RGB分量(參數為0xRRGGBB十六進制)
- setTransform 設置顏色值的轉換量(參數為 cxform 型) [不太清楚]
+ Date 時間和日期對象
- getDate 獲取當前日期(本月的幾號)
- getDay 獲取今天是星期幾(0-Sunday,1-Monday...)
- getFullYear 獲取當前年份(四位數字)
- getHours 獲取當前小時數(24小時制,0-23)
- getMilliseconds 獲取當前毫秒數
- getMinutes 獲取當前分鍾數
- getMonth 獲取當前月份(注意從0開始:0-Jan,1-Feb...)
- getSeconds 獲取當前秒數
- getTime 獲取UTC格式的從1970.1.1 0:00以來的秒數
- getTimezoneOffset 獲取當前時間和UTC格式的偏移值(以分鍾為單位)
- getUTCDate 獲取UTC格式的當前日期(本月的幾號)
- getUTCDay 獲取UTC格式的今天是星期幾(0-Sunday,1-Monday...)
- getUTCFullYear 獲取UTC格式的當前年份(四位數字)
- getUTCHours 獲取UTC格式的當前小時數(24小時制,0-23)
- getUTCMilliseconds 獲取UTC格式的當前毫秒數
- getUTCMinutes 獲取UTC格式的當前分鍾數
- getUTCMonth 獲取UTC格式的當前月份(注意從0開始:0-Jan,1-Feb...)
- getUTCSeconds 獲取UTC格式的當前秒數
- getYear 獲取當前縮寫年份(當前年份減去1900)
- new Date 新建日期時間對象
- setDate 設置當前日期(本月的幾號)
- setFullYear 設置當前年份(四位數字)
- setHours 設置當前小時數(24小時制,0-23)
- setMilliseconds 設置當前毫秒數
- setMinutes 設置當前分鍾數
- setMonth 設置當前月份(注意從0開始:0-Jan,1-Feb...)
- setSeconds 設置當前秒數
- setTime 設置UTC格式的從1970.1.1 0:00以來的秒數
- setUTCDate 設置UTC格式的當前日期(本月的幾號)
- setUTCFullYear 設置UTC格式的當前年份(四位數字)
- setUTCHours 設置UTC格式的當前小時數(24小時制,0-23)
- setUTCMilliseconds 設置UTC格式的當前毫秒數
- setUTCMinutes 設置UTC格式的當前分鍾數
- setUTCMonth 設置UTC格式的當前月份(注意從0開始:0-Jan,1-Feb...)
- setUTCSeconds 設置UTC格式的當前秒數
- setYear 設置當前縮寫年份(當前年份減去1900)
- toString 將日期時間值轉換成'日期/時間'形式的字符串值
- UTC 返回指定的UTC格式日期時間的固定時間值
+ Key 鍵盤對象
- BACKSPACE Backspace(<-)鍵
- CAPSLOCK CapsLock鍵
- CONTROL Ctrl鍵
- DELETEKEY Delete(Del)鍵
- DOWN 方向下鍵
- END End鍵
- ENTER Enter(回車)鍵
- ESCAPE Esc鍵
- getAscii 獲取最后一個按下或松開的鍵的對應字符的Ascii碼
- getCode 獲取最后一個被按下的鍵的鍵盤掃描碼
- HOME Home鍵
- INSERT Insert(Ins)鍵
- isDown 當指定鍵被按下時返回True值
- isToggled 當Caps lock或者Num Lock鍵被鎖定時返回真(True)
- LEFT 方向左鍵
- PGDN PageDown(PGDN)鍵
- PGUP PageUp(PGUP)鍵
- RIGHT 方向右鍵
- SHIFT Shift鍵
- SPACE 空格鍵
- TAB Tab鍵
- UP 方向上鍵
+ Math 數學函數對象
- abs abs(n) 取n的絕對值
- acos acos(n) n的反余弦(返回值單位:弧度)
- asin asin(n) n的反正弦(返回值單位:弧度)
- atan atan(n) n的反正切(返回值單位:弧度)
- atan2 atan2(x,y) 計算x/y的反正切
- ceil ceil(n) 取靠近n的上限的整數(向上取整)
- cos cos(n) 取n的余弦(n的單位:弧度)
- E Euler(歐拉)指數(約為2.718)
- exp 指數
- floor floor(n) 取靠近n的下限的整數(向下取整)
- LN10 ln10(約等於2.302)
- LN2 ln2(約等於0.693)
- log 取自然對數(e為底)
- LOG10E 10為底取E的對數(約等於0.434)
- LOG2E 2為底取E的對數(約等於1.443)
- max 返回兩參數中的最大值
- min 返回兩參數中的最小值
- PI 圓周率(約等於3.14159)
- pow pow(x,y) x的y次方
- random 產生0-1間的隨機數
- round 四舍五入取整
- sin sin(n) 取n的正弦(n的單位:弧度)
- sqrt 開根號
- SQRT1_2 0.5開根號(約等於0.707)r /> - SQRT2 2開根號(約等於1.414)
- tan tan(n) 取n的正切(n的單位:弧度)
+ MovieClip 影片夾子對象
- attachMovie 產生一個庫中MC的實體並將它綁定到某個電影上
- dupicateMovieClip 復制當前MC產生新的MC
- getURL 使瀏覽器瀏覽指定頁面
- gotoAndPlay 跳轉到指定幀並播放
- gotoAndStop 跳轉到指定幀並停止播放
- loadMovie 引入一個外部電影到指定層
- loadVariables 引入外部文件中的變量值
- nextFrame 下一幀
- play 播放
- prevFrame 前一幀
- removeMovieClip 刪除用duplicateMovieClip創建的MC
- startDrag 開始拖動MC
- stop 停止MC的播放
- stopDrag 停止拖動MC
- unloadMovie 卸載由loadMovie引入的Movie
+ Mouse 鼠標對象
- hide 隱藏鼠標指針
- show 顯示鼠標指針
+ Number 數值對象
- MAX_value FLASH5 所允許的最大數值1.79769313486231 e 308
- MIN_value FLASH5 所允許的最小數值5 e -324
- NaN 是否為非數值(Not a Number)
- NEGATIVE_INFINITY 是否為負數
- new Number 新建數值對象
- POSITIVE_INFINITY 是否為正數
- toString 將數值轉換成字符串
+ Object 對象
- new Object 新建對象
- toString 轉換對象為字符串
- valueOf 返回對象的值
+ Selection 選擇區對象
- getBeginIndex 獲取可編輯文本區的起始位置,-1表示無可編輯文本區
- getCaretIndex 獲取當前的編輯位置,-1表示沒有可編輯文本區
- getEndIndex 獲取可編輯文本區的結束位置,-1表示無可編輯文本區
- getFocus 獲取當前的激活文本區的文本變量名
- setFocus 設置當前的激活文本區
- setSelection 設置可編輯文本的起始位置和終止位置
+ Sound 聲音對象
- attachSound 綁定庫中的一個聲音
- getPan 獲取聲音的混音值 [不太清楚]
- getTransform 獲取當前聲音的變換量(返回值類型:sxform) [不太清楚]
- getVolume 獲取當前聲音的音量(百分比)
- new Sound 新建聲音對象
- setPan 設置聲音的混音值 [不太清楚]
- setTransform 設置當前聲音的變換量(參數類型:sxform) [不太清楚]
- setVloume 設置當前聲音的音量(百分比)
- start 開始播放當前聲音
- stop 停止播放當前聲音
+ String 字符串對象
- charAt 在指定的索引表中返回一個字符
- charCodeAt 在指定的索引表中返回一個字符的代碼
- concat 聯結合並多個字符串
- fromCharCode 從字符代碼組構造出一個新的字符串
- indexOf 在字符串中尋找子串,返回子串起始位置或-1(-1表示未找到)
- lastIndexOf 在字符串中尋找子串,返回子串終止位置或-1(-1表示未找到)
- length 返回字符串的長度
- new String 新建字符串對象
- slice 返回字符串中指定截取的子串
- split 根據限定符將字符串轉換成一個數組
- substr substr( start, length ) 返回從start開始,共length長的子串r /> - substring substring( indexA, indexB ) 返回indexA..indexB之間的子串
- toLowerCase 將字符串中的大寫字符全部轉換成小寫
- toUpperCase 將字符串中的小寫字符全部轉換成大寫
+ XML 可擴充性標記語言對象
- appendChild 添加一個子結點到指定的XML元素
- attributes XML元素的屬性數組
- childNodes 一個XML元素的子結點數組
- cloneNode 克隆(復制)當前結點
- createElement_x 新建一個新的XML元素
- createTextNode 新建一個新的XML文本結點
- firstChild 返回當前XML結點的第一個子結點
- hasChildNodes 當前XML結點是否有子結點(返回true有子結點/flash則無)
- insertBefore 在一個指定的XML元素的子結點前插入一個新的子結點
- lastChild 返回當前XML結點的最后一個子結點
- load 從指定的URL把XML元素引入FLASH中
- loaded 當XML元素引入或是發送同時引入FLASH中后,返回true值
- new XML 新建一個XML對象
- nextSibling 當前XML結點的下一個結點
- nodeName 返回當前XML結點的名字
- nodeType 返回當前XML結點的類型(1-元素,3-文本)
- nodevalue 返回當前XML結點的值(text型返回文本)
- onLoad 當引入或發送同時引入時觸發事件
- parentNode 返回當前XML結點的父結點
- parseXML 將XML字符串轉換成XML對象
- previousSibling 當前XML結點的前一個結點
- removeNode 從XML文本中刪除結點
- send 從FLASH中把一個XML元素發送到指定的URL地址
- sendAndLoad 從FLASH中把一個XML元素發送到指定的URL地址同時引入XML結果
- toString 把XML對象轉換為XML字符串表達
+ XMLSocket XML套接口
- close 關閉一個XML套接口
- connect 連接一個XML套接口,指定URL,並定義其端口號
- new XMLSocket 建立一個新的XML套接口
- onClose 關閉XML套接口時觸發事件
- onConnect 連接XML套接口時觸發事件
- onXML 從服務器上獲取XML時觸發事件
- send 發送XML給服務器