【flash】 水果忍者
界面展示
源代碼鏈接
鏈接:https://pan.baidu.com/s/1Fm4lnxKlMNYWg8JFngHeTg
提取碼:4u6p
主要內(nèi)容
需要幾個類
1.刀刃類
2.水果類
3.水果殘骸類
游戲主循環(huán)
類的功能
Blade 刀刃類 進(jìn)行刀刃繪制 和 水果的碰撞檢測
Fruits 水果類 里面包含了水果和炸彈
FruitsWaste 水果殘骸 水果死亡后產(chǎn)生的東西
GlobalInput 全局輸入類 輸入的東西會儲存在這里
Sound_module 聲音模塊 一開始的那個調(diào)整聲音大小用的
Tool 工具類 進(jìn)行各種計(jì)算,或者常用的函數(shù)
主函數(shù)
除去界面的主函數(shù)
1.水果生成
2.升級檢測
3.Tick方法運(yùn)行
4.刀刃 和 水果進(jìn)行碰撞檢測
5.死亡處理
6.改變界面的文字
7.死亡處理
刀刃類
tick函數(shù) 每幀執(zhí)行函數(shù)
SampleGet 獲得采樣數(shù)組函數(shù)
onDraw 繪制函數(shù)
tick函數(shù)相當(dāng)于 游戲的主函數(shù)
1.進(jìn)行位置采樣
2.繪制直線
3.播放聲音
刀刃
刀刃是一個 點(diǎn)的稀疏的數(shù)組。
鼠標(biāo)移動的時(shí)候?qū)ζ浣?jīng)過的點(diǎn)進(jìn)行記錄采樣,用采樣后的點(diǎn)進(jìn)行各種操作。
采樣點(diǎn) 用隊(duì)列保存,每時(shí)間片采樣 就會剔除最先進(jìn)來的那個,然后對其繪制 造成了一個延遲效果。
和水果碰撞檢測的時(shí)候,會吧稀疏的點(diǎn)數(shù)組 擴(kuò)展成一個 密集的數(shù)組。
1.進(jìn)行位置采樣
判斷鼠標(biāo)按下
如果按下 {
如果采樣數(shù)組 點(diǎn)的數(shù)量大于9
隊(duì)列出列,以及在隊(duì)列的末尾添加新的鼠標(biāo)點(diǎn)
否則
就直接直接添加}
否則
采樣數(shù)組變?yōu)榭?/p>
接下來是將采樣數(shù)組進(jìn)行擴(kuò)充。
根據(jù) 第i個點(diǎn) 和 第i+1 個點(diǎn)求得一個單位向量。用這個單位向量 進(jìn)行擴(kuò)展。
2.繪制刀刃
function onDraw(){//繪制刀刃var i,list1 = this.SampleListthis.contain.graphics.clear()if (list1.length>=1){for (i=1;i<list1.length;i++){this.contain.graphics.lineStyle(10,0xff00ff)this.contain.graphics.moveTo(list1[i-1][0],list1[i-1][1])this.contain.graphics.lineTo(list1[i][0],list1[i][1])}}}3 碰撞檢測
在第10幀 吧刀刃的擴(kuò)展后點(diǎn)數(shù)組 和所有水果進(jìn)行碰撞檢測。
水果類 和 水果死亡類
Fruits FruitsWaste
根據(jù)傳入來的 type生成對應(yīng)的圖片。
tick函數(shù) 沒幀執(zhí)行函數(shù) 。
move 函數(shù) 處理移動 和旋轉(zhuǎn)
getImage 函數(shù) 根據(jù)type或者圖片
hitCheck 碰撞檢測。用當(dāng)前的水果對象 和傳進(jìn)來的刀刃點(diǎn)數(shù)組進(jìn)行碰撞
destroy 調(diào)用 destroySpawn 用來產(chǎn)生new出來 FruitsWaste 產(chǎn)生水果死亡特效
FruitsWaste
根據(jù)傳入的type 產(chǎn)生對應(yīng)的特效
和讓他下落
一些全局類 GlobalInput Tool
GlobalInput
Tool
static public function randint(min,max):int{ //取得一定范圍內(nèi)的隨機(jī)數(shù)return Math.round(Math.random()*(max-min))+min}static public function randfloat(min,max):Number{ return Math.random()*(max-min)+min} //向量模static public function getVectorLenght(v){return Math.sqrt(v[0]*v[0]+v[1]*v[1]) //如果是二維數(shù)組定義,怎么可以直接乘} //向量單位化static public function UnitaryVector(v){var len = Tool.getVectorLenght(v)return [v[0]/len,v[1]/len]}總結(jié)
以上是生活随笔為你收集整理的【flash】 水果忍者的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DLP 3D打印技术有什么优点
- 下一篇: matlab求刚度,求整体刚度矩阵mat