diffTonyu1 - hoge1e3/Tonyu2 GitHub Wiki

index

Tonyu1 と Tonyu2 の違い

ここでは,従来のTonyu System(Tonyu1)とTonyu System 2(Tonyu2)の違いを説明します.

親クラス

  • extends は省略可能です。省略するとActorクラスを継承します。

  • Tonyu1 の SpriteChar, DxChar, TextChar, SecretChar はActorクラスで代用可能です

    • Actorクラスのオブジェクトのフィールドx, y に値を設定するとSpriteCharと同等
    • alpha, rotation, scaleX, scaleYに値を設定すると DxCharと同等
    • textに値を設定すると TextCharと同等
    • いずれも設定しないか,pに-1を設定すると SecretCharと同等
  • PanelCharクラスは,ActorクラスのオブジェクトにPanelクラスのオブジェクトを作成させるか,extends Panel;と書いてPanelの子クラスにすることで代用します.

  • FrameManagerは未実装です.最初に実行させるクラス(たいてい「Main」などの名前をもつクラス)に,フレームが実行されるごとの処理を記述してください.

mainメソッド処理終了時の動作

mainメソッドが終了してもオブジェクトは消えません.明示的にdieメソッドを呼び出して下さい.

この仕様により,「表示だけを行なう,何も動作しないオブジェクト」をActorクラスを継承せずとも作成可能です.(Tonyu1では,明示的にクラスを作成し,waitメソッドを呼び出す必要があります)

例:

new Actor{p:$pat_BG, x:$screenWidth/2, y:$screenHeight/2}; // 背景
new Actor{text:"タイトル", x:200, y:200}; // タイトルのテキスト

オブジェクトの生成と出現

Tonyu1ではオブジェクトの生成は次のように,オブジェクトの種類によって指定されたフィールド(SpriteCharならx,y,p)の値を渡して生成していました.

new Player(100,220,12);

指定されたフィールド以外の値を渡す場合,次のように,生成したオブジェクトを一旦変数に入れ,別の文を追加する必要がありました.

$player=new Player(100,220,12);
$player.life=5;

Tonyu2では,次のようにすべてのフィールドをオブジェクト生成時に一文で渡せるようになりました. なお,Tonyu2でも,Tonyu1と同じ方法でx,y,pを渡すことも可能です.

new Player{x:100, y:220,p:12, life:5};

また,Tonyu1ではオブジェクトを実際に出現させるには次のようにappearメソッドを呼び出す必要がありましたが,Tonyu2では不要になっています.なお,Tonyu2でも互換性のためにこの書き方も許容されています.

appear(new Player(100,220,12));

当たり判定の機能拡張

  • crashToメソッドにクラスを渡すことが可能になりました
    • 画面中の特定のクラスのオブジェクトのうちどれか1つ以上に衝突しているかどうかが判定できます
    • 戻り値は衝突したオブジェクトのうちどれか1つになります.

オブジェクトの一括操作機能の追加

  • 複数のオブジェクトに同じ操作を適用させる命令が追加されました
    • allメソッド : 画面上のすべてのオブジェクトや,特定のクラスのすべてのオブジェクトに対して操作を行う
    • allCrashメソッド: 衝突しているすべてのオブジェクトに対して操作を行う

タッチパネル・マルチタッチ対応

メソッド・フィールドの変更点

  • getkeyメソッド
    • 上位互換)引数に数値以外にキー名をあらわす文字列が渡せます
  • [フィールド]angle → rotation
    • (名称変更)
  • [メソッド]angle(x,y) → atanxy
    • (名称変更)
  • 画面の大きさ変更
    • (仕様変更)Tonyu1では,$screenWidth,$screenHeightに代入することで画面の大きさを変更していましたが,Tonyu2 では$Screen.resizeを用います
  • ファイルアクセス
    • (仕様変更)Tonyu1では,FileReader, FileWriterクラスを用いてファイルにアクセスしましたが,Tonyu2ではfileメソッドを用います.

.