cocos2d - x 서로 다른 층 제어 정령 및 충돌 검출
3991 단어 helloworldcocos2d-x
새 프로젝트 를 만 든 후 HudLayer 클래스 를 새로 만 듭 니 다.
HudLayer.h
#include "cocos2d.h"
USING_NS_CC;
class HudLayer:public CCLayer
{
public:
CREATE_FUNC(HudLayer);
bool init();
//
void start();
};
HudLayer.cpp
bool HudLayer::init()
{
bool pRet = false;
do {
CC_BREAK_IF(!CCLayer::init());
//
CCMenuItemImage* start = CCMenuItemImage::create("Icon-72.png", "Icon-72.png", this, menu_selector(HudLayer::start));
start->setPosition(ccp(100, 100));
CCMenu* pMenu = CCMenu::create(start,NULL);
this->addChild(pMenu);
pRet = true;
} while (0);
return pRet;
}
void HudLayer::start()
{
//
CCNotificationCenter::sharedNotificationCenter()->postNotification("change");
}
Hello World Scene 류 에 대해 다음 과 같이 수정 합 니 다.
HelloWorldScene.h
#include "HudLayer.h"
USING_NS_CC;
class HelloWorld : public cocos2d::CCLayerColor
{
public:
// Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)
virtual bool init();
// there's no 'id' in cpp, so we recommend to return the class instance pointer
static cocos2d::CCScene* scene();
HelloWorld();
//
CCArray* _arr;
//
CCArray* _mon;
void update(float dt);
HudLayer* hud;
void change();
// preprocessor macro for "static create()" constructor ( node() deprecated )
CREATE_FUNC(HelloWorld);
};
HelloWorldScene.cpp
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)))
{
return false;
}
// , HudLayer
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(HelloWorld::change), "change", NULL);
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("zzzz.plist");
CCSpriteBatchNode* node = CCSpriteBatchNode::create("zzzz.pvr.ccz");
this->addChild(node);
_arr = CCArray::create();
_arr->retain();
CCSprite* player = CCSprite::createWithSpriteFrameName("Player.png");
player->setPosition(ccp(100, 100));
node->addChild(player);
_arr->addObject(player);
hud = HudLayer::create();
this->addChild(hud);
//
_mon = CCArray::create();
_mon->retain();
for (int i = 0; i <10;i++ )
{
CCSprite* monster = CCSprite::createWithSpriteFrameName("projectile2.png");
node->addChild(monster);
_mon->addObject(monster);
monster->setPosition(ccp(100, 200));
}
this->scheduleUpdate();
return true;
}
void HelloWorld::update(float dt)
{
CCObject* obj1 = NULL;
CCObject* obj2 = NULL;
CCARRAY_FOREACH(_arr, obj1)
{
CCSprite* player = (CCSprite*)obj1;
CCArray* monsDelete = CCArray::create();
CCARRAY_FOREACH(_mon, obj2)
{
CCSprite* mon = (CCSprite*)obj2;
if (player->boundingBox().intersectsRect(mon->boundingBox()))
{
monsDelete->addObject(mon);
}
}
CCARRAY_FOREACH(monsDelete, obj2)
{
CCSprite* mon = (CCSprite*)obj2;
mon->setVisible(false);
}
}
}
void HelloWorld::change()
{
CCSprite* player1 = (CCSprite*)_arr->objectAtIndex(0);
CCMoveBy* moBy = CCMoveBy::create(1, ccp(0, 100));
player1->runAction(moBy);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
안녕, 세계! C 프로그램이번 포스팅에서는 Hello, World! 이해하기 쉬운 방식으로 C로 프로그래밍하십시오. Hello, World를 이해하기 위해! C로 프로그래밍하려면 다음 게시물에 대한 지식이 있어야 합니다. (해시) 포함 (해...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.