Cocos2d-x 3.2 大富翁游戏项目开发-第二部分片头动画

第二部分片头动画

首先在visula studio 下创建新工程

工具类ConstUtil.h,该文件主要定义了一些图片资源、字符串、字体等

#ifndef __CONSTUTIL_H__
#define __CONSTUTIL_H__
//定义了诚迈科技四张图片资源,由于在诚迈科技,就用公司名称做动画吧
#define CHENG_IMAGE   "cheng.png"
#define MAI_IMAGE     "mai.png"
#define KE_IMAGE      "ke.png"
#define JI_IMAGE      "ji.png"
#endif

新建SplashScene.cpp和SplashScene.h文件

在该h文件中,主要定义了一些方法
………………………….
const  double MOVE_SPLEED  = 0.5f; //动画播放速度
	void moveKeSpriteToLeft();       //定义ke.png 精灵向左移动的方法
	void moveMaiSpriteToLeft();   //定义mai.png精灵向左移动的方法
	void initMoveSprite();   //初始化图片方法
	void startMoveSprite(float dt);//开始移动方法
	void gotoMenuScene();//动画结束后进入MenuScene场景方法
	void spriteFadeOut();//动画逐渐消失方法
………………………….
	Sprite* mai_Sprite ;//main.png图片精灵
	Sprite* ke_Sprite ;// ke.png图片精灵
	Sprite* ji_Sprite;// ji.png图片精灵
	Sprite* cheng_Sprite;// cheng.png图片精灵
	Size visibleSize;//窗口大小
	Size spriteSize;//每张图片的尺寸大小

SplashScene.cpp主要内容如下

bool SplashScene::init()
{
	if ( !Layer::init() )
    {
        return false;
    }
	visibleSize = Director::getInstance()->getVisibleSize();//初始化窗口尺寸变量
Vec2 origin = Director::getInstance()->getVisibleOrigin();

	initMoveSprite(); //初始化动画精灵方法
	scheduleOnce(schedule_selector(SplashScene::startMoveSprite), ONE_SECOND);  //场景开始1秒后动画开始播放

    return true;
}
initMoveSprite()方法如下:
调用Sprite::create方法创建cheng 、mai 、 ke、 ji四个精灵
mai_Sprite = Sprite::create(MAI_IMAGE);
………………..
spriteSize = mai_Sprite->getContentSize();//给动画尺寸赋值,每张动画尺寸大小都一样。
//从左到右放置精灵图片
mai_Sprite->setPosition(ccp(visibleSize.width/2 - (2 *spriteSize.width),visibleSize.height/2));
ke_Sprite->setPosition(ccp(visibleSize.width/2 -  spriteSize.width,visibleSize.height/2));
ji_Sprite->setPosition(ccp(visibleSize.width/2,visibleSize.height/2));
cheng_Sprite->setPosition(ccp(visibleSize.width/2 + spriteSize.width,visibleSize.height/2));
把精灵锚点都设置为(0,0.5),这样保证四张图片可以居中排列在窗口位置
mai_Sprite->setAnchorPoint(ccp(0,0.5));
……………………
this->addChild(mai_Sprite);//添加精灵到场景

动画开始播放:

void SplashScene::startMoveSprite(float dt)
{
          //动画从右向做开始,最末一个精灵 cheng 首先开始从右向左移动一个位置
	MoveBy* moveChengToLeft1 = MoveBy::create(MOVE_SPLEED,ccp(-spriteSize.width,0));
	cheng_Sprite->runAction(moveChengToLeft1);
         //精灵ji从左向右移动一个位置,正2个动画相当于cheng和ji交换了位置
	MoveBy* moveJiToright = MoveBy::create(MOVE_SPLEED,ccp(spriteSize.width,0));

	CallFunc* callFunc = CallFunc::create(CC_CALLBACK_0(SplashScene::moveKeSpriteToLeft, this));
         //精灵ji动画结束后调用moveKeSpriteToLeft()方法,开始精灵ke 的动画
	ji_Sprite->runAction(Sequence::create(moveJiToright,callFunc,NULL));

}

精灵ke动画:

void SplashScene::moveKeSpriteToLeft()
{
       //精灵 cheng从右向左再次移动一个位置
	MoveBy* moveChengToLeft2 = MoveBy::create(MOVE_SPLEED,ccp(-spriteSize.width,0));
	cheng_Sprite->runAction(moveChengToLeft2);
//精灵ke从左向右移动一个位置,同cheng再次交换了位置
	MoveBy* ke_Sprite_MoveBy = MoveBy::create(MOVE_SPLEED,ccp(spriteSize.width,0));
	CallFunc* callFunc2 = CallFunc::create(CC_CALLBACK_0(SplashScene::moveMaiSpriteToLeft, this));
         //精灵ke动画结束后调用moveMaiSpriteToLeft()方法,开始精灵mai的动画
	ke_Sprite->runAction(Sequence::create(ke_Sprite_MoveBy,callFunc2,NULL));

}

精灵mai动画:

void SplashScene::moveMaiSpriteToLeft()
{
//精灵 cheng从右向左再次移动一个位置
	MoveBy* moveChengToLeft3 = MoveBy::create(MOVE_SPLEED,ccp(-spriteSize.width,0));
	cheng_Sprite->runAction(moveChengToLeft3);
//精灵mai从左向右移动一个位置,同cheng再次交换了位置
	MoveBy* mai_Sprite_MoveBy = MoveBy::create(MOVE_SPLEED,ccp(spriteSize.width,0));
	CallFunc* callFunc3 = CallFunc::create(CC_CALLBACK_0(SplashScene::spriteFadeOut, this));
//精灵mai动画结束后调用spriteFadeOut()方法,开始场景消失的动画
	mai_Sprite->runAction(Sequence::create(mai_Sprite_MoveBy,callFunc3,NULL));
}

场景消失动画:

void SplashScene:: spriteFadeOut()
{
//定义4个消失的FadeOut动画,持续时间2秒
	FadeOut* fadeOut1 = FadeOut::create(ONE_SECOND*2);
	FadeOut* fadeOut2 = FadeOut::create(ONE_SECOND*2);
	FadeOut* fadeOut3 = FadeOut::create(ONE_SECOND*2);
	FadeOut* fadeOut4 = FadeOut::create(ONE_SECOND*2);
	mai_Sprite->runAction(fadeOut1) ;
	ke_Sprite->runAction(fadeOut2) ;
	ji_Sprite->runAction(fadeOut3) ;
	CallFunc* callFunc4 = CallFunc::create(CC_CALLBACK_0(SplashScene::gotoMenuScene, this));
//动画结束后调用gotoMenuScene()方法进入MenuScene场景界面
	cheng_Sprite->runAction(Sequence::create(fadeOut4,callFunc4,NULL));
}

进入场景的方法gotoMenuScene(),暂时只打印一下log,下篇开始

void SplashScene::gotoMenuScene()

{

log("gotoMenuScene");

Director::getInstance()->replaceScene(MenuScene::createScene());

}

过程很简单,如下流程图所示

片头动画结束,待续................

时间: 2024-12-01 08:26:33

Cocos2d-x 3.2 大富翁游戏项目开发-第二部分片头动画的相关文章

Cocos2d-x 3.2 大富翁游戏项目开发-第二十五部分 大富翁股市

当角色走到股市图标时,进入股市界面.每走完一个回合,增加一条股票数据, 股市界面上半部分显示股票信息,包括代码,名称,当前价格,买入价格,涨跌百分比,角色持有的股票数量 下半部分显示股票价格走势,当点击一个股票时,显示相关股票的价格走势,共显示最新14条的价格走势. 每次点击购买,买入100股 .点击卖出,则卖出所持有的该股的所有股票.成交价格 等信息动态更新 点击返回,返回到游戏主界面,并更新角色资金值 1.首先添加股票类 包括代码,名称,买入价格,涨跌百分比,持仓数量等定义以及相关的get

Cocos2d-x 3.2 大富翁游戏项目开发-第二十三部分 购买彩票

当角色路过彩票的标志或者停留位置有彩票标志时,弹出购买彩票的对话框,提示购买彩票,已经买过的号码,不显示.当机器对手路过时则直接购买彩票. 1. 在RicherPlayer.h中增加std::vector<int> lottery_vector;用来存储购买的彩票号码 2. RicherGameController 修改endGo方法,每走完一步就会进入该方法,判断是否有彩票标示图标,有的话发送MSG_LOTTERY彩票消息,MOVEPASS标示走完一步的标志 void RicherGameC

Cocos2d-x 3.2 大富翁游戏项目开发-第二十九部分 游戏配音

我从大富翁里提取出来里面的wav音效文件,放到我们的游戏中以增加趣味性,仅供学习研究之用 1.修改AppDelegate.cpp文件 // This function will be called when the app is inactive. When comes a phone call,it's be invoked too void AppDelegate::applicationDidEnterBackground() { Director::getInstance()->stop

Cocos2d-x 3.2 大富翁游戏项目开发-第二十六部分 人物技能

本节主要是添加人物技能,技能包括 暴风骤雨:此技能可以把地块变成空白地块, 随心步:  选择想走的步数,想走几步走几步 巧取豪夺:把对手的土地变成自己的 技能包含的信息:等级 和 耗费体力 等级共5级,每提高一个等级,需要耗费的体力值减10 暴风骤雨:初始耗费体力值70 随心步:  初始耗费体力值50 巧取豪夺:初始耗费体力值100 1.添加技能SkillCard 类,包含了技能基本信息以及如何显示技能 其实现和前面讲解的股票 彩票 card类相似,不再累述 2.修改RicherPlayer类,

Cocos2d-x 3.2 大富翁游戏项目开发-第二十部分 螃蟹挡路

该部分我们添加螃蟹伤人事件,道路位置随机添加螃蟹精灵,当角色行走完毕如果停留位置碰到了螃蟹,首先播放伤人动画,然后是播放救护车把角色带走动画. 如果轮流到该角色行走时,吐司提示住院还有几天,当住院天数到期,该角色才可以继续行走 新建了几个精灵类 Item_crab.cpp 螃蟹 Item_emergency.cpp 救护车 Item_fog.cpp 烟雾 Item_stretcher.cpp 担架 //该方法在场景中添加这几个精灵 void GameBaseScene::initItemSpri

Cocos2d-x 3.2 大富翁游戏项目开发-第二十二部分 拾到珍珠

该部分同前面处理逻辑基本一样,道路上随机出现闪烁的珍珠,在捡到珍珠后,toast显示捡到珍珠资金增加. 1.编写Item_ball类,该类存储了珍珠相关动画 bool Item_ball::init() { addItemSpriteFrameCache(); SpriteFrame* spf; spf = itemSpriteFrameCache->getSpriteFrameByName("ball_01.png"); Sprite::initWithSpriteFrame(

Cocos2d-x 3.2 大富翁游戏项目开发-第二十七部分 技能提升和游戏结束判断

本节主要是增加技能提升事件 和 游戏结束判断,游戏判断简单处理了一下,只要有一个角色资金小于0 ,就认为游戏结束. 如果人物在3个以上,则需要做进一步处理,比如失败方的房屋如何处理,这些在处理到多个角色的时候再做处理. 1.添加提升技能随机事件 oid GameBaseScene::initRandomAskEvent() { ................. randomAskEventMap.insert(STORM_UP_TAG,LanguageString::getInstance()

Cocos2d-x 3.2 大富翁游戏项目开发-第二十四部分 彩票开奖

每隔N个回合,彩票开奖一次,每期开奖奖金固定5万,暂不累积.摇奖效果一般,以后考虑用物理引擎实现 1.定义彩票开奖类 bool LotteryPublish::init() { addItemSpriteFrameCache(); SpriteFrame* spf; spf = itemSpriteFrameCache->getSpriteFrameByName("publish_ly01.png"); Sprite::initWithSpriteFrame(spf); setI

Cocos2d-x 3.2 大富翁游戏项目开发-第二十一部分 捡到积分卡 恢复体力

跟前面第18部分处理,问号事件一样,角色行走完毕后,还要检查停留问题是否有积分卡,如果有则增加相应的体力值 1.新建Item_strength_up类,该类用来显示角色体力回升的动画. void Item_strength_up::addItemSpriteFrameCache() { itemSpriteFrameCache = SpriteFrameCache::getInstance(); itemSpriteFrameCache->addSpriteFramesWithFile("