// // ChangingSprite.cpp // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 17.05.2017. // // #include #include "ChangingSprite.h" ChangingSprite* ChangingSprite::createWithSpritePaths(std::string firstSpritePath, std::string secondSpritePath) { ChangingSprite * sprite = new (std::nothrow) ChangingSprite(); if(sprite && sprite->initWithSpritePaths(firstSpritePath, secondSpritePath)) { sprite->autorelease(); return sprite; } CC_SAFE_DELETE(sprite); return nullptr; } bool ChangingSprite::initWithSpritePaths(std::string firstSpritePath, std::string secondSpritePath) { if(!PlainNode::init()){ return false; } this->_firstSpritePath = firstSpritePath; this->_secondSpritePath = secondSpritePath; this->_firstSprite = cocos2d::Sprite::create(this->_firstSpritePath); this->_secondSprite = cocos2d::Sprite::create(this->_secondSpritePath); return true; } void ChangingSprite::prepareSize(const rapidjson::Value& jsonValue, float& width, float& height) { width = this->_firstSprite->getBoundingBox().size.width; height = this->_firstSprite->getBoundingBox().size.height; } void ChangingSprite::onEnter() { PlainNode::onEnter(); this->addChild(this->_firstSprite); this->addChild(this->_secondSprite); auto firstSpriteWidth = this->_firstSprite->getBoundingBox().size.width; auto firstSpriteHeight = this->_firstSprite->getBoundingBox().size.height; auto size = cocos2d::Size(firstSpriteWidth, firstSpriteHeight); this->setContentSize(size); this->_firstSprite->setPosition(cocos2d::Point(firstSpriteWidth/2, firstSpriteHeight/2)); this->_secondSprite->setPosition(this->_firstSprite->getPosition()); this->_secondSprite->setOpacity(0); } void ChangingSprite::switchSprites() { if(this->_secondSprite->getOpacity() == 0){ this->_firstSprite->setOpacity(0); this->_secondSprite->setOpacity(255); } else { this->_firstSprite->setOpacity(255); this->_secondSprite->setOpacity(0); } }