《保卫萝卜》项目实践(2)
2016-10-25 20:57
162 查看
接着上次的总结。传送门 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为转换过的瓦片地图坐标
屏幕坐标与瓦片坐标的转换,注意瓦片坐标系是以每一个瓦片作为一个点,左上角为坐标系原点。
其中在创建瓦片地图的时候设置每一个瓦片的大小(像素),一般都设为正方形
屏幕坐标转换为瓦片坐标:
PointFirstGameScene::converseToTiledPosition(Pointposition)
{
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");
ValueMapm_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为存贮文件名字的字符串数组
intarraySize
=sizeof(PRELOAD_PLIST)
/
sizeof(PRELOAD_PLIST[0]);//得到字符串数组的长度
count=0;//count为静态变量用来标记
for(inti
=
0; i < arraySize; i++){
Director::getInstance()->getTextureCache()->addImageAsync(PRELOAD_PLIST[i]+".png",CC_CALLBACK_1(LoadingScene::LoadResource,this));
}
returntrue;
}
voidLoadingScene::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);
}
五、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为转换过的瓦片地图坐标
屏幕坐标与瓦片坐标的转换,注意瓦片坐标系是以每一个瓦片作为一个点,左上角为坐标系原点。
其中在创建瓦片地图的时候设置每一个瓦片的大小(像素),一般都设为正方形
屏幕坐标转换为瓦片坐标:
PointFirstGameScene::converseToTiledPosition(Pointposition)
{
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");
ValueMapm_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为存贮文件名字的字符串数组
intarraySize
=sizeof(PRELOAD_PLIST)
/
sizeof(PRELOAD_PLIST[0]);//得到字符串数组的长度
count=0;//count为静态变量用来标记
for(inti
=
0; i < arraySize; i++){
Director::getInstance()->getTextureCache()->addImageAsync(PRELOAD_PLIST[i]+".png",CC_CALLBACK_1(LoadingScene::LoadResource,this));
}
returntrue;
}
voidLoadingScene::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);
}
相关文章推荐
- 《保卫萝卜》项目实践心得
- jsp和excel的数据交换-----我的项目实践
- 项目实践点点滴滴
- 项目实践springfeel系列(3)
- 会员认证+创业项目+虚拟团队+服务预告——CSDN外包实践(9)
- 与"项目顾问"讨论频道建设——CSDN外包实践(13)
- 会员认证+创业项目+虚拟团队+服务预告——CSDN外包实践(9)
- 项目实践springfeel系列(3)
- 外包项目中源码的价值——CSDN外包实践(7)
- 创业项目,CSDN外包频道支持——CSDN外包实践(8)
- 软件项目管理实践(上)--项目管理的概念及项目的过程管理
- 基于构件技术的软件工程 - Small Team Practice小型团队项目实践标准
- 项目实践系列springfeel正式启动
- 项目实践系列springfeel(2)
- Enterprise Library --DAAB 入门项目实践
- 软件项目中测试实践
- 我的实践项目
- 读《网站项目成功管理实践(上)》一文
- [推荐]网站项目成功管理实践(上)(下)
- 外包频道最成功的项目——CSDN外包实践(11)