摘要:和代表普通道路和墻,和代表星星和巖漿。用作裁剪接收?qǐng)D片對(duì)象起始坐標(biāo)和裁剪區(qū)域五個(gè)參數(shù)起始坐標(biāo)和裁剪區(qū)域可選用于創(chuàng)建圖像,可以添加到游戲圖層將指定尺寸按照指定行列進(jìn)行裁剪,返回一個(gè)二維數(shù)組生成動(dòng)畫,每一行為一組動(dòng)畫。
繪制地圖前準(zhǔn)備
在繪制之前,我們先看一下地圖的數(shù)據(jù)實(shí)現(xiàn)
globalData = { mapCol: 11, mapRow: 11, size: 32, floor: 0, data:[{ map: [ [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1], [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1], [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1], [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1], [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1], [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1], [1, 1, 2, 2, 2, 0, 2, 2, 2, 1, 1], [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1], [3, 1, 3, 1, 0, 0, 0, 1, 3, 1, 3], [3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3], [3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3] ]} ] }
這里的mapCol和mapRow是我定死的行和列,size為定死的單元格寬度也是高度,floor為當(dāng)前樓層,data存放了所有樓層的數(shù)據(jù)。
繪制//當(dāng)前場(chǎng)景信息 var senceData = null; function drawInit() { senceData = globalData.data[globalData.floor]; // 頁(yè)面初始化 layers.mapview.removeAllChild(); addMap(); }
將當(dāng)前場(chǎng)景的信息賦值給senceData便于操作管理
layers.mapview.removeAllChild()會(huì)清除mapview層的所有東西(就是東西吧)
下面我們看一下addMap()
//添加地圖 function addMap() { var bitMapData, bitMapDataCell, bitMap, mapImagesArray; var index; for (var i = 0; i < globalData.mapRow; i++) { for (var j = 0; j < globalData.mapCol; j++) { index = senceData.map[i][j]; // 根據(jù)index的值判斷地圖的類型 // 0 道路 // 1 普通墻 // 2 星星墻 // 3 巖漿墻 if (index === 0 || index === 1) { bitMapDataCell = new LBitmapData(imgList["map"], index * globalData.size, 3 * globalData.size, globalData.size, globalData.size); bitMap = new LBitmap(bitMapDataCell); } else if (index === 2 || index === 3) { bitMapData = new LBitmapData(imgList["map"]); mapImagesArray = LGlobal.divideCoordinate(bitMapData.width, bitMapData.height, 4, 4); bitMap = new LAnimationTimeline(bitMapData, mapImagesArray); bitMap.setLabel("2", 2, j % 4, 1, true); bitMap.setLabel("3", 0, j % 4, 1, true); bitMap.speed = 5; bitMap.gotoAndPlay(index); } bitMap.x = j * globalData.size; bitMap.y = i * globalData.size; layers.mapview.addChild(bitMap); } } };
這里我們通過(guò)二維數(shù)組做了地圖的映射。
0和1代表普通道路和墻,2和3代表星星和巖漿。區(qū)別在于一類是不動(dòng)的一類是動(dòng)的。
LBitmapData用作裁剪
接收?qǐng)D片對(duì)象、起始坐標(biāo)和裁剪區(qū)域五個(gè)參數(shù)(起始坐標(biāo)和裁剪區(qū)域可選)
LBitmap
用于創(chuàng)建圖像,可以添加到游戲圖層
divideCoordinate
將指定尺寸按照指定行列進(jìn)行裁剪,返回一個(gè)二維數(shù)組
LAnimationTimeline
生成動(dòng)畫,每一行為一組動(dòng)畫??梢酝ㄟ^(guò)setLabel設(shè)置每一行的name、起始行列、正倒序播放、是否鏡像。
bitMap.gotoAndPlay(index)運(yùn)行指定的labelName
最后添加在游戲圖層
layers.mapview.addChild(bitMap)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91404.html
摘要:使用的引擎也是第一次寫游戲,主要是興趣使然游戲體驗(yàn)地址未完成游戲設(shè)計(jì)游戲圖層設(shè)計(jì)游戲圖層分為了五層。游戲數(shù)據(jù)存儲(chǔ)將游戲涉及的所有數(shù)據(jù)存放到一個(gè)對(duì)象中,可以在后期很方便的做游戲進(jìn)度保存。其中為角色的屬性信息。 使用的引擎 lufylegend也是第一次寫rpg游戲,主要是興趣使然游戲體驗(yàn)地址(未完成) 游戲設(shè)計(jì) 游戲圖層設(shè)計(jì) var layers = { back: null, ...
摘要:準(zhǔn)備工作圖片素材角色精靈圖分為四個(gè)移動(dòng)方向地圖素材包含精靈圖和普通塊圖物品為普通塊圖人物素材包含和怪物的精靈圖游戲還在開發(fā)中,怪物素材還不完整游戲初始化定義結(jié)構(gòu)并引入引擎初始化為引擎中的全局函數(shù)用于初始化。 準(zhǔn)備工作:圖片素材 hero.pngshowImg(https://segmentfault.com/img/bVSYN8?w=128&h=132);角色精靈圖分為四個(gè)移動(dòng)方向 m...
摘要:游戲開發(fā)實(shí)戰(zhàn)主要講解使用來(lái)開發(fā)和設(shè)計(jì)各類常見游戲的思路和技巧,在介紹相關(guān)特性的同時(shí),還通過(guò)游戲開發(fā)實(shí)例深入剖析了其內(nèi)在原理,讓讀者不僅知其然,而且知其所以然。HTML5 Canvas游戲開發(fā)實(shí)戰(zhàn)主要講解使用HTML5 Canvas來(lái)開發(fā)和設(shè)計(jì)各類常見游戲的思路和技巧,在介紹HTML5 Canvas相關(guān)特性的同時(shí),還通過(guò)游戲開發(fā)實(shí)例深入剖析了其內(nèi)在原理,讓讀者不僅知其然,而且知其所以然。在本書...
摘要:最近在折騰的端的可視化項(xiàng)目,由于相關(guān)業(yè)務(wù)的需要,用到了這一地圖開發(fā)的神器。其技術(shù)奠基于與。分別指縮放級(jí)別地面法線偏移角地軸偏移角等,用以確定當(dāng)前視窗所顯示的地圖區(qū)域和空間關(guān)系。個(gè)人認(rèn)為其最大的亮點(diǎn)在于即使不了解內(nèi)部實(shí)現(xiàn),也不影響其使用。 最近在折騰的 web 端的可視化項(xiàng)目,由于相關(guān)業(yè)務(wù)的需要,用到了 Mapbox 這一地圖開發(fā)的神器。在此先奉上一個(gè)基于mapbox-gl實(shí)現(xiàn)的demo...
閱讀 1854·2021-09-30 09:47
閱讀 3839·2021-09-22 15:05
閱讀 3028·2021-08-30 09:44
閱讀 3760·2019-08-30 15:55
閱讀 1532·2019-08-30 13:08
閱讀 1451·2019-08-29 16:40
閱讀 712·2019-08-29 12:45
閱讀 1510·2019-08-29 11:25