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

前端之家收集整理的这篇文章主要介绍了cocos2dx 保存scrollview里的全部内容到一张图里前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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));

猜你在找的Cocos2d-x相关文章