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