Cocos2d-x简单游戏<捕鱼达人>代码实现|第四部分:加载场景类

这个简单的捕鱼游戏Demo只是完成了简单的:

 1.场景切换、数据加载、武器等级更换<大炮的升级>

 2.鱼的随机游动、大炮发射子弹、撒网、捕鱼

 3.子弹、鱼、网的碰撞检测等;

 4.场景及背景音乐的定时更换,碰撞时得音效;

 

  仅供参考、入门练习用例;

 

 第一部分:Cocos2d-x简单游戏<捕鱼达人>代码实现|第一部分:鱼类

 第二部分:Cocos2d-x简单游戏<捕鱼达人>代码实现|第二部分:子弹、渔网、大炮类

 第三部分:Cocos2d-x简单游戏<捕鱼达人>代码实现|第三部分:菜单类

 第四部分:Cocos2d-x简单游戏<捕鱼达人>代码实现|第四部分:加载场景类

 第五部分:Cocos2d-x简单游戏<捕鱼达人>代码实现|第五部分:游戏类



#ifndef __shows__LoadingScene__

#define __shows__LoadingScene__


#include <iostream>

#include "Header.h"

class LoadingScene:publicCCLayer{

    

private:

    //定义一个计数器,限制打印次数

   int count;

   void timerUpdate(float interval);


public:

    LoadingScene();

    ~LoadingScene();

    

   virtualbool init();

    CREATE_FUNC(LoadingScene);

    SCENE_FUNC(LoadingScene);

    

    //表示进入的时候

   virtualvoid onEnter();

   virtualvoid onExit();

   virtualvoid onEnterTransitionDidFinish();


};



#endif /* defined(__shows__LoadingScene__) */




#include "LoadingScene.h"

#include "GameScene.h"


LoadingScene::LoadingScene(){



}


LoadingScene::~LoadingScene(){


}


bool LoadingScene::init(){

    

   bool bRet =false;

   do {

       CC_BREAK_IF(!CCLayer::init());

        

       //创建精灵

       CCSprite *bgSprite =CCSprite::create("bg01.png");

        bgSprite->setScaleX(1.5f);

       CCSize screenSize =getScreenSize();//使用自定义的宏

        bgSprite->setPosition(CCPoint(screenSize.width/2,screenSize.height/2));

       this->addChild(bgSprite);

        

        //设置一个正在加载的loading的标签

       CCLabelTTF *loadLabel =CCLabelTTF::create("加载中..","Arial",50);

        loadLabel->setPosition(ccp(getScreenSize().width/2-150,getScreenSize().height/2));

        loadLabel->setAnchorPoint(ccp(0,0.5));//设置锚点

        loadLabel->setTag(100);//设置一个tag用于显示加载时找到该目标

       this->addChild(loadLabel);

        

        bRet =true;

    }while (0);

    

   return bRet;

}



#pragma mark ----------------------timerUpdate---------------------------

/*

 Interval 严格来说 Interval = 0.5 但是 Interval>0.5  Interval表示此次和上次定时器的时间间隔

 */

voidLoadingScene::timerUpdate(float interval){

    //通过Tag 取得CCLableTFF

    //getChildByTag this中找出tag100的对象

   CCLabelTTF *label = (CCLabelTTF *)getChildByTag(100);

   constchar *str = label->getString();

   char newStr[128];

   sprintf(newStr,"%s.",str);

    if (count++ >7) {//如果打印的 “.”数大于5,即停止计数

//        CCMoveTo *move = CCMoveTo::create(0.5f,ccp(getScreenSize().width/2-400,getScreenSize().height/2));

//        label->runAction(move);

        unschedule(schedule_selector(LoadingScene::timerUpdate));

        //加载完成后,取消定时器,启动下一动作

        //调用该方法意味着销毁当前的Layer切换到下一个场景

        CCDirector::sharedDirector()->replaceScene(GameScene::scene());

       return;

    }

    //sprinf"%s"str打印到 newstr....

    label->setString(newStr);

    

}


#pragma mark ----------------------onEnter---------------------------

//此方法 Layer界面只要显示就会调用 viewWillAppear

voidLoadingScene:: onEnter(){

   CCLayer::onEnter();

    CCLog("function is %s calling",__FUNCTION__);

    

}

voidLoadingScene:: onExit(){

   CCLayer::onExit();

    CCLog("function is %s calling",__FUNCTION__);

}


#pragma mark ----------------------onEnterTransitionDidFinish---------------------------

//此方法 界面只要显示完成后就会调用 viewDidAppear

voidLoadingScene:: onEnterTransitionDidFinish(){

    //    CCLayer::onEnterTransitionDidFinish();

    //    CCLog("function is %s calling",__FUNCTION__);

    

    //界面显示完成后启用定时器

    //系统有一个轻量的定时器

    //NSTimer在游戏中做不到想要的效果

    //此方法是系统自带的定时器每隔0.5秒调用一次thistimerUpdate方法

    //timerUpdate是自定义的定时器

    this->schedule(schedule_selector(LoadingScene::timerUpdate),1.0f);

    //    this->schedule(schedule_selector(LoadingLayer::timerUpdate));//1/60秒后启动

    

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GFanStudio-LeeSir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值