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ヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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 トランジション効果: 要素のフェードインおよびフェードアウト効果を実現する方法 はじめに: Web デザインにおいて、要素にトランジション効果を持たせることは、ユーザー エクスペリエンスを向上させる重要な手段の 1 つです。フェードイン フェードアウト エフェクトは、要素を最初から浅いところから深いところまで表示できる、一般的で簡潔なトランジション エフェクトです。この記事では、CSS を使用して要素のフェードインおよびフェードアウト効果を実現する方法と、具体的なコード例を紹介します。 1. 要素のフェードインおよびフェードアウト効果を実現するには、transition 属性を使用します CSS のtransition 属性を使用して、要素に要素を追加できます。

Windows PC の Stremio で字幕が機能しませんか?一部の Stremio ユーザーは、ビデオに字幕が表示されないと報告しました。多くのユーザーが、「字幕の読み込みエラー」というエラー メッセージが表示されたと報告しています。このエラーとともに表示される完全なエラー メッセージは次のとおりです: 字幕の読み込み中にエラーが発生しました 字幕の読み込みに失敗しました: これは、使用しているプラグインまたはネットワークに問題がある可能性があります。エラー メッセージにあるように、インターネット接続がエラーの原因である可能性があります。したがって、ネットワーク接続を確認し、インターネットが適切に機能していることを確認してください。これとは別に、このエラーの背後には、競合する字幕アドオン、特定のビデオ コンテンツでサポートされていない字幕、古い Stremio アプリなど、他の理由が考えられます。のように

インターネットの発展に伴い、スクロール読み込みをサポートする必要がある Web ページが増えています。無限スクロール読み込みもその 1 つです。これにより、ページに新しいコンテンツを継続的に読み込むことができるため、ユーザーはよりスムーズに Web を閲覧できるようになります。この記事では、PHPを使って無限スクロールローディングを実装する方法を紹介します。 1. 無限スクロールローディングとは何ですか?無限スクロール読み込みは、スクロール バーに基づいて Web コンテンツを読み込む方法です。その原理は、ユーザーがページの一番下までスクロールすると、AJAX を通じてバックグラウンド データが非同期的に取得され、新しいコンテンツが継続的に読み込まれることです。このような積み込み方法

115 ネットワーク ディスクには大量のリソースが存在しますが、リソースを見つけるにはどうすればよいでしょうか?ユーザーはソフトウェア内で必要なリソースを検索し、ダウンロード インターフェイスに入り、ネットワーク ディスクに保存することを選択できます。 115 ネットワーク ディスク上のリソースを検索する方法のこの紹介では、具体的な内容を説明します。 115 ネットワーク ディスク上のリソースを見つけるにはどうすればよいですか? 回答: ソフトウェアでコンテンツを検索し、クリックしてネットワーク ディスクに保存します。詳細な紹介: 1. まず、アプリに必要なリソースを入力します。 2. 次に、表示されるキーワードのリンクをクリックします。 3. 次に、ダウンロード インターフェイスに入ります。 4. 内部のネットワーク ディスクに保存をクリックします。

Outlook にハイパーリンクを挿入するときにフリーズの問題が発生した場合は、不安定なネットワーク接続、古い Outlook バージョン、ウイルス対策ソフトウェアによる干渉、またはアドインの競合が原因である可能性があります。これらの要因により、Outlook がハイパーリンク操作を適切に処理できない可能性があります。ハイパーリンクの挿入時に Outlook がフリーズする問題を修正する 次の修正プログラムを使用して、ハイパーリンクの挿入時に Outlook がフリーズする問題を修正します。 インストールされているアドインを確認する Outlook を更新する ウイルス対策ソフトウェアを一時的に無効にして、新しいユーザー プロファイルの作成を試行する Office アプリ プログラムを修正する Office をアンインストールして再インストールする 始めましょう。 1] インストールされているアドインを確認する Outlook にインストールされているアドインが問題の原因となっている可能性があります。

Han Xiaoquan は多くの韓国ドラマを視聴できるソフトウェアですが、なぜ突然リソースがなくなったのですか?このソフトウェアには、ネットワークの問題、バージョンの問題、または著作権の問題により、リソースがない可能性があります。 Han Xiaoquan が突然リソースを失った理由についてのこの記事では、その具体的な内容を説明します。 Han Xiaoquan に突然リソースがなくなったのはなぜですか? 回答: ネットワークの問題、バージョンの問題、および著作権の問題のため、詳細な紹介: 1. ネットワーク問題の解決策: 別のネットワークを選択し、ソフトウェアに再度ログインして試すことができます。 。 2. バージョンの問題の解決策: ユーザーは、このソフトウェアの最新バージョンを公式 Web サイトからダウンロードできます。 3. 著作権問題への対応: 一部の韓国ドラマは著作権問題により棚から削除されていますが、他の韓国ドラマを選択して視聴することができます。

CSS を読み込めない問題の解決策には、ファイル パスの確認、ファイルの内容の確認、ブラウザのキャッシュのクリア、サーバー設定の確認、開発者ツールの使用、ネットワーク接続の確認などが含まれます。詳細な紹介: 1. ファイル パスを確認します。まず、CSS ファイルのパスが正しいことを確認してください。CSS ファイルが Web サイトの別の部分またはサブディレクトリにある場合は、正しいパスを指定する必要があります。 CSS ファイルはルート ディレクトリにあり、パスは直接である必要があります。 ; 2. ファイルの内容を確認します。パスが正しい場合は、CSS ファイル自体に問題がある可能性があります。CSS ファイルを開いて確認してください。
