cocos2d-x 3.0 Loading界面实现(2)
来源:未知 责任编辑:责任编辑 发表时间:2015-01-01 13:14 点击:次
void LoadingScene::loadingLogic(float dt){ _curProgress ++; if(_curProgress > 100){ //begin the game choose scene Director::getInstance()->replaceScene(TransitionFade::create(0.5f,ChooseScene::createScene())); return; } _progressBar->setValue(_curProgress); int startX = _progressBar->getPositionX() - _progressBar->getContentSize().width / 2 +10 ; int unitX = _progressBar->getContentSize().width / 100; _barTip->setPositionX(startX + _curProgress * unitX); char str[10] = {0}; sprintf(str,"%d%",_curProgress); _barTipLabel->setString(str); }
咦,看到这里有没有觉得哪里不对?好吧,被你发现了,说好的资源加载哪里去了?而且资源加载的进度百分比怎么算的呢?
好吧,继续,比如我们有一百张图片资源。。。(为什么不是99张?)
void LoadingScene::onEnter(){ Layer::onEnter(); //加载一次图片资源就回调一次 Director::getInstance()->getTextureCache()->addImageAsync("1.png",this,callfunc_selector(LoadingScene::loadingCallback)); ... ... ... Director::getInstance()->getTextureCache()->addImageAsync("100.png",this,callfunc_selector(LoadingScene::loadingCallback)); }
然后回调函数实现,每次执行动态更新提示框的位置和文字标签的信息,到了第一百次,就开启另外一个界面,恩,还是这么简单。。。
void LoadingScene::loadingCallback(){ _curProgress ++; if(_curProgress > 100){ //begin the game choose scene Director::getInstance()->replaceScene(TransitionFade::create(0.5f,ChooseScene::createScene())); return; } _progressBar->setValue(_curProgress); int startX = _progressBar->getPositionX() - _progressBar->getContentSize().width / 2 +10 ; int unitX = _progressBar->getContentSize().width / 100; _barTip->setPositionX(startX + _curProgress * unitX); char str[10] = {0}; sprintf(str,"%d%",_curProgress); _barTipLabel->setString(str); }
其实思路都差不多啦,大概就是根据( 已经加载的图片数 / 总图片资源数)百分比来算出进度条的百分比来滑动,或者干脆把进度条最大值设置成图片资源总数,加载多少就滑动多少。。
==================================
恩,就这样子吧,好困的夜晚。。晚安
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>