Cocos2d-x3.0 RenderTexture(3)

tags:    時間:2014-05-04 18:58:52
Cocos2d-x3.0 RenderTexture(三)


.h

#include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" #include "cocostudio/CocoStudio.h" USING_NS_CC;  USING_NS_CC_EXT; using namespace ui; 

private:     cocos2d::SpriteBatchNode *mgr;;          cocos2d::Sprite *sp1;     cocos2d::Sprite *sp2;     cocos2d::Sprite *sp3;     cocos2d::Sprite *sp4;     cocos2d::Sprite *sp5;     cocos2d::Sprite *sp6;     cocos2d::Sprite *sp7;     cocos2d::Sprite *sp8;     cocos2d::Sprite *sp9; 

.cpp

    auto listener = EventListenerTouchAllAtOnce::create();                          auto label = Label::createWithTTF("vertexZ = 50", "Marker Felt.ttf", 64);         label->setPosition(Point(size.width / 2, size.height * 0.25f));         this->addChild(label);                  auto label2 = Label::createWithTTF("vertexZ = 0", "Marker Felt.ttf", 64);         label2->setPosition(Point(size.width / 2, size.height * 0.5f));         this->addChild(label2);                  auto label3 = Label::createWithTTF("vertexZ = -50", "Marker Felt.ttf", 64);         label3->setPosition(Point(size.width / 2, size.height * 0.75f));         this->addChild(label3);          label->setPositionZ(50);         label2->setPositionZ(0);         label3->setPositionZ(-50);                                             SpriteFrameCache::getInstance()->addSpriteFramesWithFile("circle.plist");         mgr = SpriteBatchNode::create("circle.png", 9);         this->addChild(mgr);     auto    sp1 = Sprite::createWithSpriteFrameName("circle.png");         sp2 = Sprite::createWithSpriteFrameName("circle.png");         sp3 = Sprite::createWithSpriteFrameName("circle.png");         sp4 = Sprite::createWithSpriteFrameName("circle.png");         sp5 = Sprite::createWithSpriteFrameName("circle.png");         sp6 = Sprite::createWithSpriteFrameName("circle.png");         sp7 = Sprite::createWithSpriteFrameName("circle.png");         sp8 = Sprite::createWithSpriteFrameName("circle.png");         sp9 = Sprite::createWithSpriteFrameName("circle.png");          mgr->addChild(sp1, 9);         mgr->addChild(sp2, 8);         mgr->addChild(sp3, 7);         mgr->addChild(sp4, 6);         mgr->addChild(sp5, 5);         mgr->addChild(sp6, 4);         mgr->addChild(sp7, 3);         mgr->addChild(sp8, 2);         mgr->addChild(sp9, 1);                  sp1->setPositionZ(400);         sp2->setPositionZ(300);         sp3->setPositionZ(200);         sp4->setPositionZ(100);         sp5->setPositionZ(0);         sp6->setPositionZ(-100);         sp7->setPositionZ(-200);         sp8->setPositionZ(-300);         sp9->setPositionZ(-400);          sp9->setScale(2);         sp9->setColor(Color3B::YELLOW);                                    //[=]可以掉用外部變數         listener->onTouchesBegan = [=](const std::vector<Touch *> &touches, cocos2d::Event *unused_event)         {             for (auto &item:touches) {                 auto touch = static_cast<Touch*>(item);                 auto location = touch->getLocation();                                  sp1->setPosition(location);                 sp2->setPosition(location);                 sp3->setPosition(location);                 sp4->setPosition(location);                 sp5->setPosition(location);                 sp6->setPosition(location);                 sp7->setPosition(location);                 sp8->setPosition(location);                 sp9->setPosition(location);             }         };                  listener->onTouchesMoved = [=](const std::vector<Touch*>& touches,Event* unused_event)         {             for (auto &item:touches) {                 auto touch = static_cast<Touch*>(item);                 auto location = touch->getLocation();                                  sp1->setPosition(location);                 sp2->setPosition(location);                 sp3->setPosition(location);                 sp4->setPosition(location);                 sp5->setPosition(location);                 sp6->setPosition(location);                 sp7->setPosition(location);                 sp8->setPosition(location);                 sp9->setPosition(location);             }                       };                           listener->onTouchesEnded = [=](const std::vector<Touch *> &touches, cocos2d::Event *unused_event){             auto texture = RenderTexture::create(512, 512);             if (NULL == texture)             {                 return;             }             texture->setAnchorPoint(Point(0, 0));             texture->setKeepMatrix(true);             texture->begin();                          this->visit();                          texture->end();                          auto sprite = Sprite::createWithTexture(texture->getSprite()->getTexture());                          sprite->setPosition(Point(256, 256));             sprite->setOpacity(182);             sprite->setFlippedY(1);             this->addChild(sprite, 999999);             sprite->setColor(Color3B::GREEN);                          sprite->runAction(Sequence::create(FadeTo::create(2, 0),                                                Hide::create(),                                                NULL));                       };          _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);


推薦閱讀文章

Bookmark the permalink ,來源:互聯網