Terminal을 실행하고 cocos2d-x rc1폴더로 이동하여 setup.py를 실행
1. cd [cocos2d-x rc1경로]
2. ./setup.py
다음은 프로젝트 생성 명령이이다.
cocos new [project_name] -p [package_name] -l cpp -d [project_path]
#ifndef __Fortune__HomeScene__
#define __Fortune__HomeScene__
#include "cocos2d.h"
class HomeScene:public cocos2d::Scene
{
public:
static cocos2d::Scene* createScene();
};
#endif
#include "HomeScene.h"
#include "HomeLayer.h"
cocos2d::Scene* HomeScene::createScene()
{
auto scene = cocos2d::Scene::create();
auto layer = HomeLayer::createWithScenetype(2);
scene->addChild(layer);
return scene;
}
#include "cocos2d.h"
class HomeLayer:public cocos2d::Layer
{
public:
static cocos2d::Layer* createWithScenetype(int st);
bool init(int st);
private:
int _type;
};
#include "HomeLayer.h"
Layer* HomeLayer::createWithScenetype(int st)
{
auto layer = new HomeLayer();
if (layer && layer->init(st))
{
layer->autorelease();
return layer;
}
return NULL;
}
bool HomeLayer::init(int st)
{
if (!Layer::init())
{
return false;
}
_type = st;
log("scene type : %d", _type);
}
return true;
}
#ifndef __ProjectName__MemberLayer__
#define __ProjectName__MemberLayer__
#include "Common.h"
#include "cocos-ext.h" // EditBox사용을 위한 추가
USING_NS_CC_EXT; // EditBox사용을 위한 추가
// CCEditBoxDelegate 추가
class MemberLayer:public CCLayer, public CCEditBoxDelegate
{
public:
virtual bool init();
static CCScene* scene();
CREATE_FUNC(MemberLayer);
///////////////////////////////////////////////////////////////
// EditBox사용을 위한 추가 시작
///////////////////////////////////////////////////////////////
virtual void editBoxEditingDidBegin(CCEditBox* editBox);
virtual void editBoxEditingDidEnd(CCEditBox* editBox);
virtual void editBoxTextChanged(CCEditBox* editBox, const std::string& text);
virtual void editBoxReturn(CCEditBox* editBox);
///////////////////////////////////////////////////////////////
// EditBox사용을 위한 추가 끝
///////////////////////////////////////////////////////////////
private:
void PrepareResources();// 본 페이지에서 사용할 리소스 로드
void StartLayout(); // 전체 레이아웃 구성
void PrepareEditBox(); // 이름, 생년월일, 비밀번호 입력 텍스트박스 생성
CCSpriteBatchNode* batchNode;
CCEditBox* Name; // 이름을 입력할 텍스트박스
CCEditBox* Birth; // 생년월일을 입력할 텍스트박스
CCEditBox* Pwd; // 비밀번호를 입력할 텍스트박스
};
#endif /* defined(__ProjectName__MemberLayer__) */
#pragma mark -
#pragma mark EditBox
void MemberLayer::PrepareEditBox()
{
/*****************************************************************
* 이름 필드
****************************************************************/
Name = CCEditBox::create(CCSizeMake(300, 50), CCScale9Sprite::createWithSpriteFrameName("editBox_bg_normal.png"));
Name->setPosition(Common::centerPoint());
Name->setFontColor(ccRED);
Name->setPlaceHolder("Name");
Name->setPlaceholderFontColor(ccWHITE);
Name->setReturnType(kKeyboardReturnTypeDefault);
Name->setInputMode(kEditBoxInputModeAny);
Name->setTag(1);
Name->setDelegate(this);
this->addChild(Name);
/*****************************************************************
* 생년월일 필드
****************************************************************/
Birth = CCEditBox::create(CCSizeMake(300, 50), CCScale9Sprite::createWithSpriteFrameName("editBox_bg_complete.png"));
Birth->setPosition(ccpAdd(Name->getPosition(), ccp(0, 100)));
Birth->setFontColor(ccRED);
Birth->setInputMode(kEditBoxInputModePhoneNumber);
Birth->setDelegate(this);
this->addChild(Birth);
/*****************************************************************
* 비밀번호 필드
****************************************************************/
Pwd = CCEditBox::create(CCSizeMake(300, 50), CCScale9Sprite::createWithSpriteFrameName("editBox_bg_error.png"));
Pwd->setPosition(ccpAdd(Birth->getPosition(), ccp(0, 100)));
Pwd->setFontColor(ccRED);
Pwd->setInputMode(kEditBoxInputModePhoneNumber);
Pwd->setTag(3);
Pwd->setReturnType(kKeyboardReturnTypeDone);
Pwd->setInputFlag(kEditBoxInputFlagPassword);
Pwd->setDelegate(this);
this->addChild(Pwd);
}
#pragma mark -
#pragma mark EditBox Virtual Methods
void MemberLayer::editBoxEditingDidBegin(cocos2d::extension::CCEditBox *editBox)
{
// EditBox편집이 시작될 때 발생하는 이벤트
}
void MemberLayer::editBoxEditingDidEnd(cocos2d::extension::CCEditBox *editBox)
{
// EditBox편집이 끝날 때 발생하는 이벤트
}
void MemberLayer::editBoxTextChanged(cocos2d::extension::CCEditBox *editBox, const std::string &text)
{
// EditBox내 Text가 변경될 때 발생하는 이벤트
}
void MemberLayer::editBoxReturn(cocos2d::extension::CCEditBox *editBox){}
#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__) */
#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();
}