万恶的tileMap

先吐槽下。。

本来,我们准备用tileMap来做地图的,但发现一个问题,就是tileMap层中不能添加cc.Sprite,这导致了tileMap只适合做2D平面没有遮挡的游戏,并且主角是不能有效率的进行播放动画。

找到一个我类似问题的帖子,大家可以点击这里看一下。

虽然这个问题导致了项目不考虑用tileMap了,但还是学到了点相关知识,下面分享出来这几天的研究结果。

        var size = cc.director.getWinSize();
        var map = cc.TMXTiledMap.create(res.tmx_tmx);     //获取tmx
        this.addChild(map);

        var layer1 = map.getLayer("floor");               //得到指定图层
        var layer2 = map.getLayer("jianzhu");
        var objects = map.getObjectGroup("duixiang");     //得到指定对象组

        cc.log(layer2.properties.ni);                     //得到tmx编辑器对floor设置的属性"ni"的值

        cc.log(objects.properties["wo"]);                 //得到tmx编辑器对对象组duixiang设置的属性"wo"的值,好像不推荐这样的属性表示方式,因为web混淆的时候可能有问题

        var oneObject = objects.objectNamed("hero");      //得到对应对象组的一个指定对象
        for(var i in oneObject){
            cc.log(i+ " "+oneObject[i]);                //打印hero对象属性:name,type,x,y,width,height,nn(nn是在tmx设置的属性)的值
        }

        var gid = layer2.getTileGIDAt(cc.p(0,0));         //获取指定图层对应位置tile的gid,如果没有tile,则返回0
        var tileProperties = map.propertiesForGID(gid);   //从map上得到指定gid上的属性(这个属性是在tmx编辑器里对tile编辑的属性)
        cc.log(tileProperties.ff);                        //获取自定义属性

        var tile = layer2.getTileAt(cc.p(0,0));           //得到选定的tile并让它做action
        var action = cc.MoveBy.create(1,cc.p(50,-50));
        tile.runAction(action);

        layer1.setTileGID(36,cc.p(3,0));                  //在指定层上更改/设置指定位置的tile(根据tile的GID)

万恶的tileMap

时间: 2024-11-13 10:33:28

万恶的tileMap的相关文章

万恶的KPI、新兴的OKR及让人纠结的程序员考核

最近两天在研究研发部门如何进行绩效管理(其实一直都在思考,关注,实践,总感觉无从下手,也想求助咨询公司,无奈囊中羞涩).查了两天的资料,主要的方向是KPI,OKR,谷歌等互联网公司的考核方法.这里做个简单的整理与总结,记录一些自己思考的结论. 1.KPI万恶论 说KPI毁了索尼都是扯淡,很多大公司如BAT都在用KPI,发展有目共睹,虽然网上曝出各种弊端,但是没有KPI可能更差.企业的生老病死也是自然规律,更多是由外部的大趋势决定的,每次企业大规模的死亡与淘汰都是整个时代在飞速发展而进行正常的新陈

Sql Server之旅——第二站 理解万恶的表扫描

很久以前我们在写sql的时候,最怕的一件事情就是sql莫名奇妙的超级慢,慢的是撸一管子回来,那个小球还在一直转...这个着急也只有当事人才 明白,后来听说有个什么“评估执行计划“,后来的后来才明白应该避免表扫描... 一:表扫描 1.现象 ”表扫描“听起来很简单,不就是一行一行的扫嘛,你要说”执行计划”的话,我也会玩,为了更可观,我build一个表,再插入三行数据,如下图: 上面的Person我是一个索引都没建,然后where一下,看看表扫描是啥样的??? 果然是看到了万恶的“表扫描”三个字,既

Cocos2d-x3.3利用TileMap绘制Polygon/PolyLine

tiled提供了多边形/折线的绘制, 在Cocos2dx3.3(不知道其他版本如何)中能够读取这些对象. 但是网上似乎没有Cocos2dx读取多边形/折线的相关教程. 今天尝试了PolyLine的绘制, 就在这里记录一下, 也希望能够帮到需要的人. 这里只介绍PolyLine的情况. Polygon情况是类似的. 在CCTMXXMLParse.cpp中,有方法 void TMXMapInfo::startElement(void *ctx, const char *name, const cha

tilemap坐标转换

像素点跟tile的索引之间的转换//从cocos2d-x坐标转换为Tilemap坐标CCPoint GameMap::tileCoordForPosition(CCPoint position){ int x = position.x / this->getTileSize().width; int y = (((this->getMapSize().height) * this->getTileSize().height) - position.y) / this->getTil

cocos2dx 3.3 tilemap 缩放滑动并且准确点击对象

之前已经有一篇更基础的tilemap笔记了,这两天用了下3.3的tilemap发现以前有些东西又套用不了.所以又写了一篇札记,顿时感觉自己萌萌哒. 完全没有玩过的童鞋可以看看基础篇 主要实现目标: 1. 能够3倍缩放tiledMap 2. 能够鼠标滑动 tiledMap 3. 在缩放和滑动的情况下,点击一个tile 能够判断出 实际的格子坐标. 缩放和滑动这里就不再详细解释了,有很多的例子,末尾呈上完整代码.主要说一下第三条的实现. 可以从图中看出,我建了一个points对象组,然后建立了两个对

关于tilemap在platform游戏中的应用

platform 游戏中很少用到物理引擎,首先是物理引擎太难控制,特别是platform一般追求较高的操作手感,其次物理引擎太消耗 所以一般都是自己简单的做物理效果,主要围绕重力,速度/加速度,碰撞检查 地图一般采用tile拼凑成的,目前能找到的较好的tile工具就是tilemap 但是在实际使用中发现,tilemap并不是很适合platform,因为tilemap以tile为单位,如果是很大一块区域(比如地)都是同一种tile 碰撞检查不仅麻烦,而且过小的划分,位置上面会经常做修正,有可能引入

万恶的IE之 文本框没法获得焦点

万恶的ie在使用iframe,移除iframe后导致页面元素无法聚焦,文本框没法获得焦点,文字也不能选中,搜索原因如下: “ IE 下在移除父层的 DIV 的时候,也就是 IFrame 外层的 DIV 的时候,IE 并没有将内部的 IFrame 从 DOM 中移除,而下次触发函数创建此 IFrame 的时候,使会产生 DOM 冲突,所以解决方法就是在移除父层的 DIV 的时候,先将内部的 IFrame 也移除,于是问题解决了..” 经过测试 解决方案为: 把iframe的src设置为src="&

谈谈对一些软件架构设计箴言的理解 对软件的过早地优化是万恶的根源

http://www.nowamagic.net/librarys/veda/detail/1897在做项目的时候,有些同事总是提前考虑性能优化,需求变更又是一大堆的重写,让我想起了Donald Knuth 提到的:对软件的过早地优化是万恶的根源.这里就简单的说几条重要的软件名人哲学. 软件中唯一不变的就是变化 在软件开发过程中需求是不停的变化的,随着客户对系统的认识,和现有开发功能和软件的认识,也许一开始他提出的需求就是背离的.记得网上有一句笑话,是说需求变化的: 程序员XX遭遇车祸成植物人,

【转】cocos2d-x 3.2 Fast TileMap

概述 在游戏中常常会有丰富的背景元素,如果直接使用大的背景图实现,这会造成资源浪费.TileMap就是为了解决这问题而产生的.Cocos2d-x支持使用Tile地图编辑器创建的TMX格式的地图. Cocos2d-x为我们提供了TMXTileMap和TMXLayer两个类来处理瓦片地图.通过使用TMXTileMap和TMXLayer,我们可以很方便的加载TMX格式的地图文件,获取地图上的图层.对象.属性等信息. 新发布的3.2版本,对瓦片地图进行了大幅改进,通过自动裁剪不在视图范围内的瓦片来提升性