Skip to main content

打打打爆小人頭!! 我的第一個FL1.1小遊戲 part 4

2. 計時器與重覆使用的程式:
FL1.1的Call(frame label):
Flash 4沒有function寫法,只有frame action,要重複利用的code是寫在一個無關的frame上,利用它的frame label來執行Call(frame label)指令模擬function。所以接下來主遊戲程式使用到的重複code,都將寫在一個timerFunc MovieClip中。


"timerFunc" MovieClip:
[圖10] 時間軸上配置,前三格為計時器程式後面留給Call()使用(善用空間..=P)

Frame 1:
timer = getTimer();
//getTimer()重出江湖嚕!^^,先抓取timer起始值


Frame 2:
if ((getTimer()-timer)>=1000) {
//當getTimer抓到一秒時,就回到frame1重新抓起始值;
if (_root.sec<=0) {
tellTarget ("/") {
gotoAndStop("end");
//遊戲結束
}
_root.end_txt = "You got total\n" add _root.score add " heads!!";
//string相加一定要使用add代替+
call("pause");
//將動畫停止
stop();
} else {
_root.sec--;
//減秒
gotoAndPlay(1);
}
}


Frame 3:
gotoAndPlay(2);
//不滿一秒就是重複回到frame 2


這樣一個簡單的計時器程式就完成了~~
接下來處理重複利用的程式:

Frame label 「beHit」: 判斷小人頭有無被打,會傳入hitNum告知被打號碼
myName = "head_mc_" add hitNum;
if (_root[myName].isActive) {
tellTarget ("/" add myName) {
gotoAndPlay("beHit");
//爆血動畫
}
_root.score++;
}


Frame label 「pause」: 暫停遊戲,由於小人頭動畫有特別簡化,所以可以很方便的利用簡短的程式將所有動畫停止
for (i=1; i<10; i++) {
myName = "head_mc_" add i;
if (_root[myName].isActive) {
//有動作的小人頭才要stop
tellTarget ("/" add myName) {
stop();
}
}
}
tellTarget ("/headsControler") {
gotoAndStop(1);
}
stop();
//這個stop是指計時器迴圈stop喔!


Frame label 「replay」: 判斷小人頭有無被打,會傳入hitNum告知被打號碼
for (i=1; i<10; i++) {
myName = "head_mc_" add i;
if (_root[myName]._currentframe != 1) {
//有動作的小人頭才要繼續play
tellTarget ("/" add myName) {
play();
}
}
}
tellTarget ("/headsControler") {
play();
}
play();
//這個play是指計時器迴圈play喔!


現在可以先測試Movie去看看倒數計時器有沒有效果囉!

to be continued...

Comments

  1. 怎麼不貼連結在MMUG呢?
    Flash on Mobile Device需要這樣的好文.

    ReplyDelete

Post a Comment

Popular posts from this blog

[Flex] PureMVC standard with Spring extensions

由於上次稍微玩了一下 Robotlegs 依賴注入(DI) 主導的 MVC 框架,而著名也使用依賴注入的 Java / Java EE 的 Spring framework 出了 for ActionScript 的版本,剛好在最近 Spring ActionScript 1.0 正式 release 了(想了解 Spring 是啥咪東東的話請自行找 google 大神),這個版本除了基本框架外,也包含了 Cairngorm 與 PureMVC 的外掛...想當然耳,就拿來測試一下用在 PureMVC 內的感覺囉!! 參考了 官方範例 中 PureMVC 唯二的範例原始檔,以下使用的是「設定檔依賴注入 facade 透過 addConfigSource() 的方式來 init 」:(其實除了 embed 外,都是外部載入) Online Demo with source code 工作環境:FlashBuilder, Flex SDK4 請下載 PureMVC Standard 版本 再下載 Spring ActionScript 最新版本後,除了 spring-actionscript-cairngorm 不需要外,都放到 /src 下(記得只需要 org 開始...),也別忘了lib 內的 swc 檔 copy 到 /libs 下 Spring 的 injection 並不像 Robotlegs 直接來個 [Inject] metadata 的自動化那樣方便,但是其冷血度(檔案的鬆偶程度)更勝後者!如果你要使用設定檔(applicationContext.xml) 來做注入的話,準備工作就挺多的...XD 依照 applicationContext.xml 內設定的方式分別寫入 constructor 或者是 setter 依賴注入(本範例統一使用 setter injection) 為了跟大家都沒關係所以都使用 interface 來處理,所以你會在範例中發現大家都有介面...(並沒有真的研究過 Spring,也許還有其他作法) 準備 compiler 時候要用的 classe。由於在 setter, getter 的寫法上都使用 interface,所以真正用到的 class 需要預先在輸出階段就打包到程式內。 基本上 PureMVC 類 class...

[AIR] JoSi FXGtoLayout

JoSi FXGtoLayout v0.3.0, Adobe AIR 3 runtime 這個又是一個 "就是" 系列懶人小工具,主要是針對 Adobe fxg 格式做分析轉成 Mobile 開發用的視圖程式碼,加速畫面配置使用。 為什麼會製作這個工具,原因主要是本人在使用的 Corona SDK 與 Titanium SDK 都沒有好用的視覺化編輯工具。一般設計師產出 layout 檔會使用 PhotoShop 來製作,在不多花錢的原則下,畫面對齊的基準就是其輸出的 fxg 資料做對應,如果要一筆一筆將資料鍵入,做久也是會膩的,所以花了點時間將這個工具做出來...