亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

as3游戲開發之打氣球系列(二)

系統 2006 0

HI,經過了昨天瘋狂的理論轟炸,腦袋還清新不?其實昨天的內容很重要,只要昨天那兩點理解透了,以后再制作游戲就是一些算法問題,其實做游戲不難.最難的是想法而已.今天繼續,依舊是老提綱:
? ? ?1,瞄準鏡的產生 ? (類似attachMovie在AS3中該如何表現?)
? ? ?2,飛翔的氣球 ? ?(怎么飛?隨機飛,隨機速度又怎么表現?該如何記時?)
? ? ?3,打氣球 ? (怎么算打中?打中后,氣球爆炸怎么表現?聲音呢?)
? ? ?4,給我個計數器 ?(計算打中的,飛走的,甚至擊中概率)
? ? ?5,成與敗 ? (怎么算勝利?怎么算失敗?如何表現)
? ? ?6,完善 ? ? (結尾)
3,打氣球 ? (怎么算打中?打中后,氣球爆炸怎么表現?聲音呢?)
? ? ?瞄準鏡能動了,氣球能飛了,速度也各具特色.那么下一步就該是打氣球了,哈哈.打中不難,難的是打中后的特效表現,讓我在編寫的時候卡了一下.不過好消息是我會告訴你,所以你就不用卡了.繼續昨天的代碼
? ?我把鼠標點擊到氣球算打中目標,那么我們只需要監聽氣球是否被鼠標點擊到就OK了.打中后,首先考慮的是,需要在舞臺上移除掉當前被點擊的氣球,然后就是移除監聽事件,所以代碼為:
function shoot(e:MouseEvent):void{
?var tempBall:MovieClip = e.currentTarget as MovieClip; ?
?tempBall.removeEventListener(Event.ENTER_FRAME,ballFly);
?tempBall.removeEventListener(MouseEvent.CLICK,shoot);
?tempBall.parent.removeChild(tempBall);
}
? ? 不過我們需要等等,加這代碼,因為我需要豐富的被打中的形態,還要出聲音.聲音先不管,我們先在做一個氣球被打的樣子.如圖:
? ?

? ? 我這里設置的是到第8貞Alpha為零,兩頭的actionscript都是stop();第2貞標簽是:plays.
? ? 所以接剛才的代碼里,重新修改為:
function shoot(e:MouseEvent):void {
?var tempBall:MovieClip = e.currentTarget as MovieClip;
?tempBall.gotoAndPlay("plays");
?tempBall.addEventListener(Event.ENTER_FRAME,dieEnter);
?tempBall.removeEventListener(Event.ENTER_FRAME,ballFly);
?tempBall.removeEventListener(MouseEvent.CLICK,shoot);
}
function dieEnter(e:Event):void {
?var tempBall:MovieClip = e.currentTarget as MovieClip;
?var gravity:int = 20;
?var ymov:int = tempBall.y + gravity;
?tempBall.y = ymov;
?if (tempBall.y > stage.stageHeight) {
? ?tempBall.parent.removeChild(bb);
? ?tempBall.removeEventListener(Event.ENTER_FRAME, dieEnter);
?}
}
? ?可以注意到,在監聽打中后,又加了個Event.ENTER_FRAME,這主要是為了豐富打中效果而做的,也就是打中后,氣球一邊往下掉,一邊變透明.好了,加上音樂,感覺更好,隨便導入一段聲效.再加入以下的代碼:
? ?var popSound:pop = new pop();
? ? popSound.play();
?
? ? ?pop就是在庫里聲音樣本的Linkage名字.這樣到第三步,基本就已經完成一個打氣球游戲了.
源代碼:

下載文件
點擊這里下載文件
4,給我個計數器 ?(計算打中的,飛走的,甚至擊中概率)
? ? ?從這一步開始,就需要對以前的代碼進行反工修改.所謂記數器,就是知道自己打中了幾個,飛走了幾個。對于贏或者輸會在下一步說.這里,我們需要在舞臺放放置兩個動態文本,大小為12,黑色字體.分別命名為:fireIn(打中),fireOut(飛走)
? ? ?每打中一個,就為fireIn加一個,飛走一個,fireOut也是.那么好,需要在程序里加以下代碼
var fireInNumber:int=0;
var fireOutNumber:int=0;
//以下的加到lose function
fireOutNumber ++;
fireOut.text = fireOutNumber.toString();
//以下的加到shoot function
fireInNumber ++;
?fireIn.text = fireInNumber.toString();
? ? 擊中概率那個簡單,就是相除就可以,就不說了.
源文件:

下載文件
點擊這里下載文件
?5,成與敗 ? (怎么算勝利?怎么算失敗?如何表現)
? ? 如何算成功?如何算失敗?我們要先說說怎么算失敗.我這里打算放一個血條,3格血,飛走一個,就掉一格,全部掉完,算輸.當然直接算飛走3個也可以,不過豐富一點好,以后就知道怎么做了.接著說成功,那方法就多了,比如10個里,打中了一個算贏.哈哈,這樣好象過于無恥了點。不過目前都是講概念,怎么實行還是看你自己怎么編寫。
? ?先在舞臺上搞一個血條.像這樣的


? ? 然后在lose Function里加代碼:
//我是根據飛走數量來決定血條,注意此代碼需要加在fireOutNumber ++的后面.
if (fireOutNumber >= 3) {
? ?t.stop();
? ?blood.gotoAndStop((fireOutNumber+1));
? ?trace("YOU DIE!");
? ? balls.removeEventListener(Event.ENTER_FRAME,ballFly);
? ? balls.removeEventListener(MouseEvent.CLICK,shoot);
? ? removeChild(content_mc);
?} else {
? ?blood.gotoAndStop((fireOutNumber+1));
?}
? ? ?加上此代碼后,你可以測試一下,飛走3個氣球就會TARCE出YOU DIE.也表示這一步的失敗做法我們算是完成了。下面說成功,我把氣球的總數改為20個,只要打中5個就算贏,所以修改代碼,接著根據fireInNumber的數量來決定是否成功.那么就在shoot ?function里加入代碼:
if(fireInNumber>=5){
? ?trace("YOU WIN!");
? ?t.stop();
?}
? ? ?這段比較簡單,這樣這成與敗算是完成了.源代碼下載:

下載文件
點擊這里下載文件
6,完善 ? ? (結尾)
? ? ?完善,說起來簡單,但是其實非常麻煩.我在制作一個項目的時候,最后階段的調試是非常麻煩的.你可以回頭看看以上的幾個源代碼都是有非常大的問題,封裝性不夠強.因為我是邊寫文章,邊寫代碼.而且寫起來太煩瑣.但是,我覺得只要你懂的大意,就可以了.概念性大于實際操作.關于其他的打飛機,打潛水艇游戲等等,基本上都差不多,唯一的不同就是算法不同.怪物出現的方式不同.
? ? ? 你知道一個程序的完善靠的是什么?是經驗,有很多人老說優化問題,我個人認為,這也是一個個人經驗問題,習慣問題,有良好的編程習慣,對一些數據知道什么時候監聽,什么時候移除監聽.因為,你要知道,有的監聽不用移除也是沒問題的,只不過會多占用CPU資源,這一切的解決都需要你自己的對代碼研究和制作的經驗.
以下是修復后完整的源代碼:

下載文件
點擊這里下載文件
ps:以后會介紹更多的游戲制作方法,不過先在這里沒有把游戲完整的介紹完說聲抱歉,因為還有數據顯示啊,重新玩一次等等.不過別急,這個只打個底,以后講游戲,就不再那么詳細了,只會把大概意思說一下,然后直接上代碼.飯總要一口一口的吃.
本文轉自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/3213.html

as3游戲開發之打氣球系列(二)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久亚洲精品一区二区三区浴池 | 国产激情视频趣趣在线观看的 | 欧美体内she精视频毛片 | 日本亚洲欧洲免费无码 | 青青青国产精品手机在线观看 | 欧美兽皇video | 农村妇女又色黄一级毛片 | 国产自精品在线 | 天天操人人爱 | 午夜不卡在线 | 中文字幕日韩高清 | 国产免费一区二区 | 性夜黄a爽爽免费视频国产 性夜影院爽黄a爽免费看网站 | 久久午夜夜伦伦鲁鲁片 | 日韩综合在线 | 国产精品久久久尹人香蕉 | 精品综合 | 国产一级特黄aaaa大片野外 | 男女羞羞免费视频 | xxx中国网站xxx | 久久九九热re6这里有精品 | 日本1区二区三区公司 | 国产精品视频第一区二区 | 国产成人麻豆精品 | 亚洲在线观看 | 亚洲日韩中文字幕在线播放 | 欧美一级毛片香蕉网 | 国产精品成人观看视频国产奇米 | 国产日韩欧美综合一区二区三区 | 99热色| 奇米影视资源 | 4hu影院最新地址www | 爱操在线视频 | 超91精品手机国产在线 | 国产亚洲日本 | 午夜激情婷婷 | 亚洲欧美日韩在线观看二区 | 欧美综合成人网 | 曰鲁夜鲁鲁狠狠综合 | 天天添天天干 | 欧美日视频 |