サイログ。

~雑多な記事置き場~

オートレンダーを追加しました。

Miyako1.5までは、スプライトなどの画像は、Screen.updateメソッドを呼び出すだけで、画像を表示することが出来ました。
しかし、此処の問題が浮上して、解決策を考えるまでMiyako2.0では自律的な描画を辞め、renderメソッドによる明示的な描画になりました。

ただし、renderメソッドをPartsクラスMapクラスに実装することで、描画の順番がはっきりしてきました。
そこで、Screenモジュールに以下の3つのメソッドを追加しました。

  1. Screen.auto_render_array メソッド
  2. Screen.pre_render_array メソッド
  3. Screen.auto_render メソッド

Screen.auto_render_arrayメソッドは、Screen.renderメソッドを呼び出すことで、自動的に描画されるオブジェクトを格納する配列です。
格納されたオブジェクトは、配列のインデックス順に自動的に描画されます。
要素にnilがあれば、次の要素に自動的に移ります。また、要素が配列の時は、その配列を再帰的にチェックします。
それ以外のオブジェクトが要素になっている時、必ずrenderメソッドが用意されている必要があります(無ければエラーになります)。
しかし、Screen.renderメソッドを呼び出すと言うことで、描画は画面更新直前となり、配列の中に背景が存在すると塗りつぶされる弱点があります。

その弱点を補うために、Screen.pre_render_arrayとScreen.pre_renderメソッドを用意致しました。
つまり、前もって描画したいオブジェクトをこちらの配列に格納しておいて、Screen.pre_renderを呼び出して画面に描画します。
配列の内容の仕様は、Screen.auto_render_arrayの仕様と同じです。

注:但し、この機能は描画のオン・オフに対するチェックは行われません。「要素がnilだと次の要素へパスする」という仕様を駆使して実装する必要があります。

上手いこと使えば、描画関連は遙かに使いやすくなると思います。