admin管理员组

文章数量:829196

《保卫萝卜》项目实践(2)

接着上次的总结。传送门  五、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)