哪里可以制作手机app软件制作游戏厅app

用html5开发的游戏转换成android手机游戏app-android100学习网
用html5开发的游戏转换成android手机游戏app
本次来说一说如何利用lufylegend js引擎制作一款HTML5游戏后,将其转换为android本地化的App应用,转换过程其实很简单,下面 一步步来做说明。首先来开发一个类似于对对碰的游戏,游戏界面如下。游戏操作:上下
本次来说一说如何利用lufylegend.js引擎制作一款HTML5游戏后,将其转换为android本地化的App应用,转换过程其实很简单,下面 一步步来做说明。
首先来开发一个类似于对对碰的游戏,游戏界面如下。
游戏操作:上下左右划动屏幕,来操作宝石向不同的方向移动。
游戏规则:当有三个一样的宝石相邻则消除,被消除过一次的宝石会变成半透明,当所有宝石都被消除一次后,则进入下一关。
游戏测试连接:/demo/GemGem
首先,需要下载lufylegend.js引擎,下载地址:/lufylegend
二,游戏开发
引擎lufylegend1.7.0中扩展了LLoadManage静态类,可以读取图片,js文件以及文本文件,本次游戏开发就来体验一下这个新 功能,首先看下面数组:
var&loadData&=&[&&&
{path:&../jquery.js&,type:&js&},&&&
{path:&./js/share.js&,type:&js&},&&&
{path:&./js/Social.js&,type:&js&},&&&
{path:&./js/GameRanking.js&,type:&js&},&&&
{path:&./js/GameLogo.js&,type:&js&},&&&
{path:&./js/GameClear.js&,type:&js&},&&&
{path:&./js/Gem.js&,type:&js&},&&&
{path:&./js/Stage.js&,type:&js&},&&&
{path:&./js/Clock.js&,type:&js&},&&&
{path:&./js/Point.js&,type:&js&},&&&
{path:&./js/GetPoint.js&,type:&js&},&&&
{path:&./js/Bullet.js&,type:&js&},&&&
{path:&./js/Event.js&,type:&js&},&&&
{path:&./js/function.js&,type:&js&},&&&
{path:&./js/GameBody.js&,type:&js&},&&&
{name:&num.+&,path:&./images/plus.png&},&&&
{name:&num.0&,path:&./images/0.png&},&&&
{name:&num.1&,path:&./images/1.png&},&&&
{name:&num.2&,path:&./images/2.png&},&&&
{name:&num.3&,path:&./images/3.png&},&&&
{name:&num.4&,path:&./images/4.png&},&&&
{name:&num.5&,path:&./images/5.png&},&&&
{name:&num.6&,path:&./images/6.png&},&&&
{name:&num.7&,path:&./images/7.png&},&&&
{name:&num.8&,path:&./images/8.png&},&&&
{name:&num.9&,path:&./images/9.png&},&&&
{name:&back&,path:&./images/back.png&},&&&
{name:&line&,path:&./images/line.png&},&&&
{name:&clear&,path:&./images/clear.png&},&&&
{name:&gem01&,path:&./images/gem01.png&},&&&
{name:&gem02&,path:&./images/gem02.png&},&&&
{name:&gem03&,path:&./images/gem03.png&},&&&
{name:&gem04&,path:&./images/gem04.png&},&&&
{name:&gem05&,path:&./images/gem05.png&},&&&
{name:&gem06&,path:&./images/gem06.png&},&&&
{name:&gem07&,path:&./images/gem07.png&},&&&
{name:&gem08&,path:&./images/gem08.png&},&&&
{name:&gem09&,path:&./images/gem09.png&},&&&
{name:&ico_sina&,path:&./images/ico_sina.gif&},&&&
{name:&ico_qq&,path:&./images/ico_qq.gif&},&&&
{name:&ico_facebook&,path:&./images/ico_facebook.png&},&&&
{name:&ico_twitter&,path:&./images/ico_twitter.png&}&&&
将需要的js文件和图片文件都加到数组内,如果需要加载文件为js文件时,需要指定type为js,如果加载的文件为图片,则type可以不设定。
读取过程与之前用法完全一样:
function&main(){&&&
&&&&loadingLayer&=&new&LoadingSample3();&&&
&&&&addChild(loadingLayer);&&&&
&&&&LLoadManage.load(&&&
&&&&&&&&loadData,&&&
&&&&&&&&function(progress){&&&
&&&&&&&&&&&&loadingLayer.setProgress(progress);&&&
&&&&&&&&},&&&
&&&&&&&&function(result){&&&
&&&&&&&&&&&&LGlobal.setDebug(true);&&&
&&&&&&&&&&&&datalist&=&&&&
&&&&&&&&&&&&removeChild(loadingLayer);&&&
&&&&&&&&&&&&loadingLayer&=&&&&
&&&&&&&&&&&&gameInit();&&&
&&&&&&&&}&&&
下面来向游戏中添加8行8列64块宝石,具体做法如下:
function&addGem(){&&&
&&&&stage.setStage(stage.num&+&1);&&&
&&&&gemLayer.removeAllChild();&&&
&&&&list&=&[];&&&
&&&&//添加宝石&&
&&&&for(i=0;i&8;i++){&&&
&&&&&&&&list.push([]);&&&
&&&&&&&&for(var&j=0;j&8;j++){&&&
&&&&&&&&&&&&num&=&(Math.random()*9&&&&&0)+1;&&&
&&&&&&&&&&&&g&=&new&Gem(num);&&&
&&&&&&&&&&&&g.x&=&j*60;&&&
&&&&&&&&&&&&g.y&=&i*60+120;&&&
&&&&&&&&&&&&gemLayer.addChild(g);&&&
&&&&&&&&&&&&list[i].push(g);&&&
&&&&&&&&}&&&
&&&&//检验可消除宝石&&
&&&&do{&&&
&&&&&&&&clearList&=&checkClear();&&&
&&&&&&&&if(clearList.length&&&0){&&&
&&&&&&&&&&&&for(i=0;i&clearList.i++){&&&
&&&&&&&&&&&&&&&&g&=&clearList[i];&&&
&&&&&&&&&&&&&&&&num&=&(Math.random()*9&&&&&0)+1;&&&
&&&&&&&&&&&&&&&&g.change(num);&&&
&&&&&&&&&&&&}&&&
&&&&&&&&}&&&
&&&&}while(clearList.length&&&0);&&&
上面代码中的Gem对象是一个宝石类,完整代码如下:
function&Gem(num){&&&
&&&&var&self&=&&&&
&&&&base(self,LSprite,[]);&&&
&&&&self.num&=&&&&
&&&&self.bitmap&=&new&LBitmap(new&LBitmapData(datalist[&gem0&+num]));&&&
&&&&self.bitmap.x=self.bitmap.y=10;&&&
&&&&self.addChild(self.bitmap);&&&
Gem.prototype.change&=&function&(num){&&&
&&&&var&self&=&&&&
&&&&self.num&=&&&&
&&&&self.bitmap.bitmapData&=&new&LBitmapData(datalist[&gem0&+num]);&&&
Gem类继承自LSprite,内部包含一个LBitmap对象来显示宝石图片。
代码清单3中调用了checkClear函数,来检验是否有可消除宝石,检测方法为先进行横向检索,然后进行纵向检索。
clearList&=&[];&&&
&&&&//横向检索&&
&&&&for(i=0;i&8;i++){&&&
&&&&&&&&checkList&=&[list[i][0]];&&&
&&&&&&&&for(j=1;j&8;j++){&&&
&&&&&&&&&&&&if(checkList[checkList.length&-&1].num&==&list[i][j].num){&&&
&&&&&&&&&&&&&&&&checkList.push(list[i][j]);&&&
&&&&&&&&&&&&}else{&&&
&&&&&&&&&&&&&&&&clearList&=&addClearList(clearList,checkList);&&&
&&&&&&&&&&&&&&&&checkList&=&[list[i][j]];&&&
&&&&&&&&&&&&}&&&
&&&&&&&&}&&&
&&&&&&&&clearList&=&addClearList(clearList,checkList);&&&
&&&&//纵向检索&&
&&&&for(i=0;i&8;i++){&&&
&&&&&&&&checkList&=&[list[0][i]];&&&
&&&&&&&&for(j=1;j&8;j++){&&&
&&&&&&&&&&&&if(checkList[checkList.length&-&1].num&==&list[j][i].num){&&&
&&&&&&&&&&&&&&&&checkList.push(list[j][i]);&&&
&&&&&&&&&&&&}else{&&&
&&&&&&&&&&&&&&&&clearList&=&addClearList(clearList,checkList);&&&
&&&&&&&&&&&&&&&&checkList&=&[list[j][i]];&&&
&&&&&&&&&&&&}&&&
&&&&&&&&}&&&
&&&&&&&&clearList&=&addClearList(clearList,checkList);&&&
addClearList函数作用是将可消除宝石压入clearList数组,做法如下:
function&addClearList(clearList,checkList){&&&
&&&&if(checkList.length&&=&3){&&&
&&&&&&&&clearList&=&clearList.concat(checkList)&&&
&&&&return&clearL&&&
游戏操作需要划动屏幕,但是在lufylegend.js引擎中,是没有划动屏幕的事件的,所以我通过下面MOUSE_DOWN,MOUSE_UP 获取点击时和点击后的位置,来模拟一下划动事件。
backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,onDown);&&&
backLayer.addEventListener(LMouseEvent.MOUSE_UP,onUp);&&&
再来看看具体做法,先是onDown函数。
function&onDown(e){&&&
&&&&if(mouse_down_obj.isMouseDown)&&&
&&&&continuous&=&0;&&&
&&&&mouse_down_obj.x&=&e.offsetX;&&&
&&&&mouse_down_obj.y&=&e.offsetY;&&&
&&&&mouse_down_obj.time&=&new&Date().getTime();&&&
&&&&mouse_down_obj.cx&=&e.offsetX/60&&&&&0;&&&
&&&&mouse_down_obj.cy&=&(e.offsetY&-&120)/60&&&&&0;&&&
&&&&mouse_down_obj.isMouseDown&=&&&&
&&&&list[mouse_down_obj.cy][mouse_down_obj.cx].graphics.drawRect(1,&black&,[0,&0,&60,&60],true,&#000000&);&&&
通过e.offsetX和e.offsetY来获取点击位置,通过getTime()来获取点击时刻的时间。
再来看看onUp函数。
function&onUp(e){&&&
&&&&list[mouse_down_obj.cy][mouse_down_obj.cx].graphics.clear();&&&
&&&&if(new&Date().getTime()&-&mouse_down_obj.time&&&500){&&&
&&&&&&&&mouse_down_obj.isMouseDown&=&&&&
&&&&&&&&&&&
&&&&var&mx&=&e.offsetX&-&mouse_down_obj.x;&&&
&&&&var&my&=&e.offsetY&-&mouse_down_obj.y;&&&
&&&&if(Math.abs(mx)&&&Math.abs(my)){&&&
&&&&&&&&if(mx&&&50){&&&
&&&&&&&&&&&&move(&right&);&&&
&&&&&&&&&&&&&&&
&&&&&&&&}else&if(mx&&&-50){&&&
&&&&&&&&&&&&move(&left&);&&&
&&&&&&&&&&&&&&&
&&&&&&&&}&&&
&&&&}else{&&&
&&&&&&&&if(my&&&50){&&&
&&&&&&&&&&&&move(&down&);&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&}else&if(my&&&-50){&&&
&&&&&&&&&&&&move(&up&);&&&
&&&&&&&&&&&&&&&
&&&&&&&&}&&&
&&&&mouse_down_obj.isMouseDown&=&&&&
函数中通过同样的方法得到点击结束时的位置和时间,然后与点击时刻做比较,最后计算划动的方向,然后根据划动的方向来调用move函数,让宝石移 动。
move函数如下:
function&move(dir){&&&
&&&&direction&=&&&&
&&&&var&m&=&moveGem(dir,8);&&&
&&&&var&mx&=&m[0],my&=&m[1];&&&
&&&&var&obj,&&&
&&&&for(var&i=0;i&8;i++){&&&
&&&&&&&&if(mx&==&0){&&&
&&&&&&&&&&&&obj&=&list[i][mouse_down_obj.cx];&&&
&&&&&&&&}else{&&&
&&&&&&&&&&&&obj&=&list[mouse_down_obj.cy][i];&&&
&&&&&&&&}&&&
&&&&&&&&if(i&&&7){&&&
&&&&&&&&&&&&fun&=&&&&
&&&&&&&&}else{&&&
&&&&&&&&&&&&fun&=&function(){&&&
&&&&&&&&&&&&&&&&hiddenObj.visible&=&&&&
&&&&&&&&&&&&&&&&checkClear();&&&
&&&&&&&&&&&&};&&&
&&&&&&&&}&&&
&&&&&&&&LTweenLite.to(obj,0.3,&&&
&&&&&&&&{&&&&
&&&&&&&&&&&&x:obj.x+mx,&&&
&&&&&&&&&&&&y:obj.y+my,&&&
&&&&&&&&&&&&onComplete:fun,&&&
&&&&&&&&&&&&ease:Strong.easeOut&&&
&&&&&&&&});&&&
下面以向右移动为例来说明一下move函数的处理过程,如下:
先将最左边的一个宝石H移到最左边,然后再利用LTweenLite缓动类将整个一行8个宝石,向右缓动一个单位。向左的话正好相反,向上向下也是 同样的原理。
每次缓动结束,要调用一次checkClear函数,来判断一下是否有可消除的宝石,如果有则开始消除宝石,如何来消除宝石呢?
我依然以向右划动来举例说明,看下面图片,假设D1,D2,D3可消除,E4,F4,G4可消除:
那么首先将D1,D2,D3移到左边边界外,E4,F4,G4也移到边界外,表示被消除, 之后对每一行的宝石进行位置判定,如每行的第一个宝石的x坐标应该是60,第二个为120,以此类推。如果他们不在自己的相应位置上,那么将其向左移动到 规定位置就可以了,写成代码的话,如下:
function&moveList(){&&&
&&&&var&gem,time,maxTime,mx,my,&&&
&&&&maxTime&=&0;&&&
&&&&switch(direction){&&&
&&&&&&&&case&&left&:&&&
&&&&&&&&&&&&for(i=0;i&8;i++){&&&
&&&&&&&&&&&&&&&&for(j=0;j&8;j++){&&&
&&&&&&&&&&&&&&&&&&&&gem&=&list[i][j];&&&
&&&&&&&&&&&&&&&&&&&&mx&=&60*j;&&&
&&&&&&&&&&&&&&&&&&&&if(gem.x&&&mx){&&&
&&&&&&&&&&&&&&&&&&&&&&&&time&=&0.3*((gem.x-mx)&/&60&&&&&0);&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(maxTime&&&time)maxTime&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&fun&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(gem.x&&&420){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&fun&=&function(gem){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(gem.x&&=&420)gem.visible&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&LTweenLite.to(gem,time,&&&
&&&&&&&&&&&&&&&&&&&&&&&&{&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&x:mx,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onUpdate:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onComplete:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&ease:Strong.easeOut&&&
&&&&&&&&&&&&&&&&&&&&&&&&});&&&
&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&
&&&&&&&&case&&right&:&&&
&&&&&&&&&&&&for(i=0;i&8;i++){&&&
&&&&&&&&&&&&&&&&for(j=0;j&8;j++){&&&
&&&&&&&&&&&&&&&&&&&&gem&=&list[i][j];&&&
&&&&&&&&&&&&&&&&&&&&mx&=&60*j;&&&
&&&&&&&&&&&&&&&&&&&&if(gem.x&&&mx){&&&
&&&&&&&&&&&&&&&&&&&&&&&&time&=&0.3*((mx-gem.x)&/&60&&&&&0);&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(maxTime&&&time)maxTime&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&fun&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(gem.x&&&0){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&fun&=&function(gem){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(gem.x&&=&0)gem.visible&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&LTweenLite.to(gem,time,&&&
&&&&&&&&&&&&&&&&&&&&&&&&{&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&x:mx,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onUpdate:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onComplete:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&ease:Strong.easeOut&&&
&&&&&&&&&&&&&&&&&&&&&&&&});&&&
&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&
&&&&&&&&case&&up&:&&&
&&&&&&&&&&&&for(i=0;i&8;i++){&&&
&&&&&&&&&&&&&&&&for(j=0;j&8;j++){&&&
&&&&&&&&&&&&&&&&&&&&gem&=&list[j][i];&&&
&&&&&&&&&&&&&&&&&&&&my&=&120+60*j;&&&
&&&&&&&&&&&&&&&&&&&&if(gem.y&&&my){&&&
&&&&&&&&&&&&&&&&&&&&&&&&time&=&0.3*((gem.y-my)&/&60&&&&&0);&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(maxTime&&&time)maxTime&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&fun&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(gem.y&&&560){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&fun&=&function(gem){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(gem.y&&=&560)gem.visible&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&LTweenLite.to(gem,time,&&&
&&&&&&&&&&&&&&&&&&&&&&&&{&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&y:my,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onUpdate:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onComplete:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&ease:Strong.easeOut&&&
&&&&&&&&&&&&&&&&&&&&&&&&});&&&
&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&
&&&&&&&&case&&down&:&&&
&&&&&&&&&&&&for(i=0;i&8;i++){&&&
&&&&&&&&&&&&&&&&for(j=0;j&8;j++){&&&
&&&&&&&&&&&&&&&&&&&&gem&=&list[j][i];&&&
&&&&&&&&&&&&&&&&&&&&my&=&120+60*j;&&&
&&&&&&&&&&&&&&&&&&&&if(gem.y&&&my){&&&
&&&&&&&&&&&&&&&&&&&&&&&&time&=&0.3*((my-gem.y)&/&60&&&&&0);&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(maxTime&&&time)maxTime&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&fun&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&if(gem.y&&&120){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&fun&=&function(gem){&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(gem.y&&=&120)gem.visible&=&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&&&&&&&&&LTweenLite.to(gem,time,&&&
&&&&&&&&&&&&&&&&&&&&&&&&{&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&y:my,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onUpdate:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&onComplete:fun,&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&ease:Strong.easeOut&&&
&&&&&&&&&&&&&&&&&&&&&&&&});&&&
&&&&&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&}&&&
&&&&&&&&&&&&&&&
&&&&LTweenLite.to({},maxTime*1.5,&&&
&&&&&&&&onComplete:checkStageClear,&&&
&&&&&&&&ease:Strong.easeOut&&&
&&&&});&&&
当然,游戏是有时间限制的,看下面的Clock类:
function&Clock(){&&&
&&&&var&self&=&&&&
&&&&base(self,LSprite,[]);&&&
&&&&self.timer&=&0;&&&
&&&&self.addTimer&=&0.05;&&&
&&&&self.graphics.drawArc(5,&#333333&,[0,0,70,0,2*Math.PI]);&&&
Clock.prototype.onframe&=&function&(){&&&
&&&&var&self&=&&&&
&&&&self.timer&+=&self.addT&&&
&&&&self.graphics.clear();&&&
&&&&self.graphics.drawArc(10,&#333333&,[0,0,70,0,2*Math.PI]);&&&
&&&&self.graphics.drawArc(5,&#ffffff&,[0,0,70,-Math.PI*0.5,Math.PI*self.timer/180-Math.PI*0.5]);&&&
首先将Clock加载到游戏中,然后再利用ENTER_FRAME时间轴事件,来不断调用Clock的onframe不断的绘制圆弧,当timer 的数值大于等于360的时候代表画完了整个圆弧,那么游戏结束。
以上,游戏的主要原理都介绍完了,下面看看如何来把游戏转化为本地App
三,发布本地化App
首先,用Eclipse新建一个Android Project;
注:如何搭建Android环境,我就不说了,网上教程多得是,随便百度一下吧。
然后,填写项目名称,并选择相应的sdk版本,这里我选了2.2;
接着是填写相应数据,这个随自己心情就可以了。
接着,重点来了,在工程下的assets文件夹下,简历一个www文件夹(名字自己随意),然后把刚才开发好的游戏复制到这个文件夹下,当 然,lufylegend引擎也必须复制过来。
接着修改res/layout/main.xml文件,添加webView,如下:
&?xml&version=&1.0&&encoding=&utf-8&?&&&&
&LinearLayout&xmlns:android=&/apk/res/android&&&&
&&&&android:layout_width=&fill_parent&&&&
&&&&android:layout_height=&fill_parent&&&&
&&&&android:orientation=&vertical&&&&&&
&&&&&WebView&&&
&&&&&&&&android:id=&@+id/webView1&&&&
&&&&&&&&android:layout_width=&match_parent&&&&
&&&&&&&&android:layout_height=&match_parent&&/&&&&
&/LinearLayout&&&&
最后,修改Main.java文件,利用webView来显示html网页,如下:
public&class&Main&extends&Activity&{&&&
&&&&/**&Called&when&the&activity&is&first&created.&*/&&&
&&&&@Override&&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&&
&&&&&&&&super.onCreate(savedInstanceState);&&&
&&&&&&&&setContentView(R.layout.main);&&&
&&&&&&&&WebView&webview&=&(WebView&)findViewById(R.id.webView1);&&&
&&&&&&&&webview.getSettings().setJavaScriptEnabled(true);&&&
&&&&&&&&webview.setVerticalScrollbarOverlay(true);&&&
&&&&&&&&webview.loadUrl(&file:///android_asset/www/index.html&);&&&
好了,运行程序吧。画面如下:
最后,想要发布游戏为.apk文件的话,build一下就好了。
结束了,简单吧?
最后给出本次游戏的源代码:
/lufylegend_download/GemGem.rar
注:只含游戏源码,lufylegend.js引擎请自己到官网下载又是给大家介绍游戏的时刻来临了,伙伴们估计等很久了吧!很多朋友都在想,每天都有这么多好玩的游戏手机哪里装的下啊!对于这个问题小编也无法解释啊,反正只要觉得游戏能够让我们快乐就行了,来吧看游戏吧!19局职业棒球2014《9局职业棒球2014》是一款Com2US开发的棒球模拟类游戏,根据2014赛季开赛以来至4月4日为止的实际资料为基础,一切的游戏数据,包括棒球选手的名称、照片、数据及赛程安排等,都根据真实的数据而制作!反映了球员资讯及赛况、战绩等最新资讯!绝无仅有的真实棒球游戏!将你带进真实的棒球世界。2蜗牛鲍勃2人气休闲游戏《蜗牛鲍勃》的续作,游戏结合了寻物、解谜、拼图等多种元素,游戏中,玩家是一只蜗牛,因为房子被拆了,所以它需要找一个新的房子来安身。鲍勃将遇到各种障碍和陷阱,玩家需要控制蜗牛鲍勃翻转开关、启动激光器、吓跑怪物。它是一款由麒麟狗(Chillingo)开发的益智休闲游戏,是2012年发行的益智游戏《蜗牛鲍勃 Snail Bob》的续作,相比前作在色彩风格上更加纯熟,饱满的色彩,Q 萌的造型都是值得期待的,营造了一个更加炫丽的美好的童话世界。3命运长夜《命运长夜》是一款战斗类RPG手游,游戏采用的是地下城闯关模式,每通关一层就有通天惊喜哦,通天关数越高,奖品越丰富;游戏融合《圣杯战争》同名漫画元素,让玩家亲身体会到主角的光环。画面任务精美绝伦,超酷炫的打击效果,给你前所未有的打击体验。命运长夜(单机版)是一款横版2D二次元格斗手机游戏,游戏采用的是地下城闯关模式。精美绝伦的人物画风,超酷炫的打击效果,给你前所未有的打击体验。4信中的童话《信中的童话 Letter Tale - Puzzle Adventure》是一款围绕着信使这一主题展开的小清新风格冒险游戏。游戏的画面风格十分清新,角色多以可爱的小动物为主,而玩家则在游戏中扮演一只名叫 Ari 的信使小狐狸。它本来也是一件被小白鸽们托运的“快递”,可惜谁也不知道 Ari 该被送往何处,最终把它留了下来。玩家作为一只地道的小狐狸,Ari 自然不能像小白鸽那样飞跃各种障碍,而是只能靠着双脚去摸索前方道路——玩家的任务便是帮助 Ari 克服重重困难,将信件顺利带往目的地。5修剪艺术《修剪艺术》是一款非常具有禅文化的美学神作,玩家要“引导”每棵树生长至有充足光线的地方,当光线照射到枝杈末端并催生出足够多的花时,玩家的使命就算完成了。游戏中不仅能给你至高的娱乐体验,更能唤醒你对自然的敬畏,以及对自生成长历程和未来道路的思考。只需手指轻轻一扫,即可让树向阳成长并避开危险世界的纷纷扰扰。为被遗忘的角落带来一缕生机,并慢慢挖掘那个埋在土壤深处的故事。【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当下最热门、最好玩、最duang的手机APP,让您的手机更加智能,让您的生活更加精彩微信号:appsphbapp排行榜(appsphb) 
 文章为作者独立观点,不代表微头条立场
的最新文章
第四代 Apple TV 上市也已经有一段时日了,配备 App Store 的它使得开发者可以将更多创意投放这是一个位德国数字艺术家Robert Jahns,用手机拍摄及使用手机APP完成的作品,他已经在INS上吸引【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当最烦那些随便翻别人相册的人了,总有一些不健康的照片很不想被看到,但是不给看相册又不真诚。肿么办!你需要这款能【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当又到了每周APP推荐的时间,今天带来第二发精选APP,希望你可以喜欢。觅食=吃货必备解馋神器=国内最大的手工每年春节临近,抢票就成了一场全民大战。今年12月1日起,火车票预售期改为60天,这意味着明年的春运火车票,从【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当听说有品位的人 都用这些App!正所谓苹果三星穷三代,好用爱普(App)省一生。不管你用的是小米魅族还是华为智能手机的使用本身就充满着奇巧特技,加之一些才华横溢的开发者,经常抖出一两个用途乖张的APP,让玩机有了更多【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当只是在十年前,旅行背囊中的必须品还是相机、旅行指南、旅行攻略之类的物品;现在,这些东西都可以被一样东西取代:【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行平台,专注于推荐各种新酷精华应用,为你提供当不要光拿着手机玩游戏,来几款有感觉的APP!【APP排行榜】不炫高科技,不玩高大上,这里是国内第一App排行叮铃铃,叮铃铃,圣诞老人的脚步越来越近啦!小伙伴和孩子们在做准备了吗?想不想进入精准的圣诞倒计时?很好奇圣诞智能手机,平板电脑已逐渐深入我们的生活,各式各样别出心裁的APPS已经成为年轻爸妈的育儿好帮手,帮助爸妈们通每年春节临近,抢票就成了一场全民大战。今年12月1日起,火车票预售期改为60天,这意味着明年的春运火车票,从又到了每周APP推荐的时间,今天带来第二发精选APP,希望你可以喜欢。觅食=吃货必备解馋神器=国内最大的手工>>>>你!!!值得拥有1、24Pi——时间都去哪儿了也许你会发现,你身边的朋友们正在越来越多的变成手机依赖8款app从友情到爱情,从影视大片到休闲娱乐;不管家里家外全部囊括在内,你还在等什么!【APP排行榜】不炫高小伙伴儿们都惊呆了2015年全球智能手机用户将达到19.1亿,而中国在2014年智能手机用户就超过5亿,成为app游戏种草机给小伙伴们亲测过的优秀APP,都是良心测试过得呢,值得去摸索的小游戏,没有WiFi的时候它每当你看到“春天不减肥,夏天徒伤悲”的横幅,暗下决心该去跑跑圈。每当你看到期末无数的DDL,就捶胸顿足决定要苹果官方前几天已经公布了其2015年度精选App,入选的国产应用有爆冷的故宫,也有大家熟悉的Teambiti10快乐宝贝儿歌120首经典儿歌跟唱动画精选适合年龄:1~4岁经典的儿歌,配上卡通的动画,带孩子享受音乐带来今日推荐5款搞怪整蛊App,相信你能从中得到不上乐子,也可以潇洒地在朋友圈炫酷一把,得到存在感哟!马赛克给照地震造成的巨大伤亡损失,也再次提醒我们,需要及时了解地震等灾难来临时刻逃生自救等知识。无论如何,生命只有一次智能手机是买来干嘛的?刷微博追剧自拍发微信摇一摇抢红包……然后,没了吗?音乐人的手机里,一定要有一些音乐类的据说,看一个男人好不好就看他背后的女人如何,看一个人品味如何就看他手机里装了什么应用。平日工作和生活中,很多1.生辰可以计算出生到现在活了多少年、月、周……还可以计算距离你预测的死亡日期还有多久并显示出还能做多少事情“这世上的奇葩远比你能想到的要多,当这些奇葩开始生产软件的时候,他们就不仅仅是脑洞的搬运工了。千奇百怪的打开1全能摄影软件风靡全球的iPhone系列有多强大相信不用小编多费笔墨,但众所周知iPhone原生的拍摄能力并听说过程序员黑了自家APP首页,却是为了给女朋友表白的事不?这不,前几天有部分网友发现大众点评一打开仿佛有什0看到身边的人很多还在买三十四块的电影票(只看imax的土豪请随意),作为一个电影达人,实在是捉急,今天跟大appsphb提供安卓与IOSAPP最新新闻资讯热门文章最新文章appsphb提供安卓与IOSAPP最新新闻资讯}

我要回帖

更多关于 如何制作手机app 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信