- 자식 Sprite를 포함하는 사용자 정의 CCSprite를 정의
- 멤버함수 Showchild를 통해 자식 Sprite의 상태(Position, Visible 등)를 제어
CustomSprite.h
#ifndef __Fortune__CustomSprite__ #define __Fortune__CustomSprite__ #include "Common.h" class CustomSprite:public CCSprite { public: CustomSprite(); ~CustomSprite(); static CustomSprite* create(CCSpriteBatchNode* batchNode, int Type); void showBag(); private: static const char* fileName(int Type); }; #endif /* defined(__Fortune__CustomSprite__) */
CustomSprite.cpp
#include "CustomSprite.h" CustomSprite::CustomSprite(){} CustomSprite::~CustomSprite(){} CustomSprite* CustomSprite::create(CCSpriteBatchNode* batchNode, int Type) { CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(fileName(Type)); CustomSprite* custom = new CustomSprite(); if (custom && custom->initWithSpriteFrame(frame)) { batchNode->addChild(custom, 1); /////////////////////////////////////////////////////////////// // 자식 스프라이트 추가 /////////////////////////////////////////////////////////////// CCSprite* child = CCSprite::createWithSpriteFrameName("child.png"); child->setTag(1); child->setPosition(ccp(142.0f, 75.0f)); custom->addChild(child, -1); // 자식 스프라이트를 부모 스프라이트의 아래 위치시킴 child->setVisible(false); // 자식 스프라이트를 화면에서 숨김 return custom; } CC_SAFE_DELETE(custom); return NULL; } #pragma mark - #pragma mark 자식 스프라이트의 visible상태 설정 void CustomSprite::showchild() { this->getChildByTag(1)->setVisible(true); } #pragma mark - #pragma mark 타입을 int로 받아서 char*형 파일 이름을 리턴 const char* CustomSprite::fileName(int Type) { std::string name = "custom_"; std::stringstream type; type << Type; name += type.str(); name += ".png"; return name.c_str(); }