2016-04-03 44 views
1

我用這https://github.com/qiankanglai/ImagePicker ImagePicker工具,我用這個代碼來設置精靈質地:如何更改cocos2dx C++ v3.10中的Sprite紋理?

void HelloWorldScene::didFinishPickingWithResult(cocos2d::Texture2D* result) 
    { 
     Size visibleSize = Director::getInstance()->getVisibleSize(); 
     Vec2 origin = Director::getInstance()->getVisibleOrigin(); 
     if(result == nullptr){ 
     return; 
     } 
     // sprite->removeFromParentAndCleanup(true); 

     ClippingNode * clipper = ClippingNode::create(); 
     clipper->setPosition(visibleSize.width/2, visibleSize.height/2); 
     clipper->setTag(kTagClipperNode); 
     this->addChild(clipper); 
     DrawNode * stencil = DrawNode::create(); 
     stencil->drawSolidCircle(Vec2(clipper->getBoundingBox().size.width/2, clipper->getBoundingBox().size.height/2), 100, 0, 200, Color4F::MAGENTA); 
     clipper->setStencil(stencil); 
     clipper->setInverted(false); 
     auto sprite = cocos2d::Sprite::createWithTexture(result); 
     sprite->setPosition(Vec2(clipper->getContentSize().width/2, clipper->getContentSize().height/2)); 
     clipper->addChild(sprite); 
     this->addChild(clipper); 
    } 

其實我正從畫廊的紋理二維對象和設置它的精靈。 此代碼很好,但如果我想要替換精靈紋理,然後再次執行相同的代碼,並添加一個新的裁剪節點對象,並在前一個新的精靈...

我想知道如何我可以解決這個問題嗎?我想從畫廊中選擇一張新照片時,用新的prite紋理替換舊的sprite紋理。

在此先感謝!

回答

0

Sprite在cocos2dx 3.0中有一個名爲setTexture的成員函數。如果你在場景中有一個指向精靈對象的成員指針,你可以更新你的函數如下:

void HelloWorldScene::didFinishPickingWithResult(cocos2d::Texture2D* result) 
    { 
     if(result == nullptr){ 
      return; 
     } 
     if(m_sprite) 
     { 

      m_sprite->setTexture(result); 
     } 
     else 
     { 
      Size visibleSize = Director::getInstance()->getVisibleSize(); 
      Vec2 origin = Director::getInstance()->getVisibleOrigin(); 
      ClippingNode * clipper = ClippingNode::create(); 
      clipper->setPosition(visibleSize.width/2, visibleSize.height/2); 
      clipper->setTag(kTagClipperNode); 
      this->addChild(clipper); 
      DrawNode * stencil = DrawNode::create(); 
      stencil->drawSolidCircle(Vec2(clipper->getBoundingBox().size.width/2, clipper->getBoundingBox().size.height/2), 100, 0, 200, Color4F::MAGENTA); 
      clipper->setStencil(stencil); 
      clipper->setInverted(false); 
      m_sprite = cocos2d::Sprite::createWithTexture(result); 
      m_sprite->setPosition(Vec2(clipper->getContentSize().width/2,clipper->getContentSize().height/2)); 
      clipper->addChild(m_sprite); 
      this->addChild(clipper); 
     } 
    } 
+0

哦,那多麼容易!有趣的是我們的大腦如何在壓力下停止工作..大聲笑感謝這麼多人!現在歡呼它完美的作品 –