lufylegend引擎制作接水果小游戏
生活随笔
收集整理的這篇文章主要介紹了
lufylegend引擎制作接水果小游戏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先判斷是否為手機端
如果是L打頭的方法 或者類 就說明是這個框架自帶的_
if(LGlobal.canTouch)
{
//將屏幕設(shè)置為全屏充滿
LGlobal.stageScale = LStageScaleMode.EXACT_FIT;
LSystem.screen(LStage.FULL_SCREEN);
}
然后設(shè)置主頁面
<div id="legend"></div>JS部分
//游戲的初始化 初始化完畢后會運行主函數(shù)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; //放素材// 背景層、人物層、物品層、游戲結(jié)束層、游戲素材加載層 ps圖層var backLayer,playerLayer,itemLayer,overLayer,LoadingLayer;//人物var hero;//人物速度var step=50,stepindex=0;//積分var point = 0,pointTxt;//生命值var hp = 1,hpTxt;//主函數(shù)function main(){//實例化一個進度條LoadingLayer = new LoadingSample4()//將進度條放入到舞臺里面addChild(LoadingLayer)//設(shè)置加載進度LLoadManage.load(imgData, //素材function(progress) //設(shè)置進度{// console.log(progress)//每次都需要重新設(shè)置進度LoadingLayer.setProgress(progress)},gameInit //當素材加載完畢后,執(zhí)行的回調(diào)函數(shù))}function gameInit(result){//將loading 層舞臺刪除掉removeChild(LoadingLayer)//素材保存起來imglist = result//先創(chuàng)建一個背景層backLayer = new LSprite()//將背景圖層放到舞臺上面 空的圖層addChild(backLayer)//給背景圖層加背景圖addBackground();//添加人物到背景層addPlayer();//增加物品層//創(chuàng)建物品層itemLayer = new LSprite()//把物品層添加到背景層當中backLayer.addChild(itemLayer)//事件綁定,讓人物和物體都運動起來addEvent();//添加顯示的積分文本addText();}//顯示積分和生命值function addText(){//創(chuàng)建一個文本層hpTxt = new LTextField()//設(shè)置生命值顏色為紅色hpTxt.color = '#ff0000';//字體大小hpTxt.size = 30;//xy坐標hpTxt.x = 10;hpTxt.y = 10;//創(chuàng)建一個積分文本pointTxt = new LTextField()//積分設(shè)置顏色pointTxt.color = '#fff'//字體大小pointTxt.size = 30pointTxt.x = 10pointTxt.y = 50;backLayer.addChild(hpTxt)backLayer.addChild(pointTxt)//更新文本內(nèi)容showText()}//顯示分數(shù)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)}//定義播放函數(shù)function onframe(){hero.run();//循環(huán)讓物體層里面所有的物體全部動起來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}}//創(chuàng)建一個游戲結(jié)束方法function gameOver(){//背景的所有元素全部停掉backLayer.die()//刪除掉物品層里面所有的下落物品itemLayer.removeAllChild();//創(chuàng)建一個游戲結(jié)束的文本var txt = new LTextField();//設(shè)置顏色txt.color = '#ff0000';txt.size = 50;txt.text = '游戲結(jié)束'//中間位置txt.x = (LGlobal.width - txt.getWidth())/2;txt.y = 100;//創(chuàng)建一個游戲結(jié)束層overLayer = new LSprite()//先把游戲結(jié)束層放到背景層backLayer.addChild(overLayer)//將文本放到層里面去overLayer.addChild(txt)//給游戲結(jié)束層綁定點擊事件重新開始游戲backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,function(){//將背景里面的所有內(nèi)容干掉backLayer.die()//將游戲結(jié)束層里面的內(nèi)容全部清空overLayer.removeAllChild()//重新開始游戲hp = 100;point = 0;addEvent();})}//添加下落的物品function addItem(){//創(chuàng)建一個物體的對象var item = new Item();//Math.flooritem.x = 20 + Math.floor(Math.random() * (LGlobal.width - 50))itemLayer.addChild(item)}//創(chuàng)建一個物體對象function Item(){//繼承一個層對象base(this,LSprite,[])//保存作用域var self = this //設(shè)置模式self.mode = ''//隨機獲取一個圖片出來 取小整 0 ~ 7 隨機選取一個下標var index = Math.floor(Math.random() * 8)//到底是加分還是減分self.value = index < 4 ? 1 : -1//根據(jù)下標去把圖片找到 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();//說明物體已經(jīng)超出了屏幕范圍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){//設(shè)置元素的屬性為 lefthero.mode = 'left'//在給他設(shè)置一組專門的動畫hero.anime.setAction(1)}else{hero.mode = 'right'//在給元素設(shè)置一組動畫hero.anime.setAction(2)}}//定義鼠標的彈起事件function onUp(event){//松開的時候讓元素超前hero.mode = '';hero.anime.setAction(0);}//自定義一個背景方法function addBackground(){//創(chuàng)建一個圖片對象,并且將這個圖片對象放到背景圖層// 1、創(chuàng)建圖片對象并加載// new LBitmap 創(chuàng)建一個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(){//創(chuàng)建一個圖層playerLayer = new LSprite();//將人物圖層插入到背景圖層里面backLayer.addChild(playerLayer)//生成一個人物hero = new Player()//設(shè)置坐標點hero.x = hero.y = 350//將角色放到人物層里面去playerLayer.addChild(hero)}//定義一個角色對象function Player(){//讓角色也繼承一下圖層關(guān)系base(this,LSprite,[]) //base = 繼承//保存作用域區(qū)間var self = this//往左邊 往右邊self.mode = ""//將人物精靈圖切割//將傳入的寬和高,按照行數(shù)和列數(shù)進行拆分計算,會得到一個2維數(shù)組。// 256?×?256 4 x 4var list = LGlobal.divideCoordinate(256,256,4,4);//默認取了一張圖片var data = new LBitmapData(imglist['player'],0,0,64,64)//設(shè)置一組動畫 self 自己 data 顯示的這張圖 list 動畫的效果數(shù)組self.anime = new LAnimation(self,data,list)//設(shè)置動作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>最后效果
總結(jié)
以上是生活随笔為你收集整理的lufylegend引擎制作接水果小游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux找最大最小值的命令,Linux
- 下一篇: 汇编语言程序设计基础知识