FLASH動做腳本詳解

FLASH動做腳本詳解html

1、FLASH腳本基礎入門講解算法

2、按鈕AS的編寫express

3、影片剪輯的AS編寫編程

4、動態文本框數組

5、影片剪輯的拖拽瀏覽器

6、流程控制與循環語句安全

7、繪圖及顏色的AS的編寫網絡

8、聲音 AS 的編寫與控制dom

9、時間日期的 AS編寫編程語言

10、點語法以及路徑

11、深刻了解時間控制

12、無條件轉移

十3、變量

十4、運算符(一)

十5、變量(二)

十6、影片剪輯的屬性

十7、再講循環語句

十8、影片剪輯處理函數

十9、複製影片剪輯

二10、深刻 startDrag() stopDrag()

二11、for循環

二12、while do while循環

二十3、循環語句的嵌套

二十4、組件

二十5、播放器控制與網頁鏈接以及動畫發佈輸出

二十6、loadVariables命令

二十7、影片剪輯的深度

二十8、文本框

二十9、超文本標籤

1、FLASH腳本基礎入門講解

認識「動做」面板
  在Flash中,動做腳本的編寫,都是在「動做」面板的編輯環境中進行,熟悉「動做」面板是十分必要的。
按【F9】鍵調出「動做」面板,能夠看到「動做」面板的編輯環境由左右兩部分組成。左側部分又分爲上下兩個窗口。。
左側的上方是一個「動做」工具箱,單擊前面的圖標展開每個條目,能夠顯示出對應條目下的動做腳本語句元素,雙擊選中的語句便可將其添加到編輯窗口。
   下方是一個「腳本」導航器。裏面列出了FLA文件中具備關聯動做腳本的幀位置和對象;單擊腳本導航器中的某一項目,與該項目相關聯的腳本則會出如今「腳本」窗口中,而且場景上的播放頭也將移到時間軸上的對應位置上。雙擊腳本導航器中的某一項,則該腳本會被固定。
   右側部分是「腳本」編輯窗口,這是添加代碼的區域。能夠直接在「腳本」窗口中編輯動做、輸入動做參數或刪除動做。也能夠雙擊「動做」工具箱中的某一項或「腳本編輯」窗口上方的【添加腳本】工具 ,向「腳本」窗口添加動做。


  在「腳本」編輯窗口的上面,有一排工具圖標,在編輯腳本的時候,能夠方便適時的使用它們的功能。

 

  在使用「動做」面板的時候,能夠隨時點擊「腳本」編輯窗口左側的箭頭按鈕,以隱藏或展開左邊的窗口。將左面的窗口隱藏能夠使「動做」面板更加簡潔,方便腳本的編輯。

  好了,動做面板就介紹這些,有個印象,不要求記住,工具欄上每一個工具的做用和功能將在之後的課程中邊用邊熟悉。

 

如何編寫flash中的腳本

 

首先,要知道編寫腳本,不須要用戶對AS有徹底的瞭解!

  如今要考慮的問題是,如何在你的flash中添加編寫腳本?簡單的說,添加腳本可分爲兩種:一是把腳本編寫在時間軸上面的關鍵楨上面(注意,必須是關鍵楨上才能夠添加腳本)。二是把腳本編寫在對象身上,好比把腳本直接寫在MC(影片剪輯元件的實例)上、按鈕上面。

  此外,你們也須要簡單理解一下flash是如何執行你編寫的腳本的。當你在時間周的關鍵楨上添加了腳本,那麼當flash運行的時候,它會首先執行這個關鍵楨上的腳本,而後纔會顯示這個關鍵楨上的對象。

  還有一些簡單的知識,AS中的對象都包括什麼呢?它能夠包含數據,也能夠是舞臺上的電影剪輯,也能夠是舞臺上的按鈕等。既然包含了那麼多對象,那麼每種對象確定有各自的屬性!好比電影剪輯(movieclip)對象,它的:屬性就有_height(高度)_rotation(旋轉),等,這些屬性不須要你去特地的記憶,當使用的時候能夠隨時翻閱腳本字典。在之後的教程中會陸續給你們介紹一些基礎腳本的使用技巧。

  

  2、須要學到的基本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影片的第一楨,並中止播放!
}

2、按鈕AS的編寫

 flash 中的交互功能通常是由按鈕來完成的。掌握按鈕的編寫規則也是一個閃客的基本技

能。

OK,如今我們來講說按鈕腳本如何編寫。上一講中提過,AS 腳本編寫能夠寫在時間軸的關

鍵楨上,也能夠寫在對象自己上面。按鈕也不例外,既能夠寫在時間軸上,也能夠寫在按鈕

自己上面。只不過這兩種編寫規則都要遵循必定的規矩,這是後話。

如今我們來作一個例子, 作一個按鈕, 這個按鈕要實現的功能就是打開一個指定的網頁。

(這個例子很是基礎,用這個例子來說解按鈕 AS 兩種編寫方法。)

第一種:把腳本寫在按鈕自己。

1、 在舞臺上繪製一個矩形,選中矩形並按 F8,將這個矩形轉換成按鈕元件。

2、 編寫動做腳本:

選中按鈕,按 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的編寫方法。

這種方法是把腳本程序寫在時間軸上,而不是按鈕自己上面。

1、 選中按鈕,在下面的屬性面板中爲按鈕起一個名字,這裏我起了一個 bt

2、 選中時間軸的第一楨,按 F9 打開動做面板。輸入以下腳本:

bt.onrelease = function() {

getURL("http:// http://3800hk.com/", "_blank");

};

這種編寫 AS 的方法要遵循的規則就是下面的公式而已:

按鈕實例的名字.事件名稱=function(){

//要執行的腳本程序。

}

你們只要記住這個公式就能夠套用了。

按鈕的 AS 就先將到這了,這個能夠算是基本技能了。但願你們都能掌握。

3、影片剪輯的AS編寫

影片剪輯在flash中能夠說是使用最多的一種元件了,那麼對於它的AS也是不

少。

在講解以前,我仍是要從新說一下電影剪輯AS 的編寫規則,和上次講按鈕同樣,

分爲兩種,一種是寫在電影剪輯自己上,一種是寫在時間軸上面。

1、首先咱們先來作個簡單的小例子。

或許你不用 AS 就能作出一個小球的移動動畫。可是若是讓你用 AS 來實現小球的移動呢?

下面來看看如何用 AS 來實現吧。

在這個例子裏,你首先會了解到如何在電影剪輯自己上編寫 AS,以及編寫規則。

1 新創建一個影片剪輯元件,裏面你就隨便畫一個圓吧。以後把這個影片剪輯拖放到

舞臺之中(也就是建立一個此影片剪輯的實例)。

2 如今開始編寫腳本,選中這個 MC,按 F9 打開動做面板,按照圖 01 顯示選擇

onClipEvent,以後在顯示的事件中選擇 enterFrame,而後在裏面編寫腳本以下:

this._x+=5

這個腳本編寫以後應該是:

onClipEvent (enterFrame) {// enterFrame的意思四以影片幀頻不斷地觸發此動做

this._x += 5; //this 表明這個影片剪輯自身。_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軸座標,有本身的透

明度(_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內的值。

4、動態文本框

1、flash 中的動態文本使用方法

 flash中,文本工具提供了三種文本類型。分別是:靜態文本、動態文本和輸

入文本。

下面講解的內容屬於動態文本的 AS 編寫規則。要建立一個動態文本很是簡單,

只須要 選中文本工具,而後選擇動態文本類型,而後在舞臺上拖拽出所須要的

動態文本框就好了

2、如何爲動態文本賦值

當在舞臺上拖拽出動態文本框以後, 能夠直接在裏面進行文本輸入或粘貼外部文

本內

容。那麼用 AS 如何來對動態文本框賦值呢?在這裏爲你們介紹兩種方法進行

賦值!

1、使用動態文本的實例名字來賦值

操做步驟:

1)在舞臺上建立一個動態文本框,併爲這個動態文本實例起一個名字,例如

abc

2)選中時間軸的第一楨,打開動做面板,輸入如下腳本:

abc.text = "愛國者安全網"

按下 ctrl+回車就可進行測試了。從這個簡單的例子能夠知道,若是要用文本實

例名字 來進行賦值的話,必須使用如下格式:動態文本實例的名字.text=」須要

賦值的內容」

2、使用變量來賦值

1)在舞臺上建立一個動態文本框,併爲這個動態文本實例起一個變量名

3800hk

2)選中時間軸的第一楨,打開動做面板,輸入如下腳本:

3800hk= "歡迎你們來到愛國者安全網學習!"

不難看出,使用變量賦值更爲簡單實用!賦值格式爲: 變量名=「賦值的內容」

以上兩種賦值方法若是內容過多須要換行的時候,須要使用行用回車符( \r

 ASCII

13)分隔!

3、如何載入外部 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 = new LoadVars();//建立一個 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 還能夠使用剛纔所建立的文本文件 ,爲了測試滾動

條的效

5、影片剪輯的拖拽

在網上常常看到的 flash影片中有的對象能夠被鼠標進行拖動。例若有的相似七

巧板的拼圖遊戲,控制音量的滑桿等,所使用的就是 flash中的拖拽動做。

1、拖拽命令詳細介紹

1、 首先介紹一下開始拖拽命令的詳細用法, 稍後在後面的例子中進行測試。

命令格式: StartDrag(要拖動的影片剪輯,[是否鎖定到鼠標位置中央,,

,,])或寫爲要拖動的影片剪輯.StartDrag([是否鎖定到鼠標位置中央,,,

,])

命令講解:在製做動畫的過程當中,上面兩種書寫方法可任選一種。其中[]

內的爲可選參數,也就是能夠寫,也能夠不寫。至於左,上,右,下四個參數是

用來控制被拖對象的移動範圍。

2、中止拖拽命令講解

命令格式: 被拖動的影片剪輯實例名.stopDrag()

這樣就能夠中止對對象的拖拽動做。

2、實例講解

下面來用一個簡單的例子實驗拖拽命令。

操做步驟:

1、新建一個 flash 文檔,並在舞臺上繪製一個圓形。選中圓形並按F8,

將此圓形轉換爲影片剪輯,起名爲:圓 。肯定後將會在舞臺上建立一個圓的實

例。

2、選中此實例,並按F9打開動做面板。輸入以下腳本:

on (press) {

this.startDrag(true);//當鼠標按下(press)以後,這個實例(由於咱們把腳本寫

在實例自己了,因此這裏用 this 代替影片剪輯實例的名字)能夠被拖拽,使用

命令如上面的命令解釋。對於參數的選擇方面,這裏只填寫了鎖定到鼠標位置

中央,若是想選不鎖定到鼠標位置中央,能夠把true改成 false。有興趣的朋友

能夠更改成 false看看。

}

on (release) {

this.stopDrag();//一樣道理,當鼠標釋放(release)以後,將中止拖拽動做。

}

3、好了,如今讓咱們按 Ctrl+回車來測試一下吧,你將會看到舞臺上的圓

被你的鼠標拖動的效果。

4、OK,經過這個例子咱們能夠簡單的應用拖拽動做了。如今須要把這個

例子繼續完成,還記得上面命令講解中的左,上,右,下四個控制拖動範圍的參

數嗎?如今來製做具備約束拖動範圍的效果。

5、如今在舞臺上繪製一個200*100大小的矩形,注意只要邊框不要填

充。

6、若是咱們但願在拖動的時候這個圓只能在矩形內拖動的話,就要先設置

這個矩形的座標,並記下矩形四個頂點的座標(這點很重要!)。OK,好比,現

在此例子中的矩形的四個頂點分別如上圖所示。那咱們要取的四個參數就應該

是:左=50,上=100,右=250,下=200 如今打開動做面板,修

改剛纔的腳本以下:

on (press) {

this.startDrag(true, 50, 100, 250, 200);//這裏咱們就使用剛纔肯定好的4個參數。

4個點的參數就對拖動對象實現了一個矩形區域的移動約束!

}

on (release) {

this.stopDrag();

}

7、好了,按Ctrl+回車去測試吧!

好了,關於拖拽的講解先到這裏,下面咱們來學習如何結合着拖拽動做來檢

測對象之間的碰撞!

3、碰撞命令的講解

命令格式: 目標影片剪輯的實例.hihkest(被拖拽的實例這個是比較

簡單的檢測碰撞命令

目標影片剪輯的實例.hihkest(被拖拽實例的X軸座標,被拖

拽實例的Y軸座標,對象的矩形區域範圍仍是對象自己範圍這個是比較復

雜點的檢測碰撞命令

命令解釋: 以上兩個命令都是用來檢測碰撞的,能夠根據須要選擇不一樣的

命令。重點解釋一下對象的矩形區域範圍和對象自己範圍(上面的命令中,false

表示對象的矩形區域範圍,true表示對象自己的範圍)

4、碰撞命令與拖拽命令的結合使用

(一)、下面經過簡單的例子來學習碰撞命令(咱們先來學習如何檢測是否

碰到對象的矩形區域範圍)

1、新建一個 flash 文檔,在舞臺上繪製一個圓形。選中圓形並按F8將它

轉換爲影片剪輯,起名:圓 。這樣就在舞臺上建立了一個圓的實例。

2、選中此實例,爲它起一個名字,此例起名爲:yuan

3、選擇文字工具,並選擇文字類型爲「動態文本」,在圓的實例下面拖繪出一個

動態文本框。並起一個變量名爲:hk

4、選中時間軸的第一楨,按F9打開動做面板,輸入如下腳本:

_root.onEnterFrame = function() {

//這個是在時間軸上的AS編寫規則,解釋爲舞臺上每楨都執行下面的腳本

onEnterFrame)。

if (_root.yuan.hitTest(_root._xmouse, _root._ymouse, false)) {

//根據上面命令的講解,這個語句就是檢測碰撞了。若是鼠標碰到舞臺上

yuan這個實例的矩形區域範圍的話,就執行下面的腳本。

hk = "接觸矩形區域範圍";

//動態文本框就顯示出「接觸矩形區域範圍」

} else {

hk = "沒有接觸到矩形區域範圍";

//若是鼠標沒有碰到舞臺上 yuan 這個實例的矩形區域範圍的話,就顯示

沒有接觸到矩形區域範圍。

}

};

如今能夠按Ctrl+回車去測試咱們的成果

(二)、拖拽碰撞檢測

如今再來一個例子講解拖拽碰撞檢測, 想偷懶的話能夠經過修改上面例子的

代碼來學習。

1、如今稍微修改一下上面的例子,以便讓咱們學習拖拽碰撞檢測,在上面

例子的舞臺上繪製一個矩形,並把這個矩形轉換成電影剪輯,起名爲:矩形 

這樣就在舞臺上又建立了一個矩形的實例,如今爲這個矩形實例起一個名爲:

juxing 

2、選中這個矩形實例,打開動做面板,輸入能夠拖拽這個實例的腳本。以下:

on (press) {

this.startDrag(true);

}

on (release) {

this.stopDrag();

}

這個腳本就是爲了能拖動這個矩形實例。 具體解釋請回顧第一個拖動對象例

子的腳本說明。

3、如今來修改腳本,選中時間軸的第一楨,按F9打開動做面板,你將會

看到上個例子的碰撞檢測腳本,把它修改成以下腳本:

_root.onEnterFrame = function() {

if (_root.yuan.hitTest(_root.juxing)) {

hk = "碰到了";

} else {

hk = "沒有碰到";

}

}

這個腳本和上次的碰撞檢測腳本相似,只不過不須要再書寫X軸和Y軸,也

不用寫是否碰到矩形區域範圍。簡單吧

如今又到了測試階段了,去觀看你的成果

6、流程控制與循環語句

衆所周知,flash中動畫依靠的是時間軸,在沒有腳本的狀況下,動畫會依照時

間軸從第一幀不停的播放到最後一幀,而後始重複播放或者乾脆中止。爲了能更

好的控制動畫,就必須使用腳本語句。而要想使動畫具備邏輯判斷的功能,就要

使用流程控制和循環控制語句了! 下面經過幾個簡單的小例子來學習流程與循環

控制語句。

1、流程控制語句

所謂流程控制,無非就是咱們想控制動畫程序的執行順序而已。咱們可讓

flash根據一些特定的條件,來決定要執行哪一個程序。這樣就好象給了程序一些

判斷的機制。

if...else控制語句

根據英文的意思,你們能夠簡單的理解上面的控制語句:若是......

...... 下面來看看這個流程控制語句的書寫格式。

if(條件){

//條件成立的話,就執行這裏的程序。

}else{

//條件不成立的話就執行這裏的程序。

}

下面重點說一下 if 後面括號內的條件。這個條件能夠是一個固定的值,也

能夠是一個變量或表達式。若是條件成立的話,也就是條件爲真(true),就會

執行 if 後面的程序,若是條件不成立,也就是條件爲假(false),就會執行

else裏的程序。例如:有這麼一個條件,A>B 將這個表達式代入if後面的括號

內, 這個流程語句的意思就變成: 若是A>B的話, 就執行第一個大括號內的程序,

若是A不大於B,就將執行else後面大括號內的程序。

實例講解:

1、新建一個flash文檔,在舞臺上繪製一個圓,選中圓並按F8轉換成影

片剪輯,起名爲:圓 這樣就在舞臺上建立一個圓的實例。

2、選中舞臺上的實例,按F9打開動做面板,輸入以下腳本:

onClipEvent (enterFrame) {

if (this._x<400) {//流程條件控制語句,若是這個圓的實例的X軸座標小於400,就執行後

面的程序。

this._x += 5;//讓這個圓的座標向右移動5個象素

} else {

this._x = 0;//控制語句,若是剛纔的條件不成立。也就是圓實例的X座標不小於400,就

讓它的X座標爲0

}

}

上面的腳本是一個很是簡單的流程控制語句,根據實例的座標來進行判斷。由於咱們

使用了 enterFrame事件,因此 flash會不停的執行下面 if...else語句。

3、測試影片。會看到圓不停的向右移動,當它的X座標大於或等於400的時候,程

序會把它的X座標從新更改成0。

2、循環控制語句

所謂的循環語句,其實也是用條件來控制的,只要條件成立,那麼,程序就會不停的執

行下去,一直執行到條件不成立爲止! 經常使用的循環語句包括 while 循環、for 循環等。因

爲篇幅有限,下面只重點講解 for 循環的使用方法。

For 循環命令格式:

for(初始變量;條件語句;迭加命令語句){

//用戶本身編寫的腳本。

}

首先強調一點,for 語句的括號內有三個項目,必需要用分號間隔開!

初始變量:循環語句也是用條件是否成立來控制的,一般咱們用一個變量來控制程序執

行的次數。那麼,這個初始變量就要先定義一個值。要注意的是,初始變量這個項目只執行

一次!

條件語句:這個項目就是咱們的判斷語句了。若是這個項目判斷爲真(true),也就是

條件成立了。它就直接跳進大括號{}內執行裏面的程序!反之,若是條件爲假(false),

它就直接跳出這個 for 語句了。

迭加命令語句:接上面的條件語句,若是條件語句成立,會執行{}內的程序,那麼執

行完程序以後,就要回來執行迭加命令語句了。一般它就用來增長或減小剛開始時的初始變

量的值。

實例講解:

1、新建一個 flash 文檔,在舞臺上繪製一個圓,選中圓並按F8轉換成影片剪輯,起

名爲:圓 這樣就在舞臺上建立一個圓的實例。

2、爲這個實例起名爲:yuan

3、添加一個新的層,並選中新層的第一幀,按F9打開動做面板,輸入以下腳本:

for (i=1; i<5; i++) {

duplicateMovieClip("yuan", "yuan"+i, i);

_root["yuan"+i]._x = random(400);

_root["yuan"+i]._y = random(300);

_root["yuan"+i]._alpha = random(100);

}

若是你們實在以爲 for 語言很難讀懂的話,你能夠按照 for 語言執行的順序把 i=1 代入程序

走一遍,能夠幫助你理解程序。例如:當 i 等於1的時候,程序開始判斷它是否小於5,那

麼1確定小於5了,條件爲真,就執行{}內的複製程序,同時複製出來的新實例的名字就

變成了 yuan1 ,接着就是設置 yuan1 的座標和透明度。以後,for 語句開始回去執行 i++

此時,的值就變爲2了。而後又開始循環判斷執行下去......(你能夠算一下,這個 for 循環

總共循環了幾回呢?答案是4次。)

4、選中時間軸的第6幀,按F6插入一關鍵幀,打開動做面板輸入如下腳本:

gotoAndPlay(1);

 flash播放到第6幀的時候返回第1幀再來執行 for 循環語句。

5、測試效果吧,你會看到舞臺上會循環4次複製出4個圓。

但願你們能經過這兩個簡單的例子掌握流程控制語句和循環控制語句

7、繪圖及顏色的AS的編寫

在使用 flash 的過程當中,不免會進行繪圖的操做。除了用工具面板上的工具繪製圖形以外,

咱們也能夠使用 ActionScript 來繪製圖形。

如何繪製線段及命令解釋

lineStyle(粗細,顏色,透明度) //設置繪製圖形的線條粗細、顏色和透明度

Moveto(X座標,Y座標) //設置繪圖線條的起點座標

lineto(X座標,Y座標) //設置線條的結束座標

如今就用剛纔的三個命令在舞臺上繪製出來一個300*100大小的矩形。

步驟:

1、新創建一個 flash文檔。

2、既然要繪製一個300*100大小的矩形, 咱們就要先肯定矩形4個頂點的座標,

而後就能夠使用 lineto命令進行編寫了。

3、選中時間軸的第一楨,打開動做面板。如今已經肯定了矩形的4個頂點,那麼我

們就能夠來編寫腳本命令了,請輸入如下腳本:

_root.lineStyle(1, 0x000000, 100);//設置線條的粗細,顏色和透明度

_root.moveTo(50, 50);//設置開始點的座標。

_root.lineTo(350, 50);

_root.lineTo(350, 150);

_root.lineTo(50, 150);

_root.lineTo(50, 50); //設置結束點座標,整個矩形繪製完畢

相信你們經過上面的命令就很容易的用AS繪製出所須要的形狀,充分發揮你的想象

力,能夠經過 lineto命令來設置多個點,從而創造出各類各樣的形狀。

熟悉了繪製線條的命令以後咱們來用一個例子加深印象。

操做步驟:

1、新創建一個 flash 文檔,在舞臺上繪製一個圓,選中它並按F8轉換成影片剪輯,

起名爲:圓 

2、打開庫面板,請將影片剪輯「圓」在舞臺上再拖放一個實例,使舞臺上存在兩個圓的

實例。

3、如今爲舞臺上兩個實例分別起名字爲 a b

4、選中時間軸第一楨,打開動做面板,輸入如下腳本:

function draw() { //本身定義一個函數,這個函數起名爲 draw(可自定),函數的功能是要實

現以 a 實例的座標爲起點,向 b 實例繪製線條。

_root.hkear();//清除舞臺上繪製的線條。

_root.lineStyle(1, 0x000000, 90);//設置線條的粗細,顏色和透明度。

_root.moveTo(a._x, a._y);// a實例的座標爲起點開始繪製線條。

_root.lineTo(b._x, b._y);// b 實例的座標爲繪製線條的結束點。

}

draw();//執行函數 draw,它將會在 b 之間繪製出一條黑色的線條。

解釋:爲了減輕編寫AS的工做量和程序的重複率,能夠將某些功能定義爲一個函數,

例如上面的 draw(),在使用的時候,直接執行定義過的函數,就能夠完成函數的功能。

5、如今建立拖動效果,選中舞臺上的 b 實例,打開動做面板,輸入如下腳本:

on (press) {

//點擊此實例,開始拖動

this.startDrag(true);

}

on (release) {

//釋放鼠標,中止拖動

this.stopDrag();

}

onClipEvent (mouseMove) { //當鼠標移動,也就是這個 b 實例移動的時候,就執行裏面的程

序。

_root.draw();//執行舞臺上定義過的 draw()函數,開始在 a  b之間繪製線條。

updateAfterEvent();//強制更新畫面,是整個動畫更加流暢。

}

 Ctrl+回車測試動畫效果。

2、顏色命令講解

setRGB() 用來設置實例的顏色值,注意,這個值用16進製表示,例如 0x000000

(黑色)

getRBG() 獲取實例的顏色值

下面用一個相對簡單的例子來講明顏色命令的使用以及如何填充顏色

要想使用顏色命令,咱們必須先構建一個 Color 對象。方法就是 自定義名字 = new

Color("要改變顏色的對象"),構建完 color 對象以後,咱們就能使用 setRGB  getRGB 來設

置或獲取顏色了。

步驟:

1、新創建一 flash文檔,背景大小爲550*400

2、選中時間軸第一楨,打開動做面板,咱們如今要用AS來幫助咱們建立一個影片剪

輯的實例。所用到的命令爲:

createEmptyMovieClip("實例名稱",深度)。建立一個影片剪輯實例,並起名爲 hk。輸入下面

腳本。

_root.createEmptyMovieClip("hk", 1);

//使用建立命令在舞臺上建立一個名字叫 hk的影片剪輯實例,深度爲 1

接下來咱們要對這個 hk 實例進行繪製圖形和填充圖形!如今咱們用AS繪製一個30

*100大小的矩形,而且把這個矩形填充爲黑色,腳本以下:

with (hk) {

//使用 with命令設置 hk的各個屬性

beginFill(0x000000, 85);

//開始填充這個 hk實例,顏色爲黑色,透明度爲 85

lineStyle(1, 0x999999, 100);

//設置這個實例的邊框粗細爲 1,顏色爲灰色,透明度爲 100

moveTo(50, 50);

//設置繪製線條的起點座標

lineTo(350, 50);

lineTo(350, 150);

lineTo(50, 150);

lineTo(50, 50);

//結束繪製,將在舞臺上繪製出一個 300*100 大小的矩形。

endFill();

//結束填充,與 beginFill()命令對應。

}

OK,如今咱們就已經建立了一個黑色的矩形。如今咱們要繼續實現變色的功能,也就

是當鼠標移動的時候,這個矩形會隨機變換顏色!就須要用到咱們的構建 Color 對象的命令

了。腳本以下:

_root.onMouseMove = function() {//當鼠標移動的時候就執行下面的腳本命令。

hk_color = new Color("hk");//構建一個名字叫 hk_color  Color 對象。

yanse = "0x"+random(100)+random(100)+random(100);//用一個變量 yanse來獲取一個數值,

這個數值就是顏色值

hk_color.setRGB(yanse);//設置矩形的顏色。

};

好了,這個例子是徹底由腳本編寫而成,全部腳本都在時間軸的第一楨

3、按 Ctrl+回車來測試你的影片吧~會看到矩形會隨着鼠標的移動而不斷進行顏色變化。

8、聲音 AS 的編寫與控制

一個好的 flash做品,缺乏了聲音,就如同人不會講話同樣。而 flash

中對聲音的支持也很是不錯,除了能夠使用時間軸放置聲音文件之

外,咱們還能夠使用AS來更加準確的控制聲音!

1、FLASH 中如何建立聲音控件

若是想控制動畫中的聲音,咱們能夠使用 flash中的 sound 對象,

經過 sound 命令建立一個新的 sound 對象。以後再用 attachSound 

令鏈接到庫裏的聲音,就能夠用來控制動畫中的聲音了。

經常使用命令講解:

new Sound() 此命令用來建立一個新的 sound 對象,有了

sound 對象咱們才能用AS來控制聲音。

attachSound("庫中的聲音") 此命令能夠使咱們建立的聲

音對象鏈接到庫裏的聲音,以便進行控制。

start([從第幾秒開始播放循環次數]) 此命令能夠是

聲音開始播放,裏面的兩個參數是可選的。

stop() 中止聲音的播放。

setVolume(音量級別此命令能夠控制聲音的音量高低,

音量級別只能是從0-100之間的數字。

如今咱們也應該用AS先作一個簡單的小例子了。

2、建立一個簡單的聲音播放動畫,能夠實現簡單的開始與中止

播放聲音。

操做步驟:

1、新建一個 flash文檔,按 Ctrl+R(文件\導入)導入一個聲音

文件,聲音文件能夠是 MP3  WAV 格式的。聲音文件導入以後,在

舞臺上是看不見的,必須打開庫才能看到咱們導入的聲音。

2、 選中庫中的聲音文件, 單擊鼠標右鍵, 在彈出的菜單中選擇「鏈

...」將會彈出一個連接的對話框,請勾選「爲動做腳本導出」和「在第

一幀導出」選項,並輸入一個標識符:mysound (名字可任意寫),

單擊肯定。

3、回到主舞臺,選中時間軸的第一楨,按F9打開動做面板。現

在咱們要建立一個新的聲音對象,而且鏈接到庫裏的聲音。用來控制

聲音。輸入如下腳本:

music = new Sound();//建立一個名字叫 music 的聲音對象。

music.attachSound("mysound");//將這個聲音對象與庫裏的標識符爲

mysound」的聲音鏈接。

4、如今須要在舞臺上放置兩個按鈕分別控制聲音的播放與中止。

5、此時,舞臺上將有播放和中止兩個按鈕,選中 Play按鈕,打開

動做面板,輸入如下腳本:

on (release) {

music.start();

}//播放聲音

選中 Stop 按鈕,輸入如下腳本:

on (release) {

music.stop();

}//中止播放聲音

6、OK,一個簡單的控制聲音播放與中止的例子就完成了,快

 Ctrl+回車來測試吧。

3、建立一個稍微複雜的例子,用來滑動按鈕來控制聲音的音量。

操做步驟:

1、新建一個 flash文檔,並按 Ctrl+R 導入一個聲音文件。

2、參照上個例子,打開庫,並把導入的聲音文件設置一個鏈界

標識符。這裏設置標識符爲「mysound」。

3、選中舞臺時間軸第一楨,打開動做面板,建立一個新的聲音

對象,鏈接庫中聲音,並播放這個聲音。輸入腳本以下:

music = new Sound();

music.attachSound("mysound");

music.start(1, 10);//播放聲音,從第一秒開始播放,並循環10次

4、如今須要一個按鈕作爲滑動按鈕,用來控制聲音的音量!按

鈕能夠本身製做或使用公用庫中的按鈕, 此例中我使用公用庫中的按

鈕。請在舞臺適當位置放置一個按鈕實例。

5、選中按鈕,打開動做面板輸入如下腳本:

on (press) {

this.startDrag(false, left, top, right, bottom);//開始拖動這個按鈕, 而且要

規定它的拖動範圍,分別由四個變量控制,4個變量的初始值稍後設

置。

drag = true;//用一個變量來判斷這個按鈕是否被拖動了。若是它被拖

動了,變量值爲 true(真)

}

on (release, releaseOutside) {

this.stopDrag();//當鬆開按鈕或在按鈕外部鬆開,就中止拖動。而且下

面的 drag 變量爲假,表示按鈕沒有被拖動。

drag = false;

}

6、再次選中這個按鈕,並按F8鍵將它轉換成一個影片剪輯!起

名爲:控制音量。也就是「控制音量」這個影片剪輯裏面包含了剛纔的

按鈕。

7、選中舞臺上這個控制音量影片剪輯的實例,打開動做面板,

如今要設置拖動範圍的4個初始值和設置音量大小控制。 請輸入如下

腳本:

onClipEvent (load) {//當這個 flash 動畫一開始,就設置下面4個變量

的初始值。爲了使按鈕只能上下拖動,因此,拖動範圍的左、右都固

定!只能讓按鈕在上下100象素之內拖動。

top = _y;

left = _x;

right = _x;

bottom = _y+100;

}

onClipEvent (enterFrame) {

if (drag == true) {//若是按鈕被拖動了,就開始執行下面的設置音量的

算法,用來控制音量。

_root.music.setVolume(100-(_y-top));//設置音量大小,比較難理解的是

裏面的算法:100-(_y-top),經過代入數字來幫助咱們理解,若是_y

的值是100,咱們的 top 值也是固定的爲100。當拖動按鈕往下

時,_y值就會變大,好比變爲130,那麼_y-top 就等於30了,在

 100-30 就等於70,這個70就是音量的級別了。伴隨着按鈕越

往下拖,音量級就會變的越小,那麼也就實現音量的控制了。

}

}

經過以上兩個例子,應該要掌握的就是建立 sound 對象播放、中止

聲音,以及控制聲音的方法。

9、時間日期的 AS編寫

1、日期時間的基本命令及解釋

getFullYear() 按照本地時間返回 4 位數字的年份數。

getMonth() 按照本地時間返回月份數。

getDate() 按照本地時間返回某天是當月的第幾天。

getHours() 按照本地時間返回小時值。

getMinutes() 按照本地時間返回分鐘值。

getSeconds() 按照本地時間返回秒數。

以上命令並非很難理解,都是獲取本地機器上日期及時間。可是要使用這些命令,我

們必須先用 Date 對象的構造函數建立一個 Date 對象的實例。而後,就能夠用建立的這個

實例來進行操做!命令格式以下:

實例名=new Date()

2、顯示日期及作一個走動的表

下面咱們經過一個例子來介紹 Date對象的各類命令使用方法。

步驟:

1、新創建一 flash 文檔,將層1更名爲:文字顯示,並在舞臺下方繪製出一個動態文

本框,起一個變量名:mytime

2、新創建一個層,並把這個新創建的層起名爲:錶盤,而後使用繪圖工具在舞臺上繪製出

一個不帶分針、時針和秒針的錶盤。

3、如今來繪製指針。按 Ctrl+F8 新創建一個影片剪輯,起名爲:指針 ,選擇繪圖工具,

在裏面垂直繪製出一條細線作爲指針。注意:將線條的下方與影片剪輯的中心點對齊

4、返回主舞臺,新建一個層,更名爲:指針—秒 將剛纔製做的指針拖放在錶盤的中

間,注意要把指針的中心點與錶盤的中心點對齊。以後,爲這個指針實例起一個名字爲:sec

咱們先作秒針。

5、同理,再新建一個層,並起名字爲:指針—分 將庫裏的「指針」元件再拖放出來,並改

變這個實例的長度和顏色,讓它作爲分針。實例名起爲:min

6、如今按照上面的方法來製做時針,新建一個層,更名爲:指針- 將指針元件拖放

在舞臺中,與錶盤中心對齊,並把這個實例起名爲:hour

7、呵呵,如今我們開始編寫程序了,爲了觀察方便,咱們再新建一個層,更名爲AS,選

中AS層的第一楨,打開動做面板,開始編寫腳本,首先,咱們要讓舞臺上的動態文本框顯

示日期及時間。

_root.onEnterFrame = function() {//須要讓影片不停執行下面腳本。

mydate = new Date();//首先構建一個名字叫 mydate的日期對象, 由於之後咱們就要用 mydate

這個實例來控制了。

myear = mydate.getFullYear();//獲取本地機器上的年份,並放在 myear 變量中。

mmon = mydate.getMonth()+1;//獲取本地機器上的月份,並放在 mmon變量中。由於獲取的

值是 0 表明一月,表明二月,依此類推,因此要加上 1 才正確

mdate = mydate.getDate();//獲取本地機器上的本月的第幾天,並放在 mdate變量中。

mou = mydate.getHours();//獲取本地機器上的小時數值,放在 mou變量中,這個命令能獲取

0--23之間的數值。

mm = mydate.getMinutes();//獲取本地機器上的分鐘數值,並放在 mm變量中。

ms = mydate.getSeconds();//獲取本地機器上的秒數值,放在 ms 變量中。

mytime = myear+""+mmon+""+mdate+" "+mou+":"+mm+":"+ms; //讓舞臺上變量名爲

mytime的動態文本框顯示日期及時間。

}

如今能夠測試一下了,能夠發現舞臺上文本框會顯示出日期及時間,那麼還有表裏面的秒、

分、時針怎麼跟時間對應起來呢?如今咱們加入以下一些腳本

sec._rotation = 6*ms;//利用flash中對象旋轉命令來實現指針的走動。 _rotation旋轉一週是360

度,因此,秒針每走一下,就等於走了度,因此用一個算法來獲取每秒的度數 6*ms

min._rotation = 6*mm;//同理,讓分針也是根據獲取的分鐘數值乘以 6 來進行度的旋轉。

hour._rotation = mou*30+mm/60*30;//小時的走動,算法稍微複雜一點,由於時針走一圈是 12

個大格。具體上面的算法有興趣的朋友能夠本身研究一下。

日期及時間的 AS 編寫並不複雜,這裏我只簡單的講解了獲取日期及時間。,固然了,咱們

還能夠進行日期及時間的修改設置,使用的命令及方法與獲取相似,但願你們能經過這個簡

單的例子掌握基本的日期及時間 AS 的編寫。在後面的課程中咱們就要提升性的講解,同時

也但願你們繼續關注。

10、點語法以及路徑

點(.)語法、 路徑

經過本節的學習要掌握(.);能正確地輸入影片剪輯的實例名稱;理解相對路徑和絕對路徑

的概念,理解分層結構中的包含關係和並列關係,

點(.)語法

動做腳本中,點(.)一般用於指定對象或影片剪輯相關聯的屬性或方法,或者標識影片剪

輯、變量、數對象的目標路徑。點語法表達式是以對象或影片剪輯的名稱開始,後跟一個點,

最後以要指定的元素 結束。

例如:(1)張三的身高。這句話用 AS 語言表示爲:張三.身高

2)安徽合肥中澳學院。這句話用 AS 語言表示爲:安徽.合肥.中澳學院

元件命名

在上面的例子中, 「張三」是人名, 「身高」是他的屬性,那麼,在 FLASH 中怎麼樣

 AS 語言來表示一個影片剪輯的高度呢?

相似地咱們要給影片剪輯取一個名稱,若是在主場景中有放入一個影片剪輯,那麼這個影片

剪輯相 對於場景是場景的一個實例,在場景中選中影片剪輯就能夠在屬性面板中鍵入實例

名。

好了,小球有了實例名稱了,咱們如今來表示它的高度(_height)

注意在命名實例名時,最好意義明確,能夠用英文、漢語拼音和中文,而且不一樣類型的元

件加不一樣的先後綴,在實際編程中咱們每每不太注意這些,規範的命名不只容易閱讀,還能

爲其增長一些特定的後綴觸發代碼提示。

命名影片剪輯實例; _mc 後綴,例如 my_mc

命名按鈕時,應使用 _btn 後綴。例如 my_btn.

命名文本時,應使用 _txt 後綴。例如 my_txt

例如上例中小球的實例名若是加上後綴_mc就會出現影片剪輯屬性的代碼提示

安徽.合肥.中澳學院

小球._height

張三.身高

路徑

「路徑」指「道路」,「路線」其含義是:如何到達目的地,這個目的地叫作路徑的目標,

 flash  引用了目標路徑的概念,目標路徑:是 SWF 文件中影片剪輯實例名稱,變量和

對象的分層結構地址。

目標:指的是將要被動做腳本控制的對象,有影片剪輯實例,變量等。

路徑:指如何到達目標,即咱們如何從控制點到達被控制點。

分層結構:flash文件是有一個個影片或影片剪輯組成的,它們有各自的時間軸、變量、

數組等,它們 的位置關係有兩種,一是父子關係;二是並列關係。

所謂父子關係指的是包含與被包含的關係,例如: 把影片剪輯 mc1 拖放到影片剪輯 mc

中,則稱 mc1  mc 的子級,反過來 mc 稱做 mc1 的父級。它們的層次結構用點語法表

示,圓點前面的對象包含着圓點 後面的對象,如_root.mc.mc1 _root 包含了 mc,而 mc

包含了 mc1

所謂並列關係指的是對等的關係,它們之間沒有包含與被包含的關係,如:_root.mc_a 

_root.mc_b

 flash 應用中,能夠從 1 個時間軸向另外一個時間軸發送信息,發送信息的時間軸叫控制

時間軸,接 收信息的時間軸叫目標時間軸。也就是說控制時間軸發出的命令能夠控制目標

時間軸的動做。要實現這種 控制功能必須編寫目標路徑。目標路徑分爲絕對路徑和相對路

徑。

絕對路徑

絕對目標路徑指的是從根時間軸開始,一直延續到列表中目標時間軸中的實例爲止。 絕對目

標路徑簡單易懂但重用性差。

在編寫絕對目標路徑時,首先寫上_root,一方面表示這個路徑是一個絕對路徑,另外一方面

表示這個路徑的最頂層時間軸是本場景中的根時間軸_root

相對路徑

相對目標路徑取決於控制時間軸和目標時間軸之間的關係, 相對目標路徑就是站在控制點去

看被控制 點。 若向父級方向看也就是向根時間軸方向看, 在相對路徑中, 使用關鍵字 this 

示當前時間軸:使用別 _parent 指示當前時間軸的父級時間軸,能夠重複使用_parent,每

使用一次就會在同一層的影片剪輯的層 次中上升一級,有多少元件就寫多少_parent,若向

下看只須要用點運算符,中間有多少元件就寫多少實例名。

例如:

this._parent

this._parent._parent

this.mc.mc1

編寫目標路徑的方法

 Flash8 中能夠用多種方法編與目標路徑,直接手工輸路徑,或者使用「插入目標路徑」

對話框。我 們只須要爲影片剪輯和變量等正確的輸入名稱,使用動做腳本面板的「插入目

標路徑」按鈕,找到你要控 制的對象便可。

其具體步驟以下:

1)選擇想爲其分配動做的影片剪輯,幀或按鈕實例,它將變爲控制時間軸。

2)在「動做」工具箱(面板左側)中選擇須要目標路徑的動做或方法。

3)單擊動做腳本中想插入目標路徑的參數框或位置。

4)單擊動做腳本編輯窗格上面的「插入目標路徑」按鈕,打開「插入目標路徑」對話框。

5)選擇「絕對」或「相關」目標路徑模式。

6)在「插入目標路徑」顯示列表中選擇一個影片剪輯,單擊「肯定」 

觀察目標路徑

由上圖在以看出影片剪輯之間的分層結構:mc 中包含了兩個子級 mcAmcB;而 mcA 

又包含了三 個子級 mc1mc2mc3

 F9 打開動做面板,點擊「插入目標路徑」按鈕後,在彈出的「插入目標路徑」對話框

中咱們能夠 清楚地看到分層結構。

當咱們選中一個目標後,再選擇「相對」或「絕對」按鈕後,在「插入目標路徑」對話框的

最上面一 欄裏就會顯示出路徑,例如:控制點爲 mcA,控制目標爲 mc1,路徑爲:

相對路徑:this.mc1 絕對路徑:_root.mc.mcA.mc1

11、深刻了解時間控制

經過本課的學習,掌握在按鈕上添加代碼的方法;理解 on 命令的函數功能;

掌握時 間軸控制命令的功能,語法格式,掌握在幀上添加命令基本操做,能使

用幀命令和按鈕命 令控制一些簡單的時間軸動畫。

on 事件處理函數

事件是指軟件或硬件發生的事情,它需 Macromedia Flash 的應用程序對事件有

必定的 響應。硬件發生的事件如按下鼠標、單擊鼠標、拖動鼠標等。軟件發生

的事件如影片剪輯 剛剛被載入場景、影片剪輯被卸載等。爲了使應用程序對事

件作出反應,必須使用事件處 理函數。

下面咱們就來學習 on 事件外理函數。 雙擊代碼選擇區中的「全屬函數」|「影

片剪輯控制」 |on」命令後,彈出選項

On 事件動做使用較多,它通常直接做用於按鈕,也能夠做用於影片剪輯實例。

其調用格式以下: 理解 on 事件中的參數意義

在建立一個動態文本,在屬性面板裏輸入變量名:txt.再建立一個按鈕實例,選中按

,

打開動做腳本面板輸入代碼:

on (press) {

txt = "發生了鼠標按下(press)事件";

}

on (release) {

txt = "發生了鼠標釋放(release)事件";

}

on (releaseOutside) {

txt = "發生了鼠標外部釋放"+newline+"(releaseOutside)事件";

}

on (rollOver) {

txt = "發生了鼠標滑過(rollOver)事件";

}

on (rollOut) {

txt = "發生了鼠標滑離(rollOutr)事件";

}

on (dragOver) {

txt = "發生了鼠標拖過(dragOver)事件";

}

on (dragOut) {

txt = "發生了鼠標拖離(dragOut)事件";

}

on (keyPress "<Left>") {

txt = "發生了按左鍵事件"+newline+"(keyPress\"<Left>\")事件";

時間軸控制命令

時間軸控制語句是較基礎的 ActionScript 控制 語句。時間軸控制語句是掌握

ActionScript 語句的基 礎, 它們的主要任務是控制幀的中止、 播放、 跳轉等。只

要帶有時間軸的動畫效果,就能夠用時間軸控制 語句來進行控制。時間軸一共

有兩種,一種是場景中的 時間軸, 咱們叫作主時間軸。 另外一種是元件中的時

間軸, 例如影片剪輯、圖形元件中的時間軸。因此,時間軸控 制語句也能夠分

成兩類,一類是控制主時間軸,一類控制影片剪輯時間軸。打開動做腳本箱,點

擊「全局函數」「時間軸控制」咱們會看到時間軸控 9 條時間軸控制命 令。在

這一課中咱們將分別介紹它們的功能及使用方法。

play( )  stop ()

play  stop  Flash 中用於控制動畫的播放和中止,play 命令使播放頭從它當

前位置 向前移動。stop 中止當前正在播放的 SWF 文件。此動做最一般的用法

是用按鈕控制影片 剪輯。是 Flash中控制動畫最基本的命令。

使用方法以下:路徑.play()               路徑.stop()

幀命令

咱們知道一個有動畫的影片剪輯,場景時間軸只有一幀這個影片剪輯也能正常

播放, 但若是是圖形元件中作的動畫,在場景中必須有與元件時軸一樣的幀頻

數才能正常播放。

這就說明了影片剪輯有獨立的時間軸。而圖形元件的時間軸必須依賴父級時間

軸,因此, 場影中的影片剪輯實例,必須控制影片剪輯的時間軸。 要在場景

中控制影片剪輯的時間軸, 就要給影片剪輯輸入實例名稱。

下面咱們作一個實例,經過該例,咱們來掌握在幀上添加命令的方法,初步瞭解

控制當前時間、根時間軸控制元件時間。元件時間軸控元件時間軸的方法。

咱們播放動畫時,能夠看到每一個動畫都是動的,如今咱們來進行控制。

(1)打開素材, 分別選中場景中的小花, 和樹葉, 在屬性面板裏輸入實例名

「花」 「葉」 。

(2) 進入名稱爲「葉引導線」的影片剪輯元件的編輯區中,點擊「AS 層」的

第 1幀打開動做面板。輸入命令:

stop();//停時當前時間軸

在第 50 幀插入空白關鍵幀,選中此幀,打開動做面板,輸入命令:

this._parent.play();//父級時間軸(根時間軸) 播放

在主場景「AS 層」的第 1 幀,添加命令:

this.花.play()//當時間軸中的影片剪輯實例"花"播放

在主場景「AS 層」的第 170 幀添加命令:

stop();//中止當前時間軸

this.葉.play();//當前時間軸中的實例"葉"播放

測試影片看看效果。

總結:經過本課學習,要掌握自身時間軸的控制,子級時間軸的控制,父級時

間軸的控制, 對初學的朋友,最簡單的方法是:正解輸入實例名後,經過「插

入目標對話框,找到你的控制目標,這時軟件會自動給你編寫好路徑,你只需在

路徑後面加上一個小點「.」而後加 上 stop()或 play()命令。 幀命令是播放頭來

觸發的,播放頭通過你的命令幀,這幀上的命令就被執行了。

按鈕的交互控制

咱們利用此動畫練習在不一樣的控制點上來控制影片。如今咱們任意選兩個控

制點,若是選擇 mcA 中放一個停按鈕,mc1 中放一個播放 按鈕,用這兩個按

鈕來控制全部影片剪輯。

中止按鈕上的代碼 :

on (press) {

_root.mc.stop();

_root.mc.mcA.stop();

_root.mc.mcB.stop();

_root.mc.mcA.mc1.stop();

_root.mc.mcA.mc2.stop();

_root.mc.mcA.mc3.stop();

}

播放按鈕上的代碼:

on (press) {

_root.mc.play();

_root.mc.mcA.play();

_root.mc.mcB.play();

_root.mc.mcA.mc1.play();

_root.mc.mcA.mc2.play();

_root.mc.mcA.mc3.play();

}

說明:上例中使用的都是「絕對」路徑,若是你對路徑的概念掌較好,能夠選

擇性的

使用「相對」路徑或「絕對」路徑。

本課涉及的語法及規範

? 圓括號 「 ()」 :圓括號在動做腳本中做用很是大,在定義函數時在將參

數所有放到圓 括號內;在調用函數時要將傳遞給函數的全部參數包含在小括號

裏; 在設置表達式優先級或加強動做語名的易讀性時都須要使用到圓括號。例如:

本課學的 on 函數用來定義鼠標或鍵盤響應事件, 其中選擇的鼠標事件就是參

數。有時也能夠沒有參數例如:函數 play()。

? 分號 「;」 :動做腳本中的分號是用來做爲語句結束的標記,在 Flash AS 腳

本中,任何 一條語句都是以「;」號結束的。雖然有時省略了「;」號,Flash 也

能夠成功的編譯這個腳 本,但這是不規範的。

? 花括號「{ }」 ,動做腳本中的一組語句能夠被一對花括號「{……}」包

括起來,成爲一 個語名組。在由多個動做狀態組成的語句組中,使用花括號可

以有效地來區分各命令的層級和從屬關係。

12、無條件轉移

在上一課中咱們學習了時間軸控制命令中的 play() stop()命令,這一課中咱們

學習時間軸控制命令中的另外6個命令。經過本節的學習掌握跳轉命令的功能;

能進行一些簡單的交互控制。

正常狀況下時間軸從第一幀開始按順序向下播放,使用跳轉命令能夠打破原來

的播放順序,從而實現各類特效,跳轉命令有兩個它們是 gotoAndPlay 

gotoAndStop,應用格式爲:

scene:String [可選 一個字符串,指定播放頭要轉到其中的場景的名稱。

frame:Object  表示播放頭轉到的幀編號的數字,或者表示播放頭轉到的幀標

籤的字符串。

gotoAndPlay|(scene, frame)的函數意義是:將播放頭轉到場景中指定的幀並

從該幀開始播放。若是未指定場景,則播放頭將轉到當前場景中的指定幀。

gotoAnd Play

在動做面板的 「代碼選擇區」 中選擇 「全局函數」 | 「時間軸控制」 | gotoAndStop

命令後,在此能夠選擇此命令的參數。

該參數共有兩個提示,其含義以下所述。

gotoAndPlay(); :按照該提示,能夠在括號內輸入須要跳轉的幀數,例如,

當播放到當前幀的時候,跳轉到第 20 ,則應當在當前幀上添加代碼

gotoAndPlay(20);

gotoAndPlay(「場景」 ,幀) :按照該指示能夠在括號內指定播放某一場景

中的某一幀。將播放頭

轉到場景中指定的幀並中止播放。例如:當播放到當前幀的時候自動跳轉至

scene_2(場景2)的第 20 幀, 則在當前幀上添加代碼: gotoAndPlay("場景_2", 25);

若是未指定場景,播放頭將轉到當前場景中的幀。

注意:

在進行跳轉時應該盡力避開場景和幀編號,而使用幀標籤,幀標籤能夠穿越所

有場景,能夠減小 錯誤的發生,還能夠使 flash 運行速度增快。還便於修改。

只能在根時間軸上跳轉時使用 scene 參數,不能在影片剪輯或文檔中的其它

對象的時間軸內使用該參數。

gotoAndPlay([scene:String], frame:Object) : Void

gotoAndStop([scene:String], frame:Object) : Void

gotoAndPlay("場景",幀);

gotoAndStop("場景",幀)

2 ? 若是從元件時間軸跳轉元件時間軸時,應該先加路徑再寫跳轉命令。例如

從元件時間軸轉到根時間軸的標籤爲「f」的幀上中止,代碼該這樣寫:

_root.gotoAndStop("f");

gotoAndStop

在動做面板的代碼選擇區中選擇「全局函數」|「時間軸控制」|gotoAndStop

命令後,在代碼顯示區中的參數意義與 gotoAndPlay的同樣,這裏就再也不重述。

例如:當播放到當前幀時要自動跳轉到「f2」幀處中止,則在當前幀上添加代碼:

gotoAndStop("f2");//跳轉到幀標籤爲「f2」的該幀處中止。

又如:gotoAndStop("場景 2", 1);//播放頭從當前幀跳轉到「場景 2」的第幀,

並在該幀處中止。

場景面板的操做

場景:執行「窗口」|「設計面板」|「場景」菜單命令,就會調出「場景面板」 

在該面 板中能夠進行場景的添加、複製、刪除、重命名、排序等操做。

爲了方便組織文檔能夠使用場景,例如, 能夠使用單獨的場景用於簡介、 出現

的消息以及片頭片字幕。

當文檔含有多個場景時,播放時是按場景的前後順序依次進行播放的,並且全部

場景中的幀是按場景順序 連續編號的, 例如:若是文檔包含兩個場景, 場景 1 

 10 幀,場景 2 中有 20 幀,則場景 2 中的幀的編

號爲 11  30

nextFrame  nextScene

這兩個命令一般與 on 命令結合,並做用於按鈕上。單擊鼠標後,播放下一幀

nextFrame)或下一個場景(nextScene)。 prevFrame  prevScene

這兩下命令一般用來控制播放上一幀或上一個場景。其功能恰好與 nextFrame

 nextScene相反

場景跳轉

製做播放面板的操做步驟以下:

1)點擊「窗口」|「其它面板」|「場景」 ,打開的場景面板,點擊添加場景

按鈕,新建 3 個場景,這樣共是 4 個場景。在場景 4 的第 1 幀輸入幀標籤

s4_f1 ,分別在場景 2~場景 4 中建立一個按鈕。

3)進入「場景 1 ,在「圖層 1」的第 1 幀製做一個播放界面

(4)給按鈕添加代碼

按鈕 1 上的代碼:

on (release) {

gotoAndStop("場景 2", 1);

}

按鈕 2 上的代碼:

on (press) {

gotoAndStop(3);

}

按鈕 3 上的代碼:

on (press) {

gotoAndStop("s4_f1");

}

分別進入每一個場景中,選種按鈕添加代碼:

on (press) {

gotoAndPlay("場景 1", 1);

}

在「場景 1」的第 1幀添加代碼。

stop();

測試影片觀看效果。

在「場景 1」中的三個按鈕,分別用了參數的三種形式來練習,建議在使用時

最好用幀標籤來跳轉。

製做簡易相冊

本例的目的是爲了練習跳轉命令及上一課中學習過on命令。

效果說明:點擊滾動按鈕能夠看到對應的圖片,點擊左邊的按鈕能夠進行前一張

後一張的切換,並在動

1.新建一個 flash文檔。設置文檔屬性爲:寬 465、高 280,背景色白色。

2.導入素材,把本例的素材所有導入到庫。

3.新建一個名爲「圖片」的影片剪輯元件,在此元件「圖層 1」新插入 9 個空

白關鍵幀,分別在這 10 個關空白關鍵幀中依次分別放入庫中的「tp1~tp10

 10 張圖片,並居中對齊。

4.新建一個名爲「按鈕 1」的按鈕元件,在按鈕元件「圖層 1」的彈起幀中,

從庫時提進「tp1」位圖,在屬性面板裏設置寬70、高 45,居中對齊。在「點擊

幀」插入幀。插入「圖層 2」在「圖層 2」的彈起幀給制一個寬 70、高 45 

無筆觸的矩形,填充色爲淺灰色,並把透明度調爲 30%,在「鼠標通過」 幀插

入空白關鍵幀。 5.用一樣的方法制做另外 9 個按鈕,你們能夠用複製元件,替換圖片的方法來

製做。

6.新建一個名爲「按鈕組」的影片剪輯元件,在其編輯區中,從庫裏提進「按

 1~「按鈕10 ,並用對齊面板排列成一橫排,再把前 6 張複製後接在後

面。 7.(1)新建一個名爲「滾動圖片」的影片剪輯元件, 在「圖層 1」繪製一個寬

465、高 50 的無筆觸的矩形框,填充色爲淡紫色,並把透明度設爲 30%。居中

對齊。

2)插入「圖層 2」在此圖層的第 1 幀上,從庫裏提進「按鈕組」影片剪輯元

件,並與下面的矩形條左對齊。 在第 100 幀插入關鍵幀, 並在些幀上把圖片

按鈕組向左移動,(移動多少要參照第 1 幀上的位置,確保循環播放時沒有跳躍

的視覺感。)以下圖所示。而後建立動畫。

 1 幀上的圖片位置  100 幀上的圖片位置 8 新建一個名爲 「蒙板」 的影片剪輯元件, 在其編輯區裏繪製一個寬 287 208

的無邊框矩形,居中 對齊。填充色爲四個色(這四個色自定)的狀填充並把每

個色的透明度設爲 45%左右。在第 10 幀插入關 鍵幀,在此幀上把各色的透明

度調爲 0%。建立形狀動畫。並在最後一幀輸入中止命令。

stop();

5 9.場景組裝

1)把場景「圖層 1」改名爲「背景」 ,從庫裏提進「背景」圖形元件居中對

齊。

2)插入「圖層 2」改名爲「滾動菜單」 。從庫裏提進「滾動菜單」影片剪輯

元件,相對於場景,左 對齊、底對齊。並在屬性面板裏輸入實例名「菜單」 

3)插入「圖層 3」改名爲「圖片」 ,從庫時提進「圖片」影片剪輯元件,放

在對應背的左上角的矩形框裏。並在屬性面板裏輸入實例名「圖片」 

4)插入「圖層 3」改名爲「蒙板」 ,從庫時提進「蒙板」影片剪輯元件,放

在「圖片」上,並在屬性面板裏輸入實例名「蒙板」 

7)插入「圖層 7 ,改名爲「AS

場景組裝完畢

添加代碼

1)選中 AS 層的第 1幀,打字開動做面板,在動做面板中輸入代碼:

_root.mc.stop();

onEnterFrame = function () {

_root.a.text = _root.mc._currentframe;

};

2)進入「按鈕組」影片剪輯元件的編輯區,用選擇工具選中「按鈕 1 (最

左邊的一個),打開動做 面板,在動做面板中輸入代碼:

on (rollOver) {

_root.菜單.stop();

}

on (release, rollOut) {

_root.菜單.play();

}

on (press) {

_root.圖片.gotoAndStop(1);

_root.蒙板.play();

}

3)把「按鈕 1」上的語句複製粘貼到其它按鈕上,而後把語名中的第 8 

_root.mc.gotoAndStop(1);

改成「圖片」元件中放圖片的對應放圖片的那一幀,例如按鈕 5 上的語句應改

爲:

on (rollOver) {

_root.菜單.stop();

}

on (release, rollOut) {

_root.菜單.play();

}

on (press) {

_root.圖片.gotoAndStop(5)

_root.蒙板.play();

}

_root.蒙板.play();

}

實例製做完畢,你們測試景片,觀看效果。

十3、變量

經過本節的學習,理解變量的概念;掌握變量命名的規則、給變量賦值的方法;會用動態

文本顯示變量、輸入文本輸入變量,會使用調試命令 trace。瞭解 Flash中的數據類型.

認識變量

在平常生活中人們處理信息的時候,必需首先把信息保存起來,好比你將一羣羊分紅兩部分,

你必須把它們趕到不一樣的領地,這些領地暫時保存着羊羣,即使你是憑空想象,你想象時的信

息也要暫時保存在腦細胞中,也就說要處理任何信息首先就得保存信息,動做腳本也不例外,

動做腳本使用變量保存信息,因此說變量是保存數據的一種容器,容器自己始終不變,但內容

能夠更改,這個比喻是很是形象的,如今有一個容器名稱爲 a,放進一些鹽它就是鹽罐子,放進

一些醋它就是醋罐子了。在 flash 中,經過動做腳本能夠創建不少「容器」來存放 flash 

的信息,好比影片剪輯的透明度、座標等,也能夠存放人的名字、年齡等。爲了區別不一樣的

「容器」必須爲每一個「容器」取一個本身的名字, 即變量名。怎麼樣來定義「容器」呢?

下面來定義一個容器,它的名字是 myAge,用來存放年齡。定義以下:

var myAge;

var 是用來定義變量的關鍵字。

MyAge 即是變量名。

那麼這個變量怎麼存放年齡呢?在定義變此時能夠給定一個值,即變量值,以下所示:

var myAge=66;其中「=」號表明賦值運算符,把 66 這個值賦給變量 myAge

注意 :首次定義變量時,爲該變量指定一個已知值,這就是所謂的初始化變量。

變量的命名的規則

用不一樣的符號對不一樣的事物進行標記,用做標記的符號就是標識符,標識符是用於表示變量、

屬性、對象、函數或方法的名稱。

命名變量名要遵照以下的規則:

1)不能是as 關鍵字,所謂關鍵字也稱保留字,指as 預先定義好的標識符。

2)不能以數字開頭,第一個字符必須是字母或下劃線「_」和美圓符「$ 

4)中間不能有空格。

5)變量名中不能使用標點符號,

6)不該將動做腳本語言中的任何元素用做變量名稱。

正確的示例:

a,m,ba,assw,a_aa,my_mc,$abc,$_ss,$_mc等等

my_txt 保存文本的變量

錯誤的示例:

2_m   //不能用數字開頭

my-a  //不能用減號分割

a.ss  //不能使用標點符號

a b //不能有空格

如:

var 年齡=20;

其中年齡就是變量名。

注意  在命名變量時規範的方法是不一樣類型的變量加不一樣的前綴或者後綴,在實際編程中

咱們每每不太注意這些, 規範的命名變量使其餘人更容易閱讀, 命名變量時經過爲其增長

一些特殊的後綴觸發代碼提示。下表中爲支持代碼提示所需後綴 trace()函數

在編寫腳做腳本中,咱們會大量用到 trace()命令。trace()實際算是一個調試命令,它的輸出

都會在「輸出面板」顯示出來。 而真正發佈做品的時候 trace()卻再也不輸出。是最方便的調

試命令,trace()命令很是簡單:

應用格式:

trace(expression:Object)

參數:expression 要顯示的變量或者表達式。

下面咱們使用 trace 函數輸出變量值

在主場景第 1 幀打開動做面板,輸入下列代碼:

var a=5

var b="歡迎你們來到愛國者安全網學習 AS"

var c=(3+5)

trace(a);

trace(b)

trace(c)

變量賦值

使用變量保存信息就叫作給變量賦值。在 Flash中給變量賦值經常使用的方法有:

var a=5;//把常量 5 賦值給變量 a

trace(a);//輸出面板輸出 5

set(a,5);// set()方法爲變量賦值爲 5

trace(a);//5

this["a"+1]=0

trace(a1);//0

肯定變量的範圍和聲明變量

變量的範圍是指變量在其中已知而且引用區域。在動做腳本中有 3 種類型的變量範圍:

本地變量在聲明它們的函數體(由大括號界定)內可用。

時間軸變量可用於該時間軸上的任何動做腳本。

全局變量和函數對於文檔中的每一個時間軸和範圍可見。

本地變量

要聲明本地變量,請在函數體內部使用 var 語句。本地變量的使用範圍只限於它的代碼塊,

它會在該代碼塊結束時到期。沒有在代碼塊中聲明的本地變量會在它的動做腳本結束時到

期。本地變量也可防止出現名稱衝突,在定義本地變量時能夠爲其指定數據類型,這有助於

防止將類型錯誤的數據賦給現有變量

trace(expression:Object)

var a=5

var b="歡迎你們來到愛國者安全網學習 AS"

var c=(3+5)

trace(a);

trace(b)

trace(c)

時間軸變量

時間軸變量可用於該時間軸上的任何動做腳本。要聲明時間軸變量,能夠使用 set variable

動做或賦值「=」動算符,應在該時間軸中的全部幀上都初始化這些變量,應確保首先初始

化變量,而後嘗試在動做腳本中訪問它。聲明時間軸變量也能夠使用 var

例如:若是將代碼「var x=10;」放置在第 20 幀上,則附加到第 20 幀以前的任何幀上的動

做腳本都沒法訪問變量

全局變量

全局變量和函數對於文檔中的每一時間軸和範圍而言都是可見的。若要建立具備全局範圍

的變量,請在變量名稱前使用_global 標識符,而且不使用 var 語法。

例如

在根時間軸第一幀上定義兩個變量,而後將 trace()放在不一樣地點去返回它們的值,以觀察它

們的區別

Var a=5

_global.b=3

在程序中使用變量

1.必須在動做腳本首先給變量賦值,而後才能在表達式中使用它。在 flash 中能夠使用變

量動態的設置其它動做中的不一樣參數。

例如:

on (release) {

k = random(30)+50;

setProperty("mc", _xscale, k);

setProperty("mc", _yscale, k);

}

2.若是使用未賦初值過的變量該變量的值將是 NaN undefined。而且動件腳本可能產生

意外的結

果。

例如:

var k=x*x;

trace(k);//NaN

var x=6;

在下面的示例中申明變量的語句必順排在第一行,這樣 k 就能夠替換爲一個值;

var x = 6;

var k = x*x;

trace(k);//36

用動態文本顯示變量值

1 啓動 flash,新建一個文檔,文檔屬性默認。

2 單擊文本工具,打開「屬性」面板,在其文 檔類型選項中選擇「動態文本」

3 在舞臺中單擊創建一個動態文本,在「屬性」面板把變量名設爲 myAge,

選擇圖層 1的第 1 幀,打開動做面板,輸入如下代碼:

var myAge=20

測式影片,在動態文本中能夠看到剛纔定義的變量值。

用輸入文本輸入變量值

1)在場景「圖層 1」的第一幀,在舞臺上創建一個動態文本和輸入文本,在屬性面板裏

爲動態文本輸入實例名「輸入」 ,爲輸入文本輸入實例名「輸出」 

2)製做一個「提交」按鈕和「清空」按鈕。而後爲按鈕添加代碼

提交按鈕上的代碼:

on (press) {

輸出 = 輸入;

}

清空按鈕上的代碼 

on (press) {

var 輸入 = "";

var 輸出 = "";

}

3)插入「圖層 2 ,在圖層 2 的第 1 幀,添加代碼:

輸入=""

測試影片,觀看效果。

圓柱表面積計算公式

在輸入文本中輸入半徑和高的值後,點擊計算按鈕,對應的面積值就會顯示在動態文本中.

1)在舞臺上創建兩個輸入文本,分別在屬性面板裏輸入變量名「r」和「h 。再創建一個

輸入文本,在屬性面板裏輸入變量名「s ,本身安排好文本的位置。

2)製做一個「計算」按鈕和「清空」按鈕,拖入舞臺,放到適當位置。

3)添加 AS 代碼:

計算按鈕上的代碼爲:

on (release) {

s = 2*Math.PI*(r*r)+2*Math.PI*r*h;

}

清空按鈕上的代碼爲:

on (press) {

r = "";

h = "";

s = "";

}

代碼解釋:在表達式 2*Math.PI*(r*r)+2*Math.PI*r*h 中,Math.PI 表明圓周率,在計算精確

度不高時, 一般是取它的近似值爲 3.14  2*Math.PI*(r*r)表示兩底面的面積和;

2*Math.PI*r*h表示側面積。

數據類型

咱們思考一下計算機程序所做的一些事情,財務管理程序可以打印賬單,字處理程序可以輸

入和編輯文本,視頻處理程序可以讓咱們觀看影片和玩各類遊戲,等等數不勝數,但全部程序

都有一個共同特色;他們都須要處理數據.flash 中根據數據的處理方法的不一樣,對數據進行了

分類,他們是;數值類型,字符串類型,布爾類型,對象類型,影片剪輯類型,未定義和空值。

計算機在處理這些數據的時候,必需使用某種方法存儲這些數據,變量就是服務於該目的,

以咱們常說"變量是保存信息的容器 爲了區別分不一樣類型的變量,就有了數據類型,變量有

多種數據類型,數據類型描述變量或動做腳本元素能夠包含的信息種類,下面講解常見的數據

類型.函數的值是由變量決定的,那麼什麼來決定變量呢?那是數據, 下面咱們就說說 AS

中使用到的數據類型。AS 中的數據有兩大類,一 類稱之爲原始類型(也叫初始類),另

一類叫作參考類型 (也叫引用類)。

原始類型數據分爲字符串、數值和邏輯型三種,它們都有常量 值,可以爲其所表明的元素

賦一個實際值。

參考類型數據包括影片剪輯和對象兩種, 它們有一個可變的值, 包含了對元素實際值的引用。

此外還有兩個特殊類型的數據:空值和未定義值。

字符串型(string :字符串是諸如文字、字母、數字和標點符號等字符的序列。在動做腳

本語句中輸入字符串的方式是將其放在單引號或雙引號之間,字符串被看成字符,而不是變

量進行處理。例如「學習 Flash」「abcd」的等。還能夠使用」+」等運算符對字符串進行操

做。

例如

trace("歡迎你們");

trace('來愛國者安全網學習');

trace("歡迎你們"+'來愛國者安全網學習');

數值型( (N umber) ):您能夠使用加(+)、減(-)、乘(*)、除(/)、求模(%)、遞增(++)和遞減(- -)

等算術運算符來處理數字,也可以使用內置的 Math  Number 類的方法來處理數字。下面

的示例使用 sqrt()(平方根)返回數值 100 的平方根 10

trace(Math.sqrt(100));// 返回數值 100 的平方根 10

布爾型(boolean) :只有 「真 true 」「假(false  兩種值的數據。布爾值是 true  false

中的一個,動做腳本也會在適當時將值 true  false 轉換爲 1  0 布爾值常常與動做腳

本中的比較運算符一塊兒使用。

例如

trace(3<1);

trace(-8<0);

對象(Object ):: 對象是屬性的集合。 每一個屬性都有名稱和值, 屬性的值能夠是任何的 Flash

數據類型,甚至能夠是對象數據類型。這樣就能夠使對象相互包含(即將其嵌套)。若要指

定對象及其屬性,能夠使用點(.) 運算符。

影片剪輯 ( Movie Clip) :影片剪輯是 Flash 應用程序中能夠播放動畫的元件,是惟一引用

圖形元素的數據類型。MovieClip 數據類型容許您使用 MovieClip 類的方法控制影片剪輯

元件,能夠使用點(.) 運算符調用這些方法。影片剪輯是 Flash中最活躍的元素之一。

例如:

trace(_root.mc._x);

trace(_root.mc._height);

Undefined:表示未定義的數據類型,以下狀況返回 undefined 值:

(1)對象屬性不存在,

(2)聲明瞭變量但從未賦值。

例如沒有定義變量 a 的狀況下。

trace(a);// Undefined

trace(a+3);//NaN

測試數據類型

咱們用以下函數能夠判斷數據類型:

typeof();

typeof()一般與 trace()結合使用

本例使用 trace 語句與 typeof 函數共同測試數據類型。爲你們學習 Flash 數據類型實現更

加深刻的認識。

注意:咱們的全部測試必須在 fla 源文件編輯狀態下單擊「控制」|「測試影片」才能在輸

出面板看到效果,測試 swf文件是不會獲得任何輸出的。

typeof用法

typeof(表達式)

表達式:一個字符串、影片剪輯、按鈕、對象或函數。

說明運算符; 放在單個參數前的一元運算符。typeof 運算符讓 Flash 解釋器計算 表達式;

其結果爲一個字符串,指示該表達式是字符串、影片剪輯、對象、函數、數字,布爾值。

示例:測試數據類型

1)在舞臺中放一個影片剪輯元件,並輸入實例名「my_mc 

2)在舞臺中放一個按鈕。並輸入實例名「my_btn 

3)在舞臺中繪製一個動態文本,輸入變量名「txt1」在動態文本中任意輸入文字。

4)在舞臺中繪製一動態文本,輸入文本實例名「txt2 。在動態文本中任意輸入文字。

在第一幀中輸入腳本:

trace("測試結果");

trace(typeof (txt1));

trace(typeof (my_mc));

trace(typeof (my_btn));

trace(typeof (txt2));

trace(typeof (Math.PI));

trace(typeof (3<1));

trace(typeof (System));

trace(typeof (stop));

顯示對各種表達式使用 typeof 運算符的結果以下表所示。

十4、運算符(一)

運算符表達式

運算符是指定如何組合、比較或修改表達式值的字符。運算符對其執行運算的元素稱爲操做

數。例如,在語句「foo+3」中, +」運算符會將數值文本的值添加到變量 foo的值中;foo

 3 就是操做數。

用運算符鏈接變量或者常量獲得的式子叫作「表達式」 。各類表達式用運算符鏈接在一

起還叫作表達式,例如:圓柱體表面積計算公式 2*Math.PI*r*r+2Math.PI*r*h

其中「2」和「Math.Pi (表示圓周率π)都是常數,而「r」和「h」分別表示半徑和高,

是變量。 +」和「*」分別表示加法運算和乘法運算,是運算符,這個式子就是表達式。

運算符的優先順序

在同一語句中使用兩個或多個運算符時, 各運算符會遵循必定的優先順序進行運算, 例如加

(+),減(-)的優先順序最低, (*),(/)的優先順序較高,而括號具備最高的優先順序,當一

個表達式中只包含有相同優先級的運算符時,動做腳本將按照從左到右的順序依次進行計

算;而當表達式中包含有較高優先級的運算符時,動做腳本將按照從左到右的順序,先計算

優先級高的運算符,而後再計算優先級較低的運算符; 表達式中包含括號時,則先對括號

中的內容進行計算,而後按照優先級順序依次進行計算。

算術運算符

能夠執行加法、減法、乘法、除法運算,也能夠執行其餘算術運算。Flash 中的算術運算符

及簡單的用法以下圖 加法運算實例

在場景中繪製三個動態文本,變量名分別爲 c1c2c3。再繪製兩個輸入文本,變量名爲

ab。放入四個按鈕,分別選中按鈕輸入 AS

1 數字類型相加

on (press) {

c1 = 3+2;

}

2 字符串相加

on (press) {

c2 = "學習"+"flash";

}

3 輸入文本中的變量相加

on (press) {

c3 = a+b;

}

4 字符串類型轉化爲數字類型

on (release) {

c3 = Number(a)+Number(b);

}

說明:在執行加法運算時,若是,操做數是數字類型,那麼執行的加法就是數字相加,若是

操做數是字符串類型,那麼這裏的加法就是合併字符串;若是,操做數中有字符串,有數字,

那麼程序就會把其中的數字當成字符串; 動態文本和輸入文本中的變量值, 程序都把它當作

字符串類型,要執行數字相加時,要轉化成數字類型。例如上例中的

c3 = Number(a)+Number(b);

區別 x++++x

場景第 1 幀上

x=1

y=1

1 x++

on (release) {

a_txt = ++x;

}

(2) ++x

on (release) {

b_txt = y++;

}

幀循環 i++

場景第 1 幀上 

i=1;

stop();

場景第 2 幀上:

i++;

a_txt = i;

場景第 3 幀上:

gotoAndPlay(2);

播放按鈕上:

on (release) {

this.play();

}

中止按鈕上:

on (release) {

this.stop();

}

說明:在使用增量運算符時,運算符放在表達式前面與放在後面所執行的操做是不一樣的,當

++i 格式時將先執行加 1 操做,而後在使用表達式的值,當使用 i++格式時則首先使用表

達式的值而後執行加 1 操做。

取模運算

場景第 1 幀上:

var i=0;

按鈕上:

on (release) {

a_txt = i++;

b_txt=Number(a_txt)%2;

}

說明: :取餘運算:首先進行除法運算而後取餘數,叫取餘運算,取餘運算並不在意其

商是多少,目的只是獲

取餘數,例如 7/2  1,咱們使用餘數 1 去參加運算,稱爲數字 7 對數字 2 的餘(),在

flash中取餘運算用%

表示, 上式中的餘數 1 保存到變量 my_a 中能夠寫 my_a=7%2,有些編程語言中取餘運算

不用% 而是用 mod

表示,因此有的人就把取餘運算叫作取模運算。

6. .2 2 賦值運算符

FLASH 用了大量的賦值運算符,能夠使設計的動做腳本更簡潔,下面列出了 FLASH 中使用

的賦值運算符。 賦值運算符原理

 1 幀上初始變量:

a=b=c=d=e=100;

按鈕 1 上的 AS

on (release) {

a += 1;

a_txt1 = a;

}

按鈕 2 上的 AS

on (release) {

b -= 1;

a_txt2 = b;

}

按鈕 3 上的 AS

on (release) {

c *= 0.1;

a_txt3 = c;

}

按鈕 4 上的 AS

on (release) {

d /= 0.1;

a_txt4 = d;

}

按鈕 5 上的 AS

on (release) {

e += 5;

e %= 2;

a_txt5 = e;

}

 鼠標 標跟 跟隨 隨特 特效

 1 1 )在 在舞臺上用靜態文本輸入文字「鼠標跟隨特效」一次分離後,分別把各個

字分別轉換爲影片剪輯元件。 注意: 轉換時註冊點要居中。 而後依次分別輸入實例名稱:

mc1  mc2  mc3  mc4  mc5 

mc6  mc7

2 插入「圖層 2」在「圖層 2」第 1 幀輸入 AS 代碼:

_root.mc1._x += (_root._xmouse-_root.mc1._x)/5

_root.mc1._y += (_root._ymouse-_root.mc1._y)/5;

_root.mc2._x += (_root.mc1._x-_root.mc2._x)/5;

_root.mc2._y += (_root.mc1._y-_root.mc2._y)/5;

_root.mc3._x += (_root.mc2._x-_root.mc3._x)/5;

_root.mc3._y += (_root.mc2._y-_root.mc3._y)/5;

_root.mc4._x += (_root.mc3._x-_root.mc4._x)/5;

_root.mc4._y += (_root.mc3._y-_root.mc4._y)/5;

_root.mc5._x += (_root.mc4._x-_root.mc5._x)/5;

_root.mc5._y += (_root.mc4._y-_root.mc5._y)/5;

_root.mc6._x += (_root.mc5._x-_root.mc6._x)/5;

_root.mc6._y += (_root.mc5._y-_root.mc6._y)/5;

3 圖層 2  2 幀上的 AS 代碼 

gotoAndPlay(1);

語句講解:

1_root._xmouse—鼠標在場景中的橫座標;_root._ymouse—鼠標在場景中的縱座標。

2)計算移動距離的方法:

距離=(終點座標-實例座標)/速度

實例座標+=距離

或者描述爲:實例座標+=(終點座標-實例座標)/速度。

它實現的效果是從實例的初始位置開始, 減速地運動到終點。 在上例中只不過終點座標也

是實例座標。

實際上就是計算出兩實例距離,而後把這個距離除以 5,每次移動距離的五分之一,因此把

這裏的 5 叫作速度。

這個公式不只用於實例的移動, 若是用於影片剪輯的其它屬性,如透明度能夠實現實例透明

度慢慢變化,如:

mc._alpha+=(20-mc._alpha)/5

能夠實現 mc的透明度慢慢從 100 減到 20

十5、變量(二)

比較運算符

用於比較表達式的值,而後返回一個布爾值(true  false)。這些運算符最經常使用於循環語句

和條件語句中。Flash中的算術運算符及簡單的用法如表 比較返回值

在舞臺上繪製四個動態文本框,變量名分別爲: m_txt1m_txt2m_txt3m_txt4。再放入兩

個按鈕。 按鈕 1 上的 AS

on (release) {

m1_txt = 1 == 2;

m2_txt = 1>2;

m3_txt = 1<2;

m4_txt = 1 != 2;

}

按鈕 2 上的 AS:

on (release) {

m1_txt=""

m2_txt=""

m3_txt=""

m4_txt = ""

}

條件運算符

?:(條件)

格式:表達式式 1? 表達式 2:表達式 3

參數: 表達式 1計算結果爲布爾值的表達式, 一般爲像 x < 5 這樣的比較表達式。 表達式 2

表達式 3 任何類型的值。

說明:指示 Flash 計算表達式 1,若是表達式 1 的值爲 true,則它返回表達式 2 的值;否

則,它返回表達式 3 的值。

條件運算符原理

在舞臺上繪製兩個輸入文本, 一個動態文本。 變量名分別爲 x_txt」、「y_txt」、「z_txt」。

在放入一個「計算」按鈕、一個「清空」按鈕。 運算按鈕上的 AS 代碼:

on (press) {

x = Number(x_txt);

y = Number(y_txt);

z = (x<y) ? x : y;

z_txt = z;

}

清空按鈕上的 AS 代碼 

on (press) {

x_txt=""

y_txt=""

z_txt=""

}

說明:影片播放時分別在輸入文本中輸入不能的數值,點擊運算按鈕,觀察返回值,從而理

解其原理。

一個按鈕兩種功能

製做一個小球旋轉的影片剪輯元件,輸入實例名 mc,放入一個按鈕,而後輸入 AS 代碼 

場景第 1 幀上的 AS 代碼 

var i=1

按鈕上的 AS 代碼 

on (press) {

i++%2 == 0 ? _root.mc.play() : _root.mc.stop();

}

說明:此例中是用取模來分支的,咱們也可要用布爾值來進行分支,例如上例中能夠這樣寫

語句:

 1 幀上:

var k =false;

按鈕上:

on (press) {

k ? _root.mc.play() : _root.mc.stop();

k = !k;

}

若是要控制幾個影片剪輯代碼要以這樣寫:

on (press) {

i++%2 == 0 ?[ _root.mc1.play(),_root.mc2.play()]:[_root.mc1.stop(),_root.mc2.stop()];

}

邏輯運算符

邏輯運算符對布爾值(true  false)進行比較,而後返回第三個布爾值。在表達式中,用

戶能夠使用邏輯運算符來判斷某個條件是否存在。邏輯運算符主要用在 if do while動做

中。有關邏輯運算符及其功能如表 邏輯運算原理

說明:咱們打開素材,播放狀態下,點擊按鈕,觀察邏輯運算的返回值,從而理解邏輯運算

原理。

控制小球運動

1.運行 Flash 8,大小默認,幀頻爲 24fps

2.在舞臺上繪製一個直徑爲 60 的無筆觸放射狀填充的小正圓(小球)。

3.選中小球,按 F8 鍵轉化爲影片剪輯元件,註冊點居中。

4.選中小球,在屬性面板裏輸入實例名: mc

5.插入「圖層 2 ,把「圖層 2」重命名爲「AS 

6.在「AS」的第 2 幀,第三幀上插入空白關鍵幀。

在第 1 幀上添加 AS 代碼:

var i = 20;

var j = 10;

第二幀上添加 AS 代碼:

_root.mc._x<=30 || _root.mc._x>=520 ? i=-i : 0;

_root.mc._y<=30 || _root.mc._y>=370 ?j=-j : 0;

_root.mc._x += i;

_root.mc._y += j;

 3 幀上的代碼:

gotoAndPlay(2);

7.你們能夠本身加一個背景,放在場影的最下層。

8.播放影片,觀看效果。

代碼講解:

1  1 幀上初始的變量值是決定小球的運動方向與運動速度的。

2  2 幀上用條件運算符來控制小球運動到場影的邊緣時就要反向,速度不變。

3  3 幀上是讓播放頭在第 2 幀同第 3 幀之間循環。

4 此例條件運算式了中,第三個表達式:0」是不起任何做用的,但語名格式中,不能沒

有它。

十6、影片剪輯的屬性

經過本課的學習瞭解影片剪輯的主要屬性,學會設置和獲取影片剪輯的屬性的方法。

知識點:

1)影片剪輯的經常使用屬性

2)用點語法設置和獲取影片剪輯的屬性

3)用 setProperty() getProperty()函數動態設置和獲取影片剪輯屬性

4)用數組運算符[]動態設置和獲取影片剪輯屬性

影片剪輯的屬性

咱們已經知道影片剪輯的一些屬性能夠經過屬性面板,信息面板,變形面板,來設置,在

這一課中咱們將深刻學習在 AS 語言是怎樣描述影片剪輯的屬性的、 怎樣用程序來設置和獲

取影片剪輯的屬性。下面列出了影片剪輯經常使用屬性 用點語法設置和獲取影片剪輯的屬性

對於大多數影片剪輯的屬性既能夠設置,又能夠獲取,好比座標、旋轉度,透明度等。 

裏咱們經過下面的例子來學習用點語法設置和獲取影片剪輯的屬性。

用點語法設置影片剪輯屬性 1.命名實例名和變量名

1)打開素材,進入到花元件中,選中「花 1」影片剪輯元件,在屬性面板裏輸入實例名

稱: mc1 。在場影中,選中「花」影片剪輯元件,在屬性面板裏輸入實例名稱:「mc 

2)在場景中建立一個動態文本,並在屬性面板裏輸入變里名: txt.

2.寫代碼(場景中的按鈕從上到下依次叫按紐 1~按鈕 6

按鈕 1 上的代碼:

on (release) {

_root.mc.mc1._xscale += 10;

_root.mc.mc1._yscale += 10;

_root.txt = "放縮度:"+_root.mc.mc1._xscale;

}

按鈕 2 上的代碼:

on (release) {

_root.mc.mc1._xscale-= 10;

_root.mc.mc1._yscale-= 10;

_root.txt="放縮度:"+_root.mc.mc1._xscale

}

按鈕 3 上的代碼:

on (release) {

_root.mc.mc1._rotation += 2;

_root.txt ="旋轉度:"+ _root.mc.mc1._rotation;

}

按紐 4 上的代碼:

on (release) {

_root.mc.mc1._rotation-= 2;

_root.txt = "旋轉度:"+ _root.mc.mc1._rotation;

}

按紐 5 上的代碼:

on (release) {

_root.mc.mc1._alpha -= 5;

_root.txt ="透明度:"+  _root.mc.mc1._alpha;

}

按紐 6 上的代碼:

on (release) {

_root.mc.mc1._xscale = 100;

_root.mc.mc1._yscale = 100;

_root.mc.mc1._rotation = 0;

_root.mc.mc1._alpha = 100;

_root.txt="還原"

}

在上例中咱們學習了點運算符設置和獲取影片剪輯的屬性, 但點運算符不能動態的設置影片

剪輯的屬性。這一課中咱們將學習動態的設置影片剪輯的屬性。

setProperty()//設置電影片段在屏幕中的屬性。

腳本位置:全屬函數|影片剪輯控制|setProperty

語法格式:setProperty (target:Object, property:Object, expression:Object) : Void

功能:當影片播放時更改影片剪輯的屬性。

參數:

 targetObject  要設置其屬性的影片剪輯的實例名稱的路徑。

 PropertyObject—要設置的屬性。

 ExpressionObject  或者是屬性的新的字面值,或者是計算結果爲屬性新值的等式。

點擊:全屬函數|影片剪輯控制|setProperty後,

 目標—要設置其屬性的影片剪輯的實例名稱的路徑。

 屬性—要設置的屬性

 值—或者是屬性的新的字面值,或者是計算結果爲屬性新值的等式。

getProperty()函數

咱們已經知道 setProperty()函數能夠設置影片剪輯的屬性但它沒有返回值

例如:例如在舞臺上建立兩個影片剪輯,實例名爲: mc1  mc2」水平中齊。在第

一幀寫入代碼:

mc1._x = 275;

trace(mc1._x);//275

setProperty(mc2, _x, 275);

trace(setProperty(mc2, _x, 275));//undefined

flash給咱們提供了動態獲取影片剪輯屬性的函數 getProperty()

腳本位置:全屬函數|影片剪輯控制|getProperty

語法格式:getProperty(my_mc:Object, property:Object) : Object

功能:返回影片剪輯 my_mc 的指定屬性的值。

參數:

 my_mc:String  要檢索其屬性的影片剪輯的實例名稱。

 property  影片剪輯的一個屬性。

返回:Object 指定屬性的值。

點擊,全屬函數|影片剪輯控制|getProperty

此對話本框中參數能選項以下所述。

目標—要檢索其屬性的影片剪輯的實例名稱。

屬性—指定屬性的值。

設置和獲取影片剪輯的屬性

1 在舞臺任意繪製一個圖形,轉化爲影片剪輯元件,註冊點居中。在屬性面板中設置實

例名爲「a_mc

2 複製一個影片剪輯實例,把複製的這個實例用任意變形工具任意改變它的高和寬。並

在屬性面板裏設置實例名爲「b_mc 

3 創建一個按鈕,選中按鈕,打開「動做」面板,寫入代碼:

on (release) {

setProperty("b_mc", _width, getProperty("a_mc", _width));

setProperty("b_mc", _height, getProperty("a_mc", _height));

setProperty("b_mc", _x, getProperty("a_mc", _x)+200);

setProperty("b_mc", _y, getProperty("a_mc", _y));

}

測試影片,點擊按鈕後,兩個實例徹底同樣。

在這個實例中是靜態地設置和獲敢影片剪輯屬性的,下面咱們來練習動態設置屬性。

使用 setProperty()函數批量更改影片剪輯屬性

下圖是實效果中的一個面畫 製做步驟

1 新建 flash文檔,文檔大小:600×400,其它默認。

2 在舞臺上繪製一個直徑爲 60 的正圓,轉化爲影片剪輯元件,註冊點居中。

3 複製 4 個影片剪輯實例, 在屬性面板裏分別設置實例名稱爲 qiu1 、「qiu2 

qiu3  qiu4  qiu5 。把 5 個影片剪輯實例拖入到舞臺外。

4 在舞臺上創建兩個按鈕元件。分別選中按鈕,打開動做面板,寫入代碼:

on (release) {

i<5 ? i++ : i=1;

setProperty("qiu"+i, _x, 100*i);

setProperty("qiu"+i, _y, 180);

setProperty("qiu"+i, _alpha, 100-(i-1)*20);

}

on (release) {

i<5 ? i++ : i=1;

setProperty("qiu"+i, _x, 100*i);

setProperty("qiu"+i, _y, 2/3*100*i);

setProperty("qiu"+i, _alpha, 100-(i-1)*20);

}

在場景第 1幀輸入代碼:

var i=0

測試影片,觀看效果。

分析: 在第 1 幀上初始變量值爲 i=0,當第一次點擊按鈕時, i++的值爲 1 第二次點擊時 i++

的值爲 2,……

因此,_alpha 的值 100-(i-1)*20 依次爲:10080604020

_x 的值 100*i 依次爲:100200300400500

縱座標_y 的算法:場景大小爲 600×400,座標原點(00)在左上角,因此對角線的斜率

爲:400/600=2/3,對角線方程爲:y=2/3x,由於橫座標_x 爲:100*i,因此縱座標_y的值設置

爲:100*i*2/3

在這個實例中,咱們用點運算符分別來設置小球的屬性還不算太困難,要是有 100 個影片

剪輯實例呢?那你要寫多少代碼。因此掌握動態設置影片剪輯屬性的方法頗有必要。 在之後

咱們學習到複製命令、條件、循環後會更有體會的。

動態路徑

影片剪輯通常能夠經過手工建立,經過「屬性」面板設定影片剪輯的實例名稱,經過實例名

稱和路徑能夠訪問不一樣層次的影片剪輯實例。但有的影片剪輯實例是經過程序建立的,例如

經過複製函數能夠複製出若干的新影片剪輯實例, 它們的實例名也是在程序中指定的。要訪

問這些複製出來的影片剪輯,最好的方法是用動態路徑。

動態路徑是利用數組運算符來實現的

咱們能夠使用動態路徑來訪問"qiu"+i

_root["qiu"+i]

也能夠使用 this 來指定

this["qiu"+i]

注意:動態路徑使用數組運算符  []  實現,路徑同實例名之間沒有點運算符。

說明:使用動態路徑能夠批量實現路徑.假如場景中有影片剪輯實例 mc1mc2mc100 假如

用絕對路徑要寫 100 行程序,用動態路徑很是方便,由於這些實例名有必定的規律,開頭

的字母都是一個的,都是 mc,後面的數字能夠用一個變量 n來表示,由於變量是能夠變化

的,表不以下:

_root[「mc」+i]

若是有多重路徑,如要訪問主場景下的 mcA下的 mc1  mc100,能夠這樣來表示:

_root.mcA["mc"+i]

又如要訪問"mc"+i 中的變量 txt,能夠這樣來表示:

_root["mc"+i+".txt"]

利用動態路徑批量更改影片剪輯的屬性。 

(1) 打開源文件。

(2) 進入 qiu1 的編輯場影中,插入「圖層 2」在此圖層上創建一個動態文本,在屬性面板

裏輸入變量名 txt

由於另外四個影片剪輯實例是由 qiu1 複製的,因此每一個影片剪輯實例中都有了動態文本。

(3) 把兩個按鈕上的代碼分別改成:

on (release) {

i<5 ? i++ : i=1;

_root["qiu"+i]._x = 100*i;

_root["qiu"+i]._y = 180;

_root["qiu"+i+".txt"] = "qiu"+i;

}

on (release) {

i <5 ? i++ : i=1;

_root["qiu"+i]._alpha = 100-(i-1)*20;

_root["qiu"+i]._x = 100*i;

_root["qiu"+i]._y = 2/3*100*i;

_root["qiu"+i+".txt"] = "qiu"+i;

}

測試影片,

說明:動態路徑在實際編程中運用很是普遍,它大大提升了編程的效率。有關動態路徑更多

應用將在後面的章節裏講解。

十7、再講循環語句

掌握 if 語句、if-else語句、else if 語句的語法格式及其功能。

一個程序都是由若干個基本結構組成,每一個基本結構包含一個或多個語句。 程序有三種基本

結構,順序結構、選擇結構、循環結構。

在實際運用中,每每有一些須要根據條件來判斷結果的問題,條件成立是一種結果,條件不

成立又是一種結果。像這樣比較複雜的問題就必須用選擇結構來解決。

在選擇結構程序中,有一個條件,當條件爲真時,執行一段代碼,不然的話,執行另外一段

代碼,因此選擇結構的程序的特色是隻能執行兩段代碼中的一段。

在這一課中咱們將繼續學習條件語句。

if 語句

腳本位置: 語句|條件/循環|if 語句

語法格式:

if(條件) { //小括號裏的條件是一個計算結果爲 true  false 的表達式。

這裏是當條件計算爲 true時執行的指令

}

功能:其中,if是表示條件語句的關鍵詞,注意字母是小寫,這個 if語句的功能是 if後面

小括號裏面的條

件只能有兩種結果:真(true)或假(false)。只有當條件爲真時才執行大括號中的程序,如

果條件爲假,

將跳過大括號中的程序,執行下面的語句。if語句執行過程如圖 參數:condition:Boolean—計算結果爲 true  false 的表達式。

if 語句執行過程 1)如圖所示,在舞臺上創建一個輸入文本,三個動態文本, (按照圖中從上到下的順序

排列), 按照這個順序依次分別輸入變里名:「a_txt」、「b_txt」、「c_txt」、「d_txt」。

2)插入「圖層 2 ,在「圖層 2」上創建兩個按紐實例(計算按鈕和清空按紐)。

3)選中計算按鈕,打開動做面板,輸入下面代碼:

on (release) {

var k = Number(a_txt);

b_txt = (k%3 == 0);

if (k%3 == 0) {

c_txt = "a 能被整除";

}

d_txt = "這裏顯示的是花括號後面的語句";

}

4)選中清空按鈕,打開動做面板,輸入下面代碼:

on (release) {

a_txt = "";

b_txt = "";

c_txt = "";

d_txt = "";

}

5)測試影片,在輸入文本時輸入數字。點擊計算按鈕,能夠看到當條件爲真時執行大括

號內的語句,當條件爲假時跳過大括號執行大括號外的語句。

條件語句中的條件

1)條件語句中的條件能夠很是簡單,一個變量也能夠做爲一個條件,若是變量有一個確

定的值,它返回的結果是真,如:

var 個人名字 = "雷克斯 de眼淚";

if (個人名字) {

trace(個人名字);

}

2)條件語句中的條件還能夠是一個賦值表達式。如:

var 個人名字 = "雷克斯 de眼淚";

if (個人名字=="雷克斯 de眼淚") {

trace(個人名字);

}

3if 名句中的條件能夠是多個的,要用邏輯運算符進行鏈接,這時 flash 將進行判斷,

計算最後的結果是真仍是假,如:

var 用戶名 = "雷克斯 de眼淚";

var 用戶密碼 = "123";

if (用戶名 == "雷克斯 de眼淚" && 用戶密碼 == "123") {

trace("用戶名和密碼正確");

}

在這段代碼中,if 中的條件有兩個,用&&運算符來鏈接,表明兩個條件都爲真時才執行語

句中大括號內的代碼。

總結: 因而可知, 條件的類型通常爲邏輯表達式和關係表達式, 但也能夠是任意的數據

類型。 這時 flash將按真處理。

if-else 語句

if-else 語句的通常形式爲:

if (條件){

//程序 1,條件爲真時執行的程序

} else {

//程序 2,條件爲假時執行的程序

}

功能:當條件成立時執行程序 1,當條件不成立時執行程序 2,這兩個程序只選擇一個執行

後,就執行下面的程序。if-else 語句執行的過程如圖 if-else 語句執行的過程

(1) 如圖所示,在舞臺上創建一個輸入文本, 在屬性面板裏設置變量名爲 a_txt  再建

立三個動態文本,變量名分別爲「b_txt  c_txt  d_txt  (2) 插入新圖層,在此圖層上創建兩個按鈕實例,用於計算和清空。

(3) 單擊「清空」按鈕上的代碼:

on (release) {

a_txt = "";

b_txt = "";

c_txt = "";

d_txt = "";

}

計算按鈕上的代碼:

on (release) {

var k = Number(a_txt);

b_txt = (k%3 == 0);

if (k%3 == 0) {

c_txt = "a 能被整除";

} else {

d_txt = "a 不能被 3整除";

}

}

4 測試影片, 在輸入文本時輸入數字。 點擊計算按鈕, 能夠看到當條件爲真時執行程序 1

當條件爲假時執行程序 2

小課件 100之內的加法運算

課件效果

本例是一個測試 100 之內的兩個整數加法運算的填空題課件,運行課件時,單擊「請出題」

按鈕,隨機顯示兩個加數,填好答案後,單擊「查成績」按鈕,便可判斷答題是否正確。 製做步驟

1.新建一個 flash文檔,文檔屬性保持默認設置。

2.新建一個名爲「填空題」的影片剪輯元件,將「圖層 1」改名爲「背景和標題」 ,而後

在此圖層上建立背景和標題。

3.新建一個名爲「動態文本」的圖層,在這個圖層上,建立 4 個動態文本框,在屬性面板

裏設置好文本屬性,並輸入分別輸入實例名abcd。(其中a用來顯示兩個加數,c

用來顯示和,用來顯示反饋)按照它的們的功能,安排好位置。再用靜態文本輸入「+

號和「=」號。

4.新建一個名爲「按鈕」的圖層,在此圖層中,建立兩個按鈕實例,一個用來出題,一個

用來查成績。

5.給按鈕添加代碼:

出題按鈕上的代碼:

on (press) {

a = random(100);

b = random(100);

c = "";

d = "";

}

查成績按鈕上的代碼:

on (press) {

if (Number(a)+Number(b) == Number(c)) {

d = "答對了!";

} else {

d = "答錯了!";

}

}

6.回到場景,從庫裏提出名爲「填空題」的影片剪輯元件,居中對齊。測試影片。

else if 語句

腳本位置:ActionScript 語言元素 > 語句 > else if 語句

語法格式:

if(條件 1) {

程序 1;

} else if(條件 2) {

程序 2;

} else if(條件 s) {

程序 (s);

}

功能:else if 語句是這樣執行的:進行條件 1 的判斷,若是條件 1 爲真執行程序 1,若是

條件 1 爲假則跳過程序 1,進行條件 2 的判斷,其它依此類推。

心心相印

心臟每時每刻都在不停的跳動, 咱們利用變量的遞增遞減及條件語句能夠實現這個效果。當

數字增大時心臟變大,當數字減少時心臟變小。

製做步驟:

1 新建一個 FLASH 文檔,大小默認。

2 新建一個名爲「跳動的心」的影片剪輯元件,在其編輯區繪製一個心臟。

3 把心臟轉化爲影片剪輯元件,註冊點在圖形的中心。在屬性面板中設置心臟的實例名

爲: heart 

4 創建一個名爲 AS 的層,單擊第一幀,打開動做面板,輸入下列代碼:

var i = 1;

var j = 8;

var con = true;

 AS 層的第 2 幀插入空白關鍵幀,在其動做面板中輸入下列代碼 

heart._xscale = heart._yscale=i+100;

if (con) {

i++;

} else {

i--;

}

if (i == 1) {

con = true;

} else if (i == j) {

con = false;

}

 AS 層的第 3 幀插入空白關鍵幀,在其動做面板中輸入下列代碼 

gotoAndPlay(2);

5 返回主主場景,把庫裏的跳動的心提進主場景,能夠看到心臟在不停的跳動。

十8、影片剪輯處理函數

在前面咱們學習了幀 Script 和按鈕 Script,咱們注意到幀 Script 的執行是由時間決定

的,若是時間停 止了,則幀 Script 就不會執行了,而按鈕則不一樣,按鈕 Script 是基於事

件的,它只和其驅動函數 on(...)

的事件有關,影片剪輯和按鈕同樣也支持事件驅動,它的驅動函數爲 onClipEvent (...);一般

叫作影片剪輯的事件處理函數,其中的事件分爲影片播放(load,enterframe,data )和用戶反

(mouseDown,keyDown )兩類,另外影片剪輯擁有獨立的時間軸,其關鍵幀上也能夠加

入幀 Script,因此影片剪輯的控制功能十分強大。

onClipEvent 處理函數

腳本位置: 全局函數|影片剪輯控制|onClipEvent 處理函數

語法格式:在 FLASH 中使用 onClipEvent 命令來根據影片剪輯的狀態觸發動做,

onClipEvent 一般使用如下的格式

onClipEvent(事件名稱) {

// 程序

}

功能:觸發爲特定影片剪輯實例定義的動做。

參數:movieEvent:Object - movieEvent 是一個稱爲事件的觸發器。當事件發生時,執行

該事件後面大括號 ({}) 中的語句。能夠爲 movieEvent 參數指定下面的任一值:

事件的觸發器常見的取值以下: 編寫程序時,Flash 會自動提示 onClipEvent ()的事件名稱,在一個影片剪輯的「動做」面

板中輸入 onClipEvent 時會自動彈出事件列表

Load 事件

load事件在影片剪輯徹底加載到內存中時發生。在每次播放 Flash影片時,每一個影片剪輯的

load事件只發生一次。

認識 load事件

1 在場景中創建一個影片剪輯實例,選中實例,打開「動做」面板,輸入下列代碼:

onClipEvent (load) {

trace("發生 load事件");

}

2 測試影片,在「輸出」面板中看到的輸出信息只有一次。

3 返回主場景,在第二幀插入一幀,測試影片,雖然幀不斷循環播放,但輸出信息也只

有一次。

4 返回主場景,在第二幀插入一空白關鍵幀,讓其循環播放。測試影片,將不斷的輸出

信息。

說明:經過測試能夠看出,當影片剪輯出如今時間軸上時,load事件發生,當實例在時間軸

上消失時又從新出現時,也會發生 load事件。Load 事件一般用來聲明初始化變量,當影片

一出現時就會加載這些變量,其它程序就能夠調用這些變量。

Unload 事件

Unload  load 事件恰好相反,當影片剪輯實例在時間軸在消失時纔會發生。

對比 load事件和 unload 事件,在上面實例的基礎上,執行下列操做。

1 打開影片剪輯的實例面板,把代碼改成:

onClipEvent (load) {

trace("發生 load事件");

}

onClipEvent (unload) {

trace("發生 unload事件");

}

2)移出第二幀上的空白關鍵幀,在第 20 幀插入幀,第 21 幀插入空白關鍵幀。第 40

幀插入幀。

測試影片,觀看輸出信息。間隔地發生 load事件和 unload事件

enterFrame 事件

在主時間軸中止播放時,影片中的影片剪輯並不會中止播放,這個特性決定了影片剪輯的另

一個事件 enterFrame的重要性。enterFrame事件是以影片剪輯幀頻不斷觸發的動做。且觸發

的頻率與 Flash影片的幀

頻一致。enterFrame 事件首先處理與 enterFrame 影片剪輯事件關聯的動做,而後才處理附

加到受影響幀的全部動做。

enterFrame 事件實際上是一個不斷執行的程序,執行的速度取決於幀頻。Flash 中默認的幀頻

 12fps,表示播放 12 幀須要一秒的時間,利用這個原理能夠製做一個簡單的計時器。

enterFrame事件製做計時器

製做:

(1) 在舞臺上創建兩個動態文本,並在屬性面板裏設置變量名爲: a_txt  b_txt 

在第 2 幀插入幀

(2) 插「圖層 2 ,在此圖層上用靜態文本輸入文字: 「簡單記時器」 ,而後轉化爲影

片剪輯元件。在第 2 幀插圖入關鍵幀。

(3) 選中此實例,打開「動做」面板,輸入下列代碼:

onClipEvent (load) {

_root.stop();

var i = 0;

}

//當影片載入時初始變量 i

onClipEvent (enterFrame) {

i++;

//影片進入幀時,程序每執行一次,i 1

_root.a_txt = i;

//場景中的動態文本顯示 i 的值

_root.b_txt = Math.round(i/12*100)/100;

// i 除以幀頻,使 enterFrame每執行一次獲得所需時間,並保留兩位數

}

4)插入「圖層 3」在「圖層 3」創建三個按鈕實例,分別用做「計算」  「中止」 

清除

5)分別選中兩個按鈕,打開「動做」面板,輸入下列代碼:

計算按鈕上的代碼:

on (press) {

gotoAndStop(2);

}

中止按鈕上的代碼:

on (press) {

gotoAndStop(1);

}

清除按鈕上的代碼:

on (press) {

i = 0;

a_txt = "";

b_txt = "";

}

5)插入「圖層 4」在「圖層 4「的第幀添加代碼:

stop();

測試影片。

經過這個實例咱們能夠看到:enterFrame 事件是以影片剪輯幀頻不斷觸發的動做。且觸發

的頻率與 Flash影片的幀頻一致。

mouseDown 事件:每次移動鼠標時啓動此動做。 _xmouse _ymouse 屬性用於肯定當前鼠

標位置。

mouseMove 事件:當按下鼠標左鍵時啓動此動做

mouseUp 事件:釋放鼠標左鍵時啓動此動做

對於這三個鼠標響應事件,要與按鈕中的鼠標事件區別,前者在影片的任何位置都能觸發事

件,後者必定要單擊按鈕區域纔會觸發事件。

鼠標行爲控制小球

製做步驟:

1)新建一個影片剪輯「元件 1 ,在其編輯區中給制一個小球,用放射狀填充,填充色

#FBFBFB#070707,居中對齊,而後把繪製好的小球轉換爲影片剪輯「元件 2 

2)選中元件 1 中的「元件 2 ,打開動做面板,添加代碼:

onClipEvent (load) {

kk = false;

}

onClipEvent (mouseDown) {

kk = true;

}

onClipEvent (mouseUp) {

kk = false;

}

onClipEvent (enterFrame) {

if (kk) {

_x += (this._parent._xmouse+_x)/20;

_y += (this._parent._ymouse+_y)/20;

} else if (kk == false) {

_x += (this._parent._xmouse-_x)/20;

_y += (this._parent._ymouse-_y)/20;

}

}

3)把「元件」提到場景,用任意變形工具把小球的註冊點移到垂直下移到小球外,再

用變形面板,設置旋轉 60 度,點擊複製並應用變形按鈕 5 次,複製出 5 個小球,此時 6

個小球排成一排

4 在屬性面板裏分別改變小球的顏色。

5 測試影片。鼠標移動,按下,釋放觀看效果。

製做簡單的 Flash塗鴉板

1 新建一個影片剪輯元件。返回主場景,打開「庫」面板,從「庫」面板中拖出影片剪

輯,建立一個空影片剪輯實例。

2 選中場景中的空影片剪輯實例,打開「動做」面板,輸入下面代碼:

onClipEvent (mouseMove) {

if (myDraw) {

_root.lineStyle(5, 0xFF0000, 100);

_root.lineTo(_root._xmouse, _root._ymouse);

}

}

//當鼠標移動時,沿鼠標位置不斷畫線

onClipEvent (mouseDown) {

myDraw= true;

_root.moveTo(_root._xmouse, _root._ymouse);

}

//鼠標按下時 myDraw爲真,並在鼠標位置定義畫線的起點

onClipEvent (mouseUp) {

myDraw = false;

}

//當鼠標釋放時,myDraw爲假,中止畫線

3 在舞臺上建立一個按鈕,在按鈕上添加代碼 

on (press) {

clear()//刪除所畫線

}

提示:使用 moveTo()和 lineTo()函數時只需在函數中加入參數,如 moveTo(x1,y1)

表從點(x1,y1

處開始畫線,lineTo(x2,y2)表明畫線的終點是((x2,y2)。使用這兩個函數以前必順先用

lineStyle()函數定

義線的式樣。

moveTo()功能:將當前繪畫位置移動到 (x, y)。若是缺乏任何一個參數,則此方法將失敗,

而且當前繪畫位

置不改變。您能夠經過建立子類來擴展 MovieClip 類的方法和事件處理函數。

lineTo()功能: 使用當前線條樣式繪製一條從當前繪畫位置到 (x, y) 的線條; 當前繪畫

位置隨後會設置爲 (x,y)。若是正在其中繪製的影片剪輯包含用 Flash 繪畫工具建立的內

容,則調用 lineTo() 方法將在該內容下面進行繪製。若是在對 moveTo() 進行任何調用之

前調用了 lineTo(),則當前繪畫位置默認爲 (0, 0)。若是缺乏任何一個參數,則此方法將失

敗,而且當前繪畫位置不改變。

lineStyle()功能:指定 Flash 用於後續 lineTo()  curveTo() 方法調用的線條樣式,在以

不一樣參數調用 lineStyle() 方法以前,線條樣式不會改變。能夠在繪製路徑的中間調用

lineStyle() 覺得路徑中的不一樣線段指定不一樣的樣式。

keyDown:當按下某個鍵時啓動此動做。使用 Key.getCode() 獲取有關最後按下的鍵的信息

KeyUp: 當釋放某個鍵時啓動此動做。

小結:在 onClipEvent()函數的事件中 load 事件和 enterFrame 事件是最經常使用,最重要的。

你們必定要

掌握好。在影片剪輯上寫命令必定要選加上 onClipEvent()事件處理函數。就如同在按鈕

上加命令要先加 on命令。這一點你們必定要緊緊記住。

十9、複製影片剪輯

duplicateMovieClip()函數

duplicateMovieClip()函數的做用是經過複製建立的影片剪輯的實例。在 Flash做品中常見的

傾盆大雨、雪花飄飄、繁星點點等動畫特效,就是利用 duplicateMovieClip()函數的功能來

實現的。

腳本位置:全局函數|影片剪輯控制|duplicateMovieClip

語法格式: duplicateMovieclip(目標、新實例名稱、深度)

參數意義:

目標:target:Object - 要複製的影片剪輯的目標路徑。此參數能夠是一個字符串(例如

"my_mc"),也能夠是對影片剪輯實例的直接引用(例如 my_mc)。可以接受一種以上數據

類型的參數以 Object 類型列出。

新實例名稱:newname:String- 所複製的影片剪輯的惟一標識符。

深度:depth:Number - 所複製的影片剪輯的惟一深度級別。深度級別是所複製的影片剪

輯的堆疊順序。這種堆疊順序很像時間軸中圖層的堆疊順序;較低深度級別的影片剪輯隱藏

在較高堆疊順序的剪輯之下。必須爲每一個所複製的影片剪輯分配一個惟一的深度級別,以防

止它替換已佔用深度上的 SWF 文件。

函數:當 SWF 文件正在播放時,建立一個影片剪輯的實例。不管播放頭在原始影片剪輯

中處於什麼位置,在重複的影片剪輯中,播放頭始終從第 1 幀開始。原始影片剪輯中的變

量不會複製到重複的影片剪輯中。

在使用 duplicateMovieClip()函數時,須要注意如下幾點。

1)複製獲得的影片剪輯保持父級影片剪輯原來的全部屬性,因此,原來的影片剪輯是靜

止的,複製後的影片剪輯也是靜止的,而且一個疊放在另外一個上。若是不給它們設置不一樣坐

標,就只能看到編號最大的影片剪輯複本,而看不出複製的效果。

2)原來的影片剪輯在作補間運動,那麼複製品也要作一樣的運動,而且不管播放頭在原

始影片剪輯(或「父」級)中處於什麼位置,複製的影片剪輯播放頭始終從第上幀開始。因此,

複製品和原影片剪輯始終有個時間差,所以,即便不給複製獲得的影片剪輯實例設置座標,

也能夠看到複製品在運動。

 3  複製獲得的影片剪輯實例常常要與影片剪輯屬性控制 ( 特別是

_x,_y,_alpha,_rotation,_xscale,_yscale等屬性的控制)結合才能更好地發揮複製效果。

removeMovieClip()函數

經過 duplicateMovieClip()函數產生的實例能夠經過removeMovieClip()函數進行刪除 

removeMovieClip()函數的通常形式爲:

removeMovieClip(實例名)

複製與刪除)

1 在舞臺上繪製一朵小花,按 F8 鍵轉化爲影片剪輯元件。並創建實例名「mc 

2 插入「圖層 2」在此圖層的第 1 幀輸入代碼:

var i=0

在場景中創建兩個按鈕,(複製按鈕和刪除按鈕)。分別在兩個按鈕上輸入代碼:

on (press) {

i++;

if (i<=12) {

duplicateMovieClip("mc", "mc"+i, i);

} else {

i = 12;

}

_root["mc"+i]._x = 275+120*Math.sin(i*1/6*Math.PI);

_root["mc"+i]._y = 180+120*Math.cos(i*1/6*Math.PI);

}

on (press) {

if (i>=1) {

removeMovieClip("mc"+i);

} else {

i = 1;

}

i--;

}

attachMovie()

腳本位置:ActionScript 2.0 影片|MovieClip

|方法|attachMovie

語法格式: attachMovie(目標新實例名深度, [對象參數])

說明:這條語句中的四個參數,第四個參數是可選,若是不使用第四個參數,那麼它的參數

設置同 duplicateMovieClip()是同樣的,但也有一點區別,在 attachMovie()函數中的第一

個參數只能是字符串類型。而 duplicateMovieClip()的第一個參數,能夠是一個字符串,也

能夠是對影片剪輯實例的直接引用。

attachMovie()語句與 duplicateMovieClip()相比,優勢是 attachMovie()複製的「目標」是 庫中

要附加到舞臺上某影片剪輯的影片剪輯元件的連接名稱。 這是在 「連接屬性」 對話框中的 「標

識符」字段中輸入的名稱。

在上例中咱們能夠這樣來何時修改

(1) 把舞臺上小花實例刪除。

(2)打開庫,右鍵單擊庫中的花實例,在彈出的連接屬性對話框中,把做爲 Actionscript 

出選項選中,在標識符欄輸入「mc 

在複製按鈕上把語句改成:

on (press) {

i++;

if (i<=12) {

attachMovie("mc", "mc"+i, i);

} else {

i = 12;

}

_root["mc"+i]._x = 275+120*Math.sin(i*1/6*Math.PI);

_root["mc"+i]._y = 180+120*Math.cos(i*1/6*Math.PI);

}

梅花

1 打開素材源文件。 打開庫, 分別右鍵點擊落三朵梅花, 在連接屬性對話框中輸入

標識符 h0  h1  h2.

2)分別進入小花影片剪輯編輯區,在最後一幀添加語句: stop();

3)選中場景中的梅枝影片剪輯元件,打開動做面板添加代碼:

onClipEvent (load) {

var i = 0;

}

on (press) {

i++;

var n = random(3);

attachMovie("h"+n, "mc"+i, i);

this["mc"+i]._x = this._xmouse;

this["mc"+i]._y = this._ymouse;

this["mc"+i]._rotation = random(5)*(120);

}

奇妙的線條

1 新建一個名稱爲「線」的的影片剪輯元件。進入其編輯區裏,在第一幀上繪製一條筆

觸高度爲 1 長爲 150 的白色線條。利用對齊面板,左對齊、垂直中齊。

2 分別在第 10 幀、第 20 幀、第 30 幀、第 40幀插入關鍵幀。並改變第 10 幀,第 20

幀、第 30 幀上線條的着顏色,而後再把第 1 幀和第 20 幀、第 40 幀上的線條改成線

3 新建一個名稱爲「複製線條」的影片剪輯元件。進入「複製線條」的影片剪輯元件編

輯區裏,在「圖層 1」的第 1 幀,從庫裏提進「線條」影片剪輯元件。左對齊、底對齊。

在屬性面板裏輸入實例名「line 

4 插入「圖層 2 ,在此圖層寫 AS

第一幀上的 AS

var i = 0;

line._visible = 0;

第二幀上的 AS

i++;

duplicateMovieClip("line", "line"+i, i);

this["line"+i]._rotation = i*3;

this["line"+i]._x = 0

this["line"+i]._y =0

第四幀上的 AS

if (i<120) {

gotoAndPlay(2);

} else {

stop();

}

說明:在第一幀上初始化變量,在第二幀上覆制線條,在第四幀上控制雪花的複製數量,如

果不加控制,就會形成死循環,最後死機。第三幀上的語句能夠解釋爲:若是 i<120 就跳

轉到第二幀,繼續複製,不然就跳轉到第一幀,從新複製。這種三幀循環用得不少,你們一

定要掌握。

5 回到主場景,從庫裏提出複製線條影片剪輯元件。測試影片。

二10、深刻 startDrag()與 stopDrag()

startDrag()函數

腳本位置:全局函數|影片剪輯控制|startDrag

語法格式:startDrag(target:Object, [lock:Boolean, left:Number, top:Number,

right:Number, bottom:Number]) : Void

即: startDrag(目標,固定,左,上,右,下)

參數意義:目標(target)表示要拖動的影片剪輯的目標路徑。

固定(Lock)是一個布爾值,指定的可拖動影片剪輯是鎖定到鼠標指針位置中央(true),

是鎖定到用戶首次單擊該影片剪輯的位置上(false)。此參數是可選的。

Lefktop right bottom、這四個參數分別設置影片剪輯拖動在左、上、右、下的範

圍,注意相對於影片剪輯父級座標的值,這些值指定該影片剪輯被約束的矩形。這些參數

是可選的。

函數功能:startDrag()函數的做用是使影片剪輯實例在影片中播放過程當中可拖動。

stopDrag()函數

腳本位置:全局函數|影片剪輯控制|startDrag

語法格式:stopDrag()

函數功能:中止當前的拖動操做。

理解 startDrag()函數中參數的做用

製做步驟

(1)在舞臺上任意繪製一個圖形,選中圖形,單擊「修改」|「轉換爲元件」

命令,把圖形轉換爲影片剪輯元件。

(2)選中舞臺上影片剪輯元件,在屬性面板的影片剪輯的」實例名稱」中填入 mc

(3)單擊「窗口」|「其它面版」|「公用庫」|「按鈕」命令,打開公用庫面板,從中選擇

按鈕拖放到舞臺中。

4)分別在按鈕中添加以下 AS

 1 個按鈕中的 AS 爲:

on (release) {

startDrag(_root.mc);

//實現 mc的鼠標跟隨.。效果是元件與鼠標有間隔。

}

 2 個按鈕中的 AS 爲:

on (release) {

startDrag("_root.mc", true);

//是否鎖定參數爲真。元件與鼠標無間隔。

}

 3 個按鈕中的 AS 爲:

on (release) {

startDrag("_root.mc", true, 0, 0, 550, 400);

// 550  400 的矩形範圍內拖動

}

 4 個按鈕中的 AS 爲:

on (release) {

startDrag("_root.mc", true, 0, 100, 550, 100);

// 0 高爲 200 的線型範圍。

}

 5 個按鈕中的 AS 爲:

on (release) {

stopDrag();

//中止 startDrag()

}

5)、保存測試影片,單擊不一樣的按鈕所產生的不一樣效果。注意第4個按鈕按下後就只能點

 5 個按鈕,以後才能點擊其它按鈕.想一想這是什麼緣由?

說明:startDrag()能夠做爲影片剪輯的方法,上面示例的語句也能夠這樣來寫:

以第 1 個按鈕爲例:

on(release){

mc.startDrag();//實現 mc的鼠標跟隨.無參數。效果是元件與鼠標有間隔。

幻影泡泡

1. 運行 Flash 8,背景色爲黑色,其它默認。

2. 新建一個名爲「泡泡圖」的圖形元件。在其編輯區裏繪製一個直徑爲 100 的正圓,填充

顏色

3.新建一個名爲「泡泡」的影片剪輯元件,在其編輯區「圖層 1」的第 1 幀庫裏提進圖形

元件「泡泡圖」居中對齊。接下來在第 12 幀,第 19 幀插入關鍵幀,並在第 1 幀上把泡

泡大小設爲:48×48alpha 值爲:50%,第 12 幀上,大小:60×60alpha 值爲:100%

 19 幀上,大小:80×80alpha 值爲 0。建立動做補間動畫。在 20 幀上插入控白關鍵

幀加上中止命令:stop();

4 新建一個名爲鼠標的影片剪輯元件, 在其編輯區裏繪製一個鼠標圖形。 插入 「圖層

2 

把「圖層 1」的第 1幀複製粘貼到「圖層 2」的第 1 幀上,並在此幀上改變填充效果。

分別在兩個圖層的第10 幀插入幀。

插入圖層 3,在圖層 3 上繪製一個如圖 12-5 所示的矩形條,組合,在第 10 幀上插入關

建幀,把矩形條移至鼠標圖的右下方,如圖 12-6 所示。建立補間動畫。並把圖層 3 設爲遮

罩。

5.回主場景,在主場景的第 1 幀上,從庫裏提進「泡泡」影片剪輯元件,輸入實例「mc 

插入「圖層 2 ,在「圖層 2」的第 1 幀上,從庫裏提進「鼠標」影片剪輯元件,輸入實

例「ms 

並選中此實例,打開動做面板輸入 AS 代碼:

onClipEvent (load) {

k = 1;

startDrag(_root.ms, true);

Mouse.hide();//隱藏指針

}

onClipEvent (enterFrame) {

k++;

if (k>20) {

k = 1;

}

duplicateMovieClip("_root.mc", "mc"+k, k);

msx = getProperty(_root.ms, _x);

msy = getProperty(_root.ms, _y);

setProperty(_root.mc, _x, msx-25);

setProperty(_root.mc, _y, msy-30);

}

6.製做完畢,測試保存。

提示:Mouse.hide();//隱藏指針

腳本位置:ActionScript2.0 |影片|Mouse| hideMouse.hide 方法)

拼圖遊戲

1.導入一張圖片到舞臺,調整好大小。選中圖片,執行「修改菜單」下的「分離」命令,

而後用「直線工具」把圖片 12 等分。

2.分別選左上角的第一份,按 F8 鍵轉化爲影片剪輯元件,在「轉換爲元件」對話框中設

置元件名爲圖 1,註冊點居中。而後在屬性面板裏創建實例名爲: mc1 

3.選中此影片剪輯元件,打開動做面板,輸入以下代碼:

on (press) {

this.swapDepths(getNextHighestDepth());

startDrag(this, true);

}

on (release, rollOut) {

stopDrag();

}

4.用一樣的方法制做另外的 11 個影片剪輯。

5.製做好後,把場景中的各影片剪輯位置打亂,放在舞臺的右邊。

6.插入「圖層 2 ,在些圖層的左上角放上原圖的縮略圖。做爲拼圖時的參考。

代碼解釋:

1swapDepthsMovieClip.swapDepths 方法)

腳本位置:ActionScript2.0 |影片|MovieClip|swapDepths

功能:交換此影片剪輯與另外一影片剪輯的堆棧或深度級別(z-順序),另外一影片剪輯由 target

參數指定,

或指定爲當前佔用由 target 參數指定的深度級別的影片剪輯。兩個影片剪輯必須具備相同

的父級影片

剪輯。

my_mc.swapDepths(depth/target);

 

my_mc1.onRelease=function(){

this.swapDepths(1);

}

my_mc2.onRelease=function(){

this.swapDepths(my_mc1);

}

 

 

getNextHighestDepth()

 

 

my_mc.getNextHighestDepth();

 

my_mc._parent.getNextHighestDepth();

2getNextHighestDepthMovieClip.getNextHighestDepth 方法)

腳本位置:ActionScript2.0 |影片|MovieClip| 方法|getNextHighestDepth

功能:以確保 Flash 將該影片剪輯呈如今當前影片剪輯中同一級和同一層上全部其它對象

的前面。

以上兩條語句你們想進一步瞭解,請查看幫助。

示例 12-4 滑條控制

滑條控制是一種頗有用的控制方法,好比在 MP3 播放器中,用滑條來控制音量、聲道等。下

面咱們介紹

一個簡單的滑條控制

1 打開素材

2 雙擊庫中的「滑快 1」影片剪輯元件,進入其編輯區,選中按鈕,打開動做面板,添

加代碼:

on (press) {

startDrag(this, true, -50,0 , 50, 0);

}

on (release, dragOut) {

stopDrag();

}

3)雙擊庫中的「滑快 2」影片剪輯元件,進入其編輯區,選中按鈕,打開動做面板,添

加代碼:

on (press) {

startDrag(this, true, 0,-50 , 0, 50);

}

on (release, dragOut) {

stopDrag();

}

4)分別進入「橫控制條」和「縱控制條」兩個影片剪輯元件的編輯區,分別給兩個滑塊

創建實例名稱:

h_mc1 和「h_mc2 

5)在場影中給橫控制條命名實例名「xbut ,給橫控制條命名實例名「ybut 。給紅

色正方形元件命名實

例名「mc 

(6)場景中的動態文本,按從上到下的順序,在屬性面板裏依次輸入實例名「a_txt 

b_tat  c_txt 

(7)選中紅矩形影片剪輯元件,打開用做面板,添加代碼:

onClipEvent (enterFrame) {

dx = _root.xbut.h_mc1._x;

dy = _root.ybut.h_mc2._y;

xx = _root.mc._width=dx+100;

yy = _root.mc._height=dy+100;

_root.a_txt = xx;

_root.b_txt = yy;

_root.c_txt = Math.round(xx*yy);

}

二11、for循環

for 循環語句是功能最強大,使用最靈活的一種循環語句,它不只能夠用於循環次數已經確

定的狀況,還能夠用於循環次數不肯定而只給出循環結束條件的狀況。

腳本位置:語句|條件/循環|for

語法格式:for(初始表達式;條件表達式;遞增(或遞減)表達式){語句塊//或者稱循環

體}

參數意義:

初始表達式: 一個在開始循環序列前要計算的表達式, 一般爲賦值表達式。 此參數還

容許使用 var 

句。爲賦值表達式時。推薦使用 var 能夠使運行加快。其原理主要是使用了本地變量。

條件表達式: 計算結果爲 true  false 的表達式。在每次循環迭代前計算該條件;當

條件的計算結果爲 false 時退出循環。

遞增(或遞減)表達式: 在每次循環迭代後要計算的表達式;一般爲使用 ++(遞增)

 --(遞減)運算符的賦值表達式。

語句塊。在大括號內的全部指令組。統稱循環體。

說明:for 語句中的三個表達式,中間用分號隔開。第一個初始表達式一般用來設定語句循

環執行次數的變量初值,這個表達式只會執行一次; 第二個條件表達式一般是一個關係表達

式或者邏輯表達式, 用來斷定循環是否繼續; 第三個遞增表達式是每次執行完 「循環體語句」

之後,就會執行的語句,一般都是用來增長或者減小變量初值。

for 語句的執行流程圖 for 求和

(1) 在場景中製做一個如圖的界面 (2) 在屬性面板裏分別給三個動太文本輸入爲量名「a_txt  b_txt  c_txt

(3) 選中按鈕,打開動做面板,添加代碼:

on (release) {

k1 = 0;

k2 = 0;

a_txt = 0;

b_txt = 0;

c_txt = 0;

for (i=1; i<=100; i += 2) {

k1 += i;

k2 += i+1;

a_txt = k1;

b_txt = k2;

c_txt = k1+k2;

}

}

注意:

1.用相似形式能夠方便的控制循環的次數,此例中,100 就是循環的次數。

2 循環體內能夠使用」i」的值參與運算。有時這種參與是很是必要的。

3 三個表達式內部用「;」分割。

提示:

1for 循環結構的原理以下,它首先計算一次表達式 1,而後按照如下順序開始循環序

列:只要表達式 2 的計算結果爲 true,就執行循環體,而後計算下一個表達式。

使用 for 循環語句的注意事項

1.爲了使程序效率更高,在初始表達式中使用 var 關鍵字來聲明變量。

2.在初始表達式中能夠定義多個變量,兩個表達式中間用逗號(,)分開,如:

for (var i = 1, sun = 0; i<=100; i++) {

sun = sun+i;

}

trace(sun);

3.初始表達式也能夠省略,但必順在 for 語句前初始化變量,如:

var i=0

var sun = 0;

for (; i<=100; i++) {

sun = sun+i;

}

trace(sun);

注意:當省略初始表達式時,其後的分號不能省略。

4.遞增表達式也能夠省略,但必順保正循環能正常結速,如:

var sun = 0;

for (var i = 0; i<=100; ) {

sun = sun+i;

i += 1;

}

trace(sun);

5for 語句中能夠同時省略初始表達式和遞增表達式,如:

var i=1

var sun = 0;

for (; i<=100;) {

sun = sun+i;

i+=1;

}

trace(sun);

這時程序和 while 徹底同樣,因此能夠用 for 來代替 while 語句,也就是說 for 語句的功

能比 while 語句強大得多。

煙花

本例是實現一個煙花效果。鼠標點擊後,會綻開一朵燦爛煙花。而煙花由小流星複製而成。

複製的個數由循環語句來控制的。

1.新建文檔,背景黑色。其它默認。

2.新建一個名爲「禮花 1」的影片剪輯元件,在此元件的第 1 幀繪製一個流星式的圖形。

3.在第 10 幀處插入關鍵幀,把繪製的圖形右移,並適當放大。

4.在第 19 幀插入空白關鍵幀,任意繪製一個圖形,位置相對第 10 幀上的圖形的右移

5.建立每兩關鍵幀之間的形狀補間動畫。

6.在庫中右鍵點擊「煙花 1」影片剪輯元件,在快捷菜單中選擇「連接」選項,在彈出的

「連接屬性」對話框中輸入標識符 yh1

7.在庫中右鍵點擊「煙花 1」影片剪輯元件,在快捷菜單中選擇「直接複製 」選項,在彈

出的「直接複製元件」的對話框中把元件名改成「煙花 2 

8.用一樣的方法在製做另外一朵煙花,(顏色與式樣最好以第一朵有所區別)並設置標認符爲

yh2 

9.導入一個煙花聲音文件到庫,右鍵點擊聲音文件,在快捷菜單中選擇「連接」選項,在

連接屬性對話框中設置聲音標識任爲「Sound 

10.創建一個空影片剪輯,拖入場景。場景中它顯示爲一個空心小白點。用「黑箭頭工具」

選中該小白點,打開動做面板,添加 AS 代碼:

onClipEvent (load) {

var k = 1;

mySound= new Sound();//建立一個聲音對象

mySound.attachSound("Sound");//把庫中的聲音文件附加到所建立的聲音對象上

}

onClipEvent (mouseDown) {

k=-k;

mySound.start();//播放聲音

for (var i = 1; i<=100; i++) {

if (k == 1) {

this.attachMovie("yha", "yh"+i, i);

} else {

this.attachMovie("yhb", "yh"+i, i);

}

this["yh"+i]._x = _xmouse;

this["yh"+i]._y = _ymouse;

this["yh"+i]._rotation = random(360);

this["yh"+i]._xscale = random(50)+10;

this["yh"+i]._yscale = random(50)+10;

}

}

複製跟隨

1.新建文檔,背景黑色。

2.新建一個名爲「心 1」影片剪輯元件,在其編輯區內繪製一個「心圖」形。

3.新建一個名爲「心 2」影片剪輯元件,把「心1」提進其編輯區內,居中對齊。選中「心

2」濾鏡面板裏添加發光濾鏡效果。

4.在「連接屬性」對話框中設置影片剪輯「心 2」的標識符爲「mc 

5.新建一個名爲「空」的影片剪輯元件,拖入場景,選中此空影片剪輯元件,輸入 AS

onClipEvent (load) {

for (var i = 1; i<=20; i++) {

_root.attachMovie("mc", "mc"+i, 20-i);

_root["mc"+i]._xscale = 100-i*3;

_root["mc"+i]._yscale = 100-i*3;

_root["mc"+i]._alpha = 100-i*5;

}

}

onClipEvent (enterFrame) {

for (var i = 1; i<=20; i++) {

if (i == 1) {

startDrag(_root["mc"+i], true);

} else {

var zx = _root["mc"+(i-1)]._x-_root["mc"+i]._x;

var zy = _root["mc"+(i-1)]._y-_root["mc"+i]._y;

_root["mc"+i]._x = _root["mc"+i]._x+zx/4+zx/10;

_root["mc"+i]._y = _root["mc"+i]._y+zy/4+zy/10;

}

}

}

二12、while與 do while循環

在編程的許多問題中都要用到循環結構,好比要對 10 個數字的排序,兩個數字之間的比較,

果採用選擇結構,進行的條件分支很是多,因此寫的代碼也至關長,利用循環結構可快速解決

這個問題,大大提升程序的效率.

ActionScript 語言中可經過四種語句實現程序的循環,分別是 whiledo...whilefor 循環和

for in 循環語句.它們與 if 語句的最大區別在於只要條件成立,循環裏面的程序語句就會不

斷地重複執行. if語句中的程序代碼只可能被執行一次.

while 的格式以下:

while(條件表達式) {

循環體;

}

說明:在運行語句塊以前,首先測試條件表達式;若是該測試返回 true,則運行該語句塊。

若是該條件爲 false,則跳過該語句塊,並執行 while 動做語句塊以後的第一條語句。其流

程圖如圖所示一般當計數器變量小於某指定值時, 使用循環執行動做。 在每一個循環的結尾遞增計數器的值,

直到達到指定值爲止。此時,件條表達式的返回值再也不爲 true,且循環結束。

 1 + 2+ 3++100 的和

新建一個 FLASH 文檔,在第一幀打開動做面板,輸入下列代碼:

var i = 1;

var sum = 0;

while (i<=100) {

sum += i;

i++;

}

trace(sum)

代碼執行過程:

在上面的循環程序中,變量 i 的初始值是 1,表達式 i<=100 爲真,變量 sum 加上 1,然

 i+1 等於 2。再進行 i<=100 的判斷,條件真,sum 再加上 2又加上 2 等於 3,這樣

循環執行,一直自加到 101,此時條件 i<=100 爲假,結束循環。這樣程序共進行了 100

次判斷,也就是進行了 100 次循環,100 次執行表達式 sum+=i,這樣就算出了 1+2+3+

+100 和。

注意:在循環結構中,應該有使循環趨於結束的語句,在本例的代碼中,用變量 i 來控制,

不斷遞加到 101,使條件爲假,結束循環。

在前面咱們知道 enterFrame 事件也是循環執行的,可是循環結構的執行要快行多,咱們通

過下面的小程控來測試 while語句的執行速度:

var t = getTimer()/1000;//開始時間以秒爲單位

var i = 0;

while (i<1000) {

i++

}//進行 100 次循環

trace(getTimer()/1000-t+"");

//結束時間減去開始時間,即循環所需時間.

 while語句優化代碼

你們還記得在第十四課中咱們用加法賦值做了一個鼠標跟隨效果, 當時每一個字咱們都要分別

設置它的_x _y。若是有 10個字就要寫 20 行語句,若是 100 個字呢,那不是就很麻煩

嗎?咱們用 while就能夠把代碼優化了。

打開第十四課鼠標跟隨特效源文件,把第 1 幀上的代碼刪除,選中第 1 個字的影片

剪輯元件,打開動做面板,輸入代碼:

onClipEvent (enter Frame) {

var i = 1;

while (i<=6) {

_root.mc1._x += (_root._xmouse-_x)/5;

_root.mc1._y += (_root._ymouse-_y)/5;

_root["mc"+i]._x += (_root["mc"+(i-1)]._x-_root["mc"+i]._x)/5+8;

_root["mc"+i]._y += (_root["mc"+(i-1)]._y-_root["mc"+i]._y)/5;

i++;

}

}

說明:

1)若是字的個數增長了,只需改條件便可,例如是 10 個字,那麼只需把條件 i<=6 改成

i<=10 就能夠了。

2)因爲咱們用了 enter Frame事件,因此第 2 幀就能夠不要了。

 while循環實現批量複製影片剪輯

打開源文件,場景第一幀加上代碼:

var i = 1;

var num = 5;

while (i<=num) {

attachMovie("qiu", "qiu"+i, i);

_root["qiu"+i]._x = Stage.width/6*i;

_root["qiu"+i]._y = Stage.height/2

_root["qiu"+i+".txt"] = "qiu"+i;

i++;

}

這段代碼做用是複製個影片剪輯實例,實例名分別爲 qiu1qiu2qiu3qiu4qiu5,並

實現橫向等距離排列。要實現一樣的交果,代碼的寫法有不少,如:

var i = 0

var num = 5;

while (i++<num) {

attachMovie("qiu", "qiu"+i, i);

_root["qiu"+i]._x = Stage.width/6*i;

_root["qiu"+i]._y = Stage.height/2;

_root["qiu"+i+".txt"] = "qiu"+i;

}

或者這樣寫:

var i = 1

var num = 5;

while (i<=num) {

attachMovie("qiu", "qiu"+i++, i);

_root["qiu"+(i-1)]._x = Stage.width/6*(i-1);

_root["qiu"+(i-1)]._y = Stage.height/2;

_root["qiu"+(i-1)+".txt"] = "qiu"+(i-1);

}

dowhile語句:

do while 語句的格式

do {

循環體;

} while(條件表達式)

說明:和 while 循環語句相反,do while 循環語句是一種先斬後奏的循環語句。無論怎樣

do{「和」}之間的程序至少要執行一次,而後再判斷條件是否要繼續循環。若是 while()

的條件成立,它繼續執行 do 裏面的程序語句,直到條件不成立爲止。其流程圖如圖  do while 語句求和

一樣的累加問題:1+2+3++100,用 do while語句程序爲:

var i = 1;

var sum = 0;

do {

sum = sum+i;

i++;

} while (i<=100);

trace(sum);

程序中的 i 不必定只能加 1,可能加上任意數,好比求 100 之內的偶數之和,用這程這樣

表示:

var i = 1;

var sum = 0;

do {

sum += i;

} while ((i += 2)<=100);

trace(sum);

區別 whi le dowhile 語句

1 選中第 1 幀,打開動做面板,輸入下列代碼;

var i=1

var j=5

2 在場景中建立兩個按鈕實例,分別測試兩種語句的結果,兩個按鈕上的語句分別爲;

on (press) {

while (i<j) {

i++;

}

trace(i);

}

on (press) {do {

i++

} while (i<j);

trace(i)

}

3 測試影片,不斷地單擊按鈕

從輸出面板能夠看出,當程序第一次執行時,就是第一次單擊按鈕時,。結果都是同樣,都

是數字 5 但多單擊一次時, while 語句結果仍是 5  do while 語句的測試結果不斷加 1

緣由是 do while 語句先執行程序, 再進行條件判斷, 因此從第二次單擊按鈕開始, 變量 i 

 1

小結:

while  do_while 結構均可以按照必定的條件循環執行循環體,wihle 結構先斷定循環條件,

當條件符合時就執行循環體,按順序執行完循環體中的語句後,在返回 wihle 語句開始處,從新

斷定條件,並以此規則進行循環操做,直到循環條件爲 false時終止循環,轉而執行 wihle 結構

下面的命令, wihle 結構不一樣的是 do_while 循環結構先執行循環體中的語句,而後斷定循

環條件.這就是說 do_while循環結構不管條件是否符合,循環至少執行一次.

 

二十3、循環語句的嵌套

 

一個循環體內包含另外一個循環體結構,稱爲循環的嵌套.在這一講中咱們介紹 for 語句的嵌套、for while語句的嵌套。

 

二個for嵌套(乘法九九表)

1)在舞臺上建立一個動態文本,變量名爲: sir

(2)插入「圖層 2」在此第 1 幀輸入代碼:

var str:String = "";

for (var i = 1; i<=9; i++) {

for (var j = 1; j<=i; j++) {

var k = i*j;

str = str+i+"×"+j+"="+k+(k<10 ? "  " : " ")+(j == i ? "\n" : "");

}

}

 

三個f or嵌套(求水仙花數)

提示:所謂的「水仙花數」 ,是指一個三位數,其各位數字的立方和等於該數自己,例如:153 是一個,「水仙花數」 ,由於153 等於 1的立方加上 5 的立方加上 3 的立方。程序以下:

var str:String = "";

var n = 0;

for (var i = 1; i<=9; i++) {

for (var j = 0; j<=9; j++) {

for (var k = 0; k<=9; k++) {

m = i*100+j*10+k;

if(m == i*i*i+j*j*j+k*k*k) {

n++;

str = str+m+(n == 0 ? "  " : " ");

}

}

}

}

 

for語句能夠和while語句嵌套使用。(因數分解)

下面咱們作一個因數分解的程序。這個實例子 for 語句能夠和 while語句嵌套。

1 在舞臺上建立一個輸入文本, 變量名爲: my_txt1 ,再建立一個動態文本, 變量名爲: my_txt2 

2 建立兩個按鈕實例,分別用來作分解計算和清空

3 添加代碼:

「分解」按鈕上的代碼:

on (release) {

         m = Number(my_txt1);

         var str:String = m+"=";

         var flag = 1;

         for (i=2; i<m; i++) {

                   while (m%i == 0) {

                            if (flag == 1) {

                                     str = str+""+i;

                                     flag = 0;

                            } else {

                                     str = str+"×"+i;

                            }

                            m = m/i;

                   }

         }

         if (m != 1) {

                   str = str+"×"+m;

         }

         my_txt2 = str;

}

 

清空按鈕上的代碼:

on (release) {

my_txt1 = "";

my_txt2 = "";

}

 

嵌套複製

1)打開素材源文件。

2)選中複製按鈕,打開動做腳本面板,添加代碼:

on (release) {

for (i=1; i<=4; i++) {

for (j=1; j<=4; j++) {

duplicateMovieClip("mc", "mc"+i+j, i*4+j);

this["mc"+i+j]._x = (i-1)*100;

this["mc"+i+j]._y = (j-1)*100;

this["mc"+i+j+".txt"] = "mc"+i+j;

}

}

}

3)選中刪除按鈕,打開動做在板,添加代碼:

on (release) {

for (i=1; i<=4; i++) {

for (j=1; j<=4; j++) {

removeMovieClip("mc"+i+j);

}

}

}

說明:本課中的實例理論性較強,牽涉的數學知識較多

 

二十4、組件

 

組件是擁有已定義了參數的複雜影片剪輯,這些參數在文檔創做時設置。經過參數的設置和使用,咱們能夠修改組件的外觀和行爲。每一個組件都有本身的AS方法,容許咱們設置和修改其選項。

    FLASH提供幾類組件,它包括數據組件、多媒體組件、UI組件。使用組件時,咱們能夠使用動做腳本方法添加組件,也能夠按下Ctrl+F7組合鍵打開組件面板。

 

組件的添加和參數設置

  使用組件面板來選擇添加組件,按下Ctrl+F7組合鍵,打開組件面板,將須要的組件拖到場景中。打開屬性面板,就能夠在屬性面板中的參數選項卡中爲組件添加參數,併爲組件命名和設置組件尺寸及位置。屬性面板中的ComboBox組件參數選項卡如圖所示

 

 

 

 

 

 

 

 

 

 

 

 

 

也能夠按Alt+F7組合鍵打開組件檢查器,如圖所示,咱們能夠對組件進行設置。

 

 

 

 創建ComboBox組件

下面經過使用組件面板來創建組件。

1、按下Ctrl+F7組合鍵,打開組件面板,選擇UI組件類中的ComboBox組件,將它拖入場景中。

2、打開屬性面板,在屬性面板中的參數選項卡中爲組件添加參數。選擇labels項,單擊labels右面的數據欄,彈出值對話框

3、在值對話框中輸入數據項參數。

4、選擇rowCount行數項,輸入所須要的行數

測試效果

 

 

 

用程序指令控制組件

 

 用程序指令處理組件時事件,有兩種方法:一種使用on()函數控制組件,另外一種使用Click組件偵聽器控制組件。使用on()函數控制組件是FLASH傳統的編程思想,容易理解和掌握。使用Click組件偵聽器控制組件,是FLASH提倡使用的編程思想,這種方法更符合面向對象的編程特性,程序更安全,功能更強。

 

使用on()函數控制組件

1、創建組件對象。按下Ctrl+F7組合鍵,打開組件面板,選擇UI組件類中的RadioButton組件,將它拖入場景中。

2、打開屬性面板,在屬性面板的參數選項卡中爲組件添加參數。選擇label數據項,在右面的數值欄中輸入"選擇"

3、對組件進行編程。選中組件,打開動做面板,輸入幀指令:

on(click){

trace("選擇正確");

}

測試影片,單擊"選擇"按鈕,將在輸出面板中輸出"選擇正確"字樣

 

 

使用組件偵聽器控制組件

將上例中控制組件的on()函數去掉,改成使用組件偵聽器控制組件

1、選中場景中的組件,打開屬性面板,在屬性面板左邊,輸入組件實例名爲"hack"

2、選擇第一幀,輸入幀指令:

zt=new Object();//創建偵聽器對象

zt.click=function(){

trace("選擇正確");

};//爲偵聽器對象上的click定義一個函數

hack.addEventListener("click",zt);//將組件名爲hack的組件註冊到偵聽對象

 

 

組件應用

利用組件製做選擇題

1、按下Ctrl+F7組合鍵,打開組件面板,選擇UI組件類中的RadioButton組件,將它拖入場景中。並複製一個RadioButton組件。在場景中創建選擇題畫面

2、選擇左邊的RadioButten組件,打開屬性面板,在屬性面板的參數選項卡中爲組件修改參數。

 

在寬度欄輸入60,將該組件的寬度改成60像素寬。

 

下面咱們來解釋下該組件的參數做用:

data數據參數:在數據參數欄輸入數據15,這個數據將會做爲選擇題的判斷依據。

label標籤參數:將標籤參數改成""

groupName組名參數:它是很重要的參數,擁有相同組名的單選按鈕,同時只能有一個被選中,這樣在同一組內就不會出現多個選擇。在這個參數欄輸入a1

選擇右邊的RadioButten組件,在寬度欄一樣輸入60,將該組件的寬度改爲了40像素寬。右邊的label標籤採納數欄改爲"",數據欄data中輸入數據"13",這個數據將會做爲選擇題的判斷依據,在組名參數欄輸入a1

 

3、選擇右下方的文本框,打開屬性面板,在左邊的文本類型欄中選擇動態文本,在文本類型欄下面輸入文本框名爲"txt"

 

4、插入新的圖層,做爲AS層,選中第一幀,輸入幀指令:

Listener=new Object();//創建偵聽對象

Listener.click=function(hk){//創建偵聽對象的click事件函數

if(15==hk.target.selection.data){//判斷單選按鈕組件中數據欄中的數值是否是等於15

txt.text="選擇正確";//若是等於15,將"選擇正確"賦予txt文本變量

}else{

txt.text="選擇錯誤";//若是不等於15,將"選擇錯誤"賦予txt文本變量

}

};

a1.addEventListener("click",Listener);//將組名爲"a1"的單選按鈕註冊到偵聽對象

 

測試影片

 

二十5、播放器控制與網頁鏈接以及動畫發佈輸出

fscommand命令

fscommand命令是一個很是強大的瀏覽器與網絡動做命令。它可讓FLASH影片可以與FLASH播放器或者承載FLASH播放器的程序進行通訊。還能夠將消息傳遞給其餘應用程序(好比VBC++),它的語法格式以下:

fscommand(command:String,parameters:String):Void

fscommand命令包含兩個參數,即commandparameters,各自的意義以下:

"command:String"是傳遞給主機應用程序用於任何用途的一個字符串,或者傳遞給FLASH播放器的一個命令.

"parameters:String"是傳遞給主機應用程序用於任何用途的一個字符串,或者傳遞給FLASH播放器的一個值。

 

若是要把消息發送給獨立的播放器就須要使用到系統內置的六個命令和參數。這六個命令和參數在使用腳本助手添加fscommand命令時,能夠進行選擇

 

系統內置的六個命令和參數的具體說明以下:

 

command                     parameters                            說明

 

fullscreen                    true或者false  打開FLASH動畫時是否進行全屏播放,true表示全屏播放

allowscale                   true或者false   是否容許用戶在縮放動畫播放窗口的同時改變FLASH文件中的對象大小

showmenu                  true或者false  選擇false就隱藏了"設置""關於Flash Player"之外的全部右鍵菜單

trapallkeys                   true或者false           設置爲true就能夠鎖定全部的鍵盤輸入,使全部的快捷鍵都無效

exec                      應用程序的路徑          在可播放FLASH文件的非FLASH播放器中調入並執行應用程序(.exe .com或者.bat)

quit                                               關閉可播放FLASH文件的播放器窗口

關於以上命令的用法你們看下面的語句:

fscommand("fullscreen","true");//打開FLASH文件自動進行全屏播放

fscommand("allowscale","true");//容許對FLASH文件中的對象進行縮放

fscommand("showmenu","false");//隱藏主要的FLASH右鍵菜單

fscommand("trapallkeys","true");//鍵盤的輸入對FLASH播放器無效

fscommand("exec", "C:\\WINDOWS\\system32\\calc.exe");//調用應用程序"計算器"

fscommand("quit");//關閉FLASH播放器窗口

 

FLASH動畫的發佈

1、發佈設置

2、輸出視頻文件

3、輸出圖像文件

二十6、loadVariables命令

一.  loadMovie命令

1.loadMovie命令能夠將外部的SWF動畫或者圖片文件加載到FLASH影片中。

loadMovie命令語法格式:

loadMovie(url:String,target:Object/String, [method:String]):Void

此命令包含三個參數:url  target  method

url:String 要加載的swf文件或者圖片文件所在的路徑

target:Object/String 對影片剪輯的引用或者目標影片剪輯路徑的字符串。

method:String 指定用於發送變量的HTTP方法,這個參數必須時字符串GET或者POST。若是沒有要發送的變量,就省略這個參數。GET方法用於發送少許的變量,POST方法用於發送長字符串的變量。

2.使用loadMovie加載影片

咱們能夠使用loadMovie命令加載外部的SWF文件

loadMovie(「1.swf」,_root.mc)

3.使用loadMovie加載圖片

       loadMovie(「1.jpg」,_root.mc)

      

二.  loadVariables命令

使用loadVariables命令能夠從外部文件中讀取數據,並設置影片剪輯中變量的值,好比設置影片剪輯中動態文本框的變量。外部文件能夠是ASP JSP PHP等腳本生成的文件。

  loadVariables(url:String,target:Object,[method:String]):Void

此命令包含三個參數:url  target  method

url:String 要加載變量所處位置的絕對路徑或者相對的url

target:Object 指向接收所加載變量的影片剪輯的目標路徑

method:String 指定用於發送變量的HTTP方法,這個參數必須時字符串GET或者POST。若是沒有要發送的變量,就省略這個參數。GET方法用於發送少許的變量,POST方法用於發送長字符串的變量。

 

  loadVariables(「aa.txt」,_root.mc);

 

三.  loadVariablesNum命令

  使用loadVariablesNum命令能夠從外部文件中讀取數據,而且能夠設置播放器的級別中的變量的值。

loadVariablesNum(url:String,level:Number, [method:String]):Void

其中level是一個整數,用來指定FLASH播放器接收這些變量的級別

 

 

 

 

var tu = ["1.jpg", "2.jpg", "3.jpg", "4.jpg"];

var i = 0;

function show() {

         _root.createEmptyMovieClip("pic", 0);

         _root.pic.loadMovie(tu[i]);

         _root.pic._alpha = 0;

         _root.pic._xscale=10;

         _root.pic._yscale=10;

         i++;

         i%=4;

         _root.onEnterFrame = function() {

                   _root.pic._alpha += 7;

                   _root.pic._xscale += 5;

                   _root.pic._yscale += 5;

                   if (_root.pic._alpha>=100) {

                            delete _root.onEnterFrame;

                   }

         };

}

 

onMouseDown = function () {

         show();

};

二十7、影片剪輯的深度

1.        getDepth方法

 getDepth方法能夠返回影片剪輯實例的深度值

mc. getDepth();

mc是影片剪輯的實例名稱,getDepth返回的是一個整數,表示影片剪輯所在的深度

 

2getInstanceAtDepth方法

 咱們能夠使用getInstanceAtDepth方法來返回指定深度上的影片剪輯實例。經過此來查看指定的深度是否已經被佔用。

mc. getInstanceAtDepth(depth);

mc是所要檢查的範圍,depth是整數,用來檢查mc中指定深度級別。若是這個深度上沒有影片剪輯實例。那麼就返回undefined.

 

3getNextHighestDepth方法

getNextHighestDepth方法能夠返回下一個可用的最大深度值。

mc. getNextHighestDepth();

返回的是一個整數。表明可用最大深度值。

 

4.影片剪輯深度的交換

若是要將一個影片剪輯移到另外一個影片剪輯的前面或者後面,可用使用swapDepths方法來交換兩個影片剪輯的深度。

mc.swapDepths(depth/target);

mc指的是要與其餘實例交換深度的實例名稱,若是實例名稱是depth,那麼就表示mc和深度是depth上的實例交換深度。若是參數是target,表示mc與實例target交換深度

 

 

num = 7;//加載圖片的數量

a = 275;//圖片作橢圓形運動的X軸的中心

b = 200;//圖片作橢圓形運動的Y軸的中心

rx =190;//圖片作橢圓形運動的X軸的半徑

ry = 50;//圖片作橢圓形運動的Y軸的半徑

n = 0;//用來計算運動速度的角度值

angle=0;//用來計算運動速度的弧度值

speed=0;//計算圖片響應鼠標運動的速度增量

for (i=1; i<=num; i++) {//從庫中將標識符爲mc的元件附加到舞臺

         _root.attachMovie("mc", "mc"+i, i);

}

 

 

 

 

if (_xmouse>50 && _xmouse<500 && _ymouse>50 && _ymouse<350) {

         speed = (275-_xmouse)*.08;

         n += speed;

} else {

         n = (n<360) ? n+1 : 1;

}

for (i=1; i<=num; i++) {

         angle = (i*360/num+n)*Math.PI/180;

         _root["mc"+i]._x = a-rx*Math.cos(angle);

         _root["mc"+i]._y = b-ry*Math.sin(angle);

         _root["mc"+i]._xscale = 10-100*Math.sin(angle);

         _root["mc"+i]._yscale = 100-10*Math.sin(angle);

         if (_root["mc"+i]._y>200) {

                  _root["mc"+i].swapDepths(100+i);

         } else {

                  _root["mc"+i].swapDepths(10-i);

         }

         _root["mc"+i].gotoAndStop(i);

}

 

 

 

 

 

gotoAndPlay(2);

二十8、文本框

1.       文本框的類型

2.       動態文本框

3.       輸入文本框

 

影片剪輯的第一幀的腳本:

textarea=textshow.substring(0,index)+"_";

index++;

if(index>textshow.length)

stop();

gotoAndPlay(Math.ceil(Math.random()*5)+5);

 

gotoAndPlay(1);

 

影片剪輯screen上的腳本:

onClipEvent(load)

{

textshow=new String;

textshow="請在下方區域輸入文字";

index=1;

}

 

播放按鈕上的:

on(press)

{

screen.textshow=textinput;

screen.index=1;

screen.gotoAndPlay(1);

}

二十9、超文本標籤

1.       超連接標籤<a>

hreftarget屬性

 

2.       粗體標籤<b>

 

     3.斜體標籤<i>

 

     4.換行標籤<br>

 

     5.字體標籤<font>

     color  face  size

 

     6.列表項標籤<li>

 

     7.段落標籤<p>

     align  class

 

     8.下劃線標籤<u>

 

     9.圖像標籤<img>

     src  id   width   height    align    hspace    vspace

 

 

mytxt.html = true;

xin1.html = true;

xin2.html = true;

xin3.html = true;

xin4.html = true;

xin5.html = true;

xin6.html = true;

mytxt.htmlText = " <img src='pic/heart.jpg' id='mypic'>";

xin1.htmlText = " <img src='pic/twoheart.jpg' id='p1'>";

xin2.htmlText = " <img src='pic/twoheart.jpg' id='p2'>";

xin3.htmlText = " <img src='pic/twoheart.jpg' id='p3'>";

xin4.htmlText = " <img src='pic/twoheart.jpg' id='p4'>";

xin5.htmlText = " <img src='pic/twoheart.jpg' id='p5'>";

xin6.htmlText = " <img src='pic/twoheart.jpg' id='p6'>";

onEnterFrame = function () {

       mytxt.mypic._x += 8;

       mytxt.mypic._alpha -= 5;

       if ((mytxt.mypic._x)>=600) {

              mytxt.mypic._x = -340;

       }

       if ((mytxt.mypic._alpha)<=0) {

              mytxt.mypic._alpha = 100;

       }

       xin1.p1._alpha -= 6;

       if ((xin1.p1._alpha)<=0) {

              xin1.p1._alpha = 100;

       }

       xin2.p2._alpha -= 4;

       if ((xin2.p2._alpha)<=0) {

              xin2.p2._alpha = 100;

       }

       xin3.p3._alpha -= 2;

       if ((xin3.p3._alpha)<=0) {

              xin3.p3._alpha = 100;

       }

       xin4.p4._alpha -= 6;

       if ((xin4.p4._alpha)<=0) {

              xin4.p4._alpha = 100;

       }

       xin5.p5._alpha -= 4;

       if ((xin5.p5._alpha)<=0) {

              xin5.p5._alpha = 100;

       }

       xin6.p6._alpha -= 2;

       if ((xin6.p6._alpha)<=0) {

              xin6.p6._alpha = 100;

       }

};

 

 

 

 

 

 

titletxt.html=true;

titletxt.htmlText="<font color='#6600ff' face='隸書' ><i>浪漫情人節<i></font>";

三10、TextField類

 

 

1.  TextField類的屬性

text 文本框中顯示的文本

type 文本框的類型,dynamic是動態文本框,input是輸入文本框

autoSize 控制文本字段的自動大小調整和對齊

background 文本字段是否有背景填充

backgroundColor 文本字段背景的顏色

border 文本字段是否具備邊框

borderColor 文本字段邊框的顏色

bottomScroll 文本字段中當前可見的最後一行

hscroll 文本框的當前水平滾動位置

html 文本字段是否起用html格式

htmlText文本框包含的html形式的文本內容

length返回文本框的字符數

maxChars 文本框最多能夠容納的字符數

multiline 文本框是否顯示多行文字

password 文本框輸入的內容是否用*表示

scroll 返回文本框當前滾動位置

selectable 文本框是否能夠選擇

_url 在文本框中指定url連接

variable 返回與文本框相關聯的變量名

wordWrap 指定文本框是否換行

restrict 用戶輸入到文本字段中的字符集

 

2.  TextField類的方法

TextField.addListener()  註冊一個對象

TextField.getFontList() 以數組的形式返回播放器的主機系統上的字體名稱

TextField.getDepth() 返回文本框的深度

TextField.getNewTextFormat() 獲取分配給新插入文本的默認文本格式

TextField.getTextFormat() 返回一個字符或整個文本框的文本格式

TextField.reMoveListener() 刪除偵聽器對象

TextField.reMoveTextField() 刪除使用MovieClip.createTextField()建立的文本框

TextField.replaceSel() 替換當前所選的內容

TextField.setNewTextFormat() 設置文本格式

TextField.setTextFormat() 爲文本框中指定的文本設置格式

TextField.replaceText() 替換文本框中指定的文本

 

mc.createTexeField(instanceName,depth,x,y,width,height);

 

 

 

 

 

var i = 0;

var count = 0;

_root.onEnterFrame = function() {

   count++;

   count %= 5;

   if (count == 0) {

      _root.createTextField("txt"+i, i, 25+500*Math.random(), 0, 12, 12);

      with (_root["txt"+i]) {

         text = String.fromCharCode(Math.floor(26*Math.random())+65);

         autoSize = "center";

         type = "dynamic";

         textColor = 0x0000FF;

         border = true;

         borderColor = 0x999999;

         background = true;

         backgroundColor = 0xDDDDDD;

      }

      i++;

   }

   for (var j in _root) {

      _root[j]._y += 5;

      if (_root[j]._y>400) {

         _root[j].removeTextField();

      }

   }

};

_root.onKeyDown = function() {

   for (var j in _root) {

      if (_root[j].text == String.fromCharCode(Key.getCode())) {

 

 

         _root[j].text = "PASS";

         _root[j].textColor = 0xFF0000;

         _root[j].borderColor = 0xFF0000;

         _root[j].backgroundColor = 0xFFFF00;

         break;

      }

   }

};

Key.addListener(_root);

相關文章
相關標籤/搜索