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
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
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引数はテクスチャーの名前のシンボル
- 返り値はテクスチャーの高さ