首页 > 代码库 > 【雷电】源码分析(一)-- 进入游戏攻击

【雷电】源码分析(一)-- 进入游戏攻击

效果图:

程序分析:

初始化GameLayer场景触摸,背景、音乐、UI及定时间器bool GameLayer::init(){    if (!CCLayer::init()) {        return false;    }    // 开启触摸    this->setTouchEnabled(true);        // 创建数组,需要retain一下    play_bullet = CCArray::create();    play_bullet->retain();        enemy_bullet = CCArray::create();    enemy_bullet->retain();        enemy_items = CCArray::create();    enemy_items->retain();        m_state = statePlaying;//游戏开始,状态为0        Enemy::sharedEnemy();//缓存敌军飞船    Effect::sharedExplosion();//爆炸动画缓存        Config::sharedConfig()->resetConfig();//初始化分数为0、命数3条        winSize = CCDirector::sharedDirector()->getWinSize();    m_levelManager = new LevelManager(this);        //初始化背景    initBackground();    m_screenRec = CCRectMake(0, 0,  winSize.width, winSize.height + 10);        // 创建score    m_lbScore = CCLabelBMFont::create("Score:0", s_arial14_fnt);    m_lbScore->setAnchorPoint(ccp(1, 0));    m_lbScore->setAlignment(kCCTextAlignmentRight);//右对齐    addChild(m_lbScore, 1000);    m_lbScore->setPosition(winSize.width - 5, winSize.height - 30);        // ship life    CCTexture2D *shipTexture = CCTextureCache::sharedTextureCache()->addImage(s_ship01);    CCSprite *life = CCSprite::createWithTexture(shipTexture, CCRectMake(0, 0, 60, 38));    life->setScale(0.6);    life->setPosition(ccp(30,winSize.height-23));    addChild(life, 1, 5);        // 显示生命条数    char lifecount[2];    sprintf(lifecount, "%d",Config::sharedConfig()->getLifeCount());    m_lifeCount = CCLabelTTF::create(lifecount, "Arial", 20);    m_lifeCount->setPosition(ccp(60, winSize.height-20));    m_lifeCount->setColor(ccc3(255,0, 0));    addChild(m_lifeCount, 1000);        // 创建飞船    m_ship = Ship::create();    addChild(m_ship, m_ship->getZoder(), 1001);    	//游戏暂停按钮    CCMenuItemImage *pause = CCMenuItemImage::create("pause.png", "pause.png", this, menu_selector(GameLayer::doPause));    pause->setAnchorPoint(ccp(1, 0));    pause->setPosition(ccp(winSize.width, 0));    CCMenu *menu = CCMenu::create(pause, NULL);    menu->setAnchorPoint(ccp(0, 0));    addChild(menu, 1, 10);    menu->setPosition(CCPointZero);        // 调 update函数    scheduleUpdate();        // 每秒调一次 scoreCounter函数    schedule(schedule_selector(GameLayer::scoreCounter), 1);        if (Config::sharedConfig()->getAudioState()) {//背景音乐        SimpleAudioEngine::sharedEngine()->playBackgroundMusic(s_bgMusic, true);    }        return true;}