文档章节

cocos2dx 保存scrollview里的全部内容到一张图里

o
 oppotvr
发布于 2015/10/28 17:07
字数 427
阅读 166
收藏 0

map<int, string> levelMaps;
    set<int> saved;//记录存好的文件
    for(int i=0; i<189; i++){
        //检查188个关卡,有哪些已经配置好了
        string levelName = "guanka_";
        levelName.append(Value(i).asString());
        levelMaps.insert(map<int, string>::value_type(i, levelName));
        levelName.append(".tpl");
        if(FileUtils::getInstance()->isFileExist(levelName)){
            //文件存在就记录
            saved.insert(i);
        }
    }
    auto ws = Director::getInstance()->getWinSize();
    auto lstw = ui::ListView::create();
    lstw->setName("showLevel");
    lstw->setBackGroundColorType(ui::ScrollView::BackGroundColorType::SOLID);
    lstw->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
    lstw->setSize(Size(110, ws.height));
    lstw->setDirection(ui::ScrollView::Direction::VERTICAL);
    lstw->setBounceEnabled(true);
    lstw->setPosition(Vec2(0, 0));
    pNode->addChild(lstw);
    for(std::pair<int, string> mapL : levelMaps){
        auto lay = Layout::create();
        lay->setBackGroundColorType(ScrollView::BackGroundColorType::SOLID);
        lay->setBackGroundColor(Color3B::GRAY);
        lay->setTouchEnabled(true);
        lay->setUserData((void*)mapL.first);
        lay->setContentSize(Size(110,42));//117 114
        Label *label = Label::createWithSystemFont(mapL.second, "", 18);
        label->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
        if(saved.find(mapL.first) != saved.end()){
            //如果存在改变文字颜色
            label->setColor(Color3B::GREEN);
        }else {
            label->setColor(Color3B::BLACK);
        }
        label->setDimensions(110,30);
        label->setPosition(lay->getContentSize()/2);
        lay->addClickEventListener([=](Ref *sender){
            auto select = dynamic_cast<Layout*>(lstw->getUserObject());
            if(select == lay){
                return ;
            }
            if(select){
                select->setBackGroundColor(Color3B::GRAY);
            }
//            m_guanka.canMove = pro.m_type;
            lay->setBackGroundColor(Color3B::RED);
            lstw->setUserObject(lay);
            //设置关卡级数
            m_level = mapL.first;
            Button * levelText = dynamic_cast<Button*>(pNode->getChildByName("m_level"));
            if(levelText){
                levelText->setTitleText(Value(m_level).asString());
            }
            pNode->removeChildByName("showLevel");
            //重新读取配置信息
            readGameDataTpl();
        });
        //设置默认
        if(m_level == mapL.first){
            lay->setBackGroundColor(Color3B::RED);
            lstw->setUserObject(lay);
        }
        lay->addChild(label);
        lstw->addChild(lay);
    }
    lstw->runAction(Sequence::create(DelayTime::create(0.1), CallFunc::create([=](){
//        lstw->scrollToPercentVertical(m_level*1.0/levelMaps.size()*100.0, 0.1, true);
        log("------------------------x=%f, y=%f,heigh=%f", lstw->getInnerContainer()->getPosition().x, lstw->getInnerContainer()->getPosition().y, lstw->getInnerContainer()->getSize().height);
        int sn = lstw->getInnerContainerSize().height/960;
        auto off = lstw->getInnerContainerSize().height-960.0*sn;
//         lstw->getInnerContainer()->setPosition(Vec2(0,0));

//将listview里的全部内容保存到一张图片里      

auto render = RenderTexture::create(640,  lstw->getInnerContainerSize().height);
        render->begin();
        auto pos = lstw->getInnerContainer()->getPosition();
        for(int i=0; i<sn-1; i++){
            this->visit();
//            pos+= Vec2(0, 960);
            pos.y += 960;
            lstw->getInnerContainer()->setPosition(pos);
            log("pos [%d] y=%f", i, pos.y);
        }
        log("-----1pos [%d] y=%f", sn-2, pos.y);
        this->visit();
        pos.y += off;
        lstw->getInnerContainer()->setPosition(pos);
        this->visit();
        log("------2pos [%d] y=%f", sn-1, pos.y);
        render->end();
        render->saveToFile("sssss.png");
    }), nullptr));

© 著作权归作者所有

o
粉丝 5
博文 42
码字总数 12485
作品 0
深圳
项目经理
私信 提问
Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

周末了,哲哲在旁边看《爸爸去哪》,骨头继续玩cocos2dx, 首先,如果你新加了CPP和H文件,记得修改项目目录下的proj.androidjni文件夹的Android.mk文件。 [html] view plaincopy LOCALSRCFI...

懒骨头
2013/12/09
391
0
Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?

有点晚了,眼睛开始痒痒了,赶紧记录点东西 刚请教了sw同学,跟听D也扯了会,苦命的孩子,今晚他们游戏发新版,前端必须加班,骨头好是羡慕。。。 前几个笔记的例子都是zai一个Scene.cpp里完...

懒骨头
2013/12/09
166
0
Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

感谢听D同学赞助的Demo。 那怎样让它运行在vs中呢: 1 使用cocos2d-x-2.2toolsproject-creator文件夹中的create_project.py脚本,生成一个demo。 2 拷贝Classes和Resources文件夹到刚生成的d...

懒骨头
2013/12/09
1K
0
Xcode中怎么引用Source Trees定义路径里的头文件

做的项目中需要引用Source Trees定义路径里的头文件,刚开始没有头绪,稍加思索发现太简单了。 此Source Trees非彼Source Tree,是Xcode“偏好设置”中的一个选项,见下图: 以上面的“QUICK...

yoyoso
2014/12/24
821
0
Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应

上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上。 开始干活! 其实步骤可以参考 Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上 1 用eclipse打...

懒骨头
2013/12/09
288
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
今天
165
6
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部