• cocos2dx 使用Tiled编辑的游戏地图 学习笔记


    Tiled Map Editor 是C++开发的一套地图编辑器,下载/官网地址:http://www.mapeditor.org/

    编辑后生成的tmx文件可以被cocos2dx调用,为游戏地图设计提供了很大便利;

    推荐这位仁兄发布的教程,也是三个部分组成:

    参考过这位仁兄发布的教程,第一篇tiledMap使用入门受益很多,后两篇在功能实现,算法和代码上都略有些生涩,决定自己进行一些实现;

    ====================以下记录一些学习笔记=======================

    CCTMXTiledMap *_tileMap = CCTMXTiledMap::create("path"); //引入tmx的地图,将tmx和相关资源文件拷贝到res目录下,修改tmx文件中的图片资源引入路径

    CCTMXObjectGroup *objectGroup = _tileMap->objectGroupNamed("hero"); //获取tmx文件中的对象层
    CCDictionary *spawnPoint = objectGroup->objectNamed("pa"); //获取对象层中的对象

    const CCString *x = spawnPoint->valueForKey("x"); //获取对象的属性,放回CCString , 注: C++中属性需用双引号,若用单引号,则调试出现assertion failure的报错;

    int px = (CCString*)x->intValue();//将CCString 转换为int的方法,转成float类型有 floatValue()方法;

    // *响应点击事件的另一方法: 头文件中声明

    virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
    virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

    // *init中添加触摸事件的委派

    ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent); //可获得拖动事件 pTouch->getPreviousLocation() 上一点坐标, pTouch->getLocation() 当前点坐标

    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);

    // * 定义函数 ccTouchBegan之间返回true;  

    // * ccTouchEnded中cocos2d::CCPoint tp = pTouch->getLocation(); 即可获得点击位置的坐标;

    //sprite 未初始化,直接runAction会报内存读取冲突;

    //关于角色移动时修改移动动画:如果在init中初始好4个方向的_animateN,在改变方向时直接调用_player->runAction(CCRepeatForever::actionWithAction(_animateN)); 会报出内存冲突错误; 后来的解决的办法是在init中缓存纹理,改变方向时调用纹理动态创建帧动画,然后封装这个创建移动动画的函数;

    //Tiled Map 卷屏时出现黑边的解决办法,在CCConfig中将此处0改成1

    #define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1

    ===continue===

  • 相关阅读:
    HashMap源码分析
    静态代理和装饰模式的区别
    自动内存管理
    ReentrantReadWriteLock
    ReentranLock
    对象的内存布局
    对象的创建
    [P2495][SDOI2011]消耗战——虚树
    [HDU2966]In case of failure——KD树
    [Gym-101158J]Coverthe Polygon with Your Disk——梯度下降,模拟退火
  • 原文地址:https://www.cnblogs.com/sslin/p/2846572.html
Copyright © 2020-2023  润新知