热门IT资讯网

图文详解Cocos2d-x loading加载动画

发表于:2024-11-28 作者:热门IT资讯网编辑
编辑最后更新 2024年11月28日,这篇文章主要为大家详细介绍了制作Cocos2d-x loading加载动画的方法,文中示例代码介绍的非常详细,图文详解容易学习,非常适合初学者入门,感兴趣的小伙伴们可以参考一下。所谓的进度条,其实不过

这篇文章主要为大家详细介绍了制作Cocos2d-x loading加载动画的方法,文中示例代码介绍的非常详细,图文详解容易学习,非常适合初学者入门,感兴趣的小伙伴们可以参考一下。

所谓的进度条,其实不过是两张纹理的组合,其中一个纹理全部显示出来,而另一个纹理会随着加载的过程有一定的变化,我们可以为它设置一个动作,也可以直接设置它显示的百分比。

这就是未加载时和加载完成后的进度条显示,加载完成后,第二个纹理完全遮住了第一个纹理,但事实上他们是两个纹理。

先给出实现代码。

1. .h文件中声明全局变量。




CCSprite * loadBkSpr;CCProgressTimer * loadBar;//进度条CCSprite *loadSprite; //加载奔跑萝莉

2. .cpp文件中实现loading效果。



bool GameMain::init()

{

if( !CCLayer::init() ) {

returnfalse;

}

CCSize size = CCDirector::sharedDirector()->getWinSize();//返回CCMenuItemImage *back = CCMenuItemImage::create("backA.png","backB.png",this,menu_selector(GameMain::menuBackCallback));if(size.height > 500){ back->setScale(2.0f);} back->setPosition(ccp(size.width - 60,size.height - 60)); back->setEnabled(false); CCMenu* mainmenu = CCMenu::create(back,NULL); mainmenu->setPosition(ccp(0,0)); this->addChild(mainmenu,3,4); //加载效果 1.进度条 2.奔跑小人 //1.进度条 loadBkSpr=CCSprite::create("loading_1_1.png");//加载进度条的边框精灵 loadBkSpr->setPosition(ccp(size.width/2,size.height/2+size.height/4)); loadBkSpr->setScale(3.0f); this->addChild(loadBkSpr); loadBar=CCProgressTimer::create(CCSprite::create("loading_1_2.png")); loadBar->setPercentage(1.0f);//设置百分比,初始为0 loadBar->setPosition(ccp(size.width/2,size.height/2+size.height/4)); loadBar->setType(kCCProgressTimerTypeBar);//设置进度条为水平类型 loadBar->setBarChangeRate(ccp(1,0));//设置进度条的宽高变化,此处为宽度变化 loadBar->setMidpoint(ccp(0, 0));//设置动画运动方向从左至右 loadBar->setScale(3.0f); this->addChild(loadBar); //设置一个动作,令进度条10秒内读取到百分之100 CCProgressTo * action= CCProgressTo::create(4, 100); //加载完毕.移除加载动画,进入游戏场景 loadBar->runAction(CCSequence::create(action,CCCallFunc::create(this, callfunc_selector(GameMain::loadSuccess)),NULL)); //2.奔跑小人 loadSprite = CCSprite::create("s_1.png"); CCAnimation * animation = CCAnimation::create(); animation->addSpriteFrameWithFileName("s_1.png"); animation->addSpriteFrameWithFileName("s_2.png"); animation->addSpriteFrameWithFileName("s_3.png"); animation->addSpriteFrameWithFileName("s_4.png"); animation->addSpriteFrameWithFileName("s_5.png"); animation->addSpriteFrameWithFileName("s_6.png"); animation->setDelayPerUnit(0.1f); animation->setRestoreOriginalFrame(true); loadSprite->setPosition(ccp(100, size.height/4)); //运行奔跑动画 loadSprite->runAction(CCRepeatForever::create(CCAnimate::create(animation))); CCMoveTo *moveTo = CCMoveTo::create(4, ccp(1000, size.height/4)); loadSprite->runAction(moveTo); this->addChild(loadSprite); returntrue; }//加载完毕.移除加载动画,进入游戏场景,void GameMain::loadSuccess(){ loadBar->removeFromParent(); loadBkSpr->removeFromParent(); loadSprite->removeFromParent();}

我们所展示的进度条只不过是一个假的进度条,因为它并不是随着资源加载的百分比而变化的,事实上我们可以设置一个回调函数,在资源加载的过程中调用,并随着加载进度设置进度条的百分比,例如:

CCTextureCache::sharedTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(newScene::loadCallBack));

以上就是Cocos2d-x loading加载动画的详细方法,内容较为全面,而且我也相信有相当的一些知识点可能是我们日常工作可能会见到或用到的。通过这篇文章,希望你能收获更多。

0