项目地址

https://github.com/mangenotwork/HABL-H5

基于 lufylegend 开发

lufylegend 框架官网 :  http://www.lufylegend.com/
lufylegend是一个兼容性极高,功能极多,使用方便的HTML5游戏引擎。

游戏地图

var script = {stage01:{// 添加角色信息add:[{chara:"player",img:"hero",x:1,y:1}],// 地图渲染map:[[ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3],[ 2, 0, 0, 9, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0, 0, 2],//1[ 2, 0, 0, 9, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0, 0, 2],[ 2, 0, 0, 9, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0,10, 0, 0, 0, 0, 2],[ 2, 0, 0, 1, 1, 8, 1, 1, 1, 8, 1, 1, 1, 8, 1, 1, 1, 8, 1, 1, 1, 8, 1, 1, 2],[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2],//5[ 2, 7, 7, 8, 7, 7, 6, 7, 7, 6, 7, 6, 8, 7, 7, 7, 6, 6, 7, 8, 6, 7, 7, 7, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 1, 1, 1, 1, 1, 2, 0, 0, 0,10, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 2],//10[ 2, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 8, 1, 1, 1, 0, 1, 1, 8, 1, 2],[ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 1, 8, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],//15[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0,10, 0, 9, 0, 0, 0, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2],[ 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2],[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]],// 地图碰撞数据  1 不可移动 0可移动 2当前玩家位置  25*21mapData:[[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],//1[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],[ 1, 3, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],[ 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],//5[ 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1],//10[ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1],[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1],//15[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]],// 地图碰撞数据  1 不可移动 0可移动 2当前玩家位置  25*21sim_mapData:[[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],//1[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],[ 1, 3, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],[ 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],//5[ 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1],//10[ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1],[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],//15[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],[ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}
};//显示游戏界面层
function interface_Layer_show(){interface_Layer = new LSprite();backLayer.addChild(interface_Layer);//背景interface_Layer.graphics.drawRect(5,'#cccccc',[0,0,32*12+5,32*12+5],true,'#cccccc');// 游戏显示层位置interface_Layer.x =  14;interface_Layer.y = 115;//地图层添加mapLayer = new LSprite();interface_Layer.addChild(mapLayer);//地图图片初始化    //initMap();//地图位置初始化mapLayer.x = 0;mapLayer.y = 0;//地图层初始化mapLayer.removeAllChild();//地图数据获取var map_info = script.stage01;map = map_info.map;mapdata = map_info.mapData;smapdata =  map_info.sim_mapData//添加地图addMap(0,0);//initMap()delMap();//人物层添加charaLayer = new LSprite();interface_Layer.addChild(charaLayer);//人物层初始化charaLayer.removeAllChild();addChara();////监听游戏循环事件interface_Layer.addEventListener(LEvent.ENTER_FRAME,onframe);}//地图图片初始化
function initMap(){ }//添加地图
function addMap(cx,cy){var i,j,index,indexX,indexY;var bitmapdata,bitmap;var mapX = mapLayer.x / STEP;var mapY = mapLayer.y / STEP;var mx = cx<0?-1:0,my = cy<0?-1:0;mapLayer.removeAllChild();   //在地图层上,画出10*10的小图片for(i=my;i<20 +Math.abs(cy) && i-mapY < map.length;i++){for(j=mx;j<20 +Math.abs(cx)&& j-mapX < map[0].length;j++){//从地图数组中得到相应位置的图片坐标//console.log(event,"map",mapX,mapY);index = map[parseInt(i-mapY)][parseInt(j-mapX)];//小图片的竖坐标 15个小图片的切片indexY = Math.floor(index /15);//小图片的横坐标indexX = index - indexY*15;//得到小图片 画地图 map -> 32*32bitmapdata = new LBitmapData(dataList["map"],indexX*32,indexY*32,32,32);bitmap = new LBitmap(bitmapdata);//设置小图片的显示位置bitmap.x = j*STEP - mapLayer.x;bitmap.y = i*STEP - mapLayer.y;//将小图片显示到地图层mapLayer.addChild(bitmap);}}//地图画完后   绘制npcnpc_show(1,3,"npc 1",true);//boss_show(3,7,"蜘蛛怪");//boss_L_show();boss_all_show(boss_arr);}//移除多余地图块
function delMap(){var bitmap,i;for(i=0;i<mapLayer.childList.length;i++){bitmap = mapLayer.childList[i];if(bitmap.x + mapLayer.x < 0 || bitmap.x + mapLayer.x >= 32*15 || bitmap.y + mapLayer.y < 0 || bitmap.y + mapLayer.y >= 32*15){mapLayer.removeChild(bitmap);i--;}}
}

添加角色、NPC、怪物

//添加人物
function addChara(){var stage = script.stage01;var charaList = stage.add;var chara,charaObj;for(var i=0;i<charaList.length;i++){charaObj = charaList[i];if(charaObj.chara == "player"){//加入英雄bitmapdata = new LBitmapData(dataList[charaObj.img]);chara = new Character(true,i,bitmapdata,4,3);player = chara;}else{//加入npcbitmapdata = new LBitmapData(dataList[charaObj.img]);chara = new Character(false,i,bitmapdata,3,4);}chara.x = charaObj.x * 32;chara.y = charaObj.y * 32;charaLayer.addChild(chara);}
}

角色的操作实现


//游戏事件主循环
//游戏总事件的循环监听
function onframe(){//childList 子对象列表for(var i=0;i<charaLayer.childList.length;i++){charaLayer.childList[i].onframe();}
}/*** 循环事件 * @param isHero 是否英雄* @param index 人物编号* @param data 图片数据* @param row 图片分割行数* @param col 图片分割列数* @param speed 人物速度**/
function Character(isHero,index,data,row,col,speed){base(this,LSprite,[]);var self = this;self.isHero = isHero;self.index = index;//设定人物动作速度self.speed = speed==null?3:speed;self.speedIndex = 0;//设定人物大小data.setProperties(0,0,data.image.width/col,data.image.height/row);//得到人物图片拆分数组var list = LGlobal.divideCoordinate(data.image.width,data.image.height,row,col);//设定人物动画self.anime = new LAnimation(this,data,list);/*//调整人物位置//self.anime.y -= 16;*///设定不移动self.move = false;//在一个移动步长中的移动次数设定self.moveIndex = 0;
};/*** 循环事件 **/
Character.prototype.onframe = function (){var self = this;//人物动作速度控制if(self.speedIndex++ < self.speed)return;self.speedIndex = 0;//当人物可移动,则开始移动if(self.move){self.onmove();}//人物动画播放self.anime.onframe();
};
/*** 开始移动 **/
Character.prototype.onmove = function (){var self = this;//console.log(event,"play",parseInt(self.x/STEP),parseInt(self.y/STEP));//设定一个移动步长中的移动次数var ml_cnt = 4;//计算一次移动的长度var ml = STEP;//根据移动方向,开始移动switch (self.direction){case UP:if(mapmove){mapLayer.y += ml;charaLayer.y += ml;}self.y -= ml;break;case LEFT:if(mapmove){mapLayer.x += ml;charaLayer.x += ml;}self.x -= ml;break;case RIGHT:if(mapmove){mapLayer.x -= ml;charaLayer.x -= ml;}self.x += ml;break;case DOWN:if(mapmove){mapLayer.y -= ml;charaLayer.y -= ml;}self.y += ml;break;}self.moveIndex++;//当移动次数等于设定的次数,开始判断是否继续移动if(self.moveIndex >= 0){/*//一个地图步长移动完成后,判断地图是否跳转if(self.isHero && self.moveIndex > 0)checkJump();self.moveIndex = 0;*///一个地图步长移动完成后,如果地图处于滚动状态,则移除多余地图块if(mapmove)delMap();//判断方向是否改变if(self.direction != self.direction_next){self.direction = self.direction_next;self.anime.setAction(self.direction);}//如果已经松开移动键,或者前方为障碍物,则停止移动,否则继续移动if(!isKeyDown || !self.checkRoad()){self.move = false;return;}//地图是否滚动self.checkMap(self.direction);posi = self.get_posi();}
};//获取当前玩家坐标
Character.prototype.get_posi = function(dir){var self = this;var tox,toy,myCoordinate;//当判断方向为空的时候,默认当前方向if(dir==null)dir=self.direction;//获取人物坐标myCoordinate = self.getCoordinate();//开始计算移动目的地的坐标switch (dir){case UP:tox = myCoordinate.x;toy = myCoordinate.y - 1;break;case LEFT:tox = myCoordinate.x - 1;toy = myCoordinate.y ;break;case RIGHT:tox = myCoordinate.x + 1;toy = myCoordinate.y;break;case DOWN:tox = myCoordinate.x;toy = myCoordinate.y + 1;break;}//return {x:parseInt(self.x/STEP),y:parseInt(self.y/STEP)};/*posi[0] = self.x/STEP;posi[1] = self.y/STEP;*///如果是障碍物者返回玩家当前位置,如果不是者返回当前移动到的位置if(mapdata[toy][tox] != 1 & mapdata[toy][tox] != 3){posi[0] = tox;posi[1] = toy;//console.log(event,"玩家位置",posi);}else{posi[0] = self.x/STEP;posi[1] = self.y/STEP;}return posi;
}/*** 障碍物判断* @param 判断方向 **/
Character.prototype.checkRoad = function (dir){var self = this;var tox,toy,myCoordinate;//当判断方向为空的时候,默认当前方向if(dir==null)dir=self.direction;//获取人物坐标myCoordinate = self.getCoordinate();//开始计算移动目的地的坐标switch (dir){case UP:tox = myCoordinate.x;toy = myCoordinate.y - 1;break;case LEFT:tox = myCoordinate.x - 1;toy = myCoordinate.y ;break;case RIGHT:tox = myCoordinate.x + 1;toy = myCoordinate.y;break;case DOWN:tox = myCoordinate.x;toy = myCoordinate.y + 1;break;}//posi = "X:"+tox+",Y:"+toy;//console.log(event,"玩家位置",posi);//console.log(event,"移动位置",mapdata[toy][tox]);//如果移动的范围超过地图的范围,则不可移动if(toy <= 0 || tox <= 0)return false;//if(toy >= mapdata.length || tox >= mapdata[0].length)return false;//如果目的地为障碍,则不可移动if(mapdata[toy][tox] == 1 || mapdata[toy][tox] == 3){return false};return true;
};
/*** 设定人物坐标* @param x方向坐标,y方向坐标 **/
Character.prototype.setCoordinate = function (sx,sy){var self = this;//根据人物坐标,计算人物显示位置self.x = sx*STEP;self.y = sy*STEP;
};
/*** 获取人物坐标**/
Character.prototype.getCoordinate = function (){var self = this;return {x:parseInt(self.x/STEP),y:parseInt(self.y/STEP)};};
/*** 改变人物方向,并判断是否可移动**/
Character.prototype.changeDir = function (dir){var self = this;//如果正在移动,则无效if(!self.move){//设定人物方向self.direction = dir;self.direction_next = dir;//设定图片动画self.anime.setAction(dir);//判断是否可移动if(!self.checkRoad(dir))return;//地图是否滚动self.checkMap(dir);//如果可以移动,则开始移动self.move = true;self.moveIndex = 0;}else if(dir != self.direction){self.direction_next = dir;}
};
/*** 地图是否滚动**/
Character.prototype.checkMap = function (dir){var self = this;mapmove = false;//如果不是英雄,则地图不需要滚动//if(!self.isHero)return;switch (dir){case UP:if(self.y + charaLayer.y> STEP*2)break;//前两个地图进行移动if(mapLayer.y >= 0)break;//在从新绘制地图前 计算当前移动的位置次数gundong_y -= 1;addMap(0,-1);//获取当前坐标范围get_area("up",0,-1);mapmove = true;break;case LEFT:if(self.x + charaLayer.x > STEP*2)break;if(mapLayer.x >= 0)break;//在从新绘制地图前 计算当前移动的位置次数gundong_x -= 1;addMap(-1,0);//获取当前坐标范围get_area("left",-1,0);mapmove = true;break;case RIGHT:if(self.x < STEP*15 - 2*STEP)break;if(STEP*15 - mapLayer.x >= map[0].length*STEP)break;//在从新绘制地图前 计算当前移动的位置次数gundong_x += 1;addMap(1,0);//获取当前坐标范围get_area("right",1,0);mapmove = true;break;case DOWN:if(self.y < (STEP*14+30) - 2*STEP)break;if( (STEP*14+30) - mapLayer.y >= map.length*STEP)break;//在从新绘制地图前 计算当前移动的位置次数gundong_y += 1;addMap(0,1);//获取当前坐标范围get_area("down",0,1);mapmove = true;break;}
};//获取arca坐标
function get_area(type,cx,cy){if(type == "right"){arca_x[0] = arca_x[0]+cx;arca_x[1] = arca_x[1]+cx;}if(type == "left"){arca_x[0] = arca_x[0]+cx;arca_x[1] = arca_x[1]+cx;}if(type == "up"){arca_y[0] = arca_y[0]+cy;arca_y[1] = arca_y[1]+cy;}if(type == "down"){arca_y[0] = arca_y[0]+cy;arca_y[1] = arca_y[1]+cy;}
}

小地图

//游戏小地图
function map_info_Layer_show(){map_info_Layer = new LSprite();backLayer.addChild(map_info_Layer);//小地图s_map(1,1);var map_title = new LTextField();map_title.text = game_play_info_data.user_map;map_title.size = 10;map_title.color = "#53FF53";map_title.x = 330;map_title.y = 2;map_info_Layer.addChild(map_title);
}//小地图显示
function s_map(y,x){//消影if(map_s_L){map_s_L.remove();}var smap_0,smap_bitmap_0;var smap_1,smap_bitmap_1;var smap_2,smap_bitmap_2;var smap_3,smap_bitmap_3;var s_mapdata = smapdata;//玩家当前位置 障碍物判断if(s_mapdata[x][y]!=1 || s_mapdata[x][y]!=3){s_mapdata[x][y] = 2;}map_s_L = new LSprite();map_info_Layer.addChild(map_s_L);map_s_L.x = 330;map_s_L.y = 20;//map_s_L.removeAllChild();for(i=0;i < s_mapdata.length-1;i++){for(j=0;j < s_mapdata[0].length-1;j++){//从地图数组中得到相应位置的图片坐标//console.log(event,"map",i,j);//获取小地图属性index = s_mapdata[i][j];//console.log("smap",mapdata[i][j]);/*小地图资源   黑色不可以移动  白色可以移动区域  红色玩家   绿色 npc{name:"s_map_no",path:"../ui/game/000_2.png"},{name:"s_map_yes",path:"../ui/game/fff_1.png"},{name:"s_map_my",path:"../ui/game/red_1.png"}s_map_npc*/smap_1 = new LBitmapData(dataList["s_map_no"]);smap_bitmap_1 = new LBitmap(smap_1);smap_0 = new LBitmapData(dataList["s_map_yes"]);smap_bitmap_0 = new LBitmap(smap_0);smap_2 = new LBitmapData(dataList["s_map_my"]);smap_bitmap_2 = new LBitmap(smap_2);smap_3 = new LBitmapData(dataList["s_map_npc"]);smap_bitmap_3 = new LBitmap(smap_3);//给不同类型小地图渲染颜色if(index == 1){//设置小图片的显示位置smap_bitmap_1.x = j*4 - 4;smap_bitmap_1.y = i*4 - 4;//将小图片显示到地图层map_s_L.addChild(smap_bitmap_1);}else if(index == 0){//设置小图片的显示位置smap_bitmap_0.x = j*4 - 4;smap_bitmap_0.y = i*4 - 4;//将小图片显示到地图层map_s_L.addChild(smap_bitmap_0);}else if(index == 2){//设置小图片的显示位置smap_bitmap_2.x = j*4 - 4;smap_bitmap_2.y = i*4 - 4;//将小图片显示到地图层map_s_L.addChild(smap_bitmap_2);}else if(index == 3){//设置小图片的显示位置smap_bitmap_3.x = j*4 - 4;smap_bitmap_3.y = i*4 - 4;//将小图片显示到地图层map_s_L.addChild(smap_bitmap_3);}/*bitmapdata = new LBitmapData(dataList["map"],0,0,10,10);bitmap = new LBitmap(bitmapdata);//设置小图片的显示位置bitmap.x = j*5 - 5;bitmap.y = i*5 - 5;//将小图片显示到地图层map_s_L.addChild(bitmap);*/}}//恢复玩家当前位置s_mapdata[x][y] = 0;
}

开发H5游戏练手, 黑暗堡垒-炼狱传奇H5 (二) 游戏界面-地图与角色相关推荐

  1. 开发H5游戏练手, 黑暗堡垒-炼狱传奇H5 (一) 登陆界面开发

    项目介绍 使用JS lufylegend框架编写RPG游戏练手项目,首先展示几项目的效果图: 项目地址 https://github.com/mangenotwork/HABL-H5 介绍 lufyl ...

  2. 开发H5游戏练手, 黑暗堡垒-炼狱传奇H5 (三) 玩家信息,背包,商店,技能,任务,玩家菜单,游戏菜单,NPC对话与攻击怪物

    项目地址 https://github.com/mangenotwork/HABL-H5 基于 lufylegend 开发 lufylegend 框架官网 : http://www.lufylegen ...

  3. python练手小游戏_Python小游戏练手EMS员工项目自学者练习

    Python小游戏练手EMS员工项目自学者练习 # 显示欢迎信息 from typing import Any, Union print('-' * 20, '欢迎使用员工管理系统', '-' * 2 ...

  4. python 乒乓球_python游戏练手--乒乓球

    啥也不说了,就是个练手,丑是丑了一点,但是还可以抢救一下的 # -*- coding: utf-8 -*- import pygame as pg from pygame.locals import ...

  5. Kubernetes开发(6)-MutatingAdmissionWebhook练手

    之前写了一个简单的webhook 的tls server,并且写了一个简单的validate的api 用于实现资源的拦截.之前有提到webhook有两类,第二类就是mutatingadmissionw ...

  6. H5游戏(一)登录某某首富H5游戏之WebSockets初涉 易语言wss

    前景 H5游戏可跨平台(PC.平板.手机.电视机等都可运行) 实际上他就是一个网页..所以能打开网页的地方就可能能打开H5游戏(当然了,还有APP嵌套SDK+网页实现的那种) 几年前的农场**,不知道 ...

  7. java语言开发手机游戏_手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系...

    手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  8. 小游戏练手——斗地主单机版

    [编者前言]以前在MFC或者WIN32工程中写稍长算法的时候就会感觉比较乱,这次尝试将AI算法和UI图像绘制分成两个工程来分别进行,最后再整合到一个工程,这样效率貌似更高了.这个是从准备考研中期开始的 ...

  9. Kubernetes开发(5)-validateadmission练手

    补充好基础知识后,上手实践才是最快的学习方法,所以先写一个validateadmission练练手.模拟一个生产需求,假设生产环境所有的deployment不允许单点,即副本数量不能少于2,如果少于2 ...

最新文章

  1. zabbix编译php_【Zabbix学习笔记】五、LNMP之PHP7.4.1源码编译安装
  2. 外部网络如何获取网口打印机的ip地址_网络打印机端口用名称好是还是IP好?...
  3. pygame学习和python巩固——字体显示
  4. ORA-01031 权限不足-过程中DBA 角色用户无法执行DDL
  5. Jeecg-Boot 2.1.2版本发布,基于SpringBoot的快速开发平台
  6. python创建列表的语句_如何使用列表作为参数创建SELECT语句? - python
  7. ELK(ElasticSearch, Logstash, Kibana)实时日志分析平台部署
  8. lightgbm中的多分类multiclass与multiclassova
  9. 彼得林奇的成功投资 (修订版)
  10. iOS UITextField实时监听获取输入内容,中文状态去除预输入拼音
  11. JS中onblur总结
  12. 分子生物学中常用数据库
  13. STM32存储器 — 2STM32存储器知识的相关应用(IAP、Bit Banding)
  14. 基本概念:节点、集群、分片及副本
  15. 工商银行网上支付开发
  16. 干货|一文看懂什么是“非标资产”
  17. 如何在素材中心中下载字体并安装?
  18. centos7模板机的搭建
  19. h5 修改title 微信_微信分享H5自定义标题描述和图片
  20. 【问题解决】关于Oracle官网下载JDK需要登录Oracle账户问题

热门文章

  1. Nginx,Nginx 搭建图片服务器
  2. java中Stack的peek方法
  3. iPhone,iOS 12 APN设置(手机数据模式,蜂窝网络使用代理教程)
  4. Linux中tar,bzip2,gzip压缩命令
  5. Ubuntu查看版本信息
  6. 全网最全的鸿蒙源码结构分析(附自制4张架构图)
  7. css3 svg小喇叭音量开关按钮代码
  8. QT打包项目软件,生成可一键执行的exe文件
  9. solor快速_Solr快速入门(一)
  10. 跟踪到高能量宇宙射线的来源