Skip to content
This repository has been archived by the owner on Dec 26, 2018. It is now read-only.

[prior to 3.0] 独自のクラスをScene、SceneObjectとして使用する

Yuya Matsuo edited this page Sep 12, 2016 · 1 revision

独自のSceneを使用する

Sceneを継承した独自クラスを作成し、<scene class="クラス名">のように記述することで該当クラスをインスタンス化して利用することができます。このクラスには引数のないコンストラクタが必要です。

public class MyScene extends Scene {
}
<scene class="com.yourcompany.MyScene">
    <object
        id="myObject"
        texture="@layout/hello_world"
        width="1.0"
        height="1.0"
        z="-5.0" />
</scene>

独自のSceneObjectを使用する

同じようにSceneObjectを継承した独自クラスを作成し、<object class="クラス名">のように記述することで該当クラスをインスタンス化して利用することができます。このクラスには引数のないコンストラクタが必要です。

public class MyObject extends SceneObject {
}
<scene>
    <object
        class="com.yourcompany.MyObject"
        id="myObject"
        texture="@layout/hello_world"
        width="1.0"
        height="1.0"
        z="-5.0" />
</scene>

独自クラスを作成することの利点は、内部で様々な動作が発生する複雑なシーンやシーンオブジェクトをカプセル化できることです。特に複数のシーンで構成されるアプリケーションを作成する場合は、Sceneを継承した独自クラスを利用することをおすすめします。

独自Sceneを上手く使うコツ

Sceneを継承したクラスでは以下のメソッドをオーバーライドすることでシーンの切り替えに合わせた処理を実行できます。

メソッド名 説明
initialize シーンが初めてレンダリングされる直前に一度だけ呼び出されます。 findObjectByIdを使ってシーン内のオブジェクトをキャッシュしておくと良いでしょう。
onResume MeganekkoApp.setScene()でシーンがアクティブになる時に呼び出されます。
onPause MeganekkoApp.setScene()で他のシーンがアクティブになる時、つまり現在のシーンの描画が行われなくなる時に呼び出されます。
update フレームごとに呼ばれます。オブジェクトの状態を変更したりユーザーの操作に応答したりする処理はだいたいここに書かれます。通常は1秒間に約60回実行されます。
onKeyDown
onKeyShortPress
戻るボタンやキーボードが押された時に呼び出されます。通常は戻るボタンを無効化したり代わりに「戻る」に相当する処理を実行する際に使います。

Contextが必要な場合はgetApp().getContext()で取得できます。