接着上次的总结。传送门 http://blog.csdn.net/zhanghow/article/details/52892406
五、layout  与  pageview 总结
layout为布局视图,可以在上面排铺精灵,按钮但要注意设置位置坐标以防止遮盖。
layout 的content size()则是限制了内部的布局
pageview为翻页视图,其内部必须为layout即有多少页,就要填充不少于多少个layout,注意不可以添加精灵等

pageview->addpage(layout);layout->add child(sprite);
要根据其中的层级关系,来设置坐标位置即:节点相对坐标系
六、关于瓦片地图知识点的回顾
gid为每一个瓦片的唯一标示,屏幕上位置若非瓦片,则它的gid值为0,表示的为Empty。瓦片地图不一定要铺满全屏。
intgid =tiledMap -> getLayer("back")->getTileGIDAt(Vec2(col, row));//获取当前瓦片标识,其中col,row为转换过的瓦片地图坐标
屏幕坐标与瓦片坐标的转换,注意瓦片坐标系是以每一个瓦片作为一个点,左上角为坐标系原点。

其中在创建瓦片地图的时候设置每一个瓦片的大小(像素),一般都设为正方形
屏幕坐标转换为瓦片坐标:
Point FirstGameScene ::converseToTiledPosition( Point position)
{
    int x = position. x / tiledMap -> getTileSize (). width ;
    int y = position. y / tiledMap -> getTileSize (). height ;
    return Point (x, y);

}
瓦片坐标转换屏幕坐标原理类似,不过要注意的是如何在程序中获得.tmx文件中设置的对象的瓦片坐标。
添加英雄对象,首先要先设置一个对象层,接着为了设置英雄的精灵图片,设置一个矩形区域(“图层”)
TMXObjectGroup * objects = m_tiled-> getObjectGroup ( "object" );
  ValueMap m_player = objects-> getObject ( “player”);
然后设置一个精灵,用这个对象的坐标来设置精灵的位置
    int x = m_player[ "x" ]. asInt ();
    int y = m_player[ "y" ]. asInt ();
    auto hero = Sprite :: create ( "Player.png" );
    hero->setPosition(x, y);

这时候,精灵已经可以在地图上显示出来了,值得注意的是对象层与对象之间是Map的键值对的存储形式

七、xml文件的操作  
主要是在背包界面对各种装备属性的存储。其中xml文件的格式为:
对于子节点来说 enjoy _value =enjoy     text = fred(红色内容)
对于属性sex来说    name = sex     value = man 

<?xml version="1.0" encoding="utf-8" ?>
<Root>
    <user id="001">
        <admin sex="man">
            <name>fred</name>
            <password>150150</password>
            <age>22</age>
        </admin>
        <admin sex="woman">
            <name>yucai</name>
            <password>123456</password>
            <age>21</age>
        </admin>   
    </user>
</Root>
其中获取:
// 获取根节点
 XMLElement*root = duc -> RootElement();
//获取根节点下的user节点
  XMLElement *user = root -> FirstChildElement ();
 XMLElement*admin1 = user -> FirstChildElement();
其中比较重要的一个循环为:admin1=admin1->NextSlibingElement;来实现xml文件内容的遍历
八、进度条异步加载 (只有纹理缓存有异步加载)
// 资源加载
//  PRELOAD_PLIST为存贮文件名字的字符串数组
    int arraySize = sizeof ( PRELOAD_PLIST ) / sizeof ( PRELOAD_PLIST [ 0 ]);//得到字符串数组的长度
    count = 0 ; //count为静态变量用来标记
    for ( int i = 0 ; i < arraySize; i++){
        Director :: getInstance ()-> getTextureCache ()-> addImageAsync ( PRELOAD_PLIST [i]+ ".png" , CC_CALLBACK_1 ( LoadingScene :: LoadResource , this ));
    }
    return true ;
}
void LoadingScene ::LoadResource( Texture2D * texture){// 用精灵帧缓存加载plist文件
  SpriteFrameCache :: getInstance ()-> addSpriteFramesWithFile ( PRELOAD_PLIST [ count ]+( ".plist" ), PRELOAD_PLIST [ count ]+( ".png" ));
    count ++;
    int percent = 100 * count / 15.0f ;
    auto lb = dynamic_cast < LoadingBar *>( getChildByTag ( 1 ));
    lb-> setPercent (percent);
    if (percent>= 100 ) {
        log ( "SUCCESSED" );
    }
    percentLabelUpdate (percent);
}

《保卫萝卜》项目实践(2)相关推荐

  1. SVM算法在项目实践中的应用!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:苏丽敏,Datawhale优秀学习者,北理工计算机硕士 支持向量机 ...

  2. SAP WM Storage Location Reference在项目实践中的使用

    SAP WM Storage Location Reference在项目实践中的使用 笔者目前所在的一个项目是一个已经上了SAP系统,但是需要扩展到新工厂的项目.该项目在组织结构设计的时候,结合业务的 ...

  3. 学习Unix,可从事什么样的工作(1)《精通Unix下C语言与项目实践》读书笔记(3)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...

  4. Node.js项目实践:构建可扩展的Web应用

    2019独角兽企业重金招聘Python工程师标准>>> Node.js项目实践:构建可扩展的Web应用 <Node.js项目实践:构建可扩展的Web应用>用专业的讲解方式 ...

  5. Unix下设计动态库的方法《精通Unix下C语言编程与项目实践》(一)

    精通Unix下C语言编程与项目实践 之动态库的生成 作者:朱云翔,胡平 3.3 动态库的生成 动态库的生成可分为三个步骤,设计库源码.编译位置无关码(PIC)型.o文件和链接动态库.链接动态库的命令包 ...

  6. Kotlin项目实践指南(上)

    关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流 ...

  7. 《精通Unix下C语言与项目实践》读书笔记(16)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  8. 在项目实践中用更优雅的方式处理数组问题

    在最近的项目中,遇到了比较多处理数组的场景,比如要对数组里面某个元素的某一个字段进行抽取归类,或者判断数组当中的某个元素是否符满足判断条件等. 网上关于使用ES5新的的API来代替for循环的文章已经 ...

  9. 项目实践精解:ASP.NET应用开发

    前 言 作者从事软件设计开发工作十多年,最近才萌发了写书的想法.因为作者希望推广一种最有效的学习捷径,这就是Project-Driven Training,也就是用项目实践来带动理论学习的方法.基于此 ...

  10. python编程入门指南 明日科技-python从入门到项目实践明日科技三剑客书籍视频...

    ┃ code(实例源码) ┃ ┃ 03.rar ┃ ┃ 04.rar ┃ ┃ 05.rar ┃ ┃ 06.rar ┃ ┃ 07.rar ┃ ┃ 08.rar ┃ ┃ 09.rar ┃ ┃ 10.rar ...

最新文章

  1. vue组件的基本使用,以及组件之间的基本传值方式
  2. OpenCV alpha(权因子) 融合举例
  3. AIS 2022 | ACL-IJCAI-SIGIR顶级会议论文预讲会,现开启论文征集
  4. 【线上分享】机器视觉编码标准与技术进展
  5. Spring 容器(Spring 的上下文)
  6. JavaWeb网上图书商城完整项目--day02-14.登录功能的login页面处理
  7. Chrome 下input的默认样式
  8. mysql 编码utfmb4
  9. AndroidStudio安卓原生开发_UI控件介绍---Android原生开发工作笔记96
  10. unity 导入gltf_Unity3D使用glTF格式三维文件,glTF在unity中如何呈现,glTF导入unity
  11. MARQUEE 字符滚动条效果
  12. C#中如何获取一个二维数组的两维长度,即行数和列数?
  13. 奥维互动地图谷歌图源,通过自建Vercel反代实现墙内访问 - DaPeng‘s Blog
  14. 在mac上使用nginx配置codeigniter框架一直显示404的问题的一种方法(重启)
  15. 第一篇 外贸企业出口退税
  16. 俄亥俄大学计算机科学专业,美国计算机科学专业最新排名!
  17. 关于软件测试的论文文库,软件测试毕业论文[共46页]
  18. mysql主从同步的三种模式
  19. java des加密解密_DES加密和解密的JAVA实现方式
  20. 【码蹄集新手村 600 题】判断输入的俩个正整数是否为蛮生质数(蛮生素数)

热门文章

  1. 75岁母亲被6个子女遗弃身亡,“凶手”一句话惹怒全网:当你老了,真相比想象中更残忍
  2. 内核源码包打包成rpm方式
  3. 微信公众号,主要分析哪些方面的数据?
  4. Mac 安卓投屏Scrcpy使用
  5. homelede软路由设置方法_二级lede软路由设置方法,lede设置软路由网卡
  6. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP
  7. realsense 相机的部分信息获取
  8. 【已更新】万能门店小程序独立版V5.1二开完整版 无限DIY+不限制小程序生成数量+数10款插件
  9. Openwrt无线中继设置并访问外网
  10. 2023年全国最新交安安全员精选真题及答案4