RmakeCommonSceneクラス


シーンを扱うクラスです。
シーンはスプライトを管理しており、切替のときに
そのシーンで生成されたすべてのスプライトを削除します。

addメソッド

シーンに指定したオブジェクトを追加します。
  scene :scene_name do |sc|
    sc.on_init do
      s = sc.add :image, :name => :sprite_name, 
        :texture => :texture_name, position => [100, 100]
    end
  end

  • 第1引数は追加するオブジェクトの種類
  • 第2引数はオブジェクトを初期化する情報をハッシュテーブルに入れたもの
  • 返り値は追加されたオブジェクトのインスタンス

第1引数に:imageを指定した場合
第1引数に:imageを設定した場合はスプライトが作られます。
第2引数のハッシュテーブルには次のものを設定することができます。
  • :name : スプライトの名前を指定します。RmakeCommonScene.eventメソッドなどでスプライトを指定するときに使われます。
  • :no_name : 名前のないスプライトを指定するときはこの値に真になるものを指定します。
  • :texture : テクスチャー名のシンボルを指定します。:no_nameが偽で:nameが指定されていない場合は、スプライトの名前に使われます。
  • :text_texture : 文字列テクスチャーを使います。文字列の描画に使います。この値は直接指定せずに、RmakeCommonScene.addメソッドの第1引数に:textを指定するかRmakeCommonScene.textメソッドを利用することを推奨します。
  • :template : スプライトテンプレート名のシンボルを指定します。
  • :center_offset : スプライトの中心位置を設定します。
  • :center_position : スプライトの位置を中心位置で指定します。
  • :position : スプライトの位置を左上の位置で指定します。
  • :rotation : スプライトの回転を設定します。
  • :scale : スプライトの拡大率を指定します。
  • :color : スプライトの色を指定します。
  • :z_order : スプライトの描画順を指定します。layer_orderが同じ場合はこの値が使われます。
  • :layer_order : スプライトの描画順を指定します。
  • :text : スプライトに文字列を設定します。文字テクスチャーが使用されている場合に有効です。
  • :render_way_type : スプライトの描画方法を指定します。
    • :translucent : 半透明のものを描画するのに適した描画方法です。デフォルトではこれが指定されています。拡大した場合などふちの不透明度がぼやけた感じになります。
    • :opaque : 文字などの描画に適した描画方法です。不透明度の値は完全に透明か、完全に不透明かのどちらかに分けられます。
    • :add : 加算合成で描画をおこないます。拡大した場合などふちの不透明度がぼやけた感じになります。
  • :align : スプライトの表示位置を簡単に設定します。
    • :center : 画面の中心に配置します。
    • :left : 画面の左に配置します。
    • :right : 画面の右に配置します。
    • :fullscreen : 画面全体を覆うように拡大して、中心に配置します。
  • :no_image : 描画をおこなわないスプライトを作ります。この値は直接指定せずに、RmakeCommonScene.addメソッドの第1引数に:collisionを指定するか、RmakeCommonScene.collisionメソッドを利用することを推奨します。
返り値はスプライト(RmakeCommonSpriteクラス)のインスタンスです。

第1引数に:collisionを指定した場合
衝突・入力判定用スプライトを作成します。
第1引数に:collisionを指定した場合は:imageを指定した場合と同じですが
第2引数のハッシュテーブルに:no_image => trueが指定されたものとしてスプライトが作られます。
  scene :scene_name do |sc|
    sc.on_init do
      s = sc.add :collision, :name => :texture_name, :center_position => [660, 240], :scale => [100, 165]
    end
  end



第1引数に:textを指定した場合
文字表示用スプライトを作成します。
第1引数に:textを指定した場合は:imageを指定した場合と同じですが
第2引数のハッシュテーブルに:text_texture => trueが指定されたものとしてスプライトが作られます。
  scene :scene_name do |sc|
    sc.on_init do
      s = sc.add :text, :position => [10, 10], :text => "text"
    end
  end



spriteメソッド

無名のスプライトを作成します。
  scene :scene_name do |sc|
    sc.on_init do
      s = sc.sprite :texture => :texture_name, position => [100, 100]
    end
  end

  • 第1引数はスプライトを初期化する情報をハッシュテーブルに入れたもの
  • 返り値はスプライト(RmakeCommonSpriteクラス)のインスタンスです。

RmakeCommonScene.addメソッドの第1引数に:imageを指定して第2引数に:no_name => trueを加えた場合と同じです。

textメソッド

無名の文字表示用スプライトを作成します。
  scene :scene_name do |sc|
    sc.on_init do
      s = sc.text position => [10, 10]
    end
  end

  • 第1引数はスプライトを初期化する情報をハッシュテーブルに入れたもの
  • 返り値はスプライト(RmakeCommonSpriteクラス)のインスタンスです。

RmakeCommonScene.addメソッドの第1引数に:imageを指定して第2引数に:no_name => trueを加えた場合と同じです。

collisionメソッド

無名の、衝突・入力判定用スプライトを作成します。
  scene :scene_name do |sc|
    sc.on_init do
      s = sc.add :collision, :name => :texture_name, :center_position => [660, 240], :scale => [100, 165]
    end
  end


deleteメソッド

名前のシンボルに対応するスプライトを削除します。
  scene :scene_name do |sc|
    sc.on_init do
      ...
      sc.delete :sprite_name
    end
  end

  • 第1引数はスプライトの名前のシンボル

changeメソッド

シーンの遷移をおこないます。
  scene :scene_name do |sc|
    sc.on_init do
      ...
      sc.change :another_scene_name
    end
  end

  scene :another_scene_name do |sc|
    sc.loading do
      ...
    end
    sc.on_init do
      ...
    end
  end

  • 第1引数はシーン名のシンボル。

sc.change :another_scene_nameを呼んだ時に
scene :another_scene_nameのブロックが実行されます。
そのあと:another_scene_nameのloadingメソッドが実行され
ローディングが始まります。
そのあと、:another_scene_nameのon_initが実行されます。

グローバルメソッドのscene_changeの利用を推奨します。

eventメソッド

イベントの設定をおこないます。
  scene :scene_name do |sc|
    sc.on_init do
      ...
      sc.event :sprite_name, on_click do |event|
        ...
      end
    end
  end

  • 第1引数はスプライト名のシンボル
  • 第2引数はイベント名のシンボル
  • ブロックの第1引数はRmakeCommonEventクラスを継承したクラスのインスタンス

第2引数で指定したイベントが発生した時にブロックの処理がおこなわれます。
指定できるイベントは以下の通りです。

  • :on_click : スプライトをクリック、あるいはタップしたときに呼ばれます。RmakeCommonEventClickクラスのインスタンスがブロックの引数に渡されます。
  • :on_touch_down : スプライト上でマウスのボタンを押し下げた時、あるいはタッチを始めた時に呼ばれます。RmakeCommonEventTouchDownクラスのインスタンスがブロック引数に渡されます。
  • :on_touch_move : スプライト上でマウスのボタンを押し下げながら動かしたとき、あるいはタッチしながら動いたときに呼ばれます。RmakeCommonEventTouchMoveクラスのインスタンスがブロック引数に渡されます。
  • :on_touch_up : スプライト上でマウスのボタンを離したとき、あるいはタッチを終了した時に呼ばれます。RmakeCommonEventTouchUpクラスのインスタンスがブロック引数に渡されます。
  • :on_step : 移動の処理などをおこなうべきタイミングで呼び出されます。処理が十分に軽量な場合は1秒間のうちに画面の更新回数と同じ程度の回数呼ばれます。RmakeCommonEventStepクラスのインスタンスがブロック引数に渡されます。
  • :on_collision : スプライト同士の衝突判定がおこなわれたときに呼び出されます。RmakeCommonEventCollisionクラスのインスタンスがブロック引数に渡されます。
  • :on_add : RmakeCommonScene.addメソッドなどスプライトが生成されたときに呼び出されます。RmakeCommonEventAddクラスのインスタンスがブロック引数に渡されます。

delete_allメソッド

すべてのスプライトを削除します。
  scene :scene_name do |sc|
    sc.on_init do
      ...
      sc.delete_all
    end
  end


loadingメソッド

素材やライブラリの読み込み対象をブロック内で指定します。
  scene :scene_name do |sc|
    sc.loading do  |loader|
      loader.add :window, :system => "window" # システムで用意されている画像の読み込み:windowという名前に
      loader.add :gui_item, :system => "gui_item"
      loader.add :chotto, 8 # idが8の画像を読み込み:chottoという名前に

      loader.add_library :id => 6 # プロジェクトidが6のライブラリを読み込み
    end
    ...
  end

  • ブロックの第1引数はRmakeCommonLoaderクラスのインスタンス

シーンの読み込みの処理はloadingメソッドのblockの終了後におこなわれます。

on_initメソッド

シーンの初期化処理をブロック内に記述します。
  scene :scene_name do |sc|
    ...
    sc.on_init do
      s = sc.add :image, :name => :sprite_name, 
        :texture => :texture_name, position => [100, 100]
    end
  end


シーンの読み込み処理が終わった後にon_initのブロックが実行されます。


show_text_inputメソッド

テキスト入力フォームを開きます。
  scene :scene_name do |sc|
    ...
    sc.on_init do
      # 入力フォームだけ表示すると見づらいので何か背景に表示しておいたほうがいいかもしれません
      bg_sprite = sc.sprite :position => [0, 0], :color => [0, 0, 0, 192]
      bg_sprite.set_dest_size game.get_screen_size[0], game.get_screen_size[1]
      
      sc.show_text_input :multiline_text, "text", 
        [127, 255, 127, 255], 
        "default", "ok", "cancel" do |e|
        if e.submited
          #入力が送信されたとき
        else
          #入力がキャンセルされたとき
        end
        bg_sprite.delete
      end
    end
  end

  • 第1引数はテキスト入力モード
    • :textの場合は改行なしの文字列入力
    • :multiline_textの場合は改行有の文字列入力
    • :passwordの場合はお明日ワード用で、入力内行が非表示
  • 第2引数は入力フォームのタイトル
  • 第3引数は入力フォームのタイトルの色
  • 第4引数は初期の入力文字列
  • 第5引数は入力を送りたいときに押すボタンの表示文字列
  • 第6引数は入力をキャンセルしたいときに押すボタンの表示文字列
  • ブロックの第1引数はRmakeCommonEventTextInputクラスのインスタンス

get_texture_widthメソッド

名前に対応するテクスチャーの幅を取得します。
scene :start_scene do |scene|
  scene.loading do |loader|
    loader.add :texture_name, 8
  end
  
  scene.on_init do
    s = scene.sprite :texture => :texture_name, :position => [10, 10]
    
    speak "#{s.get_texture_name} #{scene.get_texture_width s.get_texture_name}, #{scene.get_texture_height s.get_texture_name}"
    
  end

end

  • 第1引数はテクスチャーの名前のシンボル
  • 返り値はテクスチャーの幅

get_texture_heightメソッド

名前に対応するテクスチャーの高さを取得します。
scene :start_scene do |scene|
  scene.loading do |loader|
    loader.add :texture_name, 8
  end
  
  scene.on_init do
    speak "texture_name #{scene.get_texture_width :texture_name}, #{scene.get_texture_height :texture_name}"
    
  end

end

  • 第1引数はテクスチャーの名前のシンボル
  • 返り値はテクスチャーの高さ

クラスリファレンストップに戻る

サンプル一覧

チュートリアル1 - ようこそ、Rmakeの世界へ

アニメーションとモーション
あたり判定の初歩、タップすると話すキャラ
あたり判定の応用、キャラクタ同士の衝突
弾を打つキャラクタ
ソースのロードとライブラリのロード

サンプルゲーム

サンプル - 脱出ゲーム
脱出ゲームのサンプルです。

サンプル - シューティング
弾幕シューティングゲームのサンプルです。

まじたいスリーマッチパズル
スリーマッチパズルゲームのサンプルです。

お知らせ

2014/03/04 ver. 0.1.39 を公開しました!
・0.1.36でWindowsで起動しない問題を修正しました
(Android版はバージョン番号のみの変更です。)

2014/03/04 ver. 0.1.36 を公開しました!
・アプリケーションアイコンを変更しました
・セーブ・ロードを繰り返すとアプリが強制終了する問題を修正しました
・他、重大なバグを修正しました

ダウンロードはこちらから。

2013/07/17 Code on Rmakeをα公開しました!