Si ki しき 四季
關於部落格
  • 10593

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

老師打的程式碼歷史 (警急暫存)

                程式語言簡介,變數,Flash CS5編輯環境
2012/03/05
項目
重點
說明
1.
程式語言發展簡史
(1).先從機器語言開始,但0101符號不易記憶判讀.
(2).後來改良為組合語言,使用簡單的文字,如mov、xor等,仍不易閱讀.
(3).目前進化為高階語言,較易讀學.                                    
(4).各種高階語言發展的時間順序為FORTRAN®BASIC®C®C++®Java®ActionScript
(5).ActionScript和Java系出同門,很適合網路環境.
2.
變數的分類
(1).整數:int
(2).實數:Number
(3).字串:String
3.
變數的定義
(1).變數不同於未知數(例如 X=X+10).
(2).變數包括[名稱][內容值],等同於在記憶體中之[位址][數據].
4.
變數的宣告
(1).變數宣告的步驟為(a).宣告變數名稱和資料型態(b)宣告資料初值.
[例如]   var abc:int;
       abc=123;                       
(2).var此關鍵字來宣告一變數,其名稱為abc,其資料型態為int
(3).不同的資料型態,可能佔有不同的記憶體空間大小。例如,整數(int)可能只佔四個位元組,而實數(Number)和字串(String)可能佔到八個位元組。
(4).變數的宣告的目的,在於從記憶體中配置一位址以存取該變數之值
5.
識別字關鍵字
(1).識別字就是自己命名的變數英文字,預設為黑色字.
(2).關鍵字(有人稱保留字),就是程式軟體自己在用的字,預設為藍色字不可以拿來命名變數名稱.
6.
初學者最常發生之錯誤
英文字打錯!!!如果應該是藍色字的關鍵字打成黑色的字就是打錯字了!!!
7.
先嘗試設定我的工作區
每個Adobe軟體都有這一步驟.
8.
程式設計步驟
程式碼撰寫®編譯®執行
                        程式設計,四大技巧
2012/03/12
項目
重點
說明
1.
程式設計四大重點:
(a).選擇敘述(if…else)
(b).迴圈(for)
(c).陣列(Array)
(d).函數(function)
(1).你可以說他們是「四大金剛」,或者「四大天王」。
(2).萬法不離其宗,無論多長多大的程式軟體,其實都是由這四種技巧組合、變化而來。
(3).但要巧妙地將這四種技巧組合變化,除了需要經驗累積之外(這就是所謂的『功力深淺』),最好還能有一些慧心和熱情。
(4).這「四大天王」對專業程式設計師來說,應該是平起平坐的,但對初學者而言,則呈現兩強兩弱的情況。
2.
選擇敘述:二選一判斷後之行為,類似人的行為模式。
(1).基本架構
        if(邏輯運算)
         {
          邏輯運算為真(1),則執行此處指令。
         }
         else
         {
          邏輯運算為假(0),則執行此處指令。
         }
[]      var aabbcc:int;
         aa=11;
         bb=22;
         cc=aa+bb;
         if(cc>=0)
         {
           trace(“得到正數”,cc);
         }
         else
         {
           trace(“得到負數”,cc);
         }
(2).if(假如), else(否則,其他)
(3).在本情況中,小括弧內指的是條件判斷,大括弧內是要執行的指令,兩者右邊都不要加分號 ;
(4).else可以不需要,只要有if就足夠了(這表示程式撰寫者只在乎if條件成立時要做什麼,所以if可以重複好幾次),或者改成else if(這表示條件不成立的情況下,還可以再細分)。
 
3.
編譯(compile)程式的辛苦
(1).所謂編譯(compile),就是程式碼打完後,請電腦幫我們檢查輸入的程式碼哪裡有錯誤 (語法錯誤syntax error)
(2).可以在輸入程式碼上方【檢查語法】(符號為P)的地方點選,就可以在時間軸右方的【編譯器錯誤】處看見錯誤訊息說明。或者按Ctrl+Enter直接執行也可看到。
(3).你可以一邊看第幾行有什麼錯誤,一邊回到程式碼中修正錯誤。
(4).錯誤訊息說明,初學者常常有看沒有懂,其原因可能在於:
    (a).裡面常有一些較難的英文字,不容易讀懂。
    (b).訊息說明,常常無法直接說出錯誤處,必須靠經驗來判斷。
(5).優秀程式設計師之養成,在編譯器錯誤訊息的解讀上,必須靠(a).自己有耐心的細讀文字和思考。(b).勤查英文字典。(c).請教有經驗的人。
(6).常常編譯、執行都無誤,但出來結果並非預期。
 
 
4.
迴圈 : 應用在需要做重複動作的情況。
(1).運算值都有起始值.(2).運算值每次都會增加一個固定量(3).重複相同的動作直到條件限制為止。
   sum=0;
   sum=sum+i
     1= 0 +1
     3= 1 +2
     6= 3 +3
    10= 6 +4
    15= 10+5
    21= 15+6
    28= 21+7
    36= 28+8
    45= 36+9
    55= 45+10
(1).基本架構
      for(起始值;條件式;增量)
        {
          程式指令;
             :    ;
        }
[]:試用迴圈計算1+2+3+4+5+6+7+8+9+10=?
[]:    var sum,i:int
        sum=0;
        for(i=1;i<11;i=i+1)
          {
            sum=sum+i;
           }
        trace(sum);
(2).i的起始值在本例中為1
(3).i的值每次增加1(因為i=i+1)。
(4).在i<11之前(從1到10),重複做大括弧裡面的動作(sum=sum+i)。
 
 
 
 
5.
陣列(Array):多個資料型態一樣的資料,將它們放在一起,並用編號將其排列。例如班級座號和姓名之關係。
(1).基本架構
   [1]   var abc:Array=new Array( );
           abc[0]=32;
           abc[1]=34;
           abc[2]=36;
           abc[3]=38;
           trace(abc[3]);
   [2]   var abc:Array=new Array(32,34,36,38);
           trace(abc[3]);
(2).在本例中,abc[3]稱為元素;abc[3]中之3稱之為編號或索引,用以表示該元素在陣列中之順序。
(3).陣列變數宣告的同時,可將其元素值同時宣告;或者在它下面的程式碼中宣告。
3.
編譯(compile)程式的辛苦
(1).所謂編譯(compile),就是程式碼打完後,請電腦幫我們檢查輸入的程式碼哪裡有錯誤 (語法錯誤syntax error)。
(2).可以在輸入程式碼上方【檢查語法】(符號為P)的地方點選,就可以在時間軸右方的【編譯器錯誤】處看見錯誤訊息說明。或者按Ctrl+Enter直接執行也可看到。
(3).你可以一邊看第幾行有什麼錯誤,一邊回到程式碼中修正錯誤。
(4).錯誤訊息說明,初學者常常有看沒有懂,其原因可能在於:
    (a).裡面常有一些較難的英文字,不容易讀懂。
    (b).訊息說明,常常無法直接說出錯誤處,必須靠經驗來判斷。
(5).優秀程式設計師之養成,在編譯器錯誤訊息的解讀上,必須靠(a).自己有耐心的細讀文字和思考。(b).勤查英文字典。(c).請教有經驗的人。
(6).常常編譯、執行都無誤,但出來結果並非預期。
 
 
4.
迴圈 : 應用在需要做重複動作的情況。
(1).運算值都有起始值.(2).運算值每次都會增加一個固定量(3).重複相同的動作直到條件限制為止。
   sum=0;
   sum=sum+i
     1= 0 +1
     3= 1 +2
     6= 3 +3
    10= 6 +4
    15= 10+5
    21= 15+6
    28= 21+7
    36= 28+8
    45= 36+9
    55= 45+10
(1).基本架構
      for(起始值;條件式;增量)
        {
          程式指令;
             :    ;
        }
[例]:試用迴圈計算1+2+3+4+5+6+7+8+9+10=?
[解]:    var sum,i:int
        sum=0;
        for(i=1;i<11;i=i+1)
          {
            sum=sum+i;
           }
        trace(sum);
(2).i的起始值在本例中為1。
(3).i的值每次增加1(因為i=i+1)。
(4).在i<11之前(從1到10),重複做大括弧裡面的動作(sum=sum+i)。
 
 
 
 
5.
陣列(Array):多個資料型態一樣的資料,將它們放在一起,並用編號將其排列。例如班級座號和姓名之關係。
(1).基本架構
   [例1]   var abc:Array=new Array( );
           abc[0]=32;
           abc[1]=34;
           abc[2]=36;
           abc[3]=38;
           trace(abc[3]);
   [例2]   var abc:Array=new Array(32,34,36,38);
           trace(abc[3]);
(2).在本例中,abc[3]稱為元素;abc[3]中之3稱之為編號或索引,用以表示該元素在陣列中之順序。
(3).陣列變數宣告的同時,可將其元素值同時宣告;或者在它下面的程式碼中宣告。
 
                        函數,類別物件與點運算符,小遊戲
2012/03/19
項目
重點
說明
1.
(1).函數:如果常常需要進行一些步驟相同、但輸入值不同的工作,則可使用函數。
函數有如一個忠心耿耿、隨時聽候召喚的好伙伴。
 
(2).函數包括:
 (a).函數名稱及其資料型態。
 (b).輸入變數及其資料型態。
 (c).回傳值(送回呼叫他的主程式中)。
 (d).此處的「呼叫」,指的是先宣告有一函數後,再於主程式中輸入函數名稱要求其運算。
(1).最常見的三角函數,例如sin(x)。如果將x=30帶入運算,我們可以得到sin(30)=1/2的輸出結果。
(2).另外再以自訂的函數為例。我們如果經常要將輸入數aa取平方後除以2,就可用函數(aa*aa)/2來計算。雖然每次的輸入值可能不一樣,但算法都相同。
 
(3).將上例寫成程式:
    function abc( aa :int): Number
    {
       return(( aa* aa)/ 2);
    }
    trace( abc( 3));
 
(4).上例中,函數abc的資料型態為Number,輸入值aa的資料型態為int。在輸入變數aa之前,不需再用var來宣告了。
(5).在主程式中,使用abc(3)來呼叫函數abc,要求它將輸入值(3)放進函數abc內計算後,把結果經由trace指令列印出來。
(6).在函數abc當中,用return將運算結果送回主程式。
(7).試著寫出”可以將輸入的兩個數字,分別取平方後,先相加再除以2”的程式。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.
(1).類別:先前使用的資料型態int、Number、String等都是單一資料型態;但類別(Class)是屬於多元複合式的資料型態。它可以是系統自己設定的,也可以是程式設計師自訂的。
 
(2).物件:若某個變數經宣告,它的資料型態是某種類別,則我們可稱此變數為物件。
 
(3). 點『·』運算符:要將物件或類別當中的變數(屬性)或函數(功能)取出使用,則可利用點運算符『·』,其方式為:
      物件.變數
或者
      物件.函數
 
(4).如果一時還是弄不清楚「類別」和「物件」也沒關係,可以把點『·』運算符解釋成文字的「」。(什麼屬性、什麼功能)。
 
(5).當我們利用功能表其中的[插入]->[新增元件],來建立一影片片段時,系統就預設它的資料型態為影片片段類別,如果將它命名為abc,則abc就是一個可以使用點運算符的物件
[例1]   abc.alpha
表示為此影片物件不透明度屬性。
[例2]   abc.play()
表示使用此影片播放功能。
 
(1).[例](知道就好,不需實做):
在學生資料中,可能包含學生姓名(name: String)、國文(Chinese: int)、英文(English: int)成績等不同資料型態的變數,甚至還可能有計算平均分數的函數 average。
此時,我們就可以定義出一複合式資料型態(類別)叫做student如下:
       Class student
         {
          var name:String;
          var Chinese:int;
          var English:int;
          function average( )
            {
             return((Chinese+English)/2);
             }
         }
      var Cheng:student;
      Cheng.Chinese=80;
      Cheng.English=90;
      trace(Cheng.average( ));
  
(2).在上例中,類別(Class) student包含有name,Chinese,English三個變數,和一個函數average。
(3).在主程式中,可宣告一個物件叫做Cheng,它的資料型態就是student類別。
(4).在主程式中,可利用點運算符來指定或改變物件內部變數之值(稱之為改變其屬性),並且使用其內部函數進行某種動作。
 
 
 
 
 
 
 
 
 
 
 
3.
傳統函數和事件函數之大同小異:
 
傳統函數:
function abc(aa:int):Number
{
 return(aa*aa);
}
trace(abc(3));
 
(1).abc之資料型態為Number
(2).輸入值aa為識別字。
 
 
 
 
小遊戲-1:在按鈕(efg)上按下滑鼠,則影片片段(abc)就會改變屬性(例如不透明度「alpha)。
 
事件函數:
function kkk(event:MouseEvent)
{
 abc.alpha=abc.alpha/1.2;
}
efg.addEventListener(MouseEvent.MOUSE_DOWN,kkk);
 
(1).kkk無需資料型態。
(2).輸入值event為保留字,其資料型態為類別MouseEvent(滑鼠事件)。
(3).輸入的並非是變數值,而是觸發事件。如果發生某事件(滑鼠事件或鍵盤事件),才呼叫函數去執行指令。
(4).呼叫者efg(在此為自訂的按鈕),必須讓自己先變為事件接收者(addEventListener),再確認滑鼠事件中是指定按下滑鼠的事件(MouseEvent.MOUSE_DOWN),最後才呼叫事件函數kkk
(4).屬性alpha(不透明度),是屬於保留字。
 
4.
小遊戲-2:在影片片段(abc)按下滑鼠,則影片片段就會改變屬性(不透明度、位置、大小)。
 
小遊戲-3:在影片片段上按下滑鼠開始拖曳,放開滑鼠則停止拖曳
(2).如果想要將點選在按鈕(efg)上去驅動影片片段(abc)的方式,改成點選在影片片段上才能驅動,應該如何更改程式碼?(hint:自己驅動自己)
 
(3). function kkk(event:MouseEvent)
{
       abc.startDrag();
}
function jjj(event:MouseEvent)
{
       abc.stopDrag();
}
abc.addEventListener(MouseEvent.MOUSE_DOWN,kkk);
abc.addEventListener(MouseEvent.MOUSE_UP,jjj);
 
 
 
                        滑鼠事件,鍵盤事件,按鈕之再探討
2012/03/26
項目
重點
說明
1.
滑鼠事件之MouseEvent.MOUSE_DOWN
 
function kkk(event:MouseEvent)
{
      abc.alpha=abc.alpha/2;
}   efg.addEventListener(MouseEvent.MOUSE_DOWN,kkk);
 
(1).kkk這個函數,經由任何滑鼠事件(MouseEvent)都可以去呼叫它執行指令。
(2).但對按鈕efg而言,則更進一步指明了,必須要是滑鼠事件當中的按下滑鼠(MouseEvent.MOUSE_DOWN) ,它才會去呼叫kkk函數。
(3).按鈕efg,首先它必須要用addEventListener,讓自己增加了事件傾聽者的功能,然後才有能力去呼叫kkk函數。
 
 
2.
滑鼠事件之MouseEvent.MOUSE_OVER
MOUSE_DOWN改成MOUSE_OVER,即可利用滑鼠滑過按鈕,來呼叫函數。
3
整個舞台(stage)就是一個大按鈕
先將MOUSE_OVER改回MOUSE_DOWN,再將efg改成stage,即可在舞台任意一處點選,呼叫函數。
4
鍵盤事件(KeyboardEvent):
基本上,鍵盤事件只有按下的動作KeyboardEvent.KEY_DOWN,但可以被按下的鍵,卻有很多個。
 
function kkk(event:KeyboardEvent)
{    
      abc.alpha=abc.alpha/2;
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,kkk);
5
所以鍵盤事件按下之後,必須用if指令來先區分是按下哪個鍵,才再執行不同的程式碼。
[注意]:在程式碼中,”= ”號代表指定的意思。但在條件式中,必須用”== ”來判斷真偽。
function kkk(event:KeyboardEvent)
{
      if(event.keyCode==Keyboard.LEFT)
      {
      abc.x=abc.x-20;
      }
      if(event.keyCode==Keyboard.RIGHT)
      {
      abc.x=abc.x+20;
      }
      if(event.keyCode==Keyboard.UP)
      {
      abc.y=abc.y-20;
      }
      if(event.keyCode==Keyboard.DOWN)
      {
      abc.y=abc.y+20;
      }
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,kkk);
                               文字方塊,音效
2012/04/02
項目
重點
說明
1.
文字方塊分三類:
(1).靜態文字
(2).輸入文字
(3).動態文字
(1).靜態文字:一經寫入就不太會再更改的文字,如標籤、標題。
(2).輸入文字:在互動介面上,需要使用者自行輸入的文字。
(3).動態文字:就是輸出文字,完成處理運算後要顯示結果之處
 
2.
利用程式來計算輸入兩數之和。
function kkk(event:MouseEvent)
{
      cc.text=String(Number(aa.text)+Number(bb.text));
}
abc.addEventListener(MouseEvent.MOUSE_DOWN,kkk);
 
(1).aa,bb,cc都是文字方塊的物件,所以要用點運算符將文字屬性text取出使用
(2).文字方塊當然最重要的就是顯示文字,但文字方塊本身還有大小、顏色等其他屬性,所以必須用點運算符將文字屬性取出使用
(3).文字屬性的資料型態是String,必須先用Number將其強迫轉換成實數才可相加。
(4).相加後的實數再用String將其轉換回來成文字。
(5).類別是複合式資料類型,而物件就是宣告為該類別之變數,因此可以使用點運算符。
3
加入音效
function kkk(event:MouseEvent)
{
      cc.text=String(Number(aa.text)+Number(bb.text));
      var plus:happy=new happy( );
      plus.play( );
}
abc.addEventListener(MouseEvent.MOUSE_DOWN,kkk);
 
(1).先從外部匯入音效檔至元件庫
(2).在元件庫選取該音效後點右鍵,再點選屬性
(3).勾選「匯出給ActionScript使用」,程式碼才能驅動該音效
(4).再將類別命名(通常是去掉預設名稱之「.mp3)
(5).在主程式中,先用var宣告一新音效物件,再令其播放。
 
 
4
利用選擇性敘述呈現結果是正數或者負數的兩種情況
 
function kkk(event:MouseEvent)
{
      cc.text=String(Number(aa.text)+Number(bb.text));
      if(Number(cc.text)>=0)
      {
             var plus:happy=new happy();
          plus.play();
      }
      else
      {
             var minus:dog=new dog();
          minus.play();
      }
}
abc.addEventListener(MouseEvent.MOUSE_DOWN,kkk);
5
練習:在舞台中加入dd動態文字方塊,可顯示”得到正數”或”得到負數”等文字。
 
6
何謂襯線字(Serif)、無襯線字(San Serif)
 
 
相簿設定
標籤設定
相簿狀態