lufylegend引擎制作接水果小游戏
生活随笔
收集整理的這篇文章主要介紹了
lufylegend引擎制作接水果小游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先判斷是否為手機端
如果是L打頭的方法 或者類 就說明是這個框架自帶的_
if(LGlobal.canTouch)
{
//將屏幕設置為全屏充滿
LGlobal.stageScale = LStageScaleMode.EXACT_FIT;
LSystem.screen(LStage.FULL_SCREEN);
}
然后設置主頁面
<div id="legend"></div>JS部分
//游戲的初始化 初始化完畢后會運行主函數maininit(10,'legend',800,450,main);//初始化一些變量 和 一些游戲的素材var imgData = [{name:"back",path:"./images/back.jpg"},{name:"player",path:"./images/player.png"},{name:"item0",path:"./images/item0.png"},{name:"item1",path:"./images/item1.png"},{name:"item2",path:"./images/item2.png"},{name:"item3",path:"./images/item3.png"},{name:"item4",path:"./images/item4.png"},{name:"item5",path:"./images/item5.png"},{name:"item6",path:"./images/item6.png"},{name:"item7",path:"./images/item7.png"}]var imglist; //放素材// 背景層、人物層、物品層、游戲結束層、游戲素材加載層 ps圖層var backLayer,playerLayer,itemLayer,overLayer,LoadingLayer;//人物var hero;//人物速度var step=50,stepindex=0;//積分var point = 0,pointTxt;//生命值var hp = 1,hpTxt;//主函數function main(){//實例化一個進度條LoadingLayer = new LoadingSample4()//將進度條放入到舞臺里面addChild(LoadingLayer)//設置加載進度LLoadManage.load(imgData, //素材function(progress) //設置進度{// console.log(progress)//每次都需要重新設置進度LoadingLayer.setProgress(progress)},gameInit //當素材加載完畢后,執行的回調函數)}function gameInit(result){//將loading 層舞臺刪除掉removeChild(LoadingLayer)//素材保存起來imglist = result//先創建一個背景層backLayer = new LSprite()//將背景圖層放到舞臺上面 空的圖層addChild(backLayer)//給背景圖層加背景圖addBackground();//添加人物到背景層addPlayer();//增加物品層//創建物品層itemLayer = new LSprite()//把物品層添加到背景層當中backLayer.addChild(itemLayer)//事件綁定,讓人物和物體都運動起來addEvent();//添加顯示的積分文本addText();}//顯示積分和生命值function addText(){//創建一個文本層hpTxt = new LTextField()//設置生命值顏色為紅色hpTxt.color = '#ff0000';//字體大小hpTxt.size = 30;//xy坐標hpTxt.x = 10;hpTxt.y = 10;//創建一個積分文本pointTxt = new LTextField()//積分設置顏色pointTxt.color = '#fff'//字體大小pointTxt.size = 30pointTxt.x = 10pointTxt.y = 50;backLayer.addChild(hpTxt)backLayer.addChild(pointTxt)//更新文本內容showText()}//顯示分數function showText(){hpTxt.text = "生命值:"+hppointTxt.text = "積分:"+point}//事件綁定function addEvent(){//LEvent.ENTER_FRAME 播放事件//讓背景層里面所有的元素進行播放backLayer.addEventListener(LEvent.ENTER_FRAME,onframe)//鼠標的按下backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,onDown)//鼠標的彈起backLayer.addEventListener(LMouseEvent.MOUSE_UP,onUp)}//定義播放函數function onframe(){hero.run();//循環讓物體層里面所有的物體全部動起來for(var i=0;i<itemLayer.childList.length;i++){//讓物體層里面的元素全部動起來itemLayer.childList[i].run();//如果元素的模式 等于 die 說明要銷毀他if(itemLayer.childList[i].mode == "die"){itemLayer.removeChild(itemLayer.childList[i])}}//添加下落的物品 每秒下落一個新物品if(stepindex++ > 1){stepindex = 0;addItem();}//增加顯示積分和生命值的方法showText()if(hp <= 0){gameOver()return false}}//創建一個游戲結束方法function gameOver(){//背景的所有元素全部停掉backLayer.die()//刪除掉物品層里面所有的下落物品itemLayer.removeAllChild();//創建一個游戲結束的文本var txt = new LTextField();//設置顏色txt.color = '#ff0000';txt.size = 50;txt.text = '游戲結束'//中間位置txt.x = (LGlobal.width - txt.getWidth())/2;txt.y = 100;//創建一個游戲結束層overLayer = new LSprite()//先把游戲結束層放到背景層backLayer.addChild(overLayer)//將文本放到層里面去overLayer.addChild(txt)//給游戲結束層綁定點擊事件重新開始游戲backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,function(){//將背景里面的所有內容干掉backLayer.die()//將游戲結束層里面的內容全部清空overLayer.removeAllChild()//重新開始游戲hp = 100;point = 0;addEvent();})}//添加下落的物品function addItem(){//創建一個物體的對象var item = new Item();//Math.flooritem.x = 20 + Math.floor(Math.random() * (LGlobal.width - 50))itemLayer.addChild(item)}//創建一個物體對象function Item(){//繼承一個層對象base(this,LSprite,[])//保存作用域var self = this //設置模式self.mode = ''//隨機獲取一個圖片出來 取小整 0 ~ 7 隨機選取一個下標var index = Math.floor(Math.random() * 8)//到底是加分還是減分self.value = index < 4 ? 1 : -1//根據下標去把圖片找到 index = 4 item4 imglist['item4']// imglist['item'+index]var bitmap = new LBitmap(new LBitmapData(imglist["item"+index]))self.addChild(bitmap)}//物體下落過程 Item.prototype.run = function(){//保存作用域var self = this//每次下落5像素self.y += 5;//如果有碰撞的話 也要銷毀 返回true 有碰撞 false沒有碰撞var hit = self.checkHit();//說明物體已經超出了屏幕范圍if(hit || self.y > LGlobal.height){//把物體銷毀掉self.mode = 'die'}}//給物體增加一個檢測碰撞方法Item.prototype.checkHit = function(){//先把自己保存起來var self = this//將兩個對象看作圓來檢測碰撞 LGlobal.hitTestArc//如果返回true 說明碰撞到了if(LGlobal.hitTestArc(self,hero)){if(self.value > 0){point += 1; //加分}else{//減生命值hp -= 1;}//確實有碰撞return true;}//沒有碰撞return false;}//定義鼠標按下事件function onDown(event){if(event.selfX < LGlobal.width / 2){//設置元素的屬性為 lefthero.mode = 'left'//在給他設置一組專門的動畫hero.anime.setAction(1)}else{hero.mode = 'right'//在給元素設置一組動畫hero.anime.setAction(2)}}//定義鼠標的彈起事件function onUp(event){//松開的時候讓元素超前hero.mode = '';hero.anime.setAction(0);}//自定義一個背景方法function addBackground(){//創建一個圖片對象,并且將這個圖片對象放到背景圖層// 1、創建圖片對象并加載// new LBitmap 創建一個img標簽// new LBitmapData(imglist['back']) img src="data:image/png"//imglist['back'] 獲取到的是背景圖片素材// console.log(imglist['back']);var bitmap = new LBitmap(new LBitmapData(imglist['back']))//將圖片塞到背景圖層里面backLayer.addChild(bitmap)}//自定義一個人物層對象function addPlayer(){//創建一個圖層playerLayer = new LSprite();//將人物圖層插入到背景圖層里面backLayer.addChild(playerLayer)//生成一個人物hero = new Player()//設置坐標點hero.x = hero.y = 350//將角色放到人物層里面去playerLayer.addChild(hero)}//定義一個角色對象function Player(){//讓角色也繼承一下圖層關系base(this,LSprite,[]) //base = 繼承//保存作用域區間var self = this//往左邊 往右邊self.mode = ""//將人物精靈圖切割//將傳入的寬和高,按照行數和列數進行拆分計算,會得到一個2維數組。// 256?×?256 4 x 4var list = LGlobal.divideCoordinate(256,256,4,4);//默認取了一張圖片var data = new LBitmapData(imglist['player'],0,0,64,64)//設置一組動畫 self 自己 data 顯示的這張圖 list 動畫的效果數組self.anime = new LAnimation(self,data,list)//設置動作self.step = 2, self.stepindex = 0}//給人物擴展一個方法,讓人物運動起來Player.prototype.run = function(){//作用域保存var self = this;//判斷是否有到達動作的最后一位if(self.stepindex++ > self.step){//將動作變化第一張self.stepindex = 0;//播放下一貞動畫self.anime.onframe();}if(self.mode == "left"){//往左邊走if(self.x > 10){self.x -= 10; //self.x = self.x - 10}}else if(self.mode == "right"){//往右邊走 判斷是否有達到邊界部分if(self.x < LGlobal.width - self.getWidth()){self.x += 10; //self.x = self.x + 10}}} </script>最后效果
總結
以上是生活随笔為你收集整理的lufylegend引擎制作接水果小游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux找最大最小值的命令,Linux
- 下一篇: linux中国用户,Linux中国 适合