Guest User

Untitled

a guest
Jul 8th, 2020
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. Spriite* Spriite::createWithSpriteFrame(SpriteFrame *spriteFrame, float size, bool card)
  2. {
  3. Spriite *spriite = new (std::nothrow) Spriite(size, card);
  4. if (spriite && spriteFrame && spriite->init())
  5. {
  6. spriite->setSpriteFrame(spriteFrame);
  7. spriite->autorelease();
  8. return spriite;
  9. }
  10. CC_SAFE_DELETE(spriite);
  11. return nullptr;
  12. }
  13.  
  14. Spriite::Spriite(float size, bool card)
  15. {
  16. this->size = size;
  17. this->card = card;
  18. }
  19.  
  20. bool Spriite::init()
  21. {
  22. if (!ClippingNode::init())
  23. {
  24. return false;
  25. }
  26.  
  27. this->setCascadeOpacityEnabled(true);
  28. this->setContentSize(Size(size, size));
  29. this->addChild(sprite = Sprite::create());
  30.  
  31. if (card)
  32. {
  33. this->setStencil(Shape::create(size, size, Color4B::BLACK, 0, Color4B::BLACK, size * 20 / 400));
  34. }
  35. else
  36. {
  37. this->setStencil(sprite);
  38. }
  39.  
  40. return true;
  41. }
  42.  
  43. void Spriite::setTexture(const std::string &filename, bool mustBeResized)
  44. {
  45. sprite->setTexture(filename);
  46.  
  47. if (!mustBeResized) return;
  48.  
  49. resize();
  50. }
  51.  
  52. void Spriite::setSpriteFrame(SpriteFrame* newFrame, bool mustBeResized)
  53. {
  54. sprite->setSpriteFrame(newFrame);
  55.  
  56. if (!mustBeResized) return;
  57.  
  58. resize();
  59. }
  60.  
  61. void Spriite::resize()
  62. {
  63. if (auto texture = sprite->getTexture())
  64. {
  65. auto pixelsSize = texture->getContentSizeInPixels();
  66. sprite->setScale(Director::getInstance()->getContentScaleFactor() * size / (pixelsSize.width >= pixelsSize.height && !card ? pixelsSize.width : pixelsSize.height));
  67. }
  68. }
Add Comment
Please, Sign In to add comment