第 20 章 ActionScript 指令與語法.

Slides:



Advertisements
Similar presentations
高中新课程思想政治(必 修 1 、 2 )的教学体会 北京师大二附中 李文燕 2008 年西城新课程教师培训的讲稿.
Advertisements

学习目标 第八章 制作遮罩层动画 掌握遮罩层动画制作眼镜反光效果的方法 。 掌握遮罩层动画制作流水效果的方法 。 掌握遮罩层动画制作瀑布效果的方法 。 掌握遮罩层动画表现镜面拼图效果的方法 。 掌握遮罩动画表现裂纹、断桥效果的方法 。
《饲料分析与质量检测技术》 说课 主讲教师:管建慧. 课程名称: 《饲料分析与饲料质量检测技术 》 课程编码:
2009/12/211 商務科技管理系 實 務 專 題 報 告 辦桌非難事 學生: 施雅雯 ( ) 張敬芝 ( ) 葉明臻 ( ) 黃怡琅 ( )
今天我们会去一个充满神秘色彩的地方 你知道是哪吗.
第二单元绘制矢量图形.
领舞者:聋人邰丽华 观看了聋人表演的《千手观音》,你想说点什么呢?.
项目五 高级动画 本章要点 本章导读 本章任务 上机实训.
成语乐园 成语乐园 执教老师:李道梅.
Flash动画制作 形状渐变动画 动作渐变动画 引导线动画 遮罩动画 动作按钮 动态文本.
制作精美简报 展示班级风采 娄巍 2011年10月29日.
C语言程序设计 李伟光.
詹天佑.
北师大版义务教育课程标准实验教科书 七年级上册讲义 第17课 先进的科学技术.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
第22章 Flex应用程序开发 在本章以前的章节中,花了很大的精力来讲解组件、数据等内容,毕竟大部分的开发者使用Flex都是受因为其强大的表示层功能吸引。本章在前面的基础上,进一步介绍Flex应用程序的开发。与前面的章节相比,本章将从整体上把握如何开发Flex应用,侧重于设计模式问题、安全、性能优化等。
第 27 章 網頁動畫大集合 著作權所有 © 旗標出版股份有限公司.
立體四子棋 研究成員:謝旻諺、 鄭家鈞 指導老師:林屏森老師.
“三步式”网络学习法 《探究与发现》数学网络学习平台介绍
animation-Introduction
第12讲 Javascript 复习 信息学院 孙辉.
初中思想品德 规范的教学设计与案例分析.
三創產業學程 學群主持人:袁國榮召集人.
3.3 动 画 处 理 技 术 本节要点 计算机动画的基本工作原理 计算机动画的分类 使用Flash二维动画工具
計算機概論 使用Excel製作試算表.
小学语文第三册第八课 难忘的一天 生字 图片 朗读 词语 写字 音乐.
第六章 补间动画 主讲人:马 震 人民邮电出版社.
簡易送審動態案件網 路報送作業操作訓練 資料來源 銓敘部製作 報告人 饒瑞恭 日 期: 101 年 6 月 15 日.
《体育与健康》说课稿 课题:新兴体育舞蹈 —踢踏舞教学 北师大泉州附中 陈玉慈.
第 7 章 文字、點陣圖與物件編輯 著作權所有 © 旗標出版股份有限公司.
第四章 多彩的光 第六节 眼睛与视力矫正.
尋找世界文明的曙光 美索不達米亞 將地方圖案插入此投影片 選取〔插入〕功能表 〔圖片〕指令 選取〔從檔案〕指令 選取你的標幟圖片檔案
影格的類型及相關操作 新增影格 播放磁頭與影格的關係 選取影格 移除影格 影格的類型 設定關鍵影格 設定空白關鍵影格 清除關鍵影格.
Visual Basic 6.0 學習範本 第三章 基本資料型態.
Flash动画.
網頁設計與製作 第九單元:加入多媒體內容 授課教師:王漢銘 NordriDesign專業商務簡報設計.
第 十六课 制作交互式动画 课前导读 课堂讲解 上机实战 课后练习.
复习 JavaScript && ES6 专题 (1) 2017/3/10 – Payne
如何在PowerPoint 2007中插入flash动画
第6章 元件、实例和库 本章主要内容: 元件 实例 库.
ActionScript 綜合應用 (一) ─自製滑鼠指標
ActionScript 綜合應用 (一) ─ 自製滑鼠指標
动画制作.
主讲:陶建平 华中科技大学网络与计算中心
第1章 Flash入门 本章主要内容: 初识Flash Flash CS5的工作环境 文档的基本操作 影片的测试和发布.
東部海岸 馬蘭國小 五年己班 閔芳頤 Enter
第三冊第十四課記承天夜遊 王永榮 將地方圖案插入此投影片 選取〔插入〕功能表 〔圖片〕指令 選取〔從檔案〕指令 選取你的標幟圖片檔案
网页设计与制作 —— 学习情境三:flash动画网页的设计
Chapter 2 基本語法.
注音輸入法教學 大華技術學院資管系 指導老師:陳信如老師 學生:王麗嵐.
小朋友们好! 场景一:线索人物孙悟空自我介绍,配合自动语音。.
Chapter 1 了解Flash編輯架構.
第 6 章 元件、實體與 元件庫.
Action Script 使用介紹 第六組 張瀚之.
任务一 了解Action Script 脚本 【案例欣赏】 案例一:大雪纷飞 案例二:海底气泡.
合歡山 馬蘭國小 五年己班 何宜倞 ENTER.
第2章 JavaScript语言基础 2.1 数据类型、常量及变量.
项目一 认识设计环境 《FLASH动画设计》精品课程组.
全台灣最美的日出好美…好美… 這就是傳說中的潑墨二寮,耳聞她的日出有如國畫般 所以稱為潑墨二寮
傻瓜化的动画制作软件Swish.
第 11 章 色彩形狀漸變動畫─超 Easy!.
第 14 章 濾鏡特效─ 迅速移動的飛碟.
方格紙上畫正方形.
臺北市92年度中小學多媒體單元教材融入教學研討會
ActionScript 綜合應用 (二) ─打蟑螂遊戲
6-5 元件編輯的環境 將圖形轉換為元件後, 想要編輯元件的內容, 必須切換到該元件的編輯模式下才能進行, 元件的編輯模式有下列 3 種, 以下分別為您介紹。
Word 2010 文書處理技巧 圖資中心資訊組 李訓榮.
指數、對數函數 數101乙 周文翔 朱哲明 張良聿.
李商隐诗两首 锦 瑟 马 嵬 夕阳无限好,只是尽黄昏。.
初识flash、绘制角色.
Presentation transcript:

第 20 章 ActionScript 指令與語法

本章提要 20-1 變數與變數範圍 20-2 資料類型 20-3 運算子 20-4 判斷條件與迴圈 20-5 Flash 的路徑階層觀念

20-1 變數與變數範圍 變數是用來讓程式暫存資料的, 變數中所存的資料就叫做變數的「值」, 變數的值可以是字串、數字、布林值...等資料 (關於資料型態請參考 20-2 節)。在使用變數時, 必須要注意變數的有效範圍, 否則可能造成程式運作結果錯誤。 由於在 Flash 中, 變數常應用在顯示文字方面, 所以 Flash 有一種特別的變數型態, 叫做文字欄位變數, 這種變數可從屬性面板設定, 使用起來十分簡單方便。

宣告變數與指定變數值 在 ActionScript 中不需要事先宣告也可以直接使用變數。事先宣告變數的意思是指, 以 var 指令告訴 Flash, 程式待會兒需要使用這個名稱的變數, 請電腦在一開始執行程式時就為該變數保留一些記憶體空間。 若是沒有事先宣告, 則 Flash 會在該變數第一次出現時, 才依需要分配記憶體空間給它。

宣告變數與指定變數值 不過有經驗的程式設計師都會建議你在使用變數前先行宣告, 這樣一方面可以確認變數的有效範圍 (請參考稍後的說明), 避免程式錯誤;另一方面, 養成這樣的好習慣, 對於日後學習其它規定更嚴格的程式語言時會很有幫助 (許多程式語言如 Java 、C...等在使用變數時必須事先宣告)。 以下介紹 ActionScript 中宣告變數與指定變數值的指令。

var var 指令可用來宣告變數, 位於陳述式/變數類別下, 請在變數欄輸入欲宣告的變數名稱:

var

var 我們再說明以下的範例:

變數的命名規則 ActionScript 的變數命名, 有一些重要規則需要遵守: 雖然 Flash 可以接受任何 Unicode 文字 (包含中文), 但為了確保與其它版本的 Flash 相容, 也要確保能與其它網頁程式 (JavaScript、ASP、PHP...等) 相容, 變數名稱最好以英文命名。 變數名稱不能使用除了 「_」 (底線) 之外的特殊符號, 中間也不能有空格。

變數的命名規則 變數名稱不能使用 ActionScript 的關鍵字 (如:play、stop、goto...等), 也不能使用布林值 (true、false)。為了避開這個問題, 一般變數命名習慣使用「my」 做開頭, 後面接著第一個字母大寫的單字, 例如「myComputer」。如此一來, 即使變數命名成「myPlay」, 也不會造成程式錯誤。

變數的命名規則 變數沒有大小寫之分, 所以「car」、「CAR」、「Car」都會被當成同一個變數。不過為了方便辨識, 建議你統一大小寫的寫法。最好使用有意義的變數名稱, 像撰寫程式時, 存放得分的變數就可以命名為「myScore」, 而不要命名成「a1」、「a2」、「x 」 ...之類無意義的名稱, 以免日後連自己都記不清楚該變數的用途。

set variable set variable 指令是用來指定值給變數, 位於陳述式/變數類別下。它有變數與值兩個參數需要設定, 在變數欄位中輸入變數名稱;在值欄位中輸入要指定給該變數的值。

set variable

set variable

變數的有效範圍 ActionScript 中的變數可分為時間軸變數、區域變數與全域變數 3 種。大部份的時候, 我們宣告的變數都是時間軸變數;只有在函數、自訂函數 (function 指令) 中宣告的變數才屬於區域變數;至於全域變數需要在宣告變數後, 指定變數值時再特別指定:

變數的有效範圍 區域變數:區域變數只有在函數執行的時候才存在, 函數執行完畢後就消失。 時間軸變數:時間軸變數一旦經宣告後, 在哪裡都可以讀取到它, 不過必須注意它被宣告時所在的路徑階層 (請參考20-5 節), 才能正確讀取到它。 全域變數:全域變數和時間軸變數類似, 一旦宣告後, 不論在哪裡都可以讀取到它。差別在於全域變數不需要指定路徑也能夠讀取。

變數的有效範圍 以下是一個區域變數與時間軸變數的簡單範例:

變數的有效範圍 trace 輸出結果會變成 myVar1 的值為 10 , 而 myVar2 的值為 undefined (未定義)。 從這個結果我們可以明顯地看出, 在函數內宣告的 myVar2 是一個區域變數, 在 testVar 函數執行完畢後就消失了。

文字欄位變數的應用 文字欄位變數是 Flash 特有的變數型態, 它直接與文字欄位 (動態文字與輸入文字) 相關聯。你可以替文字欄位設定一個專有的變數, 則變數的值就會直接顯示在該文字欄位中。以下是文字欄位變數的簡單應用: 首先使用文字工具拉曳出一個文字物件。

文字欄位變數的應用 開啟屬性面板, 將文字類型設為動態文字 (或輸入文字)。然後在變數欄中輸入變數名稱, 即完成變數宣告的工作。

文字欄位變數的應用 接著在文字欄位所在圖層上方, 建立獨立的 Actions 圖層, 然後在文字欄位所在影格的上方影格設定如下的 ActionScript , 就可以按下 [Ctrl] + [Enter] 鍵測試影片:

文字欄位變數的應用

文字欄位變數的應用 相反地, 如果使用文字工具直接在該文字欄位鍵入文字, 該文字就會變成變數值, 若將文字欄位設定成輸入文字類型, 便可以讓使用者輸入資料, 做為變數值來應用。

20-2 資料類型 資料類型是指儲存在變數或 ActionScript 元件中的資料形式 (例如影片片段元件的寬度) , 可分為:字串、數值、布林值、Null、undefined、影片片段及物件, 以下分別進行說明。

字串 字串是用雙引號「" "」或單引號「' '」括起來的文字與數字, 如以下程式指定變數值時, 在文字的前後加上雙引號, 就表示指定該值的資料類型為字串:

如何得知資料類型 你可以用 typeof 指令 (屬於運算子/各種運算子類別) 來檢驗資料的類型, 例如我們想要得知 myData 變數中的資料類型。 輸出結果為 String, 即是指字串類型。

數值 數值包括正負整數與正負實數 (包含小數點的數字)。數值資料類型不能有英文字母、雙引號或是其它任何除了小數點「.」與負號「-」之外的特殊符號。如以下程式都是指定數值類型的資料做為變數值:

數值 以下是錯誤的寫法:

布林值 布林值類型的資料只有兩種, 一為 true (真), 一為 false (偽)。在比較運算式中, 布林值常被用來顯示結果:

Null Null 資料類型只有一個值, 就是 null, 這個值代表沒有資料, 它有一些比較特殊的應用, 例如將它當做函數的參數, 讓函數執行時忽略該參數...等。

undefined undefined 資料類型只有一個值, 就是undefined。當變數尚未被賦予任何值時, 其預設值就是 undefined (未定義)。以下程式就是宣告變數後尚未指定其值, 就要求輸出其值, 因此得到的值就會是 undefined。

影片片段 影片片段資料類型是 ActionScript 中唯一具有實體圖像的資料型態, 它記錄了影片片段實體的變數、屬性 (Properties) 與方法 (Method)。在以下的程式裡, 我們把一個實體名稱為 fish 的影片片段實體 X 座標位置資料, 存入名為 myVar 的變數中:

物件 此處物件是指 ActionScript 中虛擬的物件, 與我們在舞台中繪製的形狀填色、線條之類的物件不同。在 Flash 的 ActionScript 中, 使用者可以創造程式中虛擬的物件, 藉以統一控制各種屬性。物件的每個屬性都有名稱和值, 而屬性的值可以是任何資料類型。

關於資料類型的轉換 由於 ActionScript 對於資料類型的規定並不是那麼嚴格, 因此有時候依據程式執行需要, Flash 會自動幫你做一些資料類型的轉換, 這個動作會讓某些原來看似不合理的程式能夠正常執行, 例如:

20-3 運算子 所謂的運算子, 就是加、減、乘、除之類的符號, 但在 ActionScript 中還有許多功能特殊的運算子, 其中有的運算子意義與數學裡的運算符號並不一致, 舉個最普通的例子, 就是「=」運算子, 在 ActionScript 中它屬於「指定運算子」 , 功用是在指定值給變數, 而不像在數學裡「=」是「等於」的意思。

運算子 Flash 中的運算子都列在運算子類別下, 依功能分類分別是比較運算子、位元運算子、數學運算子、邏輯運算子、指定及其他運算子。以下我們僅選擇最基本的數學、比較、邏輯 3 類加以列表說明。

數學運算子

比較運算子

邏輯運算子

20-4 判斷條件與迴圈 判斷條件與迴圈是讓程式根據各種條件, 判斷是否執行某些程式, 或是決定程式執行順序的語法。你可以在陳述式/ 判斷條件/ 迴圈類別中找到這類指令, 以下我們僅針對最常使用的 if 條件式加以詳述, 並列表補充說明其餘同類語法。

if 條件式 if 指令的運作方式是:當判斷條件傳回值為 true 時, 執行接下來大括弧中的程式, 若傳回 false , 就不執行該程式。 因此 if 指令只有一個參數需要設定, 就是判斷條件, 你必須在該欄位中輸入用來判斷的運算式、變數, 而且必須注意判斷條件欄位中的運算式或變數, 必須傳回布林值 (也就是 true 或 false), 這樣 if 指令才能正常進行判斷。

if 條件式

if 條件式 再以一個簡單的範例來說明:

其他常用判斷條件或迴圈指令

Flash 獨有的影格迴圈 前述的迴圈指令都是純程式製作的迴圈, 但是 Flash 本身含有時間軸, 故其順序播放的特性提供了另一種迴圈方式, 也就是利用 goto 指令來製造影格迴圈。 例如我們在第 5 格影格設定了影格動作, 又在動畫最後 1 格以 goto 指令讓動畫跳到第 3 格影格播放, 這樣動畫會一直在第 3 階到最後 1 格影格間重複播放而形成迴圈。

Flash 獨有的影格迴圈 迴圈中的程式, 即影格 5 的影格動作, 就會一再地被執行。不過影格迴圈會有明顯的時間差, 不像一般迴圈指令執行的頻率那麼高。

20-5 Flash 的路徑階層觀念 由於使用 ActionScript 操控各類實體 (影片片段、按鈕、文字) 時, 必須正確指定目標 (包含實體的路徑和名稱), 而路徑一旦錯誤, 實體就接收不到 ActionScript 的訊息, 也無法依據程式執行動作。由於 Flash 動畫的元素眾多、結構龐大, 再加上 Flash 還可以動態載入外部檔案, 所以弄清楚舞台上實體的路徑階層, 就變成使用 ActionScript 重要的基本知識之一了。

Flash 的路徑階層觀念 我們在第 19 章的練習中並不需要指定任何目標實體, Flash 就知道 stop 或 goto 指令是要控制整個主動畫。 這是因為全域函數/時間軸控制項類別下的指令, 主要就是針對整個時間軸主動畫設計的, 所以這些指令中不需要指定目標參數。

Flash 的路徑階層觀念 此外當你沒有指定程式的作用目標時, ActioinScript 就會把該程式所在位置的實體 (19-4 節程式所在的位置是主動畫的時間軸上) 當成作用目標。 有鑒於 Flash 路徑階層觀念的重要性, 以下我們詳加說明 Flash 動畫中各階層的關係, 以奠定你日後活用 ActionScript 的基礎。

階層 每個新開啟的 Flash 文件都有一個時間軸主動畫, 這個主動畫可以隨著影格、場景的增加一直延伸。原始的時間軸主動畫, 在 Flash 階層 (level) 中名為「_root」, 也就是根目錄動畫。在 19-4 節範例檔 19-02.fla 中, 若以指定目標的方式撰寫, 可寫成如下的程式:

階層

階層 這個原始的時間軸主動畫 _root, 也稱為_level0。既然有 _level0 (第 0 階層), 那麼就有 _level1、_level2。例如當你利用 loadMovie 指令 (在全域函數/瀏覽器/網路類別下) 動態載入外部 Flash 影片檔 (.swf) 到目前所在動畫中, 就可以指定要將這個 .swf 檔載入哪一階層。

階層

階層 Flash 動畫的每個階層都有獨立的時間軸, 而且每個階層只能有一個時間軸主動畫, 若你將 .swf 檔載入已有時間軸主動畫的階層中 (例如 _level0), 則後載入者將把原始存在的動畫取代掉。

階層 由於每個階層都有獨立的時間軸, 所以每個階層的時間軸主動畫都稱為 _root。舉例來說, 如果你在 _level1 主動畫設定 「_root.stop();」, 因為沒有指定是哪一個階層, 所以停止播放的將是 _level1 的時間軸主動畫;若設定的程式為特別指定 level0 的 「_level0.stop();」 , 那麼停止播放的將會是 _level0 的時間軸主動畫。

實體目標路徑與深度 在第 6 章我們介紹過, 舞台中的實體 (影片片段、按鈕、文字) 可以命名好讓 ActionScript 控制, 而舞台中的實體除了名稱之外, 還有一個深度 (depth) 屬性。 實體的深度就是該實體所在位置的高低 (亦即 Z 軸位置, 可以有負值), 不同的實體原則上不可以存在於同一個深度。

實體目標路徑與深度 例如以 duplicateMovieClip 或attachMovie 等指令即時複製或載入影片片段實體時, 必須指定載入的深度, 若將不同實體載入同一深度, 則後載入的實體將會把前者取代掉。 不過若是利用 swapDepths 指令切換既有實體到同一深度, 則 Flash 將用所在圖層與浮動層順序來決定誰在上方。

實體目標路徑與深度 雖然階層和深度都同樣是表示層級, 但實體的深度都只會在1 個階層中呈現, 所以深度的層級只是在階層中再細分的層級。我們以下圖來解說階層到實體深度的整體關係:

實體目標路徑與深度

指定目標時的絕對路徑與 相對路徑 在 ActionScript 中指定作用目標時, 還有絕對路徑和相對路徑兩種形式, 而ActionScript 所在位置對路徑標記也有影響。我們以 ActionScript 2.0 類別/影片/MovieClip/方法下的 gotoAndStop 指令為例來解說:

指定目標時的絕對路徑與 相對路徑

指定目標時的絕對路徑與 相對路徑

指定目標時的絕對路徑與 相對路徑

指定目標時的絕對路徑與 相對路徑 一般來說, 使用絕對路徑標記比較容易, 也比較不容易出錯, 但是當動畫中使用loadMovie 指令, 以指定目標路徑的方式載入含有 ActionScript 的.swf 檔時, 該檔內又使用絕對路徑標記時, 就會造成路徑錯誤, 使程式無法正常執行。所以到底哪種標記模式較好並沒有定論, 你必須依照自己的需要選用。 我們再來說明絕對路徑與相對路徑的範例:

指定目標時的絕對路徑與 相對路徑

指定目標時的絕對路徑與 相對路徑