2008年8月29日 星期五

正确学会Flash 在游戏进行中显示游戏倒数秒数

在遊戲進行中顯示遊戲倒數秒數在游戏进行中显示游戏倒数秒数

這個遊戲的時間總長度我們設定為1 分鐘, 畫面中會顯示逐秒倒數的剩餘時間, 讓玩家知道還可以玩多久。这个游戏的时间总长度我们设定为1分钟,画面中会显示逐秒倒数的剩余时间,让玩家知道还可以玩多久。 當剩餘時間變為0 時, 就會進入結束畫面, 舞台上會出現GameOver 字樣, 表示遊戲已經結束了。当剩余时间变为0时,就会进入结束画面,舞台上会出现GameOver字样,表示游戏已经结束了。


接下來我們要安排畫面中顯示剩餘秒數的文字框, 並且製作遊戲結束畫面, 最後再用程式碼設定遊戲計時器, 以及切換到遊戲結束畫面的動作。接下来我们要安排画面中显示剩余秒数的文字框,并且制作游戏结束画面,最后再用程式码设定游戏计时器,以及切换到游戏结束画面的动作。

建立顯示時間文字框 建立显示时间文字框

請先將場景2所有圖層延續到影格2, 然後選取剩下時間圖層, 在畫面上的剩下時間欄位內, 用文字工具 建立一個動態文字框, 並將實體名稱命名為"timer_txt", 稍後可利用程式碼讓文字框顯示剩餘的時間:请先将场景2所有图层延续到影格2,然后选取剩下时间图层,在画面上的剩下时间栏位内,用文字工具建立一个动态文字框,并将实体名称命名为"timer_txt",稍后可利用程式码让文字框显示剩余的时间:


建立遊戲結束畫面 建立游戏结束画面

接著製作顯示GameOver 的遊戲結束畫面, 請在得分圖層上方建立遊戲結束圖層, 在影格2 插入關鍵影格, 從元件庫遊戲結束元件放置到舞台。接着制作显示GameOver的游戏结束画面,请在得分图层上方建立游戏结束图层,在影格2插入关键影格,从元件库游戏结束元件放置到舞台。 為方便之後用程式碼來控制播放的影格位置, 我們在影格2 建立"end" 標籤, 當時間倒數完之後可設定跳到這個標籤位置來播放:为方便之后用程式码来控制播放的影格位置,我们在影格2建立"end"标签,当时间倒数完之后可设定跳到这个标签位置来播放:


設定遊戲計時器 设定游戏计时器

要製作動畫中的時間計時器, 時常會應用ActionScript 的Timer 類別。要制作动画中的时间计时器,时常会应用ActionScript的Timer类别。 在設定時, 可以指定計時器每次計時的間隔時間(單位為毫秒, 千分之一秒), 以及要計時多少次便停止, 其撰寫格式如下:在设定时,可以指定计时器每次计时的间隔时间(单位为毫秒,千分之一秒),以及要计时多少次便停止,其撰写格式如下:

Timer(間隔時間, 計時次數) Timer(间隔时间,计时次数)

例如我們在範例中將設定為Timer(1000, 60), 就表示每1 秒(1000 毫秒) 計時一次, 共計時60 次。例如我们在范例中将设定为Timer(1000, 60),就表示每1秒(1000毫秒)计时一次,共计时60次。


建立計時器並顯示倒數秒數 建立计时器并显示倒数秒数

請在場景2AS圖層的影格1, 繼續建立以下程式碼, 設定遊戲計時器, 並且在timer_txt 文字框顯示倒數秒數。请在场景2AS图层的影格1,继续建立以下程式码,设定游戏计时器,并且在timer_txt文字框显示倒数秒数。

Step 1首先宣告預設的遊戲時間為60 秒, 並且用Timer 類別建立計時器, 設定每秒傳送一次事件, 要重複60 次: Step 1首先宣告预设的游戏时间为60秒,并且用Timer类别建立计时器,设定每秒传送一次事件,要重复60次:

A 段 A段
 //宣告變數time 類別為整數, 初始值為60, 做為遊戲的預設時間60 秒var time: int = 60;         /*宣告變數gameTimer 類別為計時器, 並且用new 建立Timer 實體, 時間間隔為1000 毫秒, 計時次數為60 次, 也就是每秒鐘計時1 次、共計時60 次*/ var gameTimer: Timer = new Timer (1000, 60); //宣告变数time类别为整数,初始值为60,做为游戏的预设时间60秒var time: int = 60; /*宣告变数gameTimer类别为计时器,并且用new建立Timer实体,时间间隔为1000毫秒,计时次数为60次,也就是每秒钟计时1次、共计时60次*/ var gameTimer: Timer = new Timer (1000, 60); 


Step 2接著指定計時器事件, 設定當計時器開始時, 要執行的函式動作。 Step 2接着指定计时器事件,设定当计时器开始时,要执行的函式动作。 我們讓計時器開始執行後, 就將目前剩餘的時間顯示在timer_txt 文字框上!我们让计时器开始执行后,就将目前剩余的时间显示在timer_txt文字框上!

B 段 B段
 //設定TimerEvent 計時器事件, 當計時器開始時, 就執行tickGame 函式gameTimer. addEventListener ( TimerEvent.TIMER , tickGame);    //設定tickGame 函式, 類別為計時器事件function tickGame( event:TimerEvent ): void //設定當函式執行時便會將time 變數逐次減1, 產生倒數計時的效果 time = time-1;   /*指定timer_txt 類別為text (文字), 利用toString() 函式將 time 的內容顯示到timer_txt*/   timer_txt .text = time .toString ();  } //设定TimerEvent计时器事件,当计时器开始时,就执行tickGame函式gameTimer. addEventListener ( TimerEvent.TIMER , tickGame); //设定tickGame函式,类别为计时器事件function tickGame( event:TimerEvent ): void //设定当函式执行时便会将time变数逐次减1,产生倒数计时的效果time = time-1; /*指定timer_txt类别为text (文字),利用toString()函式将time的内容显示到timer_txt*/ timer_txt .text = time .toString (); } 


設定時間結束要執行的函式 设定时间结束要执行的函式

接著設定當計時器計時完畢時, 要讓動畫跳到end 影格標籤處, 並且停止放映。接着设定当计时器计时完毕时,要让动画跳到end影格标签处,并且停止放映。 請繼續輸入下列程式碼:请继续输入下列程式码:

C 段 C段
 //設定TimerEvent 計時器事件, 當計時完畢時, 就執行endGame 函式gameTimer .addEventListener ( TimerEvent.TIMER_COMPLETE , endGame);    //設定endgame 函式, 類別為計時器事件function endGame( event:TimerEvent ): void { gotoAndStop ( "end" );       //跳到end 影格} //设定TimerEvent计时器事件,当计时完毕时,就执行endGame函式gameTimer .addEventListener ( TimerEvent.TIMER_COMPLETE , endGame); //设定endgame函式,类别为计时器事件function endGame( event:TimerEvent ): void { gotoAndStop ( "end" ); //跳到end影格} 


讓計時器開始計時 让计时器开始计时

時間計時器的開始和結束要執行的函式都設定好了之後, 請再繼續輸入下列程式碼, 讓計時器開始運作:时间计时器的开始和结束要执行的函式都设定好了之后,请再继续输入下列程式码,让计时器开始运作:

D 段 D段
 //用start() 函式, 讓計時器實體gameTimer 開始執行gameTimer .start (); //用start()函式,让计时器实体gameTimer开始执行gameTimer .start (); 

到此就完成遊戲計時器的設定了, 您可以按下Ctrl + Enter 鍵發佈動畫, 播放看看計時器的效果:到此就完成游戏计时器的设定了,您可以按下Ctrl + Enter键发布动画,播放看看计时器的效果:

沒有留言: