首先新建一个MainScene的类,并模仿HelloWorld引入需要的头文件等,项目中加入两张图片,主界面和主界面按钮上的背景。
CCDirector:导演类,控制游戏流程
将AppDelegate中创建的第一个场景改为刚创建的MainScene
CCScene *pScene = MainScene::scene();
CCScene:场景,层的容器<br /> CCLayer:层,各种内容的容器
在MainScene中实现一些必须的方法,如初始化等等
bool MainScene::init() { bool bRet = false; do { if ( !CCLayer::init() ) { break; } CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite* mainback = CCSprite::create("Background/main_back.jpg"); mainback->setPosition(ccp(size.width * 0.5, size.height * 0.5)); this->addChild(mainback); CCSprite* btback1 = CCSprite::create("Background/main_button_back.png"); btback1->setPosition( ccp(size.width * 0.5, size.height * 0.5) ); CCLabelTTF* pLabelStart = CCLabelTTF::create("Start", "Consolas", 28); pLabelStart->setPosition( ccp(75, 20) ); pLabelStart->setColor(ccc3(0, 0,0)); this->addChild(btback1,1); btback1->addChild(pLabelStart, 5); CCSprite* btback2 = CCSprite::create("Background/main_button_back.png"); btback2->setPosition( ccp(size.width * 0.5, size.height * 0.5-70) ); CCLabelTTF* pLabelExit = CCLabelTTF::create("Exit", "Consolas", 28); pLabelExit->setPosition( ccp(75, 20) ); pLabelExit->setColor(ccc3(0, 0, 0)); btback2->addChild(pLabelExit, 6); this->addChild(btback2,2); setTouchEnabled(true); bRet = true; } while (0); return bRet; }
在这段代码中,分别添加了一张背景,两张按钮背景,两段文字。
CCSprite:精灵,代表了游戏的最小可见单位。
上面添加的每张图片都是一个精灵。
CCSprite和CCLayer都继承自CCNode,而addChild正是CCNode中的方法,因此可以向层或者精灵中中添加精灵。
下面的代码在MainScene层响应触摸事件,获取坐标,并执行退出操作:
void MainScene::ccTouchesBegan(CCSet* touches, CCEvent *event) { if(touches->count()==1) { CCTouch* touch = dynamic_cast<CCTouch*>(touches->anyObject()); CCPoint position = touch->getLocationInView(); position=CCDirector::sharedDirector()->convertToGL(position); CCLOG("X = %f Y = %f",position.x,position.y); if(position.x>166&&position.x<313&&position.y>306&&position.y<353) { CCDirector::sharedDirector()->end(); } } }