●UDP 소켓

- TCP 소켓은 서로 연결된 상태에서의 통신 방법이다. 이 방법은 높은 신뢰성이 요구된느 응용 프로그램에 적합하지만 높은 신뢰성이 요구되지 않거나 적은 양의 데이터를 전송할 때는 네트워크에 부담을 많이 주기 때문에 적합하지 않다. 그래서 이때는 UDP소켓을 쓰는 것이 좋다.


- UDP는 TCP소켓에 비해 신뢰성과 안정성은 부족하지만 연결을 설정하지 않으므로 네트워크에 부담을 주지 않는다.


- 자바에서는 DatagramPacket, DatagramSocket 클래스를 사용한다.


DatagramPacket 클래스는 데이터그램을 사용할 수 있게 한다.


- 데이터그램 패켓은 비연결 패킷 전송 서비스를 구현하기 위해 사용한다.


DatagramSocket 클래스는 데이터그램 패킷을 보내거나 받기 위한 데이터그램 소켓 기능을 제공해준다.








●ex

- UDPServer.java


import java.net.*;

import java.io.*;


public class UDPServer

{

public final static int discardPort = 3000;

static byte[] buffer = new byte[65507];


public static void main(String[] args){

int port;

try{

port=Integer.parseInt(args[0]);

}catch(Exception e){

port=discardPort;

}


try{

DatagramSocket ds = new DatagramSocket(port);

DatagramPacket dp = new DatagramPacket(buffer, buffer.length);

while(true){

try{

ds.receive(dp);

String s = new String(dp.getData(), 0, 0, dp.getLength());

System.out.println(dp.getAddress()+" at port"+dp.getPort()+" says"+s);

}catch(IOException e){

System.err.println(e);

}

}

}catch(SocketException se){

System.out.println("22");

System.err.println(se);

}

}

}





- UDPClient.java


import java.net.*;

import java.io.*;


public class UDPClient

{

public final static int port = 3000;

public static void main(String[] args){

String hostname;

if(args.length>0){

hostname=args[0];

}else{

hostname="localhost";

}


try{

String strInput;

DatagramPacket outPacket;


InetAddress server = InetAddress.getByName(hostname);


BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));


DatagramSocket dSock = new DatagramSocket();


while(true){

strInput = userInput.readLine();


if(strInput.equals("quit"))break;


byte[] data = strInput.getBytes();


outPacket = new DatagramPacket(data, data.length, server, port);


UDPClient.viewInfo(outPacket);


dSock.send(outPacket);

}


}catch(UnknownHostException e){

System.err.println(e);

}catch(SocketException se){

System.err.println(se);

}catch(IOException e){

System.err.println(e);

}

}


public static void viewInfo(DatagramPacket packet){

System.out.println("패킷의 대상 주소:"+packet.getAddress().toString());

System.out.println("패킷의 대상 포트:"+packet.getPort());

System.out.println("패킷의 데이터 크기:"+packet.getLength());

}

}


 



























Posted by -현's-

댓글을 달아 주세요


●자바 현재 날짜 구하기

java.util.Calendar cal = java.util.Calendar.getInstance();


//현재 년도, 월, 일

int year = cal.get ( cal.YEAR );

int month = cal.get ( cal.MONTH ) + 1 ;

int date = cal.get ( cal.DATE ) ;


//현재 시간(시,분,초)

int hour = cal.get ( cal.HOUR_OF_DAY ) ;
int min = cal.get ( cal.MINUTE );
int sec = cal.get ( cal.SECOND );




    


'프로그래밍 > java' 카테고리의 다른 글

자바 네트워크 프로그래밍 실습환경 구축(java설치)  (0) 2014.01.18
네트워크 기본 개념  (0) 2014.01.11
java 현재 날짜 구하기  (0) 2013.12.23
java int, String 형변환  (0) 2013.12.03
자바 난수 발생하기  (0) 2012.06.20
자바(java) 프로그래밍  (0) 2012.01.30
Posted by -현's-

댓글을 달아 주세요


●자바스크립트와 html로 만든 차트 솔루션이다. 비상업용으로 사용할땐 무료이고 상업적으로 사용할땐 비용이 든다.(최소 90달러이상)


http://www.highcharts.com






●예제

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>하이차트 라인 기본</title>


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

<script type="text/javascript">

$(function () {

  $('#chart1').highcharts({

  title: {

   text: '제목',

x: -20 //center

  },

          subtitle: {

             text: '부제목',

                x: -20

          },

  xAxis: {  //x축

           categories: ['가로1', '가로2', '가로3', '가로4', '가로5', '가로6']

},

      yAxis: {  //y축

           title: {

                   text: '단위 (°C)'

               },

               plotLines: [{   //선

                   value: 0,

                   width: 1,

                   color: '#808080'

               }]

           },

           tooltip: {

               valueSuffix: '°Cas'

           },

           legend: {  //범례

               layout: 'vertical',

               align: 'right',

               verticalAlign: 'middle',

               borderWidth: 0

           },

           series: [{   //값

               name: 'Tokyo',

               data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5]

           }, {

               name: 'New York',

               data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0]

           },{

               name: 'New York2',

               data: [1, 2, 7, 3, 4, 10]

           }, {

               name: 'Berlin',

               data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0]

           }, {

               name: 'London',

               data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2]

           }]

       });

   });

    


</script>

</head>

<body>

<script src="../../js/highcharts.js"></script>

<script src="../../js/modules/exporting.js"></script>  <!--우측상단에 차트를 이미지로 출력할 수 있게하는 버튼을 넣는다.-->


<div id="chart1" style="min-width: 310px; height: 400px; margin: 0 auto"></div>


</body>

</html>






Posted by -현's-

댓글을 달아 주세요


●아래 사이트에서 톰켓 이클립스 플러그인 파일을 다운받는다.


http://www.eclipsetotale.com/index.html







●해당 파일을 압춘을 푼 뒤 이클립스 폴더안에 있는 plugin폴더에 복사한다.






●이클립스를 실행하면 상단 메뉴에 고양이 버튼 3개가 나온다.











- 상단 메뉴 Window->Preferences를 클릭한다.









- 왼쪽 Tomcat을 클릭하고 오른쪽에서 톰켓버전, 톰켓 폴더 위치를 지정한 후 ok를 클릭한다.










●3개의 고양이 아이콘 중 왼쪽 버튼을 누르면 톰켓이 실행되고 중간 버튼을 누르면 톰켓이 중지되고 오른쪽 버튼을 누르면 톰켓이 재시작된다.

톰켓이 실행되면 http://localhost:8080 으로 들어가서 아래처럼 나오면 정상적으로 설치가 완료된 것이다.










'프로그래밍 > JSP' 카테고리의 다른 글

poi xlsx 다운  (0) 2013.12.02
jsp poi 엑셀 다운 예제  (0) 2013.11.26
jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
Posted by -현's-

댓글을 달아 주세요



StageIdx.h


#ifndef __StageIdx__H__

#define __StageIdx__H__


#include "cocos2d.h"

//싱글톤 클래스

using namespace cocos2d;


class StageIdx : public cocos2d::CCLayer

{

public:

static StageIdx *getInstance();

void setStage2true();

bool getStage2Bool();


private:

StageIdx();

~StageIdx();

};


#endif  // __StageIdx__H__




StageIdx.cpp


#include "StageIdx.h"


StageIdx::StageIdx(void)

{

CCUserDefault::sharedUserDefault()->setBoolForKey("stage2",false);

CCUserDefault::sharedUserDefault()->flush();

}


StageIdx::~StageIdx(void)

{

}


static StageIdx *gameData;


StageIdx* StageIdx::getInstance()

{

if(!gameData)

{

gameData=new StageIdx();

}

return gameData;

}


bool StageIdx::getStage2Bool()

{

bool stage2= CCUserDefault::sharedUserDefault()->getBoolForKey("stage2");

return stage2;

}


void StageIdx::setStage2true(){

CCUserDefault::sharedUserDefault()->setBoolForKey("stage2",true);

CCUserDefault::sharedUserDefault()->flush();

}










Stage1Layer.h


#ifndef __Stage1Layer__H__

#define __Stage1Layer__H__


#include "cocos2d.h"


using namespace cocos2d;


class Stage1Layer : public cocos2d::CCLayer

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();


    CREATE_FUNC(Stage1Layer);


bool jumpYN;


CCSprite *abc;


int score;

//void Stage1Layer::gameMenuStart(CCObject* sender);

void Stage1Layer::createDragon();


CCSprite* dragon;


void Stage1Layer::createBackground();

~Stage1Layer();

CCArray* stoneArray;

CCArray* coinArray;


CCLabelTTF* pLabel;


char coinScore[100];

void Stage1Layer::stoneCollision(float dt);

void Stage1Layer::coinCollision(float dt);


void Stage1Layer::winGame();


CCAction* rep;

void Stage1Layer::ccTouchesEnded(CCSet *pTouches, CCEvent* event);

};


#endif  // __Stage1Layer__H__




Stage1Layer.cpp


#include "Stage1Layer.h"

#include "StageIdx.h"

#include "WinLayer.h"

#include "LoseLayer.h"



CCScene* Stage1Layer::scene()

{

    CCScene *scene = CCScene::create();

    

    Stage1Layer *layer = Stage1Layer::create();

    

    // 960 x 640

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    if (winSize.width >= 960) {

        layer->setScale(2.0);

        layer->setAnchorPoint(ccp(0.0, 0.0));

    }


    scene->addChild(layer);


    return scene;

}


bool Stage1Layer::init()

{

    if ( !CCLayer::init() )

    {

        return false;

    }

    

    /////////////////////////////

char coinScore[100] = {0};

score=0;

this->setTouchEnabled(true);

stoneArray=CCArray::createWithCapacity(4);

stoneArray->retain();


coinArray=CCArray::createWithCapacity(4);

coinArray->retain();

jumpYN=false;

CCTexture2D* texture1;

texture1=CCTextureCache::sharedTextureCache()->addImage("Images/white-512x512.png"); 

abc=CCSprite::createWithTexture(texture1, CCRectMake(0,0,20,10));

abc->setAnchorPoint(ccp(0,0));

abc->setColor(ccc3(255,255,0));

abc->setOpacity(255);

CCActionInterval* gogo = CCMoveBy::create(10, ccp(700, 0));

abc->runAction(gogo);



this->addChild(abc, 11);

this->createDragon();          //드래곤을 추가한다.

this->createBackground(); //배경 추가




this->schedule(schedule_selector(Stage1Layer::stoneCollision), 2.0f/60.0f);

this->schedule(schedule_selector(Stage1Layer::coinCollision), 2.0f/60.0f);



//레이블 생성 및 초기화

pLabel=CCLabelTTF::create("score:0", "Thonburi", 30);

       //레이블 내용은 HelloWorld이고 폰트는 Thonburi, 크기는 20이다.

//레이블 위치 지정

        pLabel->setPosition(ccp(90,50));

//레이블 색 지정

pLabel->setColor(ccc3(255,255,255));

        //흰색( ccc(255,255,255) )이 기본색이다. 

//레이블의 투명도 지정

pLabel->setOpacity(100.0);

//레이어에 레이블 객체 추가

this->addChild(pLabel, 12);


    return true;

}


Stage1Layer::~Stage1Layer()

{

stoneArray->release();

coinArray->release();

}



void Stage1Layer::stoneCollision(float dt){

CCObject *Obj;

CCLog("stoneCollisition");

CCARRAY_FOREACH(stoneArray, Obj){

CCSprite *stone=(CCSprite*)Obj;

if(255 == stone->getOpacity()){

int abcX = abc->getPositionX();

CCLog("stoneCollisition22222");

CCRect rectA=dragon->boundingBox();

int aa=rectA.getMinX();

int bb=rectA.getMinY();

CCLog("stoneCollisitionaaaa %d %d",aa,bb);

CCRect rectB=stone->boundingBox();

CCLog("stoneCollisitionbbbb");

int cc=rectB.getMinX()-abcX;

int dd=rectB.getMinY();

rectA.setRect(aa+30,bb,100,140);

rectB.setRect(cc,dd,20,10);

CCLog("stoneCollisitioncdcdcd %d %d",cc,dd);

if(rectA.intersectsRect(rectB)){

CCLog("stoneCollisition33333");

this->unscheduleAllSelectors();

CCScene* pScene=LoseLayer::scene();

CCDirector::sharedDirector()->replaceScene(pScene);//기존장면 없애고 새장면 교체

}

}

}

CCLog("stoneCollisition444");

}



void Stage1Layer::coinCollision(float dt){

CCObject *Obj;

CCLog("coinCollisition");

CCARRAY_FOREACH(coinArray, Obj){

CCSprite *coin=(CCSprite*)Obj;

if(255 == coin->getOpacity()){

int abcX = abc->getPositionX();

CCLog("coinCollisition22222");

CCRect rectA=dragon->boundingBox();

int aa=rectA.getMinX();

int bb=rectA.getMinY();

CCLog("coinCollisitionaaaa %d %d",aa,bb);

CCRect rectB=coin->boundingBox();

CCLog("coinCollisitionbbbb");

int cc=rectB.getMinX()-abcX;

int dd=rectB.getMinY();

rectA.setRect(aa+30,bb,100,140);

rectB.setRect(cc,dd,10,10);

CCLog("coinCollisitioncdcdcd %d %d",cc,dd);

if(rectA.intersectsRect(rectB)){

CCLog("coinCollisition33333");

score++;

sprintf(coinScore, "score: %d",score);

coin->setOpacity(0);

pLabel->setString(coinScore);

CCLog("Score %d",score);


}

}

}

CCLog("stoneCollisition444");

}



void Stage1Layer::createBackground()

{

//배경 스프라이트1

CCSprite* background1 = CCSprite::create("Images/game_background1.jpg");

background1->setAnchorPoint(ccp(0,0));

//배경 스프라이트2

CCSprite* background2 = CCSprite::create("Images/game_background2.jpg");

background2->setAnchorPoint(ccp(0,0));


//패럴랙스노드를 만든다.

CCParallaxNode* voidNode = CCParallaxNode::create();


//배경 스트라이트를 패럴랙스노드에 넣는다.

voidNode->addChild(background1, 1, ccp(1.0f, 0.0f), ccp(0,0));

voidNode->addChild(background2, 1, ccp(1.0f, 0.0f), ccp(480,0));


//장애물 추가

CCTexture2D* texture;

texture=CCTextureCache::sharedTextureCache()->addImage("Images/white-512x512.png");

for(int i=1; i<4;i++)

{

CCSprite* stone=CCSprite::createWithTexture(texture, CCRectMake(0,0,20,10));

stone->setAnchorPoint(ccp(0,0));

stone->setColor(ccc3(75,255,0));

voidNode->addChild(stone, 1, ccp(1.0f, 0.0f), ccp(i*250, 200));

stoneArray->addObject(stone);


}

//코인 추가

for(int i=1; i<4;i++)

{

CCSprite* coin=CCSprite::createWithTexture(texture, CCRectMake(0,0,20,10));

coin->setAnchorPoint(ccp(0,0));

coin->setColor(ccc3(255,255,0));

voidNode->addChild(coin, 1, ccp(1.0f, 0.0f), ccp(i*250, 300));

coinArray->addObject(coin);


}

//액션

CCActionInterval* go = CCMoveBy::create(10, ccp(-700, 0));

CCFiniteTimeAction* seq = CCSequence::create(go,

CCCallFunc::create(this, callfunc_selector(Stage1Layer::winGame)),   //끝까지 이동하면 winGame로 이동

NULL);


voidNode->runAction(seq);

this->addChild(voidNode);

}



void Stage1Layer::winGame(){

//winGame화면으로 이동

StageIdx::getInstance()->setStage2true();    //stage2를 열수있게 true로 바꾼다.

CCScene* pScene=WinLayer::scene();

CCDirector::sharedDirector()->replaceScene(pScene);//기존장면 없애고 새장면 교체

}








void Stage1Layer::createDragon()

{ //움직이는 용 추가

jumpYN=false;

CCTexture2D *texture=CCTextureCache::sharedTextureCache()->addImage("Images/dragon_animation.png");

CCAnimation *animation=CCAnimation::create();

animation->setDelayPerUnit(0.1);


for(int i=0; i<6; i++)

{

int index = i%4;

int rowIndex=i/4;


animation->addSpriteFrameWithTexture(texture, CCRectMake(index*130, rowIndex*140, 130, 140));

}

//스프라이트 생성

dragon=CCSprite::createWithTexture(texture, CCRectMake(0,0,130,140));

dragon->setPosition(ccp(100,240));

this->addChild(dragon,10);

dragon->setFlipX(true);


CCAnimate *animate=CCAnimate::create(animation);

CCAction* rep=CCRepeatForever::create(animate);

dragon->runAction(rep);

}


void Stage1Layer::ccTouchesEnded(CCSet *pTouches, CCEvent* event)

{

if(!jumpYN){          //현재 점프중이 아니면 해당 if문 실행

jumpYN=true;      //jumpYN을 true로 바꿔줌.


CCLog("TOUCH");


//추가

this->removeChild(dragon, true);  //

//추가end

//점프하면서 움직이는 용 추가

CCTexture2D *texture=CCTextureCache::sharedTextureCache()->addImage("Images/dragon_animation.png");

CCAnimation *animation=CCAnimation::create();

animation->setDelayPerUnit(0.1);


for(int i=0; i<6; i++)

{

int index = i%4;

int rowIndex=i/4;


animation->addSpriteFrameWithTexture(texture, CCRectMake(index*130, rowIndex*140, 130, 140));

}

//스프라이트 생성

dragon=CCSprite::createWithTexture(texture, CCRectMake(0,0,130,140));

dragon->setPosition(ccp(100,240));

this->addChild(dragon);

dragon->setFlipX(true);


CCAnimate *animate=CCAnimate::create(animation);

CCAction* rep=CCRepeatForever::create(animate);

CCActionInterval* jump=CCJumpBy::create(2.5, ccp(0,0),110, 1 );

CCFiniteTimeAction* spw=CCSpawn::create(jump,rep, NULL);

CCFiniteTimeAction* seq=CCSequence::create(spw,  

CCCallFuncND::create(this, callfuncND_selector(CCNode::removeChild), dragon), 

CCCallFunc::create(this, callfunc_selector(Stage1Layer::createDragon)), 

NULL);

dragon->runAction(seq);

}else{

//jumpYN이 true면 점프 실행 안함

}

}










●Stage2Layer - Stage1Layer 이랑 비슷함








WinLayer.h


#ifndef __WinLayer__H__

#define __WinLayer__H__


#include "cocos2d.h"


using namespace cocos2d;


class WinLayer : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();



    CREATE_FUNC(WinLayer);

void WinLayer::mainMenuGo(CCObject* sender);



};


#endif  // __WinLayer__H__




WinLayer.cpp


#include "WinLayer.h"

#include "MainMenuLayer.h"


CCScene* WinLayer::scene()

{

    CCScene *scene = CCScene::create();

    

    WinLayer *layer = WinLayer::create();

    

    // 960 x 640

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    if (winSize.width >= 960) {

        layer->setScale(2.0);

        layer->setAnchorPoint(ccp(0.0, 0.0));

    }


    scene->addChild(layer);

    

    return scene;

}


bool WinLayer::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)) )

    {

        return false;

    }

    

    /////////////////////////////

CCMenuItemFont *newGame=CCMenuItemFont::create("Win!!! Mene go", this, menu_selector(WinLayer::mainMenuGo));

newGame->setColor(ccc3(0,0,0));

CCMenu* menu=CCMenu::create(newGame,NULL);

menu->setPosition(ccp(240,180));

this->addChild(menu);


    return true;

}



void WinLayer::mainMenuGo(CCObject* sender)

{

CCScene* pScene=MainMenuLayer::scene();

CCDirector::sharedDirector()->replaceScene(pScene);

}










●LoseLayer.h


#ifndef __LoseLayer__H__

#define __LoseLayer__H__


#include "cocos2d.h"


using namespace cocos2d;


class LoseLayer : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();



    CREATE_FUNC(LoseLayer);

void LoseLayer::mainMenuGo(CCObject* sender);



};


#endif  // __LoseLayer__H__





●LoseLayer.cpp


#include "LoseLayer.h"

#include "MainMenuLayer.h"


CCScene* LoseLayer::scene()

{

    CCScene *scene = CCScene::create();

    

    LoseLayer *layer = LoseLayer::create();

    

    // 960 x 640

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    if (winSize.width >= 960) {

        layer->setScale(2.0);

        layer->setAnchorPoint(ccp(0.0, 0.0));

    }


    scene->addChild(layer);

    

    return scene;

}


bool LoseLayer::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)) )

    {

        return false;

    }

    

    /////////////////////////////

CCMenuItemFont *newGame=CCMenuItemFont::create("Lose...Mene go", this, menu_selector(LoseLayer::mainMenuGo));

newGame->setColor(ccc3(0,0,0));

CCMenu* menu=CCMenu::create(newGame,NULL);

menu->setPosition(ccp(240,180));

this->addChild(menu);


    return true;

}



void LoseLayer::mainMenuGo(CCObject* sender)

{

CCScene* pScene=MainMenuLayer::scene();

CCDirector::sharedDirector()->replaceScene(pScene);



}











Posted by -현's-

댓글을 달아 주세요



AppDelegate.h


#ifndef __APP_DELEGATE_H__

#define __APP_DELEGATE_H__


#include "cocos2d.h"


class  AppDelegate : private cocos2d::CCApplication

{

public:

    AppDelegate();

    virtual ~AppDelegate();

    virtual bool applicationDidFinishLaunching();


    virtual void applicationDidEnterBackground();


    virtual void applicationWillEnterForeground();

};


#endif  // __APP_DELEGATE_H__

 





AppDelegate.cpp


#include "cocos2d.h"

#include "AppDelegate.h"

#include "LoadingLayer.h"


USING_NS_CC;


AppDelegate::AppDelegate()

{

}


AppDelegate::~AppDelegate()

{

}


bool AppDelegate::applicationDidFinishLaunching()

{

    // initialize director

    CCDirector *pDirector = CCDirector::sharedDirector();

    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());


    // turn on display FPS

    pDirector->setDisplayStats(false);


    // set FPS. the default value is 1.0/60 if you don't call this

    pDirector->setAnimationInterval(1.0 / 60);


    // create a scene. it's an autorelease object

    CCScene *pScene = LoadingLayer::scene();


    // run

    pDirector->runWithScene(pScene);

    return true;

}


// This function will be called when the app is inactive. When comes a phone call,it's be invoked too

void AppDelegate::applicationDidEnterBackground()

{

    CCDirector::sharedDirector()->stopAnimation();


}


// this function will be called when the app is active again

void AppDelegate::applicationWillEnterForeground()

{

    CCDirector::sharedDirector()->startAnimation();


}

 









LoadingLayer.h


#ifndef _LoadingLayer_

#define _LoadingLayer_


#include "cocos2d.h"


using namespace cocos2d;


class LoadingLayer:public cocos2d::CCLayer

{

public:

virtual bool init();


static cocos2d::CCScene* scene();


CREATE_FUNC(LoadingLayer);


//이후 변수와 메서드 추가 선언


CCSize winSize;


bool isLoading;

bool imagesLoaded;


CCSprite *defaultImage;

CCSprite *main_bkgrnd;

CCSprite *tapToCont;

CCSprite *loading;


void spritesLoaded();

void tick(float dt);

virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent* event);

};


#endif





LoadingLayer.cpp


#include "LoadingLayer.h"

#include "MainMenuLayer.h"


CCScene* LoadingLayer::scene()

{

    CCScene *scene = CCScene::create();

    

    LoadingLayer *layer = LoadingLayer::create();

    

    // 960 x 640

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    if (winSize.width >= 960) {

        layer->setScale(2.0);

        layer->setAnchorPoint(ccp(0.0, 0.0));

    }


    scene->addChild(layer);

    

    return scene;

}


bool LoadingLayer::init()

{

    if ( !CCLayer::init() )

    {

        return false;

    }

    

    /////////////////////////////

    

    // 변수 초기화

    isLoading = true;

    imagesLoaded = false;

    // 터치 활성화

    this->setTouchEnabled(true);


    // 화면 사이즈 구하기

    winSize = CCSizeMake(480, 320);


    // 디폴트 이미지 세로형 화면에 추가하기

    defaultImage = CCSprite::create("Images/loading_bg.png");

    defaultImage->setPosition(ccp(winSize.width/2, winSize.height/2));

    this->addChild(defaultImage);


LoadingLayer::spritesLoaded();

    // 주기적으로 상태체크

    this->schedule(schedule_selector(LoadingLayer::tick));

  

    return true;

}


void LoadingLayer::spritesLoaded()

{

CCLog("11");

    // 메인 백그라운드 이미지 추가

    main_bkgrnd = CCSprite::create("Images/loading_bg.png");

    main_bkgrnd->setPosition( ccp(winSize.width/2, winSize.height/2) );

    this->addChild(main_bkgrnd);

    

    // "Loading..." 글자 이미지 추가

    loading = CCSprite::create("Images/loading_tx.png");

    loading->setPosition( ccp(350,50));

    this->addChild(loading);


    

    // "Loading..." 글자 이미지 깜박이게 애니메이션

    CCFiniteTimeAction* loadingSeqAct = CCSequence::create(CCFadeOut::create(1.0f),

                                                           CCFadeIn::create(1.0f),

                                                           NULL);

    CCAction* rep2 = CCRepeatForever::create((CCActionInterval*)loadingSeqAct);

    loading->runAction(rep2);


    

    // 시작할 때 로딩한 디폴트 이미지를 지운다. (메모리 절약)

    this->removeChild(defaultImage, true);

    

    

    // 이미지가 다 로드되었음을 표시

    imagesLoaded = true;


}


void LoadingLayer::tick(float dt)

{

    

    // 이미지가 다 로드됨

    if (imagesLoaded && isLoading) {

        

        isLoading = false;

        

        // "로딩중 이미지"를 삭제. (메모리 절약)

        this->removeChild(loading, true);

        

        // continue 이미지 추가

        tapToCont = CCSprite::create("Images/continue_tx.png");

        tapToCont->setPosition( ccp(350,50 ));

        this->addChild(tapToCont);

       

        // continue 깜박거림

        // 로딩중 자리에서 대신 나오며 다음 신으로 갈 수 있도록 안내 표시.

        CCFiniteTimeAction* loadingSeqAct = CCSequence::create(CCFadeOut::create(1.0f),

                                                               CCFadeIn::create(1.0f),

                                                               NULL);

        CCAction* rep2 = CCRepeatForever::create((CCActionInterval*)loadingSeqAct);

        tapToCont->runAction(rep2);

    }

    

}


void LoadingLayer::ccTouchesEnded(CCSet *pTouches, CCEvent* event)

{

    if (!isLoading) {

        // 클릭하면 메인메뉴 신으로 이동

       CCScene* pScene = MainMenuLayer::scene();

        CCDirector::sharedDirector()->replaceScene( CCTransitionProgressRadialCW::create(0.5f, pScene) );

    }

}











MainMenuLayer.h


#ifndef __MainMenuLayer__H__

#define __MainMenuLayer__H__


#include "cocos2d.h"


using namespace cocos2d;


class MainMenuLayer : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();



    CREATE_FUNC(MainMenuLayer);


void MainMenuLayer::newGameStart(CCObject* sender);



};

#endif  // __MainMenuLayer__H__





MainMenuLayer.cpp


#include "MainMenuLayer.h"

#include "StageSelect.h"


CCScene* MainMenuLayer::scene()

{

    CCScene *scene = CCScene::create();

    

    MainMenuLayer *layer = MainMenuLayer::create();

    

    // 960 x 640

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    if (winSize.width >= 960) {

        layer->setScale(2.0);

        layer->setAnchorPoint(ccp(0.0, 0.0));

    }


    scene->addChild(layer);

    

    return scene;

}


bool MainMenuLayer::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)) )

    {

        return false;

    }

    

    /////////////////////////////

CCSize winSize=CCSizeMake(480, 320);


CCMenuItemFont *newGame=CCMenuItemFont::create("newGame", this, menu_selector(MainMenuLayer::newGameStart));

newGame->setColor(ccc3(0,0,0));

CCMenu* menu=CCMenu::create(newGame,NULL);

menu->setPosition(ccp(winSize.width/2, winSize.height/2));

this->addChild(menu);


    return true;

}


void MainMenuLayer::newGameStart(CCObject* sender)

{

CCScene* pScene=StageSelect::scene();

CCDirector::sharedDirector()->replaceScene(pScene);



}









●StageSelect.h


#ifndef __StageSelect__H__

#define __StageSelect__H__


#include "cocos2d.h"


using namespace cocos2d;


class StageSelect : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();


    CREATE_FUNC(StageSelect);

void StageSelect::doClick(CCObject* pSender);

void StageSelect::doClickX(CCObject* pSender);

bool stage2;

};

#endif  // __StageSelect__H__




●StageSelect.cpp


#include "StageSelect.h"

#include "MainMenuLayer.h"

#include "StageIdx.h"

#include "Stage1Layer.h"

#include "Stage2Layer.h"



CCScene* StageSelect::scene()

{

    CCScene *scene = CCScene::create();

    

    StageSelect *layer = StageSelect::create();

    

    // 960 x 640

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    if (winSize.width >= 960) {

        layer->setScale(2.0);

        layer->setAnchorPoint(ccp(0.0, 0.0));

    }


    scene->addChild(layer);

    

    return scene;

}


bool StageSelect::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)) )

    {

        return false;

    }

    

    /////////////////////////////


stage2 = StageIdx::getInstance()->getStage2Bool();

//stage1

CCMenuItemFont *item1=CCMenuItemFont::create("Stage1 O", this, menu_selector(StageSelect::doClick ));

item1->setColor(ccc3(0,0,0));


//stage2

std::string a;

if(stage2)

{

a="Stage2 O ";

}else{

a="String2 X ";

}

CCMenuItemFont *item2=CCMenuItemFont::create(a.c_str(), this, menu_selector(StageSelect::doClick ));

item2->setColor(ccc3(0,0,0));

/*

//stage2

if(stage2)

{

CCMenuItemFont *item2=CCMenuItemFont::create("Stage2 O", this, menu_selector(StageSelect::doClick ));

item2->setColor(ccc3(0,0,0));

}else{

CCMenuItemFont *item2=CCMenuItemFont::create("Stage2 X", this, menu_selector(StageSelect::doClickX ));

item2->setColor(ccc3(0,0,0));

}

*/

//stage3_MainMenu

CCMenuItemFont *item3=CCMenuItemFont::create("Menu", this, menu_selector(StageSelect::doClick ));

item3->setColor(ccc3(0,0,0));

CCMenu* pMenu=CCMenu::create(item1, item2, item3, NULL);

item1->setTag(1);

item2->setTag(2);

item3->setTag(3);


pMenu->alignItemsVertically();

this->addChild(pMenu);

//bool값 테스트

if(stage2)

{

CCLog("Stage2 O 11");

}else{

CCLog("Stage2 X  11111");

}


    return true;

}

//bool 값 


void StageSelect::doClick(CCObject* pSender){


//bool값 테스트

if(stage2)

{

CCLog("Stage2 O 2222");

}else{

CCLog("Stage2 X  2222");

}


CCMenuItem *titem=(CCMenuItem*)pSender;

int i=titem->getTag();


//bool 테스트

if(stage2)

{

CCLog("Stage2 O 3333");

}else{

CCLog("Stage2 X  3333");

}


switch(i){

case 1:

{

CCScene* pScenes=Stage1Layer::scene();

CCDirector::sharedDirector()->replaceScene(pScenes);

break;

}

case 2:

{

if(stage2){

CCScene* pScenes=Stage2Layer::scene();

CCDirector::sharedDirector()->replaceScene(pScenes);

CCLog("stage2 o rrrr");

break;


}else{

CCLog("stage2 x rrrr");

break;

}

}


case 3:

{

CCScene* pScene=MainMenuLayer::scene();

CCDirector::sharedDirector()->replaceScene(pScene);

break;

}


}//switch end




}


void StageSelect::doClickX(CCObject* pSender){


}











Posted by -현's-

댓글을 달아 주세요


●터치하면 캐릭터가 점프하고 장애물을 피하는 게임이다. 장애물에 충돌하면 패배화면으로 넘어간다. 코인에 충돌하면 스코어가 오른다.







●구조






●파일, 리소스 목록








●파일 목록


AppDelegate


LoadingLayer - 로딩 화면


MainMenuLayer - 메인 메뉴 화면


StageSelect - 스테이지 선택 화면


Stage1Layer - 스테이지1 


Stage2Layer - 스테이지2


StageIdx - 스테이지1을 깨야 스테이지2가 선택되도록 처리하기 위한 싱글톤 클래스를 구현


WinLayer - 승리화면


LoseLayer - 패배화면







●동영상










Posted by -현's-

댓글을 달아 주세요


●CCUserDefault

- 환경설정이나 점수등을 저장하는 등 데이터를 저장할 때 사용한다.

ios의 NSUserDefault, 안드로이드의 SharedPreferences와 비슷하다.




●String형 저장,  불러오기

- 저장

CCUserDefault::sharedUserDefault()->setStringForKey("string", "aa");     //(이름, 값)


- 불러오기

std::string s = CCUserDefault::sharedUserDefault()->getStringForKey("string");




●Interger형 저장, 불러오기

- 저장

CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 1);


- 불러오기

int i = CCUserDefault::sharedUserDefault()->getIntegerForKey("integer");




●Float형 저장, 불러오기

- 저장

CCUserDefault::sharedUserDefault()->setFloatForKey("float", 1.2f);


- 불러오기

float f = CCUserDefault::sharedUserDefault()->getFloatForKey("float");




●Double형 저장, 불러오기

- 저장

CCUserDefault::sharedUserDefault()->setDoubletForKey("double", 1.2);


- 불러오기

double d = CCUserDefault::sharedUserDefault()->getDoubleForKey("double");




●Bool형 저장, 불러오기

- 저장

CCUserDefault::sharedUserDefault()->setBooltForKey("bool", true);


- 불러오기

Bool b = CCUserDefault::sharedUserDefault()->getBoolForKey("bool");





●예제


- HelloWorldScene.h



#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__


#include "cocos2d.h"


class HelloWorld : public cocos2d::CCLayerColor

{

public:

    virtual bool init();


    static cocos2d::CCScene* scene();

    

    CREATE_FUNC(HelloWorld);



};


#endif // __HELLOWORLD_SCENE_H__




- HelloWorldScene.cpp


#include "HelloWorldScene.h"


using namespace cocos2d;


CCScene* HelloWorld::scene()

{

    CCScene *scene = CCScene::create();

    

    HelloWorld *layer = HelloWorld::create();


    scene->addChild(layer);


    return scene;

}


bool HelloWorld::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) )

    {

        return false;

    }


    /////////////////////////////


CCUserDefault::sharedUserDefault()->setStringForKey("string", "value1");

CCUserDefault::sharedUserDefault()->setFloatForKey("float", 1.1f);

CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 1);

CCUserDefault::sharedUserDefault()->setDoubleForKey("double", 5.5);

CCUserDefault::sharedUserDefault()->setBoolForKey("bool", "true");


CCUserDefault::sharedUserDefault()->flush();


////////////////////////////

std::string s = CCUserDefault::sharedUserDefault()->getStringForKey("string");

CCLog(s.c_str());

int i = CCUserDefault::sharedUserDefault()->getIntegerForKey("integer");

CCLog("%d",i);

float f = CCUserDefault::sharedUserDefault()->getFloatForKey("float");

CCLog("%f",f);

double d = CCUserDefault::sharedUserDefault()->getDoubleForKey("double");

CCLog("%f",f);

bool b = CCUserDefault::sharedUserDefault()->getBoolForKey("bool");

if(b)

{

CCLog("true");

}else

{

CCLog("false");

}


    return true;

}









'프로그래밍 > cocos2d-x' 카테고리의 다른 글

cocos2d-x warning error C2360  (1) 2013.06.03
cocos2d-x 패럴렉스노드(ParallaxNode)  (0) 2013.06.02
cocos2d-x CCUserDefault  (0) 2013.06.01
cocos2d-x 스케줄  (0) 2013.06.01
cocos2d-x 터치(Touch)  (0) 2013.06.01
cocos2d-x 심플오디오엔진(SimpleAudioEngine)  (0) 2013.05.31
Posted by -현's-

댓글을 달아 주세요


●장면 추가,삭제,교체


- HelloWorldScene.h


#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__


#include "cocos2d.h"


#include "Box2D/Box2D.h"


#include "SimpleAudioEngine.h"


class HelloWorld : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();

    

    CREATE_FUNC(HelloWorld);

void doPushScene(CCObject* pSender);

void doReplaceScene(CCObject* pSender);

};


#endif  // __HELLOWORLD_SCENE_H__




- HelloWorldScene.cpp


#include "HelloWorldScene.h"

#include "TestScene1.h"

#include "TestScene2.h"


using namespace cocos2d;


CCScene* HelloWorld::scene()

{

CCScene *scene=CCScene::create();


HelloWorld *layer=HelloWorld::create();

scene->addChild(layer);


return scene;

}


// on "init" you need to initialize your instance

bool HelloWorld::init()

{

if(!CCLayerColor::initWithColor(ccc4(255,255,255,255)))

{

return false;

}


///////////////////////


//메뉴 아이템 생성 및 초기화

CCMenuItemFont* pMenuItem1=CCMenuItemFont::create(

"pushScene", 

this, 

menu_selector(HelloWorld::doPushScene));

pMenuItem1->setColor(ccc3(0,0,0));

CCMenuItemFont* pMenuItem2=CCMenuItemFont::create(

"replaceScene", 

this, 

menu_selector(HelloWorld::doReplaceScene));

pMenuItem2->setColor(ccc3(0,0,0));

//메뉴 생성

CCMenu* pMenu=CCMenu::create(pMenuItem1,pMenuItem2, NULL);

//메뉴 위치 지정

pMenu->setPosition(ccp(240, 50));

//메뉴 정렬

pMenu->alignItemsVertically();

//레이어에 메뉴 객체 추가

this->addChild(pMenu);

return true;

}


//doPushScene 메서드 정의

void HelloWorld::doPushScene(CCObject* pSender)

{

CCScene* pScene=TestScene1::scene(); 

CCDirector::sharedDirector()->pushScene(pScene);  //기존장면 두고 새장면 올리기


}

//doReplaceScene

void HelloWorld::doReplaceScene(CCObject* pSender)

{

CCScene* pScene=TestScene2::scene();

CCDirector::sharedDirector()->replaceScene(pScene);//기존장면 없애고 새장면 교체


}





- TestScene1.h


#ifndef __TestScene1_H__

#define __TestScene1_H__


#include "cocos2d.h"

#include "Box2D/Box2D.h"

#include "SimpleAudioEngine.h"


class TestScene1 : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();

    

    CREATE_FUNC(TestScene1);


void doClose(CCObject* pSender);

};


#endif  // __HELLOWORLD_SCENE_H__





- TestScene1.cpp


#include "TestScene1.h"

using namespace cocos2d;


CCScene* TestScene1::scene()

{

CCScene *scene=CCScene::create();


TestScene1 *layer=TestScene1::create();

scene->addChild(layer);


return scene;

}


// on "init" you need to initialize your instance

bool TestScene1::init()

{

if(!CCLayerColor::initWithColor(ccc4(0,255,0,255)))

{

return false;

}


//////////////////////


//메뉴 아이템 생성 및 초기화

CCMenuItemFont* Item1=CCMenuItemFont::create(

"Close", 

this, 

menu_selector(TestScene1::doClose));

Item1->setColor(ccc3(0,0,0));

//메뉴 생성

CCMenu* pMenu=CCMenu::create(Item1, NULL);

//메뉴 위치 지정

pMenu->setPosition(ccp(240, 50));

//레이어에 메뉴 객체 추가

this->addChild(pMenu); 

return true;

}


void TestScene1::doClose(CCObject* pSender)

{

CCDirector::sharedDirector()->popScene();   //pushScene으로 연 장면 닫기

}





- TestScene2.h


#ifndef __TestScene2_H__

#define __TestScene2_H__


#include "cocos2d.h"


#include "Box2D/Box2D.h"


#include "SimpleAudioEngine.h"


class TestScene2 : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();

    

    CREATE_FUNC(TestScene2);

void doClose(CCObject* pSender);

};


#endif  // __HELLOWORLD_SCENE_H__




- TestScene2.cpp


#include "TestScene2.h"

#include "HelloWorldScene.h"


using namespace cocos2d;


CCScene* TestScene2::scene()

{

CCScene *scene=CCScene::create();


TestScene2 *layer=TestScene2::create();

scene->addChild(layer);


return scene;

}


// on "init" you need to initialize your instance

bool TestScene2::init()

{

if(!CCLayerColor::initWithColor(ccc4(255,255,0,255)))

{

return false;

}


///////////////////////

//메뉴 아이템 생성 및 초기화

CCMenuItemFont* Item1=CCMenuItemFont::create(

"Close Scene", 

this, 

menu_selector(TestScene2::doClose));

Item1->setColor(ccc3(0,0,0));

//메뉴 생성

CCMenu* pMenu=CCMenu::create(Item1, NULL);

//메뉴 위치 지정

pMenu->setPosition(ccp(240, 50));


//레이어에 메뉴 객체 추가

this->addChild(pMenu);

return true;

}


void TestScene2::doClose(CCObject* pSender)

{

CCScene* pScene=HelloWorld::scene();                     //장면을 만들고

CCDirector::sharedDirector()->replaceScene(pScene);   //교체한다


}


 















'프로그래밍 > cocos2d-x' 카테고리의 다른 글

cocos2d-x 심플오디오엔진(SimpleAudioEngine)  (0) 2013.05.31
cocos2d-x 애니메이션  (0) 2013.05.31
cocos2d-x 트랜지션(Transition) 추가,삭제,교체  (0) 2013.05.30
cocos2d-x 액션3  (0) 2013.05.29
cocos2d-x 액션2  (0) 2013.05.28
cocos2d-x 액션1  (0) 2013.05.28
Posted by -현's-

댓글을 달아 주세요



이즈 액션(Ease Action)

- 전체 액션시간은 수정하지 않고 내부의 액션 속도를 조절한다.


CCEaseIn - 액션의 끝이 빨라진다.

CCEaseOut - 액션의 처음이 빨라졌다가 끝이 느려진다.

CCEaseInOut - 액션의 처음이 느렸다가 중간에 빨라지고 끝에서 느려진다.



void HelloWorld::doAction(CCObject* pSender) 

{

//액션 정의

CCActionInterval* move=CCMoveBy::create(2,ccp(100,0));


//빨라지기

CCActionInterval* move_ease_in=CCEaseIn::create(move, 2);

//느려지기

CCActionInterval* move_ease_out=CCEaseOut::create(move, 2);

//빨라졌다 느려지기

CCActionInterval* move_ease_inout=CCEaseInOut::create(move, 2);

pMan->runAction(move_ease_in);

//pMan->runAction(move_ease_out);

//pMan->runAction(move_ease_inout);

}









●콜백 액션

- 액션에서 메서드를 호출하는 것이다. 

CCCallFunc 액션에서 메서드를 호출하게 한다. CCCallFuncN은 파라미터로 노드를 삽입한다. CCCallFuncND는 노드와 포인터형 데이터를 파리미터로 사용한다. 액션이 끝나고 어떤 동작을 수행해야 할 때 사용한다.



- HelloWorldScene.h


#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__


#include "cocos2d.h"


#include "Box2D/Box2D.h"


#include "SimpleAudioEngine.h"


class HelloWorld : public cocos2d::CCLayerColor

{

public:

    virtual bool init();  


    static cocos2d::CCScene* scene();

    

    CREATE_FUNC(HelloWorld);


cocos2d::CCSprite* pMan;

void doAction(CCObject* pSender);

void callback1();

void callback2(CCNode* sender);

void callback3(CCNode* sender, void* data);

};


#endif  // __HELLOWORLD_SCENE_H__



- HelloWorldScene.cpp


#include "HelloWorldScene.h"


using namespace cocos2d;


CCScene* HelloWorld::scene()

{

CCScene *scene=CCScene::create();


HelloWorld *layer=HelloWorld::create();

scene->addChild(layer);


return scene;

}


// on "init" you need to initialize your instance

bool HelloWorld::init()

{

if(!CCLayerColor::initWithColor(ccc4(255,255,255,255)))

{

return false;

}


///////////////////////


//메뉴 아이템 생성 및 초기화

CCMenuItemFont* pMenuItem1=CCMenuItemFont::create(

"Action", 

this, 

menu_selector(HelloWorld::doAction));

pMenuItem1->setColor(ccc3(0,0,0));

//메뉴 생성

CCMenu* pMenu=CCMenu::create(pMenuItem1, NULL);

//메뉴 위치 지정

pMenu->setPosition(ccp(240, 50));


//레이어에 메뉴 객체 추가

this->addChild(pMenu);



//Grossini 스프라이트 추가

pMan=CCSprite::create("Images/grossini.png");

pMan->setPosition(ccp(50,200));

this->addChild(pMan);

return true;

}


//doAction 메서드 정의

void HelloWorld::doAction(CCObject* pSender)

{

//Grossini 스프라이트 제거

pMan->removeFromParentAndCleanup(true);


//태그로 레이블 제거

this->removeChildByTag(1, true);

this->removeChildByTag(2, true);

this->removeChildByTag(3, true);


//Grossini 스프라이트 추가

pMan->CCSprite::create("Images/grossini.png");

pMan->setPosition(ccp(50,160));


this->addChild(false);

pMan->setVisible(false);


CCFiniteTimeAction* action=CCSequence::create(

CCPlace::create(ccp(200,200)),

CCShow::create(),

CCMoveBy::create(1, ccp(200,0)),

CCCallFunc::create(this, callfunc_selector(HelloWorld::callback1)),

     CCCallFuncN::create(this, callfuncN_selector(HelloWorld::callback2)),

     CCCallFuncND::create(this, callfuncND_selector(HelloWorld::callback3), (void*)0xbebabeba),

NULL);

pMan->runAction(action);

}


#pragma mark -

#pragma mark Callback Functions


void HelloWorld::callback1(){

CCLabelTTF *label=CCLabelTTF::create("callback 1 called", "Marker Felt", 16);

label->setPosition(ccp(120, 160));

label->setColor(ccBLACK);

label->setTag(1);

addChild(label);

}


void HelloWorld::callback2(CCNode* sender){

CCLabelTTF *label=CCLabelTTF::create("callback 2 called", "Marker Felt", 16);

label->setPosition(ccp(120, 160));

label->setColor(ccBLACK);

label->setTag(2);

addChild(label);

}


void HelloWorld::callback3(CCNode* sender, void* data){

CCLabelTTF *label=CCLabelTTF::create("callback 3 called", "Marker Felt", 16);

label->setPosition(ccp(120, 160));

label->setColor(ccBLACK);

label->setTag(3);

addChild(label);

}










'프로그래밍 > cocos2d-x' 카테고리의 다른 글

cocos2d-x 애니메이션  (0) 2013.05.31
cocos2d-x 트랜지션(Transition) 추가,삭제,교체  (0) 2013.05.30
cocos2d-x 액션3  (0) 2013.05.29
cocos2d-x 액션2  (0) 2013.05.28
cocos2d-x 액션1  (0) 2013.05.28
cocos2d-x 메뉴  (0) 2013.04.27
Posted by -현's-

댓글을 달아 주세요