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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas
![Ralat memuatkan pemalam dalam Illustrator [Tetap]](https://img.php.cn/upload/article/000/465/014/170831522770626.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Apabila memulakan Adobe Illustrator, adakah mesej tentang ralat memuatkan pemalam timbul? Sesetengah pengguna Illustrator telah mengalami ralat ini semasa membuka aplikasi. Mesej itu diikuti dengan senarai pemalam yang bermasalah. Mesej ralat ini menunjukkan bahawa terdapat masalah dengan pemalam yang dipasang, tetapi ia juga mungkin disebabkan oleh sebab lain seperti fail Visual C++ DLL yang rosak atau fail pilihan yang rosak. Jika anda menghadapi ralat ini, kami akan membimbing anda dalam artikel ini untuk menyelesaikan masalah, jadi teruskan membaca di bawah. Ralat memuatkan pemalam dalam Illustrator Jika anda menerima mesej ralat "Ralat memuatkan pemalam" semasa cuba melancarkan Adobe Illustrator, anda boleh menggunakan yang berikut: Sebagai pentadbir

Kesan peralihan CSS: Bagaimana untuk mencapai kesan fade-in dan fade-out bagi elemen Pengenalan: Dalam reka bentuk web, menjadikan elemen mempunyai kesan peralihan adalah salah satu cara penting untuk meningkatkan pengalaman pengguna. Kesan fade-in-fade-out ialah kesan peralihan biasa dan padat yang boleh membuatkan elemen kelihatan dari awal, dari cetek ke dalam. Artikel ini akan memperkenalkan cara menggunakan CSS untuk mencapai kesan fade-in dan fade-out elemen, dan memberikan contoh kod khusus. 1. Gunakan atribut peralihan untuk mencapai kesan fade-in dan fade-out elemen. Atribut peralihan CSS boleh menambah elemen pada elemen.

Sarikata tidak berfungsi pada Stremio pada PC Windows anda? Sesetengah pengguna Stremio melaporkan bahawa sari kata tidak dipaparkan dalam video. Ramai pengguna melaporkan mengalami mesej ralat yang mengatakan "Ralat memuatkan sari kata." Berikut ialah mesej ralat penuh yang muncul dengan ralat ini: Ralat berlaku semasa memuatkan sari kata Gagal memuatkan sari kata: Ini mungkin masalah dengan pemalam yang anda gunakan atau rangkaian anda. Seperti yang dikatakan oleh mesej ralat, mungkin sambungan internet anda yang menyebabkan ralat. Jadi sila semak sambungan rangkaian anda dan pastikan internet anda berfungsi dengan baik. Selain itu, mungkin terdapat sebab lain di sebalik ralat ini, termasuk sarikata yang bercanggah, sari kata yang tidak disokong untuk kandungan video tertentu dan apl Stremio yang sudah lapuk. suka

Akan ada banyak sumber dalam cakera rangkaian 115, jadi bagaimana untuk mencari sumber? Pengguna boleh mencari sumber yang mereka perlukan dalam perisian, kemudian masukkan antara muka muat turun, dan kemudian memilih untuk menyimpan ke cakera rangkaian. Pengenalan kepada kaedah mencari sumber pada cakera rangkaian 115 ini boleh memberitahu anda kandungan tertentu Berikut ialah pengenalan terperinci, datang dan lihat. Bagaimana untuk mencari sumber pada cakera rangkaian 115 Jawapan: Cari kandungan dalam perisian, dan kemudian klik untuk menyimpan ke cakera rangkaian. Pengenalan terperinci: 1. Mula-mula masukkan sumber yang anda inginkan dalam apl. 2. Kemudian klik pautan kata kunci yang muncul. 3. Kemudian masukkan antara muka muat turun. 4. Klik Simpan ke cakera rangkaian di dalam.

Dengan perkembangan Internet, semakin banyak halaman web perlu menyokong pemuatan tatal, dan pemuatan tatal yang tidak terhingga adalah salah satu daripadanya. Ia membolehkan halaman memuatkan kandungan baharu secara berterusan, membolehkan pengguna menyemak imbas web dengan lebih lancar. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan pemuatan skrol tak terhingga menggunakan PHP. 1. Apakah pemuatan skrol tak terhingga? Pemuatan skrol tak terhingga ialah kaedah memuatkan kandungan web berdasarkan bar skrol. Prinsipnya ialah apabila pengguna menatal ke bahagian bawah halaman, data latar belakang diambil secara tak segerak melalui AJAX untuk memuatkan kandungan baharu secara berterusan. Kaedah pemuatan seperti ini

Jika anda menghadapi isu beku semasa memasukkan hiperpautan ke dalam Outlook, ia mungkin disebabkan oleh sambungan rangkaian yang tidak stabil, versi Outlook lama, gangguan daripada perisian antivirus atau konflik tambahan. Faktor-faktor ini boleh menyebabkan Outlook gagal mengendalikan operasi hiperpautan dengan betul. Betulkan Outlook terhenti apabila memasukkan hiperpautan Gunakan pembetulan berikut untuk membetulkan Outlook terhenti apabila memasukkan hiperpautan: Semak alat tambah yang dipasang Kemas kini Outlook Lumpuhkan sementara perisian antivirus anda dan kemudian cuba buat profil pengguna baharu Betulkan apl Office Program Nyahpasang dan pasang semula Office Mari mulakan. 1] Semak add-in yang dipasang Mungkin add-in yang dipasang dalam Outlook menyebabkan masalah.

Penyelesaian kepada masalah yang CSS tidak boleh dimuatkan termasuk menyemak laluan fail, menyemak kandungan fail, mengosongkan cache penyemak imbas, menyemak tetapan pelayan, menggunakan alat pembangun dan menyemak sambungan rangkaian. Pengenalan terperinci: 1. Semak laluan fail Mula-mula, sila pastikan laluan fail CSS adalah betul. Jika fail CSS terletak di bahagian atau subdirektori laman web yang berbeza, anda perlu menyediakan laluan yang betul Fail CSS terletak dalam direktori akar, laluan harus terus ;

Han Xiaoquan ialah perisian yang boleh menonton banyak drama Korea, jadi kenapa tiba-tiba tiada sumber? Perisian ini mungkin tidak mempunyai sumber kerana masalah rangkaian, masalah versi atau isu hak cipta. Artikel mengenai sebab Han Xiaoquan tiba-tiba tidak mempunyai sumber boleh memberitahu anda kandungan khusus Berikut ialah pengenalan terperinci, datang dan lihat. Mengapa tiba-tiba Han Xiaoquan tidak mempunyai sumber Jawapan: Disebabkan masalah rangkaian, masalah versi dan isu hak cipta, pengenalan terperinci: 1. Penyelesaian kepada masalah rangkaian: Anda boleh memilih rangkaian lain, dan kemudian log masuk ke perisian sekali lagi untuk mencuba? . 2. Penyelesaian kepada masalah versi: Pengguna boleh memuat turun versi terkini perisian ini daripada laman web rasmi. 3. Penyelesaian kepada isu hak cipta: Beberapa drama Korea dialih keluar daripada rak kerana isu hak cipta Anda boleh memilih drama Korea lain untuk ditonton.
