大家還記得童年時代玩的搶手棋嗎?通過擲兩顆骰子,來決定我們在棋盤上走的步數,先到終點者為勝利,它伴隨我們渡過了美好的童年時代,現在回味起來也感到非常有趣,那麼我們不妨用flash來做一個類似的搶手棋,一起回憶快樂的童年,同時也鍛鍊一下自己的flash製作能力。文章末尾提供fla源文件下載。 整個遊戲最終完成後,主界面如圖1所示:
圖1 棋盤由一些標有數字的方塊組成,數字代表走棋的順序,左下角是我們遊戲的兩個主角,他們兩個要爭奪到達終點的第一名,本遊戲的重點設置在標識著28的方塊,您也可以擴大遊戲規模,製作方法是完全一樣的。在數字27的旁邊我們可以看到一個小方框,它是遊戲中的骰子,用滑鼠點擊它就可以擲骰子開始玩了,棋盤上有幾個方塊比較特殊,上面沒有標識數字,而是標識了一些説明性的文字,代表了如果主角跳到了此方塊,將要執行的一些動作,這樣可以給遊戲增強一些趣味性,下面我們就開始遊戲的製作。 佈置棋盤: 首先在主場景中將默認的圖層layer1更名為”背景”,然後我們按照如圖2所示佈置好我們的棋盤: 圖2 角色製作: 此步要來製作我們遊戲中的兩位主角,藍臉和紅臉,他們將爭奪誰第一個到達終點。 1. 選取newàsymbol功能表命令新建一個graphic組件,命名為”紅臉”,在組件編輯狀態下從外部導如一幅紅臉的圖片,並按ctrl+f8將其打散,如圖3所示: 2. 接下來製作紅臉在運動中的伸縮動畫。選取new->symbol新建一個grapgic組件,命名為”活動的紅臉”,在”組件編輯狀態下,將組件”紅臉”拖到編輯區中,然後在圖層layer1的第7幀和第13幀分別插入兩個關鍵幀,回到第7幀關鍵幀,使用縮放工具將紅臉對象在垂直方向上進行適當的縮小,如圖4所示: 3. 然後分別在第1幀和第7幀,第8幀和第13幀之間建立motion運動過渡,時間線如圖5所示: 圖5 4. 再新建一個movieclip組件,命名為”紅臉主角”,將組件”活動的紅臉”放到編輯區中,這個mc的主要作用是模擬在整個棋盤上的運動,也就是順著棋盤上的數字方塊走一圈,用幾個motion就可以實現,從圖1的棋盤中我們可以看出,要順方塊走一圈,需要拐6個彎,所以分別在第100幀,第185幀,第270幀,第326幀,第375幀,第420幀插入六個關鍵幀,從第1幀開始,直到最後一幀,分別對對象做相應的motion運動過渡,運動方向可以參考圖1中的棋盤佈局。 5. 新建一個圖層,在第一關鍵幀加as:stop();然後每隔15幀插入一個關鍵幀,每個關鍵幀加as: /:u = Number(/:u)+1;,異地是變數值遞增1. 6. 按照1—5步驟的方法,製作組件”藍臉”,‘活動的藍臉“,“藍臉主角”,如圖6所示: 7. 主角做好後,回到主場景中,新建兩個圖層,分別重命名為紅臉和藍臉,並將組件”紅臉主角”和”藍臉主角”分別放到相應的圖層中,如圖7所示: 圖7 8. 在properties面板中分別給對象”紅臉”和”藍臉”起instance名為hong和lang. 骰子製作: 此步我們來製作遊戲中決定主角每次所走步數的骰子。 1. 新建一個graphic組件並命名為主體,然後在編輯區中用矩形工具畫一個填充色為白色,邊框為黑色的正方形,作為擲骰子前骰子的狀態,如圖8所示: 2. 在建立一個graphic組件,並命名為點,也就是作為骰子上的點,用橢圓工具畫一個黑色的正圓,如圖9所示: 3. 新建一個movie clip組件,命名為“合成的點”,在這個mc裏來製作從一點到六點的不同狀態。將圖層layer1的第1到第6幀全部設置為關鍵幀,然後分別將組件”點”拖到編輯區中,第一幀放一個,第二幀放兩個,依此類推,第六幀放六個,然後用align工具排列好,如圖所示: 4. 再新建一個圖層layer2,在第1幀加as: /:dianzhi = 1;, 在第2幀加as: /:dianzhi = 2;, 在第3幀加as: /:dianzhi = 3;, 在第4幀加as: /:dianzhi = 4;, 在第5幀加as: /:dianzhi = 5;, 在第6幀加as: /:dianzhi = 6;, 在第7幀加如下as: if (Number(/:red) == 1) { tellTarget ("/re") { gotoAndStop(1); } /:red = 0; } else { tellTarget ("/re") { gotoAndPlay(2); } /:red = 1; } //通過變數red的不同值,觸發不同的動作,並對red進行不同的設置 5. 因為我們的骰子需要通過滑鼠點擊來觸發,所以需要用到按鈕,確切的説是用一個隱形按鈕配合前面的主體對象,就可以實現。所以我們新建一個button組件,並命名為觸發器,只在hit幀插入關鍵幀,然後畫一個矩形,大小和前面的主體組件差不多就可以,如圖16所示: 圖16 6. 下面我們就用前面準備好的組件來製作骰子控制器。新建一個movie clip組件,命名為” 合成的控制器”,進入組件編輯狀態後,建立三個圖層,分別命名為layer1,layer2和layer3. 7. 將組件”主體”拖放到layer1的第1幀中,然後將組件”觸發器”拖放到圖層layer3的第1幀中,並調整位置和主體重疊,然後加入as:stop();,如圖17所示: 圖17 8、在圖層layer1的第15幀插入一個關鍵幀,做一個主體對象從右到左的旋轉移動motion,幀範圍是1—15幀之間,然後將按f5將幀延續到30幀,在圖層layer2的第15幀也插入一個關鍵幀,將組件”合成的點”拖動到主體的上面,然後在properties面板上命名為”dian”,並也同樣延續到30幀,如圖18所示: 圖18 8. 回到圖層layer3,在第15幀加入as: tellTarget ("dian") { gotoAndStop(random(7)); } //控制骰子的隨機跳轉,以決定顯示幾點 在第30幀加入as: if (Number(/:red) == 1) { tellTarget ("/kong") { gotoAndStop(4); } } else { tellTarget ("/kong") { gotoAndStop(2); } } //根據變數red的值的不同,跳轉到組件kong的不同幀 在第43幀加入as: stop(); 最後的時間線如圖19所示: 圖19 9. 回到主場景,新建一個圖層”隨機”,將組件”合成的控制器”放到27號方塊的右邊,在properties面板中命名為”re”,如圖20和圖21所示: 圖20 圖21 情節組件製作: 1.建六個movie clip組件,分別命名為情節1到情節6. 2.情節1加as: tellTarget ("/lang") { gotoAndStop("h1"); } stop();
給情節2加as: tellTarget ("/lang") { gotoAndStop("h2"); } stop(); 給情節3加as: tellTarget ("/lang") stop(); //調用不同的情節,實現角色的跳轉 3.情節4加as: tellTarget ("/hong") { gotoAndStop("h1"); } stop(); 給情節5加as: tellTarget ("/hong") { gotoAndStop("h2"); } stop(); 給情節6加as: tellTarget ("/hong") { gotoAndStop("h3"); } stop(); //調用不同的情節,實現角色的跳轉 遊戲控制器的製作: 到此步為止,遊戲的所有前期工作都完成了,最後的任務是給遊戲加控制器了,這也是遊戲的核心部分,擔負著控制遊戲順利進行的任務。 1. 新建一個movie clip組件,命名為”控制紅臉”,給組件添加如下as: if (Number(/:dianzhi) == Number(/:u)) { tellTarget ("/kong") { gotoAndStop(3); } /:red = 1; /:u = 0; } else { tellTarget ("/hong") { nextFrame(); } } //根據全局變數red和u的值,對角色紅臉進行控制 2. 再新建一個movie clip組件,命名為”控制藍臉”,給組件添加如下as: if (Number(/:dianzhi) == Number(/:u)) { tellTarget ("/kong") { gotoAndStop(3); } /:red = 1; /:u = 0; } else { tellTarget ("/hong") { nextFrame(); } } //根據全局變數red和u的值,對角色藍臉進行控制 3. 最後再次建一個movie clip組件,命名為”主控制器”,進入組件編輯狀態後,在圖層layer1上添加5個關鍵幀,在第1個關鍵幀上添加as:stop();. 4. 在第2個關鍵幀上將組件”控制紅臉”拖到編輯區中,同樣再第4關鍵幀中將組件”控制白臉”也拖到編輯區中。 5. 給第三關鍵幀加as: tellTarget ("/re") { gotoAndPlay(2); } 6.給第5關鍵幀加as: tellTarget ("/re") { gotoAndPlay(1); } 7.最後時間線如圖22所示: 圖22 8. 最後回到主場景中,新建一個圖層” 控制中樞”,將組件”主控制器”拖到主場景中,最後的時間線如圖23所示: 圖23
到此為止遊戲就製作完成了,您可以開始回憶一下童年時代的遊戲了,本遊戲製作過程雖然有點複雜,但是用到的action並不多,關鍵是如何組織遊戲和進行遊戲的設計及構思,這才是最關鍵的。 |