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

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

系統(tǒng) 1758 0

HI,經(jīng)過了昨天瘋狂的理論轟炸,腦袋還清新不?其實(shí)昨天的內(nèi)容很重要,只要昨天那兩點(diǎn)理解透了,以后再制作游戲就是一些算法問題,其實(shí)做游戲不難.最難的是想法而已.今天繼續(xù),依舊是老提綱:
? ? ?1,瞄準(zhǔn)鏡的產(chǎn)生 ? (類似attachMovie在AS3中該如何表現(xiàn)?)
? ? ?2,飛翔的氣球 ? ?(怎么飛?隨機(jī)飛,隨機(jī)速度又怎么表現(xiàn)?該如何記時(shí)?)
? ? ?3,打氣球 ? (怎么算打中?打中后,氣球爆炸怎么表現(xiàn)?聲音呢?)
? ? ?4,給我個(gè)計(jì)數(shù)器 ?(計(jì)算打中的,飛走的,甚至擊中概率)
? ? ?5,成與敗 ? (怎么算勝利?怎么算失敗?如何表現(xiàn))
? ? ?6,完善 ? ? (結(jié)尾)
3,打氣球 ? (怎么算打中?打中后,氣球爆炸怎么表現(xiàn)?聲音呢?)
? ? ?瞄準(zhǔn)鏡能動(dòng)了,氣球能飛了,速度也各具特色.那么下一步就該是打氣球了,哈哈.打中不難,難的是打中后的特效表現(xiàn),讓我在編寫的時(shí)候卡了一下.不過好消息是我會(huì)告訴你,所以你就不用卡了.繼續(xù)昨天的代碼
? ?我把鼠標(biāo)點(diǎn)擊到氣球算打中目標(biāo),那么我們只需要監(jiān)聽氣球是否被鼠標(biāo)點(diǎn)擊到就OK了.打中后,首先考慮的是,需要在舞臺(tái)上移除掉當(dāng)前被點(diǎn)擊的氣球,然后就是移除監(jiān)聽事件,所以代碼為:
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);
}
? ? 不過我們需要等等,加這代碼,因?yàn)槲倚枰S富的被打中的形態(tài),還要出聲音.聲音先不管,我們先在做一個(gè)氣球被打的樣子.如圖:
? ?

? ? 我這里設(shè)置的是到第8貞Alpha為零,兩頭的actionscript都是stop();第2貞標(biāo)簽是: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);
?}
}
? ?可以注意到,在監(jiān)聽打中后,又加了個(gè)Event.ENTER_FRAME,這主要是為了豐富打中效果而做的,也就是打中后,氣球一邊往下掉,一邊變透明.好了,加上音樂,感覺更好,隨便導(dǎo)入一段聲效.再加入以下的代碼:
? ?var popSound:pop = new pop();
? ? popSound.play();
?
? ? ?pop就是在庫里聲音樣本的Linkage名字.這樣到第三步,基本就已經(jīng)完成一個(gè)打氣球游戲了.
源代碼:

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

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


? ? 然后在lose Function里加代碼:
//我是根據(jù)飛走數(shù)量來決定血條,注意此代碼需要加在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));
?}
? ? ?加上此代碼后,你可以測(cè)試一下,飛走3個(gè)氣球就會(huì)TARCE出YOU DIE.也表示這一步的失敗做法我們算是完成了。下面說成功,我把氣球的總數(shù)改為20個(gè),只要打中5個(gè)就算贏,所以修改代碼,接著根據(jù)fireInNumber的數(shù)量來決定是否成功.那么就在shoot ?function里加入代碼:
if(fireInNumber>=5){
? ?trace("YOU WIN!");
? ?t.stop();
?}
? ? ?這段比較簡單,這樣這成與敗算是完成了.源代碼下載:

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

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

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲精品一区二区中文 | 国产真实强j视频在线观看 国产真实偷乱视频在线观看 | 99热99re8国产在线播放 | 99热最新网站地址获取 | 欧美精品专区第1页 | 手机在线中文字幕 | 香蕉一区 | 国语精品91自产拍在线观看二区 | 久久免费观看视频 | 97久久精品| 久久精品国产福利 | 国产精品久久免费视频 | 欧美亚洲一区二区三区在线 | 亚洲欧洲国产成人精品 | 欧美亚洲国产精品久久 | a毛片免费播放全部完整 | 日韩欧美亚洲每的更新在线 | 色淫影院 | 岛国大片在线观看 | 青青久操视频 | 四虎影视免费在线观看 | 成年人一级黄色片 | 欧美精品亚洲精品日韩专 | 免费欧洲毛片a级视频老妇女 | 操天天| 欧美成人天天综合天天在线 | 欧美综合色网 | 在线观看国产精品日本不卡网 | 神马视频我不卡 | 精品一区 二区三区免费毛片 | 中文字幕色综合久久 | 992人人草 | 热99在线视频 | 四虎网站最新地址 | 色狠狠色综合吹潮 | 搜毛片| 澳门久久精品 | 久久精品加勒比中文字幕 | 黄色国产视频 | 91在线看视频 | 精品一久久香蕉国产线看观看下 |