Cocos2dx 3.0 过渡篇(十)资源加载进度条Loading...
http://blog.csdn.net/start530/article/details/19420317 本来这篇博文是昨晚就要写的,可是因为今早要去参加考驾照相关的体检,而我最害怕的就是视力没能达到5.0,毕竟这阶段对着屏幕的时间过久。 所以呢,昨晚我几乎没碰电脑,没玩手机,早睡早起。体检顺
http://blog.csdn.net/start530/article/details/19420317
本来这篇博文是昨晚就要写的,可是因为今早要去参加考驾照相关的体检,而我最害怕的就是视力没能达到5.0,毕竟这阶段对着屏幕的时间过久。
所以呢,昨晚我几乎没碰电脑,没玩手机,早睡早起。体检顺利通过!首先,我要说的是:这次我要写的主题是进度条。 额,等等,先收起你手里愤怒的西瓜刀。我也才知道TestCpp也有这个例子啊。不过TestCpp里的只有label的变化,而我的多加了个进度条。
请容我对我的这种手段取个好听的名称:画龙点睛!
恩,步骤如下:
1、创建label和progressTimer;
2、加载资源,每加载一张都调用回调函数;
3、加载完成,进入新的界面。
首先看下头文件:HelloWorld.h
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::Layer { public: HelloWorld():m_numSp(20),m_loadedSp(0),loadProgress(NULL){}; static cocos2d::Scene* createScene(); virtual bool init(); void loadingCallback(Object* pSender);//加载一张图片完成后跳转的毁掉函数 void gotoNewLayer();//加载完后的跳转函数 CREATE_FUNC(HelloWorld); private: cocos2d::ProgressTimer* loadProgress;//进度条 cocos2d::LabelTTF* percentLabel;//加载进度label cocos2d::LabelTTF* loadLabel;//显示 loading: 的label int m_numSp;//要加载的精灵数目,初始化为 20 张 int m_loadedSp;//已加载的精灵数目 }; #endif // __HELLOWORLD_SCENE_H__
1、创建
Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); loadLabel = LabelTTF::create("Loading:","Arial",20);//创建显示Loading: 的label loadLabel->setPosition(Point(visibleSize.width/2-30,visibleSize.height/2+30)); this->addChild(loadLabel,1); percentLabel = LabelTTF::create("0%","Arial",20);//创建显示百分比的label percentLabel->setPosition(Point(visibleSize.width/2+35,visibleSize.height/2+30)); this->addChild(percentLabel,2); auto loadBg = Sprite::create("sliderTrack.png");//进程条的底图 loadBg->setPosition(Point(visibleSize.width/2,visibleSize.height/2)); this->addChild(loadBg,1); loadProgress = ProgressTimer::create(Sprite::create("sliderProgress.png"));//创建一个进程条 loadProgress->setBarChangeRate(Point(1,0));//设置进程条的变化速率 loadProgress->setType(ProgressTimer::Type::BAR);//设置进程条的类型 loadProgress->setMidpoint(Point(0,1));//设置进度的运动方向 loadProgress->setPosition(Point(visibleSize.width/2,visibleSize.height/2)); loadProgress->setPercentage(0.0f);//设置初始值为0 this->addChild(loadProgress,2);
2、加载图片
//加载20张图片,每加载完一张就调用回调函数:loadingCallback Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld1.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld2.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld3.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld4.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld5.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld6.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld7.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback)); Director::getInstance()->getTextureCache()->addImageAsync("HelloWorld.png",this,callfuncO_selector(HelloWorld::loadingCallback));
3、图片加载后的回调函数:
void HelloWorld::loadingCallback(Object* pSender) { ++m_loadedSp;//每进到这个函数一次,让m_loadedSp + 1 char buf_str[16]; sprintf(buf_str,"%d%%",(int)(((float)m_loadedSp / m_numSp) * 100),m_numSp); percentLabel->setString(buf_str);//更新percentLabel的值 float newPercent = 100 - ((float)m_numSp - (float)m_loadedSp)/((float)m_numSp/100);//计算进度条当前的百分比 //因为加载图片速度很快,所以就没有使用ProgressTo, //或者ProgressFromTo这种动作来更新进度条 loadProgress->setPercentage(newPercent);//更新进度条 //图片加载完成后 if(m_loadedSp == m_numSp) { this->removeChild(loadProgress);//将添加的几个对象删除掉 this->removeChild(percentLabel); this->removeChild(loadLabel); //加载完既要跳转到gotoNewLayer,在这里可以 //创建新的Scene,新的Layer,或者其他什么乱七八糟的 this->gotoNewLayer(); } }
4、进入新的界面
void HelloWorld::gotoNewLayer() { auto size = Director::getInstance()->getWinSize(); auto sp = Sprite::create("HelloWorld.png");//用之前加载到缓存中的图片,创建一个精灵。 sp->setPosition(Point(size.width/2,size.height/2)); this->addChild(sp,1); }
因为代码里注释都写的挺详细的,所以我也就不说太多废话了。
恩,写完了。这篇是下班后加班写的,外面又下了大雨,我要赶紧冲回去吃饭了。风一般的男纸。
http://blog.csdn.net/start530?viewmode=contents

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제










![Illustrator에서 플러그인 로드 중 오류 발생 [수정됨]](https://img.php.cn/upload/article/000/465/014/170831522770626.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Adobe Illustrator를 시작할 때 플러그인 로딩 오류에 대한 메시지가 팝업됩니까? 일부 Illustrator 사용자는 응용 프로그램을 열 때 이 오류가 발생했습니다. 메시지 뒤에는 문제가 있는 플러그인 목록이 표시됩니다. 이 오류 메시지는 설치된 플러그인에 문제가 있음을 나타내지만 손상된 Visual C++ DLL 파일이나 손상된 기본 설정 파일과 같은 다른 이유로 인해 발생할 수도 있습니다. 이 오류가 발생하면 이 문서에서 문제 해결 방법을 안내하므로 아래 내용을 계속 읽어보세요. Illustrator에서 플러그인 로드 오류 Adobe Illustrator를 시작하려고 할 때 "플러그인 로드 오류" 오류 메시지가 표시되면 다음을 사용할 수 있습니다. 관리자로

CSS 전환 효과: 요소의 페이드 인 및 페이드 아웃 효과를 얻는 방법 소개: 웹 디자인에서 요소에 전환 효과를 만드는 것은 사용자 경험을 향상시키는 중요한 수단 중 하나입니다. 페이드인-페이드아웃 효과는 요소가 처음부터 얕은 것부터 깊은 것까지 나타나도록 할 수 있는 일반적이고 간결한 전환 효과입니다. 이 기사에서는 CSS를 사용하여 요소의 페이드인 및 페이드아웃 효과를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 요소의 페이드 인 및 페이드 아웃 효과를 얻으려면 전환 속성을 사용하십시오. CSS의 전환 속성은 요소에 요소를 추가할 수 있습니다.

Windows PC의 Stremio에서 자막이 작동하지 않습니까? 일부 Stremio 사용자는 동영상에 자막이 표시되지 않는다고 보고했습니다. 많은 사용자들이 "자막을 로드하는 중 오류가 발생했습니다."라는 오류 메시지가 나타났다고 보고했습니다. 이 오류와 함께 나타나는 전체 오류 메시지는 다음과 같습니다. 자막을 로드하는 동안 오류가 발생했습니다. 자막을 로드하지 못했습니다. 이는 사용 중인 플러그인이나 네트워크에 문제가 있을 수 있습니다. 오류 메시지에서 알 수 있듯이 인터넷 연결로 인해 오류가 발생할 수 있습니다. 따라서 네트워크 연결을 확인하고 인터넷이 제대로 작동하는지 확인하십시오. 이 외에도 충돌하는 자막 추가 기능, 특정 비디오 콘텐츠에 대해 지원되지 않는 자막, 오래된 Stremio 앱 등 이 오류의 다른 이유가 있을 수 있습니다. 좋다

인터넷이 발전하면서 점점 더 많은 웹페이지에서 스크롤 로딩을 지원해야 하는데, 무한 스크롤 로딩이 그 중 하나입니다. 이를 통해 페이지에 새로운 콘텐츠가 지속적으로 로드되어 사용자가 웹을 보다 원활하게 탐색할 수 있습니다. 이번 글에서는 PHP를 이용하여 무한 스크롤 로딩을 구현하는 방법을 소개하겠습니다. 1. 무한 스크롤 로딩이란 무엇인가요? 무한 스크롤 로딩은 스크롤 막대를 기반으로 웹 콘텐츠를 로딩하는 방법입니다. 그 원리는 사용자가 페이지 하단으로 스크롤할 때 AJAX를 통해 배경 데이터를 비동기적으로 검색하여 지속적으로 새 콘텐츠를 로드하는 것입니다. 이런 종류의 로딩 방법

115 네트워크 디스크에는 많은 리소스가 있을 것인데 리소스를 찾는 방법은 무엇입니까? 사용자는 소프트웨어에서 필요한 리소스를 검색한 다음 다운로드 인터페이스로 들어간 다음 네트워크 디스크에 저장하도록 선택할 수 있습니다. 115 네트워크 디스크에서 리소스를 찾는 방법에 대한 이 소개는 구체적인 내용을 알려줄 수 있습니다. 다음은 자세한 소개입니다. 와서 살펴보세요. 115 네트워크 디스크에서 리소스를 찾는 방법 답변: 소프트웨어에서 콘텐츠를 검색한 다음 클릭하여 네트워크 디스크에 저장합니다. 자세한 소개: 1. 먼저 앱에서 원하는 리소스를 입력하세요. 2. 그러면 나타나는 키워드 링크를 클릭하세요. 3. 그런 다음 다운로드 인터페이스로 들어갑니다. 4. 내부 네트워크 디스크에 저장을 클릭합니다.

Outlook에 하이퍼링크를 삽입할 때 정지 문제가 발생하는 경우 불안정한 네트워크 연결, 이전 Outlook 버전, 바이러스 백신 소프트웨어의 간섭 또는 추가 기능 충돌이 원인일 수 있습니다. 이러한 요인으로 인해 Outlook이 하이퍼링크 작업을 제대로 처리하지 못할 수 있습니다. 하이퍼링크를 삽입할 때 Outlook이 멈추는 문제 해결 다음 수정 사항을 사용하여 하이퍼링크를 삽입할 때 Outlook이 멈추는 문제를 해결하세요. 설치된 추가 기능 확인 Outlook 업데이트 일시적으로 바이러스 백신 소프트웨어를 비활성화한 다음 새 사용자 프로필을 만들어 보세요. Office 앱 수정 프로그램 Office 제거 및 재설치 시작하겠습니다. 1] 설치된 추가 기능을 확인하세요. Outlook에 설치된 추가 기능이 문제의 원인일 수 있습니다.

한샤오취안은 한국 드라마를 많이 볼 수 있는 소프트웨어인데 왜 갑자기 리소스가 없나요? 이 소프트웨어는 네트워크 문제, 버전 문제 또는 저작권 문제로 인해 리소스가 없을 수 있습니다. Han Xiaoquan이 갑자기 자원이 없는 이유에 대한 이 기사는 구체적인 내용을 알려줄 수 있습니다. 다음은 자세한 소개입니다. 와서 살펴보세요. Han Xiaoquan에 갑자기 리소스가 없는 이유는 무엇입니까? 답변: 네트워크 문제, 버전 문제 및 저작권 문제로 인해 자세한 소개: 1. 네트워크 문제 해결 방법: 다른 네트워크를 선택한 다음 소프트웨어에 다시 로그인하여 시도해 볼 수 있습니다. . 2. 버전 문제 해결: 사용자는 공식 웹사이트에서 이 소프트웨어의 최신 버전을 다운로드할 수 있습니다. 3. 저작권 문제 해결: 저작권 문제로 인해 일부 한국 드라마가 목록에서 제거되었습니다. 다른 한국 드라마를 선택하여 시청할 수 있습니다.

CSS를 로드할 수 없는 문제에 대한 해결 방법에는 파일 경로 확인, 파일 내용 확인, 브라우저 캐시 지우기, 서버 설정 확인, 개발자 도구 사용 및 네트워크 연결 확인이 포함됩니다. 자세한 소개: 1. 파일 경로를 확인하십시오. 먼저 CSS 파일의 경로가 올바른지 확인하십시오. CSS 파일이 웹사이트의 다른 부분이나 하위 디렉토리에 있는 경우 올바른 경로를 제공해야 합니다. CSS 파일은 루트 디렉토리에 있으며 경로는 직접적이어야 합니다. 2. 파일 내용을 확인하십시오. 경로가 올바른 경우 CSS 파일 자체에 문제가 있을 수 있습니다.
