游戏开始界面初始化
预加载资源
//设置安卓返回键
setKeypadEnabled(true);
//加载全局图片信息
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("ui/shoot_background.plist");
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("ui/shoot.plist");
//加载全局音乐信息
void LayerGameStart::addPreLoadMusic();
<h3>加载背景图片</h3>
CCSprite* bg = CCSprite::createWithSpriteFrameName("background.png");
bg->setPosition(CCPoint(WinSize.width/2, WinSize.height/2));
addChild(bg);
CCSprite* bgLoag = CCSprite::createWithSpriteFrameName("shoot_copyright.png");
bgLoag->setAnchorPoint(ccp(0.5, 0));
bgLoag->setPosition(ccp(WinSize.width/2, WinSize.height/2));
bg->addChild(bgLoag);
<h5>设置小飞机加载动画</h5>
<p>
CCSprite* loading = CCSprite::createWithSpriteFrameName("game_loading1.png");
loading->setPosition(ccp(WinSize.width/2, WinSize.height/12*5));
addChild(loading);
CCAnimation* animation = CCAnimation::create();
animation->setDelayPerUnit(0.2f);
char nameBuf[100];
for (int i = 0; i < 4; i ++)
{
memset(nameBuf, 0, sizeof(nameBuf));
sprintf(nameBuf, "game_loading%d.png", i + 1);
animation->addSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(nameBuf));
}
CCAnimate* animate = CCAnimate::create(animation);
CCRepeat* repeat = CCRepeat::create(animate, 4);//重复4次
CCCallFunc* loadingDone = CCCallFunc::create(this, callfunc_selector(LayerGameStart::toMainGameCallBack));
CCSequence* sequence = CCSequence::create(repeat, loadingDone, NULL);
loading->runAction(sequence);
</p>
<h5>调用回调函数跳转到游戏主场景</h5>
<p>
void LayerGameStart::toMainGameCallBack()
{
CCScene *scene = LayerGameMain::scene();
CCDirector::sharedDirector()->replaceScene(scene);
}
</p>
<br><br>
<h3 align="center">
<ins><strong>游戏主场景界面初始化</strong></ins>
</h3>
<h5>播放背景音乐</h5>
<p>
//播放背景音乐
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sound/game_music.wav", true);
</p>
<h5>加载设置背景图片</h5>
<p>
CCSprite* bg1 = CCSprite::createWithSpriteFrameName("background.png");
bg1->setTag(BACK1);
bg1->setAnchorPoint(ccp(0.5,0));
bg1->setPosition(ccp(WinSize.width/2, 0));
this->addChild(bg1);
CCSprite* bg2 = CCSprite::createWithSpriteFrameName("background.png");
bg2->setTag(BACK2);
bg2->setAnchorPoint(ccp(0.5,0));
bg2->setPosition(ccp(WinSize.width/2, bg1->getPositionY()-2));
this->addChild(bg2);
</p>
<h5>让背景滚动函数</h5>
<p>
void LayerGameMain::movingBackGround(float dt)
{
CCSprite* bg1 = (CCSprite*)this->getChildByTag(BACK1);
CCSprite* bg2 = (CCSprite*)this->getChildByTag(BACK2);
bg1->setPositionY(bg1->getPositionY()-2);
bg2->setPositionY(bg1->getPositionY()+bg2->getContentSize().height-2);
if (bg2->getPositionY() < 0)
{
bg1->setPositionY(0);
}
}
//定时器,调用背景滚动函数
schedule(schedule_selector(LayerGameMain::movingBackGround), 0.01f);
</body>