flash教程-Action 簡明解釋

來源:互聯網
上載者:User
1、Goto:跳到一個指定的幀(Frame)
Scene: 指定 Scene
Frame:Number,Label,Expression,Next Frame,Previous Frame 可以選擇 Frame 的編號,標號,通過運算式,下一幀,前一幀
Expression: 定義運算式
Control:Go to and Play,Go to and Stop 通過選擇這個項目來確定到達指定的幀以後是繼續播放還是停止例子:
Go to and Play (1)  跳到第一幀播放
Go to Next Frame  跳到下一幀播放
Go to and Stop ("intro")  跳到標號為 intro 的幀播2、Play:播放
Stop:停止Toggle High Quality:切換畫面的細節程度Stop All Sounds:停止所有聲音Get URL:開啟指定的網址
URL: 網址
Windows:_self,_blank,_parent,_top 開啟網址時使用的目標
Variables:Don’t Send,Send use GET,Send use POST 變數的傳遞方式例子:
Get URL ("next.asp", window="_blank", vars=POST) 在新視窗中開啟 next.asp,並且傳遞參數3、FScommand:調用命令
Command: 命令
Arguments: 參數
For standalone player:fullscreen,allowscale,showmenu,exec,quit 播放器使用的固定命令和參數例子:
FS Command ("fullscreen", "true") 設定全螢幕播放4、Load/Unload Movie: 調入/釋放外部的影片
Action:Load movie into location,Unload movie from location,Load variables into location: 可以選擇是否調入新影片,釋放已經調入的影片,調入變數
URL:影片的網址
Location:Level,Target: 調入的層,或者是某一目標對象的位置
Variables:Don’t Send,Send use GET,Send use POST: 變數的傳遞方式 例子:
Load Movie ("test.swf", 1): 把 test.swf 調入到第一層
Load Movie ("test.swf", "loadit", vars=GET): 把 test.swf 調入到 loadit 目標對象的位置
Unload Movie ("loadit"): 把 loadit 目標對象處的影片釋放
Load Variables ("makeit.asp", 2, vars=GET): 調用 makeit.asp 並接收返回的變數5、 Tell Target: 指定目標對象
Target: 目標對象例子:
Begin Tell Target ("obj")  指定目標對象 obj
End Tell Target6、If Frame is Loaded: 判斷某幀是否調入
Scene: 指定情境
Frame:Number,Label,Expression: 指定幀,標號或者運算式
Expression: 運算式例子:
If Frame Is Loaded (Scene 1, "end")
End Frame Loaded
:判斷情境一的標號為 end 的幀是否調入7、On MouseEvent 滑鼠時間響應
Event:Press,Release,Release Outside,Roll Over,Roll Out,Drag Over,Drag Out,Key Press 各種事件:按下,放開,在外面放開,焦點移入,移出,拖過,拖出,按鍵按下 例子:
On (Press) 滑鼠按下的時候
End On
On (Key: s)  鍵盤上 s 按下的時候
End On8、If 判斷條件是否成立
Condition: 條件
Add Else/Else If clause: 加入 Else 再次判斷例子:
If (a=10)  如果 a=10 那麼……
End If
If (a=10)  如果 a=10 那麼……不然……
Else
End If9、Loop  迴圈
Condition: 條件例子:
Loop While (a=10)  如果 a=10 那麼迴圈
End Loop10、Call  調用函數幀或對象
Frame: 函數幀例子:
Call ("make")  調用 make 幀程式11、 Set Property  設定屬性
Set:Y Positon,X Position,Y Scale,X Scale,Alpha,Visibility,Rotation,Name,High quality,Show focus rectangle,Sound buffer time  設定 y 座標,x座標,y 放大倍數,x 放大倍數,透明度,可視否,旋轉角度,名稱,精細度,焦點矩形框是否顯示,聲音緩衝時間(預設5秒)
Target: 目標對象
value: 值 例子:
Set Property ("aoe", X Position) = "12" 設定目標對象 aoe 的 x 座標為 12
Set Property (Show focus rectangle) = "0" 取消焦點框12、Set Variable 設定變數
Variable: 變數
value: 值例子:
Set Variable: "test" = 10 設定 test=1013、Duplicate/Remove Movie Clip  複製對象
Action:Duplicate movie clip,Remove duplicate movie clip  可選擇是複製還是刪除
Target: 目標對象
New name: 新目標對象的名字
Depth: 深度例子:
Duplicate Movie Clip ("aoe", "aoe2", 1) 複製 aoe 一個新的動畫,名字叫 aoe2
Remove Movie Clip ("aoe2") 刪除目標對象 aoe214、Drag Movie Clip  拖動影片片段
Start drag operation: 開始拖動
Target: 目標對象
Constrain to rectangle:Left,Top,Right,Bottom 滑鼠的位置,左上右下
Lock mouse to center:  滑鼠放置在中心
Stop drag operation  停止拖動 例子:
Start Drag ("aoe", L=2, T=3, R=4, B=5)  拖動目標對象 aoe,位置在 L=2, T=3, R=4, B=5
Start Drag ("aoe", lockcenter)  拖動目標對象 aoe,位置在中心
Stop Drag  停止拖動15、Trace   跟蹤
Message: 資訊例子:
Trace ("aoe")  顯示 aoe
Trace (aoe)  顯示 aoe 的值16、 Comment   注釋
Comment: 注釋例子:
Comment ("計算")  注釋:計算在ActionScript中變數不需要聲明,但是,聲明變數是良好的編程風格,這便於掌握一個變數的生命週期,明確知道某一個變數的意義,有利於程式的調試。通常,在動畫的第一楨就已經聲明了大部分的全域變數並為它們賦予了初始值。每一個MC對象都擁有自己的一套變數,而且不同MC對象中的變數相互獨立且互不影響。 變數名
變數名需符合以下幾點:
1) 變數名必須是一個標識符,不能包含任何特殊符號;
2) 變數名不能是關鍵字及布爾值(true和flase)
3) 變數名在其範圍中唯一。變數的類型
在Flash中不需要顯式的聲明一個變數的類型,當變數被賦值的時候,它的類型被動態確定,當然,也可以把指派陳述式理解為變數的聲明語句,例如:
x = 3;
上面的運算式聲明了一個x變數,其類型為number類型,並且x的值為3。對變數x的賦值可能還會改變它的資料類型:
x = "hello";
此時變數x將從number類型改變為string類型。這同C語言等其他進階語言好像有些不同,但其實Flash中的指派陳述式不僅僅是一個賦值功能,它還起到了變數聲明的作用。
聲明了卻沒有被賦值的變數類型被稱為無類型變數。Flash5 ActionScript中的變數[2] 在特定的條件下,ActionScript可以自動將變數的類型進行轉換。例如,當為trace語句傳遞一個值以後,這個值被自動轉換成字串類型輸出到Output視窗中。在運算式中,ActionScript會根據需要對變數進行類型轉換,如下例:
"The number is " + 7
ActionScript將數字7自動轉換成字串"7",並將它添加在前面字串的末尾:
"The number is 7"
在調試指令碼的時候,需要確切掌握一個變數的資料類型,因為資料類型決定了變數的行為,ActionScript中提供了typeof操作符,用於確定某一個變數的類型:
trace( typeof( aVariable ));
另外,Flash 5中提供了兩個類型轉換函式。Number函數可以將一個字串轉換成數字,相應的,String函數可以將一個數字轉換成一個字串,它們的用法比較簡單,在Flash 5的指令碼編輯面板中已經提供了充分的提示。 變數的範圍
ActionScript中有局部變數和全域變數之分,全域變數在整個動畫的指令碼中都有效,而局部變數只在它自己的範圍內有效。聲明局部變數需要用到var語句。例如,在下面的例子中,i是一個局部的迴圈變數,它只在函數init中有效:
function init(){
var i;
for(i=0; i<10; i++){
randomArray[i] = random(100);
}
}
局部變數可以防止名字衝突,而名字衝突可能會導致致命的程式錯誤。例如,變數n是一個局部變數,它可以用在一個MC對象中計數,而另外一個MC對象中可能也有一個變數n,它可能用作一個迴圈變數,因為它們有不同的範圍,所以並不會造成任何衝突。
使用局部變數的好處在於減少程式錯誤發生的可能。比如,一個函數中使用局部變數,那麼這個變數只會在函數內部被改變,而一個全域變數可以在整個程式的任何位置被改變,使用錯誤的變數可能會導致函數返回錯誤的結果,甚至使整個系統崩潰。Flash5 ActionScript中的變數[3] 此外,函數的參數也將作為該函數的一個局部變數來使用,例如:
x=3;
function test(x)
{
x=1;
a=x;
}
test(x)
程式執行之後的結果是a=1,x=3。從這個例子可以看出test函數中的x參數的確是作為函數內部的局部變數來處理了。變數的聲明
在程式中,給一個變數直接賦值或者使用setVariables語句賦值就相當於聲明了全域變數;局部變數的聲明需要用var語句。在一個函數體內用var語句聲明變數,該變數就成了這個函數的局部變數,它將在函數執行結束的時候被釋放;在根時間軸上使用var語句聲明的變數也是全域的,它們在整個動畫結束的時候才會被釋放掉。
在聲明了一個全域變數之後,緊接著再次使用var語句聲明該變數,那麼,這條var語句無效,例如:
aVariable = 10;
var aVariable;
aVariable += 1;
在上面的指令碼中,變數aVariable被重複聲明了兩次,其中var語句的聲明被視為無效,指令碼執行後,變數aVariable的值將為11。
註:call語句同樣會為它調用的程式塊產生一個局部變數範圍,當被調用的指令碼結束的時候,這個局部範圍也同時消失。Flash 5中call語句可以用with語句取代。Flash5 ActionScript中的變數[4] 註:call語句同樣會為它調用的程式塊產生一個局部變數範圍,當被調用的指令碼結束的時候,這個局部範圍也同時消失。Flash 5中call語句可以用with語句取代。
使用trace語句可以檢測變數的值,例如trace(aVariable)將變數aVariable的值轉換成字串傳遞到Output視窗中,在偵錯模式下,還可以隨時改變和擷取某一個變數的值。變數的使用
在引用一個變數的時候,必須先進行聲明(使用var語句或者直接賦值),如果變數沒有得到初始化,那麼,在下面的例子中,將會產生錯誤:
gotoAndPlay( aFrame );
其中aFrame是一個標籤,因為aFrame沒有被聲明,gotoAndPlay將會被錯誤的執行,跳轉到一個不確定的位置。
變數的內容可以隨時被改變,變數的類型決定了它們的行為。請注意下面一段關於變數類型的說明,其中一些特徵是ActionScript中所特有的。
單一資料型別傳遞的是變數的值,就是說,變數的內容會被拷貝一份之後才被傳遞出去,不論是在指派陳述式中,還是作為參數傳遞給一個函數都是一樣:
var x = 4;
var y = Math.sqrt(x);
上面例子中,變數x的值被複製後傳遞給sqrt函數,並將返回結果2賦值給變數y,變數x的值保持不變。對象資料類型包含有大量複雜的資訊,具有這種資料類型的變數並不儲存對象的實際內容,它們儲存的只是一個指向對象的指標,當調用對象的屬性或者方法的時候,根據這個指標找到該對象實際的位置並返回所需要的內容。Flash5 ActionScript中的變數[5] 下面是一個通過指標進行傳遞的例子:
var myArray = ["Holly", "Tom"];
var newArray = myArray;
myArray[1] = "Marry";
trace(newArray);
上面的例子中,一個數組對象myArray有兩個元素,newArray被賦值為指向myArray的指標,當myArray的第二個元素被改變之後,所有指向它的其它變數內容也會改變,最後的trace語句將會把["Marry", "Tom"]輸出到輸出視窗中。
下面是一個將物件類型的變數作為參數傳遞給函數的例子:
function initArray(newArray){
var i;
for ( i=0; i<10; i++ ){
newArray[i] = random( 100 );
}
}
var myArray = new Array();
initArray( myArray );
上例中,myArray被傳遞到函數initArray中,因為傳遞的是對象指標,所以在函數內,數組myArray將被初始化。
在ActionScript中,對一般對象的引用稱為強引用,對MC動畫的引用稱為弱引用。強引用是指只要還有一個指標指向該對象,那麼這個對象就不能被釋放;弱引用是指如果MC動畫結束之後,所有指向該MC動畫的指標將隨之而不再有效。 FLASH 的全屏技術一、不用瀏覽器直接用Flash播放器播放:
  
A、不顯示Flash播放器功能表列的全屏(類似屏保效果),在第一幀處的Actions用FS Command 命令,在For standalone player 選項中選擇fullscreen ,這時就會看到arguments中為true,Command中是fullscreen。運行中可按ESC退出或設一按鈕在Actions上,用FS command在For standalone player選項中選擇quit也可退出。附帶說一句:For standalone player上的所有選項只適合於用Flash播放器播放的情況。在瀏覽Flash動畫時,如果按CTRL+F鍵,可實現全屏與非全屏的切換。
 
  B、如果僅是要使swf檔案佔滿Flash播放器的視窗,什麼也不需要做。直接擊swf檔案。
  
  以上一類全屏多用在非互連網環境的運行。
  
二、在非Flash播放器(如IE)中運行:
 
  A、只佔滿瀏覽器:這種情況相對簡單,不管你製作的Flash大小是否為800×600,只要在調用swf檔案的HTML中將WIDTH和HEIGHT的參數設為100%即可,當然也可以在Flash匯出HTML檔案的設定中進行設定,方法是:開啟File菜單;選Publish Settings彈出匯出設定對話方塊;在HTML標籤下的Dimensions選項,下拉後選中Percent(百分比),並在WIDTH 和HEIGHT框中填100,運行這個與swf同名的HTML檔案則與直接加語句效果相同。這種佔滿瀏覽器的全屏與swf檔案的設定無關,但最好設定的大小在700×400左右,否則容易導致映像(主要是在Flash中調用的位元影像)、漢字的失真。
  
B、不顯示瀏覽器功能表列、工具列的全屏。這種全屏稍稍複雜,與Flash的設定無關,但要藉助javascript來完成。方法是:在HTML檔案中的與之間加入以下代碼
  也可以在swf檔案的第一幀Actions上的URL命令上加上
  javascript:window.open(″*.swf″,″″,″fullscreen=1,menubar=no,width=800,height=600″)
  這種全屏類似屏保,用ALT+F4或設定按鈕退出。把fullscreen設為=0,則是顯示瀏覽器功能表列、工具列的全屏。(註:*.swf 是你所要顯示的Flash動畫的檔案名稱) 幫你搞定getURL指令
既然是網路動畫,那麼FLASH動畫與“超級連結”的聯絡是必不可少的了,下面我們對FLASH中一個常用且非常重要的一個ACTION函數getURL( )做一個總結。 首先getURL觸發的方式主要有兩種:[1]觀眾被動連結方式 在動畫時間軸上的某一貞上添加getURL指令,動畫播放至這一貞時自動連結到getURL參數指定的頁面地址。
[2]觀眾主動連結方式 在情境中的某一個按鈕上添加getURL指令,按鈕被觸發時,動畫連結到getURL參數指定的頁面地址。它在ACTION面板中的位置:
FLASH5.0中:ACTIONS——getURL
FLASH MX中:ACTIONS——Browser/Network——getURL文法形式:getURL("url","window","variables");參數說明:[1]url參數:url用來獲得文檔的統一定位資源。注意填寫的時候要書寫完整比 www.sina.com.cn可以在IE地址欄裡直接書寫,但在這裡,我們必須寫成 http://www.sina.com.cn才可以,當然FTP地址、CGI指令碼等也都可以作為其參數。
以上是絕對位址,它完整書寫了統一定位資源。
     其實這裡也可以使用相對位址:
     1如果SWF與要開啟的資源屬於同一目錄下,可直接書寫要開啟的檔案名稱及尾碼。如getURL("aaa.swf);
     2如果資源在下一層目錄,就以/開頭,如getURL("/aaa.swf");
     3如果資源在上層目錄,就以../開頭,如gerURL("../aaa.swf)";
                     以上說的目錄是指SWF檔案存放的目錄為基準。
   [2]windows參數:設定所要訪問連結的網頁視窗開啟檔案。可自己輸入貞或視窗名稱(配合Dreamweaver裡架構的設定)。也可以通過下拉式清單選擇:
_self:在當前的瀏覽器開啟連結。
_blank:在新視窗開啟網頁。
_parent:在當前位置的上一級瀏覽器視窗開啟連結。若有多個相互嵌套的架構,而又想所連結的url只替換影片自身所在的頁面時,可以使用這一選項。
_top:在當前瀏覽器上方新開一個連結。如果你在Dreamweaver裡設定了一些架構,本影片位於某一架構中,當你希望連結的URL不替代任何架構而出現在所有架構之上時,OK,選它好了。
    [3]Variable參數:規定參數的傳輸方式。大多數情況下,其預設參數為Don't Send。如果要將內容提交給伺服器的指令碼,就要選Send Using GET或者Send Using POST。"。"GET"表示將參數列表直接添加到url之後,與之一起提交,一般適用與參數較少且簡單的情況,"POST"表示將參數列表單獨提交,在速度上會慢一些,但不容易遺失資料,適用與參數較多較複雜的情況。URL的其他用途:[1]郵件程式觸發
利用getURL實現郵件程式的觸發效果(當你點該按鈕時,自動開啟OUTLOOK等本地機預設的郵件程式)只需要這樣書寫getURL("mailto:flasher@flasherclub.com")就可以了,注意mail和to之間是沒有空格的哦。郵件地址自己按需要更改。[2]案頭捷徑連結
記得上次弄個全屏動畫當案頭,案頭上的捷徑串連一般的地址都好說,如getURL("E:\我的文件\FLASH\FLASH GAME");但作為案頭必須要個[我的電腦][我的文件]之類特殊的連結吧,我要告訴你我的失敗教訓:如果你這樣書寫getURL("我的電腦");是無效的,下面給出幾個比較特殊的案頭連結參數:
連結[我的電腦]gerURL("file&:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}");
連結[我的文件]gerURL("file&:///::{450D8FBA-AD25-11D0-98A8-0800361B1103}");
連結[網路位置]getURL("file&:///::{208D2C60-3AEA-1069-A2D7-08002B30309D}");
連結[控制面版]gerURL("file&:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/::{21EC2020-3AEA-1069-A2DD-08002B30309D}");
連結[資源回收筒]getURL("file&:///::{645FF040-5081-101B-9F08-00AA002F954E}");[3]調用網頁中的javascript函數
格式:getURL("javascript:function()");
其中function是HTML中定義過的函數或函數庫中的函數。
原理:當動畫執行getURL指令時,就會開始搜尋本動畫swf檔案所在html頁面當中名為function的javascript函數,並立即執行該函數。這裡舉個最常見的例子——利用getURL調用javascript開啟新視窗
方法如下:
將下面的代碼加到Flash按鈕上
on (release) {
getURL ("javascript:openNewWindow(‘URL’,'WindowName','Width,Height,Tool bar,Menu bar,Location bar,Scroll bar,Status bar,Resizable')");
}具體參數設定如下:
URL -> 彈出新視窗的頁面地址
Width -> 視窗寬度
Height -> 視窗高度
Name -> 視窗名
Tool bar -> 是否需要工具列
Menu bar -> ........功能表列
Location bar -> ....地址欄
Scroll bar -> .....捲軸
Status bar -> ......狀態列
Resizable -> 是否可以改變大小發布成HTML格式,然後開啟該檔案,給它添加一段代碼,用來定義一個名為openNewWindow的函數。

這段函數的功能就是用“以features為特徵的且名為Name的新視窗”開啟“地址為URL的網頁檔案”。  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.