課 號   /   班 別 40184438 / E  選修 3 學分  
科目中文名稱 2D 互動設計  
科目英文名稱 2D Interactive Programming 
每週授課時數 3 小時 選修  
上課地點: 綜421   上課時間:  301, 302, 303 (星期三上午08:20-11:10)
  請注意: 學校規定必須點名! 
     8:29之後才到記曠課1小時; 9:29之後才到記曠課2小時; 10:29之後才到記曠課3小時
任 課 老 師 蔡文能 tsaiwn@ydu.edu.tw

* 本課程評分原則
* 如何善用 程式碼片段(Code Snippets)
  * 如何自己增加/編寫程式碼片段(Code Snippets)
    建議先抓回這 godSnippets.xml 並從你的動作面板匯入這程式碼片段(滑鼠按右鍵另存新檔) 

* 如何善用  程式碼提示(Code Hint) 

  ? 程式碼提示按了沒效不出現怎麼辦?

* 如何使用 ActionScript 內建的範例(Adobe Help)

* 如何自製按鈕? * 拖拉物件放掉後如何知道放在啥東西上? * 碰撞偵測 hitTestObject(物件) 與 hitTestPointer(X座標, Y座標) * 程式設計入門:請看看"開始上課"左邊的"程式設計超簡單"(開新窗) 或是點這裡換掉此頁看程式設計超簡單"(會換掉此頁; 按左上角可回到此頁) * 連過去看關於變數命名慣例與實體名稱命名建議(會換掉此頁; 按左上角可回到此頁) 只想看看實體名稱結尾(suffix)命名建議(會換掉此頁; 按左上角可回到此頁) 甚麼是實體名稱(Instance name)?(會換掉此頁; 按左上角可回到此頁) * Java程式撰寫風格(style)與慣例(coding convention)(開新窗) * 基本練習目標與要用到的資源(Symbols.fla) * 注意學校規定要點名記曠課

評分原則:  (總分 100 分由以下分項加總)  
   上課出席   20% ~ 35%
   平時作業   20% ~ 35%
   期中考(第九週)   20% ~ 35%
   期末考(第十八週) 25% ~ 35% 
   ** Flash 證照    另外加學期總分 15分(登入certiport.com 秀給我看即可)
各項採彈性計算是以對同學有利的算法為原則 :-) 
   例如, 每次都有來認真上課, 平時作業有做,
       且考試都有參加, 則即使考不好至少也會及格 ��:-)
   又如, 真的有學會, 考試成績不錯, 
       則這時出席率所佔分數比例就比較低 
簡單的說, 學得慢或成績不好的同學就儘量不要缺課!!!



 要善用  Code Hint(程式碼提示) 與  Code Snippets(程式碼片段) 


如何使用Code Snippets(程式碼片段)自動生出程式碼呢? (1)先點一下有按鈕或其他可接收事件的圖層影格 (2)敲 F9 或是用 點選"視窗" 裡面的 "動作" 把程式碼編輯窗叫出來 (3)在要自動處理的按鈕上輕輕點一下 此時可利用屬性視窗把它的實體名稱命個喜歡的名, 也可以不要命名, 讓電腦自動命名! (4)在程式碼編輯窗的 "程式碼片段"(Code Snippets)點一下, 會彈出小窗 (5)在彈出的"程式碼片段"選擇窗中選到你要的事件處理項目, 連點兩下啊就會自動生出程式碼! (6)注意, 如果此時最上面圖層不是它自己生的 Actions 圖層, 阿就會立刻自動加了Actions 圖層! 接下來, 還要到程式碼編輯窗內, 打一點點你希望電腦做的事! 畢竟電腦又不是你肚內蛔蟲, 不知道你到底要幹甚麼:-)
這時就要好好利用 程式碼提示(Code Hint)囉! 當然你還是得先打入前面幾個字母! 最簡單就是先打入 goto 接著去點按 有個左括號連著說明圖示的 "顯示程式碼提示" 然後會看到所有 goto 開頭可以用的語句, 其實也只有 gotoAndStop( 和 gotoAndPlay( 兩句子可選啦 ! 在希望選的項目上滑鼠連敲兩下即可 !

看到了吧: 原來寫程式很簡單:-) 每次只要敲幾個似曾相似的英文字 :-)) 以剛剛舉例的練習來說, 這次只要會敲 goto 然後去點按那個顯示程式碼 阿就可以選到你要的命令! 至於該命令的詳細語法則輕輕點一下該命令的英文字, 然後立刻敲 F1 就可以看到說明 !
再看看以下例子... 以下程式碼是自動產生的喔! (當然你要點個幾下啦:-) 利用了Code Snippets(程式碼片段), 以及"顯示程式碼提示"功能! (注意以下的程式碼是自動產生在場景一的 Actions 圖層的最後一個影格) 當然我有打入一列程式碼: 先打了 goto 然後立刻去點那個"顯示程式碼提示", 接著點兩下選想要的!
建議先抓回這 godSnippets.xml 並從你的動作面板匯入這程式碼片段(滑鼠按右鍵另存新檔)

如何自己增加/編寫程式碼片段(Code Snippets) 

    Flash 允許你自己增加常用的程式碼片段(code snippets),
先按 F9 把"動作窗"(程式碼視窗)叫出, 點擊 "程式碼片段", 然後該小窗右上角有個齒輪狀小圖示點下去就對了:
  
再來呢?  自己試試啊!
好啦, 再多點說明, 請看:
    
 我們選了編輯程式碼片段 XML 
然後你會看到有一千多行的 XML 定義, XML 是一種很像網頁用 HTML 的標記語言, 看了就會懂一點點:-)
在一開始就有個空白範例, 你可以 copy/paste 去修改即可:-) 當然也可以往下捲看看其他程式碼!
修改好之後, 存檔, 然後記得點按程式碼片段小窗右上角, 然後選 重新整理 
  

以下說明是從官網抄來的, 照著說明應該就可以做出自己的程式碼片段(Code Snippets)

將新片段新增至「程式碼片段」面板

您可以用兩種方式將新程式碼片段新增至「程式碼片段」面板:
   • 在「建立新程式碼片段」對話方塊中輸入片段。
   • 匯入程式碼片段 XML 檔案。
 
若要使用「建立新程式碼片段」對話方塊:
 1.在「程式碼片段」面板中,從面板選單選擇「建立新程式碼片段」。
 
 2.在對話方塊中,為您的片段輸入「標題」、「工具提示」文字及 ActionScript 3.0 程式碼。
 
 您可以按一下「自動填字」按鈕,以新增任何在「動作」面板中目前所選取的程式碼。
 
 3.如果您的程式碼包括字串 "instance_name_here",
   而且您希望 Flash 在片段套用時以正確實體名稱取代它,請選取「自動取代 instance_name_here」核取方塊。

 4.另外, 如果程式碼片段會在一個 Flash 檔案中被使用不只一次, 那要注意函數名稱與函數外面的變數名稱,
   記住都必須要用 fl_ 開頭, 這樣若重複使用片段該名稱會自動改變,
   才不會有重複函數名稱或是重複的變數名稱出現, 
       當然如果你是希望即使重複用也該一樣的變數或函數就不要用 fl_ 開頭!
   至於寫在函數內的名稱反正是局部變數(Local variable), 可以不必用 fl_ 開頭!
 

Flash 會將新片段新增至名為 Custom 的資料夾中之「程式碼片段」面板。
 


若要匯入 XML格式的程式碼片段:
 1.在「程式碼片段」面板中,從面板選單選擇「匯入程式碼片段 XML」。
 
 2.選取要匯入的 XML 檔案,然後按一下「開啟舊檔」。
   當然你的 XML 檔案必須是照CodeSnippets規定格式撰寫的。

若要查看程式碼片段的正確 XML 格式,
請從「面板」選單選擇「編輯程式碼片段 XML」。
建議: 先抓回這 godSnippets.xml 並從你的動作面板匯入這程式碼片段(滑鼠按右鍵另存新檔) 從動作面板匯入磁碟中的 XML 檔案(程式碼片段) 若要刪除程式碼片段, 請以滑鼠右鍵按一下面板中的程式碼片段,從快顯選單中選擇「刪除程式碼片段」。 若要自己用文字編輯器(如 notepad )編輯自己的程式碼片段, 可以先匯出程式碼片段為 XML 檔案, 稍微看看就會建立自己的程式碼片段, 三不五時還可以到網路或朋友處蒐集程式碼片段加進去 :-) 建議分開不同的檔案建立, 匯入時可以匯入多個 XML 檔案, 弄亂了可以回復到原先片段! 要注意的特殊變數名稱 instancs_name_here 是指當你要求先點物件才生出程式碼之時該物件名稱, Flash 會自動改為該實體名稱, 如果你還沒命名, FLash 還會幫你命名! 另外, 如果程式碼片段會在一個Flash中使用不只一次, 那要注意函數名稱與函數外面的變數名稱, 記住都必須要用 fl_ 開頭, 這樣若重複使用片段該名稱會自動改變, 才不會有重複函數名稱或是重複的變數名稱出現, 當然如果你是希望即使重複用也該一樣的變數或函數就不要用 fl_ 開頭! 至於寫在函數內的名稱反正是局部變數(Local variable), 可以不必用 fl_ 開頭! 以下是一個簡單 code snippets 程式碼片段 XML 檔案範例:

<?xml version="1.0" encoding="UTF-8"?>
<CodeSnippets>
<snippets>


  <category title="Week10_練習題要用..." 
       description="有些是函數, 有些是片段..."
       isBranch="true"  expanded="false">


    <snippet isBranch="false">
       <title>自訂的片段</title>
       <description>不用 instance_name_here</description>
       <requiresSymbol>false</requiresSymbol>
       <code><![CDATA[
           // .. 這裡寫自訂程式碼片段
           trace("自訂程式碼片段, 不需要先指定物件"); // 可把這註解掉
           // 如果你需要一些變數, 請使用 fl_ 開頭, 例如 fl_ggyy
           // 這樣的好處是當你重複使用這片段時, fl_ggyy 會自動變不同的變數,
           // 例如, fl_ggyy2, fl_ggyy3, ...
           // 如果你希望每次使用都是用同一個變數, 那就不要用 fl_ 開頭即可,
           // 還有, 變數 instance_name_here 是代表你指定的物件實體名稱
           
        ]]></code>
    </snippet>

    <snippet isBranch="false">
       <title>自訂的片段</title>
       <description>自訂的片段程式碼可用一個物件變數 instance_name_here</description>
       <requiresSymbol>true</requiresSymbol>
       <code><![CDATA[
           // .. 這裡寫自訂程式碼片段
           trace("自訂程式碼片段" + instance_name_here); // 可把這註解掉
           //.. 可以使用 instance_name_here 對應到 <requiresSymbol>true</requiresSymbol>
           // 如果你需要一些變數, 請使用 fl_ 開頭, 例如 fl_ggyy
           // 這樣的好處是當你重複使用這片段時, fl_ggyy 會自動變不同的變數,
           // 例如, fl_ggyy2, fl_ggyy3, ...
           // 如果你希望每次使用都是用同一個變數, 那就不要用 fl_ 開頭即可,
           // 還有, 變數 instance_name_here 是代表你指定的物件實體名稱
        ]]></code>
    </snippet>

  </category>


</snippets>
</CodeSnippets>

    

 Top

更多的說明可以點這看 Adobe 的說明手冊 !
建議先抓回這 godSnippets.xml 並從你的動作面板匯入這程式碼片段(滑鼠按右鍵另存新檔)
靠餐! 為何打一些字後點按不顯示程式碼提示?
根據路邊社綜合很多人的說法:
    記憶體不夠用啦, 無法建立程式碼提示快取(Cache; 讀做 cash; 跟"現金"同音; 不是讀成 catch 喔!),
因為你那個 .fla 檔案所放的目錄中有太多檔案(包括別的子目錄)!
真的是靠餐ㄟ .. 這是啥鳥理由? 旁邊目錄內很多檔案也不行?!
解決方法: 
     (a)趕快先存檔以免白做工
     (b)關閉 Flash
     (c)找一個旁邊沒人的所在: 新建立一個空的目錄(在任何地方都可以)
     (d)把你的 Flash .fla 檔案以及相關的檔案搬到那個空目錄
     (e)重新啟動 Flash 並打開在該新目錄的 Flash .fla 檔案  

好了!
試著按 F9 叫出 Action 動作碼(腳本)窗,
然後敲入 nexts並立刻去點按小圖示
看看會不會顯示 Code Hint (程式碼提示)
像右邊的圖所顯示的!



Sinppet 意思是片段, 碎片; 
     snip 意思是剪下, pet 意思是寵物;



 Top

如何自製按鈕?
       在 Flash 中的按鈕元件(Button Symbol)其實是特殊的影片片段, 含有四個影格,
   分別是一般、滑入、按下,以及感應區。通常不必管感應區的影格, 
   當然,如果你要讓滑鼠感應區與實際按鈕位置不同, 則可以在感應區影格故意畫不同區域 !
   以下以 "我該有幾分" 這按鈕為例,其他可以在元件庫內用 "重製" 再修改!
    (a)按下 Ctrl_F8 表示要建立新元件(Symbol)
       當然要選按鈕,用畫矩形工具弄成圓圓的角,
       用 T 文字工具寫字, 建議分開放不同圖層 !
   

    (b)滑入時 按鈕顏色與文字顏色 都要改!
   

    (c)按下的影格必須全選後用鍵盤往下鍵把整個圖案往下移動 5 像素 (Pixal)!
       按鈕顏色與文字顏色也都要改!
   

 另外, 順便看看如何用 DreamWeaver 製作網頁用的"動態式按鈕"(其實就是偷換圖片)


 Top


拖拉物件放掉後如何知道放在啥東西上? 

    很多人會以為這是碰撞偵測(collision detection), 其實不是!
這只是看看你停止拖拉(stopDrag)之後, 到底把物件放在哪個"顯示物件容器"上,               
所以正確的做法是檢查你的 dropTarget, 例如:
      if( haha_mc.dropTarget.parent.name == "backware") {
           // do something
      } 
  請注意, 不要寫成
      if( haha_mc.dropTarget.name == "backware")  ... 
  這樣永遠不會查得到! 原因是它有"容器"的概念!

  甚至, 如果 target 物件很複雜, 你可能要寫成以下這樣才查得到:
      if( haha_mc.dropTarget.parent.parent.name == "backware") {
           // do something
      } 

點這看 Adobe AS3  flash.display.DisplayObject 顯示物件類別的 參考手冊


點這看 Adobe AS3  flash.display.DisplayObjectContainer 顯示物件容器類別的 參考手冊



 Top


碰撞偵測 hitTestObject(物件) 與 hitTestPointer(X座標, Y座標)
    在 AS2 時代的 hitTest( ) 函數到了 AS3 被拆開為兩個函數:
hitTestObject(物件); 與 hitTestPointer(X座標, Y座標);

   hitTestObject: 判斷影片片段和指定物件的的範圍框是否有重疊或相交。
      因為其實物件都是方形範圍, 所以有時看起來沒碰撞也會被偵測為已經撞到! 範例:
         if( my_mc.hitTestObject( your_mc ) {
               // 撞到了, do something
         }

   hitTestPoint: 顧名思義, 只偵測一個點是否在物件的形狀範圍內;
      這時你可以給第三個參數為 true 以便真的只偵測有像素部份, 例如:
         if( my_mc.hitTestPointer( mouseX, mouseY, true) {
              // do something
         } 
   但是這只對於向量圖有效, 如果是點陣圖(bitmap; .bmp檔案)則沒有用, 仍是偵測方型範圍。
   這是因為點陣圖的圖檔資料中並沒有記錄何處是真的有資料, 所有的0與1都是圖的資料, 無法分辨!


更多關於碰撞偵測的範例與進階討論, 請點以下網址連過去看: 
http://sierakowski.eu/list-of-tips/39-collision-detection-methods-hittest-and-hittestobject-alternatives.html
以下是來自該網頁的範例:



















Corey O'Neil's Collision Detection Kit...
 
I think this one is currently the most popular... 
You can download it from 
here: http://code.google.com/p/collisiondetectionkit/downloads/list. 
It's very easy to implement, very efficient and works great. 

The documentation with simple examples is available 
here: http://www.coreyoneil.com/Flash/CDK/documentation/
 
I have modified my code from the first project again.









 Top

如何使用 ActionScript 範例 (Flash As3)
參考:

http://help.adobe.com/zh_TW/as3/dev/WS9b644acd4ebe5999-2734bf3c124372a52ff-8000.html

瞭解特定類別和方法運作方式的最佳方法之一,就是執行 ActionScript 3.0 程式碼範例。您可以根據使用的裝置或目標裝置,以不同方式使用範例。

執行 Flash Professional 或 Flash Builder 的電腦
請參閱在 Flash Professional 執行 ActionScript 3.0 範例或在 Flash Builder 執行 ActionScript 3.0 範例,取得有關如何在這些開發環境執行 ActionScript 3.0 範例的資訊。使用 trace 陳述式以及其他除錯工具,可增加您對於程式碼範例運作方式的瞭解。

行動裝置
您可以在支援 Flash Player 10.1 及更新版本的行動裝置上執行 ActionScript 3.0 程式碼範例。請參閱在行動裝置執行 ActionScript 3.0 範例。您也可以在執行 Flash Professional 或 Flash Builder 的電腦上執行這些範例。

電視機
雖然您無法在電視機執行這些範例,但還是可以在電腦執行,以便從範例中學習。請參閱 Adobe Developer Connection 網站上的電視版 Flash Platform,取得有關開發電視機專用應用程式的資訊。

範例類型

ActionScript 3.0 程式碼範例的類型:

程式碼片段範例

程式碼片段看起來如下:

var x:int = 5; 
trace(x); // 5

程式碼片段包含的程式碼,只是用於展示一種想法。它們通常不會包含套件或類別陳述式。

類別範例

很多範例顯示完整 ActionScript 類別的原始碼。類別範例看起來如下:

package { 
    public class Example1 { 
        public function Example1():void { 
            var x:int = 5; 
            trace(x); //5 
        } 
    } 
}

類別範例的程式碼包含一個套件陳述式、類別宣告以及一個建構函式。

包含多個原始碼檔案(Source file)的實際範例

《ActionScript 3.0 開發人員指南》中的很多主題會以實際範例做為總結,這些範例顯示如何在實際環境中使用特定的 ActionScript 功能。這些範例通常內含多個檔案,其中包括:

  • 一或多個 ActionScript 原始碼檔案(Source file)

  • Flash Professional 使用的 .FLA 檔案

  • 一或多個 Flash Builder 使用的 MXML 檔案

  • 範例應用程式使用的資料檔案、影像檔案、原始碼檔案(Source file)或者其他資源 (選擇性)。

實際範例一般會以 ZIP 封存檔案提供。

開發人員指南的範例 ZIP 檔案清單

Flash Professional CS5 和 Flex 4 的 ZIP 檔案 (請從 www.adobe.com/go/learn_programmingAS3samples_flash_tw 下載) 包含下列範例:

在「Flash 開發人員中心」和「Flex 開發人員中心」中也可以找到很多與「快速入門」文章有關的實際範例。

在 Flash Professional 執行 ActionScript 3.0 範例

使用下列其中一個程序 (視範例類型而定) 可執行使用 Flash Professional 的範例。

在 Flash Professional 執行程式碼片段範例

在 Flash Professional 執行程式碼片段範例:

  1. 選取「檔案 > 新增」。

  2. 在「新增文件」對話方塊中選取「Flash 文件」,然後按一下「確定」。

    新的 Flash 視窗隨即顯示。

  3. 按一下「時間軸」面板中第一個圖層的第一個影格。

  4. 在「動作」面板中,輸入或貼上程式碼片段範例。

  5. 選取「檔案 > 儲存」。輸入檔案的名稱,然後按一下「確定」。

  6. 若要測試範例,請選取「控制 > 測試影片」。

在 Flash Professional 執行類別範例

在 Flash Professional 執行類別範例:

  1. 選取「檔案 > 開新檔案」。

  2. 在「新增文件」對話方塊中選取「ActionScript 檔案」,然後按一下「確定」。新的編輯器視窗隨即顯示。

  3. 將類別範例程式碼複製後貼到編輯器視窗。

    如果此類別是程式的主要文件類別,它必須擴充 MovieClip 類別:

    import flash.display.MovieClip; 
    public class Example1 extends MovieClip{ 
    //... 
    }

    另外請確定在範例中參照的所有類別都會使用 import 陳述式來宣告。

  4. 選取「檔案 > 儲存」。將檔案的名稱指定為範例中相同的類別名稱 (例如 ContextMenuExample.as)。
    備註: 某些類別範例,例如 flashx.textLayout.container.ContainerController 類別範例,在套件宣告中包含多個階層 (package flashx.textLayout.container.examples {)。對於這些範例,只要將檔案儲存在符合封裝宣告 (flashx/textLayout/container/examples) 的子資料夾中,或移除封裝名稱 (這樣 ActionScript 會只以 package { 開頭),您就可以從任何位置測試檔案。
  5. 選取「檔案 > 開新檔案」。

  6. 在「新增文件」對話方塊中選取「Flash 文件 (ActionScript 3.0)」,然後按一下「確定」。新的 Flash 視窗隨即顯示。

  7. 在「屬性」面板中的「文件類別」欄位,輸入範例類別的名稱,此名稱就是剛才儲存的 ActionScript 原始碼檔案(Source file)名稱 (例如 ContextMenuExample)。

  8. 選取「檔案 > 儲存」。將 FLA 檔案的名稱指定為範例中相同的類別名稱 (例如 ContextMenuExample.fla)。

  9. 若要測試範例,請選取「控制 > 測試影片」。

在 Flash Professional 執行實際範例

實際範例一般會以 ZIP 封存檔案提供。使用 Flash Professional 執行實際範例:

  1. 將封存檔案解壓縮至選擇的資料夾。

  2. 在 Flash Professional 中,選取「檔案 > 開啟」。

  3. 瀏覽封存檔案要解壓縮的資料夾。選取資料夾中的 FLA 檔案,然後按一下「開啟」。

  4. 若要測試範例,請選取「控制 > 測試影片」。

在 Flash Builder 執行 ActionScript 3.0 範例

使用下列其中一個程序 (視範例類型而定) 可執行使用 Flash Builder 的範例。

在 Flash Builder 執行程式碼片段範例

在 Flash Builder 執行程式碼片段範例:

  1. 建立新的 Flex 專案 (選取「 檔案 > 新增 > Flex 專案」) 或者在現有的 Flex 專案中建立新的 MXML 應用程式 (選取「檔案 > 新增 > MXML 應用程式」)。為專案或應用程式指定描述性名稱 (例如 ContextMenuExample)。

  2. 在產生的 MXML 檔案中,新增一個 <mx:Script> 標籤。

  3. 將程式碼片段內容貼到 <mx:Script> 和 </mx:Script> 標籤之間。儲存 MXML 檔案。

  4. 若要執行範例,請選取「執行 > 主要 MXML 檔案的執行功能表選項」(例如「執行 > 執行 ContextMenuExample)」。

在 Flash Builder 執行類別範例

在 Flash Builder 執行類別範例:

  1. 選取「檔案 > 新增 > ActionScript 專案」。

  2. 在「專案名稱」欄位中輸入主要類別的名稱 (例如 ContextMenuExample)。其他欄位使用預設值 (或者根據您的特殊環境,變更它們)。按一下「完成」,建立專案以及主要的 ActionScript 檔案。

  3. 擦除 ActionScript 檔案中任何產生的內容。將包括套件和匯入陳述式的範例程式碼貼到 ActionScript 檔案中,然後儲存檔案。

    備註: 某些類別範例,例如 flashx.textLayout.container.ContainerController 類別範例,在套件宣告中包含多個階層 (package flashx.textLayout.container.examples {)。對於這些範例,只要將檔案儲存在符合封裝宣告 (flashx/textLayout/container/examples) 的子資料夾中,或移除封裝名稱 (這樣 ActionScript 會只以 package { 開頭),您就可以從任何位置測試檔案。
  4. 若要執行範例,請選取「執行 > 主要 ActionScript 類別名稱的執行功能表選項」(例如「執行 > 執行 ContextMenuExample)」。

在 Flash Builder 執行實際範例

實際範例一般會以 ZIP 封存檔案提供。使用 Flash Builder 執行實際範例:

  1. 將封存檔案解壓縮至選擇的資料夾。為資料夾指定描述性名稱 (例如 ContextMenuExample)。

  2. 在 Flash Builder 中,選取「檔案 > 新增 Flex 專案」。在「專案位置」部分中,按一下「瀏覽」,然後選取內含範例檔案的資料夾。在「專案名稱」欄位中,輸入資料夾名稱 (例如 ContextMenuExample)。 其他欄位使用預設值 (或者根據您的特殊環境,變更它們)。按「下一步」繼續。

  3. 在「輸出」面板中按「下一步」,接受預設值。

  4. 在「來源路徑」面板中按一下「主要應用程式檔案」欄位旁邊的「瀏覽」按鈕。從範例資料夾選取主要 MXML 範例檔案。按一下「完成」來建立專案檔案。

  5. 若要執行範例,請選取「執行 > 主要 MXML 檔案的執行功能表選項」(例如「執行 > 執行 ContextMenuExample)」。

在行動裝置執行 ActionScript 3.0 範例

您可以在支援 Flash Player 10.1 的行動裝置執行 ActionScript 3.0 程式碼範例。不過,一般您可以執行程式碼範例,便能得知特定類別和方法的運作方式。在這種情況下,在桌上型電腦之類的非行動裝置執行範例。在桌上型電腦上,您可以在 Flash Professional 或 Flash Builder 使用 trace 陳述式以及其他除錯工具,增加您對於程式碼範例的瞭解。

若您想在行動裝置上執行範例,可以將檔案複製到裝置或網站伺服器。若要將檔案複製到裝置,然後在瀏覽器中執行範例,請執行以下步驟:

  1. 按照在 Flash Professional 執行 ActionScript 3.0 範例或在 Flash Builder 執行 ActionScript 3.0 範例中的指示,執行以下步驟。 在 Flash Professional 中,當您選取「控制 > 測試影片」,就可以建立 SWF 檔案。在 Flash Builder 中,當您執行、除錯或建立自己的 Flash Builder 專案時,就可以建立 SWF 檔案。

  2. 將 SWF 檔案複製到行動裝置上的目錄。使用裝置提供的軟體來複製檔案。

  3. 在行動裝置的瀏覽器位址列,輸入 SWF 檔案的 file:// URL。例如,輸入 file:://applications/myExample.swf。

若要將檔案複製到網站伺服器,然後在裝置的瀏覽器中執行範例,請執行以下步驟:

  1. 建立 SWF 檔案以及 HTML 檔案。首先,按照在 Flash Professional 執行 ActionScript 3.0 範例或在 Flash Builder 執行 ActionScript 3.0 範例中的指示執行。 在 Flash Professional 中,選取「控制 > 測試影片」,只建立 SWF 檔案。若要建立這兩個檔案,請先在「發佈設定」對話方塊的「格式」索引標籤中選取「Flash」和「HTML」。然後,選取「檔案 > 發佈」,建立 HTML 和 SWF 檔案二者。在 Flash Builder 中,當您執行、除錯或建立自己的 Flash Builder 專案時,就可以同時建立 SWF 檔案和 HTML 檔案。

  2. 將 SWF 檔案和 HTML 檔案複製到網站伺服器的目錄。

  3. 在行動裝置的瀏覽器位址列,輸入 HTML 檔案的 HTTP 網址。例如,輸入 http://www.myWebServer/examples/myExample.html。

在行動裝置上執行範例之前,請考慮以下每一個問題。

舞台大小

在行動裝置上執行範例時,您使用的舞台大小會比您使用非行動裝置時要小一些。很多範例不需要特殊的「舞台」大小。建立 SWF 檔案時,請指定裝置適合的「舞台」大小。例如,指定 176 x 208 個像素。

在《ActionScript 3.0 開發人員指南》中,實際範例的用途是說明不同的 ActionScript 3.0 概念和類別。他們的使用者介面設計就是要在桌上型電腦或筆記型電腦上看來美觀又好用。雖然,這些範例可以在行動裝置上執行,不過「舞台」大小和使用者介面設計並不適合很小的螢幕。Adobe 建議您在電腦上執行實際的範例,對 ActionScript 有了相當的瞭解之後,再到行動應用程式中使用特定的程式碼片段。

以文字欄位取代 trace 陳述式

在行動裝置上執行範例時,您不會看到範例中的 trace 陳述式輸出。若要瞭解輸出,請建立 TextField 類別的實體。然後。將 trace 陳述式的文字附加至文字欄位的 text 屬性。

您可以使用以下的函數,設定一個文字欄位,以便用於追蹤:

function createTracingTextField(x:Number, y:Number, 
                                width:Number, height:Number):TextField { 
           
    var tracingTF:TextField = new TextField(); 
    tracingTF.x = x; 
    tracingTF.y = y; 
    tracingTF.width = width; 
    tracingTF.height = height; 
     
    // A border lets you more easily see the area the text field covers. 
    tracingTF.border = true; 
    // Left justifying means that the right side of the text field is automatically 
    // resized if a line of text is wider than the width of the text field. 
    // The bottom is also automatically resized if the number of lines of text 
    // exceed the length of the text field. 
    tracingTF.autoSize = TextFieldAutoSize.LEFT; 
     
    // Use a text size that works well on the device. 
    var myFormat:TextFormat = new TextFormat(); 
    myFormat.size = 18; 
    tracingTF.defaultTextFormat = myFormat; 
     
    addChild(tracingTF); 
    return tracingTF; 
}

例如,將此函數新增至文件類別,作為一個私有的函數。 然後,在文件的其他方法中,使用類似下列的程式碼來追蹤資料:

var traceField:TextField = createTracingTextField(10, 10, 150, 150); 
// Use the newline character "\n" to force the text to the next line. 
traceField.appendText("data to trace\n"); 
traceField.appendText("more data to trace\n"); 
// Use the following line to clear the text field. 
traceField.appendText("");

appendText() 方法只接受一個值當作是參數。這個值是字串 (字串實體或字串常值)。若要列印非字串變數的值,請先將該值轉換為 String。最簡單的轉換方式就是呼叫物件的 toString() 方法:

var albumYear:int = 1999; 
traceField.appendText("albumYear = "); 
traceField.appendText(albumYear.toString());

文字大小

很多範例使用文字欄位,協助說明概念。有時候,調整文字欄位中的文字大小,可以讓使用者更容易看清楚行動裝置的資料。例如,如果範例使用 myTextField 這個文字欄位實體,請使用以下程式碼變更其文字大小:

// Use a text size that works well on the device. 
var myFormat:TextFormat = new TextFormat( ); 
myFormat.size = 18; 
myTextField.defaultTextFormat = myFormat

擷取使用者輸入

行動作業系統和瀏覽器會捕捉 SWF 內容不會接收的部分使用者輸入事件。特定行為會視作業系統和瀏覽器而定,但是當您在行動裝置執行範例時,可能會造成無法預期的行為。如需詳細資訊,請參閱 KeyboardEvent 優先順序。

而且,很多範例的使用者介面則是針對桌上型電腦和筆記型電腦而設計。例如,《ActionScript 3.0 開發人員指南》中,大部分的實際範例非常適合在桌上型電腦檢視。因此,在行動裝置螢幕上,有時候看不到完整的舞台。瀏覽器內容的平移能力視瀏覽器而定。再者,這些範例的左右移動是針對捕捉以及處理捲動或左右平移事件而設計。因此,部分範例的使用者介面並不適會在較小的螢幕執行。Adobe 建議您在電腦上執行這些範例,對 ActionScript 有了相當的瞭解之後,再到行動應用程式中使用特定的程式碼片段。

如需詳細資訊,請參閱左右移動和捲動顯示物件。

處理焦點

部分範例需要您提供焦點給欄位。 提供焦點給欄位後,您就可以輸入文字或選取按鈕。若要提供欄位焦點,請使用行動裝置的指標裝置,例如觸控筆或您的手指。或者,使用行動裝置的導覽鍵,提供欄位焦點。 若要選取焦點所在的按鈕,請使用行動裝置的「選取」鍵,就像是使用電腦上的 Enter 一樣。在部分裝置上,輕點按鈕兩下就可以選取它。

如需有關焦點的詳細資訊,請參閱管理焦點。

處理滑鼠事件

很多範例會偵聽滑鼠事件。在電腦上,例如當使用者使用滑鼠在顯示物件上滾動,或者在顯示物件上按一下滑鼠按鍵後,就會發生這些滑鼠事件。在行動裝置上,觸控筆或手指之類的指標裝置所產生的事件,稱為觸控事件。Flash Player 10.1 會將觸控事件對應至滑鼠事件。這種對應關係可以確保先開發 SWF 內容,再繼續 Flash Player 10.1 的工作。因此,使用指標裝置來選取或拖曳顯示物件時,這些範例仍有效。

效能

行動裝置的處理能力比桌上型裝置差。部分消耗大量 CPU 的範例在行動裝置上的執行速度很慢。例如,繪製 API 範例:演算法視覺產生器在進入每一個影格時,會進行大量計算和繪圖。 在電腦上執行此範例會說明各種的繪圖 API。不過,由於效能有限,所以此範例不適合部分的行動裝置。

如需行動裝置效能的詳細資訊,請參閱最佳化 Flash 平台的效能。

最佳作法

為行動裝置開發應用程式時,範例並不會將最佳作法納入考量。行動裝置的記憶體與處理能力有限,這一點要特別注意。同樣地,小型螢幕的使用者介面與桌上型電腦顯示器各有不同的需求。如需開發行動裝置應用程式的詳細資訊,請參閱最佳化 Flash 平台的效能。

 



本課程使用 Adobe Flash CS5 (即 Flash 11), 關於 Flash 各版本主要差異請點看以下網址:
  http://en.wikipedia.org/wiki/Adobe_Flash_Professional(開新窗)
致謝:
     感謝王永康主任+素貞老師+小明老師熱情贊助的教材資料 !

上課地點 上課時間 綜421 301 綜421 302 綜421 303 請注意: 學校規定必須點名! 8:29之後才到記曠課1小時; 9:29之後才到記曠課2小時; 10:29之後才到記曠課3小時
課 號 / 班 別 40184438 / E 選修 3 學分 科目中文名稱 2D 互動設計 科目英文名稱 2D Interactive Programming 每週授課時數 3 小時 選修 建議先
抓回這 godSnippets.xml 並從你的動作面板匯入這程式碼片段(滑鼠按右鍵另存新檔)

 Top