2013-05-30 9 views
6

私のゲームは高精細ですが、私はたくさんのHD画像とスプライトシートを使って、たくさんのテクスチャメモリを使います。その結果、シーンロードの前に醜い黒い画面が表示され、数秒間スパンします。だから私は読み込み画面を作りたい。実際に2つ。 1つはメインメニュー用、もう1つはメインゲーム用です。私は一日中たくさんの検索をしましたが、ローディング画面を作成するための手順はありませんでした。コロナSDKにローディング画面を作成するにはどうすればよいですか?

ロード画面を-Having、単なるテキストは「LOADING ...」と私の次の画面資産がロードされているどのくらいの計算割合が他のテキストを言って:

は私が何をしたいのか。

- 私が完了した後、私は読み込み画面を削除し、私のメインメニューシーン、または私のメインゲームシーンを遅滞なく開始したいと思います。

私はAndroid用に開発していますが、iPhone用のコメントも歓迎します。

私のシーンフォローがロードされているかどうかはストーリーボードでどのように分かりますか? newImageRectsはどこに置くべきですか?私は単一のチュートリアルを見つけることができませんでした。

私は、あなたがシーンでそれらを使用する前に、すべての画像をプリロードすることを前提としてい

答えて

7

ごmain.luaでは、あなたがすべてのあなたのHD映像とspritesheetsをロードしますloadAlImages()を関数を作成する必要があります。

local loadingText = display.newText("LOADING ...", 0, 0, native.systemFont, 24) 
myText:setTextColor(255, 255, 255) 

local function loadAlImages() 
    --create all your images here. 

    --remove LOADING text 
end 

--if you still see black screen at the start try to increase delay > 500 ms 
timer.performWithDelay(500, loadAlImages, 1) 

今、あなたは次の画面の資産は、あなたがあなたのイメージを作成する必要がありますロードしているどのくらいの計算割合が他のテキスト、.isVisible = falseをとスプライトを表示し、更新したい場合は、いつ彼らすべてが変更されました.isVisible = true。 いくつかのイメージを作成した後、パーセントテキストを更新するコードを記述することができます。

local loadingText = display.newText("LOADING ...", 0, 0, native.systemFont, 24) 
myText:setTextColor(255, 255, 255) 

local function loadAlImages() 
    --create some images here. 
    --update text's percentage to 20% 
    --create some images here. 
    --update text's percentage to 50% 
    --create some sprites here. 
    --update text's percentage to 90% 
    --change **.isVisible=true** for all your created files but **.alpha=0** 
    --update text's percentage to 100% 
    --remove LOADING text 
    --transition .alpha of all images to 1 
end 

timer.performWithDelay(500, loadAlImages, 1) 

は、私はあなたが1つの表示グループに、すべての画像ファイルを置くことができると思うし、このグループに.isVisible =偽を設定します。これにより、いくつかのコード行が節約されます。 、α= 0


のために多くの方法が同じあります。あなたは変数を宣言し、loadAlImages()関数でそれらを作成するか、それらをすべてテーブルに入れ、そのテーブルを使って必要な画像を取得することができます。 最初の例:テーブルと

local image 

local function loadAlImages() 
    --create some images here. 

    image = display.newImageRect("image.png", 100, 100) 
    image:setReferencePoint(display.CenterReferencePoint) 
    image.x = display.contentCenterX 
    image.y = display.contentCenterY 

    --create some sprites here. 
end 

例:

local imagesTable = { } 

local function loadAlImages() 
    --create some images here. 

    local image = display.newImageRect("image.png", 100, 100) 
    image:setReferencePoint(display.CenterReferencePoint) 
    image.x = display.contentCenterX 
    image.y = display.contentCenterY 
    imagesTable.image = image 

    --create some sprites here. 
end 

詳細情報:
http://lua-users.org/wiki/ScopeTutorial
http://www.coronalabs.com/blog/2011/06/21/understanding-lua-tables-in-corona-sdk/
http://lua-users.org/wiki/TablesTutorial

+0

すべてのイメージとスプライトはローカルにあるべきですか?またはグローバル?私は機能を追加するために "タップ"イベントでそれらのいくつかを使用したいので。 – user2347313

+0

ありがとう!私が投票しました – user2347313

1

..

display.newImage() 

機能はそれを行うだろう。 これはあなたがすべきことです:

1.画像はありませんが、display.newImage()関数を使って画像を読み込みます。読み込み画面が表示されます。それを呼び出した後、500ms待って、他のすべての画像を呼び出します。ゲームは、メインメニューに行く私の言いロード画面 を削除する必要がある場合:

local loadImg = display.newImageRect("loading.png" .. blah blah) 

timer.performWithDelay(500, function() -- load all other images then main() end, 1) 
+0

私はそれを得ることはありません。私はmenu.luaファイルを持っています。これは私のmain.luaファイルです。そこにすべての画像を読み込みますが、実行しようとすると数秒間黒い画面が表示されて起動します。どこにファイルをプリロードしますか?どのような.luaファイルですか?すべての.luaファイルが自律的ではありませんか?私はコロナにとって全く新しいです。 – user2347313