cocos2d-x学习笔记 c3

来源:互联网 发布:网络术语 编辑:程序博客网 时间:2024/05/16 23:46

1.多分辨率支持


CCSize screenSize = CCEGLView::sharedOpenGLView()->getFrameSize();CCEGLView::sharedOpenGLView()->setDesignResolutionSize(768, 1024, kResolutionExactFit);if (screenSize.width > 768) {CCFileUtils::sharedFileUtils()->addSearchPath("hd");pDirector->setContentScaleFactor(2);} else {CCFileUtils::sharedFileUtils()->addSearchPath("sd");pDirector->setContentScaleFactor(1);}

2. 音乐文件预读

SimpleAudioEngine::sharedEngine()->preloadEffect( CCFileUtils::sharedFileUtils()->fullPathForFilename("hit.wav").c_str() );

3. 继承自sprite的类, 为什么不用CREATE_FUNC


#define CREATE_FUNC(__TYPE__) \static __TYPE__* create() \{ \    __TYPE__ *pRet = new __TYPE__(); \    if (pRet && pRet->init()) \    { \        pRet->autorelease(); \        return pRet; \    } \    else \    { \        delete pRet; \        pRet = NULL; \        return NULL; \    } \}

4. 处理触摸事件的正确姿势

void GameLayer::ccTouchesBegan( CCSet *pTouches, CCEvent *pEvent ) {CCSetIterator i;CCTouch* touch;CCPoint tap;GameSprite * player;for( i = pTouches->begin(); i != pTouches->end(); i++) {touch = (CCTouch*) (*i);if(touch) {tap = touch->getLocation();for (int p = 0; p < 2; p++) {player = (GameSprite *) _players->objectAtIndex(p);if (player->boundingBox().containsPoint(tap)) {player->setTouch(touch);}}}}}

5. 对每帧操作

this->schedule(schedule_selector(GameLayer::update));

void GameLayer::update (float dt){}


6. 播放一下声音

SimpleAudioEngine::sharedEngine()->playEffect("hit.wav");


7. 显示TTF字符

char score_buffer[10];if (player == 1) {_player1Score++;sprintf(score_buffer,"%i", _player1Score);_player1ScoreLabel->setString(score_buffer);_ball->setNextPosition(ccp(_screenSize.width * 0.5, _screenSize.height * 0.5 + 2 * _ball->radius()));} else {_player2Score++;sprintf(score_buffer,"%i", _player2Score);_player2ScoreLabel->setString(score_buffer);_ball->setNextPosition(ccp(_screenSize.width * 0.5, _screenSize.height * 0.5 - 2 * _ball->radius()));}

8. 内存操作规则

addchild进来的就不用管

像_players这样我想单独管理的,

_players = CCArray::create(_player1, _player2, NULL);        _players->retain();

需要单独retain()一次

所在的类析构时候

GameLayer::~GameLayer(void ) {    CC_SAFE_RELEASE(_players);}





0 0