「背景を表示する」の編集履歴(バックアップ)一覧に戻る

背景を表示する - (2009/04/11 (土) 10:19:27) のソース

入門編・6
シューティングゲームもどきを作る
*背景を表示する
今回は内容的には、画像の表示を行います。
画像の表示はスクリプト入門の基礎編でもやりましたが、Cacheという、通常使われる技術を使っていなかったので、それを使って記述します。また、背景については作るのが大変なので、デフォルトで入っている素材から
Graphics/Parallaxesに入っているMountainsを転用します。
** 画像の表示
画像の表示は、以下の記述で行います。
>    @background = Sprite.new
>   @background.bitmap = Cache.parallax("Mountains")
今回は、変数名にbackgroundを使いましたが、これは何でも構いません。
1行目では、@backgroundという変数に割り当てて、新規の&bold(){スプライト}を作成しています。
スプライトは、画像を表示するための基本原理で、ゲーム画面中に存在する板のようなものです。
2行目で、そのスプライトに画像を割り当てています。
スプライトは、作成しただけでは透明な板です。そのスプライトのbitmapに画像を割り当てることで、絵を映した板になります。
** 実行のタイミング
では、この2行をどこに入れるべきでしょうか。
背景画像は、シーンのメインループが始まる前から存在しているべきですから、開始処理、startのところに記述しましょう。
startメソッドの部分を、このように書き換えます。
>  def start
>    @background = Sprite.new
>    @background.bitmap = Cache.parallax("Mountains")
>  end
実行してみると、背景画像がフェードインで表示されると思います。
#ref(09_04_11_1.jpg)
** メソッドごとに分ける
さて、このままでもいいのですが、この調子でstartに記述を続けていくと、startの中身がどんどん見にくくなってしまいます。
そこで、デフォルトのスクリプトの記述にならい、別名のメソッドを作り、そのメソッドの中に処理ごとに記述を小分けにします。
背景を表示するメソッドなので、create_backgroundとでもしておきましょう。
>  def start
>    create_background  #背景を作成
>  end
startメソッドをこう書き換え、スクリプトの一番下、最後のendの上の行に、
> def create_background
>   @background = Sprite.new
>   @background.bitmap = Cache.parallax("Mountains")    
> end
と追加しましょう。startで、create_backgroundが呼び出され、別途下に定義したcreate_backgroundが実行されることになります。実行すると同じ結果になります。
**画像を解放する
さて、スプライトを作成して画像を読み込み、表示したわけですが、このスプライト、画像は、コンピュータ内では記憶領域を確保してそこにデータを置いてあります。
そして、そのままではシーンが終了しても残ってしまいます。記憶領域がもう使わないもので占領されるため、メモリが余計に消費されてしまいます。
作成したスプライト、読み込んだ画像は、シーンが終わる時に解放するのがルールになっています。
シーンが終わる時に実行されるメソッドterminateを、以下のように書き換えましょう。
> def terminate
>   dispose_background  #背景を解放
> end
そして、dispose_backgroundメソッドをcreate_backgroundと同じように定義します。
> def dispose_background
>   @background.bitmap.dispose
>   @background.dispose    
> end
これで、シーン終了時に背景画像を解放できるようになりました。
----
[[前へ>シーンを作ってみる]]・[[次へ>自機を作成する]]
----
#comment_num2(size=40,vsize=4,num=20,logpage=コメント一覧)
目安箱バナー