Module: Miyako::SpriteArray
- Includes:
- Enumerable, Animation, SpriteBase
- Included in:
- Array
- Defined in:
- lib/Miyako/API/modules.rb
Overview
複数スプライト管理(配列)機能を追加するモジュール
配列にスプライトとして最低限の機能を追加する。 また、独自にswapなどのメソッドを追加。 render、render_toを用意し、一気に描画が可能。配列の要素順に描画される。 各要素の位置関係は関与していない(そこがPartsとの違い)
Instance Method Summary collapse
-
#deep_copy ⇒ Object
配列要素を複製したコピー配列を取得する 通常、インスタンスの複写に使われるdup,cloneメソッドは、同じ配列要素を見ているが、 このメソッドでは、要素も複製したものが複製される(各要素のdeep_copyメソッドを呼び出す) 返却値:: 複写した配列を返す.
-
#move!(dx, dy) ⇒ Object
各要素の位置を変更する(変化量を指定) ブロックを渡したとき、戻り値としてとした配列を返すと、 それがその要素での移動量となる。 ブロックの引数は、|要素, インデックス(0,1,2,…), dx, dy|となる。 (例)q=[a, b, c] #各スプライトの位置=すべて(10,15) q.move!(20,25) => aの位置:(30,40) bの位置:(30,40) cの位置:(30,40) q.move!(20,25){|e,i,dx,dy| [i*dx, i*dy] } => aの位置:(10,15) bの位置:(30,40) cの位置:(50,65) dx:: 移動量(x方向)。単位はピクセル dy:: 移動量(y方向)。単位はピクセル 返却値:: 自分自身を返す.
-
#move_to!(x, y) ⇒ Object
各要素の位置を変更する(変化量を指定) ブロックを渡したとき、戻り値としてとした配列を返すと、 それがその要素での移動量となる。 ブロックの引数は、|要素, インデックス(0,1,2,…), x, y|となる。 (例)q=[a, b, c] #各スプライトの位置=すべて(10,15) q.move!(20,25) => aの位置:(20,25) bの位置:(20,25) cの位置:(20,25) q.move!(20,25){|e,i,dx,dy| [i*dx, i*dy] } => aの位置:( 0, 0) bの位置:(20,25) cの位置:(40,50) x:: 移動先位置(x方向)。単位はピクセル y:: 移動先位置(y方向)。単位はピクセル 返却値:: 自分自身を返す.
-
#render ⇒ Object
配列の要素を画面に描画する 配列の先頭から順にrenderメソッドを呼び出す。 描画するインスタンスは、SpriteBaseモジュールがmixinされているクラスのみ 返却値:: 自分自身を帰す.
-
#render_d(dx, dy) ⇒ Object
位置を指定して画面への描画を指示するメソッドのテンプレート オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する 基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、 これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す x:: 描画位置のx座標 y:: 描画位置のy座標 返却値:: 自分自身を返す.
-
#render_to(dst) ⇒ Object
配列の要素を対象の画像に描画する 配列の先頭から順にrender_toメソッドを呼び出す。 dst:: 描画対象の画像インスタンス 返却値:: 自分自身を帰す.
-
#render_xy(x, y) ⇒ Object
位置を指定して画面への描画を指示するメソッドのテンプレート オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する 基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、 これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す x:: 描画位置のx座標 y:: 描画位置のy座標 返却値:: 自分自身を返す.
-
#render_xy_to(dst, x, y) ⇒ Object
位置を指定して画像への描画を指示するメソッドのテンプレート オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する 基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、 これらのメソッドを呼び出して同じ動作を行うが、処理速度的に課題あり ただし、上記のメソッドを持っていない場合は、単純にrender_toメソッドを呼び出す dst:: 対象の画像 x:: 描画位置のx座標 y:: 描画位置のy座標 返却値:: 自分自身を返す.
-
#reset ⇒ Object
描く画像のアニメーションを先頭パターンに戻す 各要素のresetメソッドを呼び出す 返却値:: 自分自身を返す.
-
#sprite_only ⇒ Object
各要素からスプライト以外の要素を取り除いた配列を作成する SpriteBaseモジュール、もしくはSpriteArrayモジュールをインクルードしていない要素を削除した配列を返す 登録されている名前順の配列になる。 返却値:: 生成したスプライトを返す.
-
#sprite_only! ⇒ Object
各要素からスプライト以外の要素を取り除いた配列を破壊的に作成する SpriteBaseモジュール、もしくはSpriteArrayモジュールをインクルードしていない要素を削除する 登録されている名前順の配列になる。 返却値:: 自分自身を返す.
-
#start ⇒ Object
描く画像のアニメーションを開始する 各要素のstartメソッドを呼び出す 返却値:: 自分自身を返す.
-
#stop ⇒ Object
描く画像のアニメーションを停止する 各要素のstopメソッドを呼び出す 返却値:: 自分自身を返す.
-
#swap(idx1, idx2) ⇒ Object
指定した要素の内容を入れ替える 配列の先頭から順にrenderメソッドを呼び出す。 描画するインスタンスは、引数がゼロのrenderメソッドを持っているもののみ(持っていないときは呼び出さない) _idx1,idx2_:: 入れ替え対象の配列要素インデックス 返却値:: 自分自身を帰す.
-
#update_animation ⇒ Object
描く画像のアニメーションを更新する 各要素のupdate_animationメソッドを呼び出す 返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す.
-
#visible ⇒ Object
各要素の描画可能状態を取得する 各要素のvisibleメソッドの値を配列で取得する。 登録されている名前順の配列になる。 返却値:: true/falseの配列.
-
#visible=(v) ⇒ Object
各要素の描画可能状態を一気に設定する すべての要素のvisibleメソッドの値を変更する 登録されている名前順の配列になる。 v:: 設定する値(true/false) 返却値:: 自分自身を返す.
Methods included from Animation
[], []=, anim_hash, reset, start, stop, update, update_animation
Methods included from SpriteBase
#bitmap, #hide, #image_rect, #image_size, #oh, #oh=, #ow, #ow=, #ox, #ox=, #oy, #oy=, #part_rect, #rect, #show, #to_sprite, #to_unit, #update
Instance Method Details
#deep_copy ⇒ Object
配列要素を複製したコピー配列を取得する
通常、インスタンスの複写に使われるdup,cloneメソッドは、同じ配列要素を見ているが、 このメソッドでは、要素も複製したものが複製される(各要素のdeep_copyメソッドを呼び出す)
- 返却値
-
複写した配列を返す
315 316 317 |
# File 'lib/Miyako/API/modules.rb', line 315 def deep_copy self.map{|e| e.deep_copy } end |
#move!(dx, dy) ⇒ Object
各要素の位置を変更する(変化量を指定)
ブロックを渡したとき、戻り値としてとした配列を返すと、 それがその要素での移動量となる。 ブロックの引数は、|要素, インデックス(0,1,2,…), dx, dy|となる。 (例)q=[a, b, c]
#各スプライトの位置=すべて(10,15)
q.move!(20,25) => aの位置:(30,40)
bの位置:(30,40)
cの位置:(30,40)
q.move!(20,25){|e,i,dx,dy|
[i*dx, i*dy]
}
=> aの位置:(10,15)
bの位置:(30,40)
cの位置:(50,65)
- dx
-
移動量(x方向)。単位はピクセル
- dy
-
移動量(y方向)。単位はピクセル
- 返却値
-
自分自身を返す
355 356 357 358 359 360 361 362 |
# File 'lib/Miyako/API/modules.rb', line 355 def move!(dx, dy) if block_given? self.each_with_index{|e, i| e.move!(*(yield e, i, dx, dy)) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} else self.each{|e| e.move!(dx, dy) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} end self end |
#move_to!(x, y) ⇒ Object
各要素の位置を変更する(変化量を指定)
ブロックを渡したとき、戻り値としてとした配列を返すと、 それがその要素での移動量となる。 ブロックの引数は、|要素, インデックス(0,1,2,…), x, y|となる。 (例)q=[a, b, c]
#各スプライトの位置=すべて(10,15)
q.move!(20,25) => aの位置:(20,25)
bの位置:(20,25)
cの位置:(20,25)
q.move!(20,25){|e,i,dx,dy|
[i*dx, i*dy]
}
=> aの位置:( 0, 0)
bの位置:(20,25)
cの位置:(40,50)
- x
-
移動先位置(x方向)。単位はピクセル
- y
-
移動先位置(y方向)。単位はピクセル
- 返却値
-
自分自身を返す
382 383 384 385 386 387 388 389 |
# File 'lib/Miyako/API/modules.rb', line 382 def move_to!(x, y) if block_given? self.each_with_index{|e, i| e.move_to!(*(yield e, i, x, y)) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} else self.each{|e| e.move_to!(x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} end self end |
#render ⇒ Object
配列の要素を画面に描画する
配列の先頭から順にrenderメソッドを呼び出す。 描画するインスタンスは、SpriteBaseモジュールがmixinされているクラスのみ
- 返却値
-
自分自身を帰す
439 440 441 442 |
# File 'lib/Miyako/API/modules.rb', line 439 def render self.each{|e| e.render if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } return self end |
#render_d(dx, dy) ⇒ Object
位置を指定して画面への描画を指示するメソッドのテンプレート
オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する 基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、 これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す
- x
-
描画位置のx座標
- y
-
描画位置のy座標
- 返却値
-
自分自身を返す
486 487 488 |
# File 'lib/Miyako/API/modules.rb', line 486 def render_d(dx, dy) return self.each{|e| e.render_d(dx, dy) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } end |
#render_to(dst) ⇒ Object
配列の要素を対象の画像に描画する
配列の先頭から順にrender_toメソッドを呼び出す。
- dst
-
描画対象の画像インスタンス
- 返却値
-
自分自身を帰す
448 449 450 451 |
# File 'lib/Miyako/API/modules.rb', line 448 def render_to(dst) self.each{|e| e.render_to(dst) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } return self end |
#render_xy(x, y) ⇒ Object
位置を指定して画面への描画を指示するメソッドのテンプレート
オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する 基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、 これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す
- x
-
描画位置のx座標
- y
-
描画位置のy座標
- 返却値
-
自分自身を返す
461 462 463 |
# File 'lib/Miyako/API/modules.rb', line 461 def render_xy(x, y) return self.each{|e| e.render_xy(x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } end |
#render_xy_to(dst, x, y) ⇒ Object
位置を指定して画像への描画を指示するメソッドのテンプレート
オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する 基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、 これらのメソッドを呼び出して同じ動作を行うが、処理速度的に課題あり ただし、上記のメソッドを持っていない場合は、単純にrender_toメソッドを呼び出す
- dst
-
対象の画像
- x
-
描画位置のx座標
- y
-
描画位置のy座標
- 返却値
-
自分自身を返す
474 475 476 |
# File 'lib/Miyako/API/modules.rb', line 474 def render_xy_to(dst, x, y) return self.each{|e| e.render_xy_to(dst, x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} end |
#reset ⇒ Object
描く画像のアニメーションを先頭パターンに戻す
各要素のresetメソッドを呼び出す
- 返却値
-
自分自身を返す
410 411 412 413 |
# File 'lib/Miyako/API/modules.rb', line 410 def reset self.each{|sprite| sprite.reset if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } return self end |
#sprite_only ⇒ Object
各要素からスプライト以外の要素を取り除いた配列を作成する
SpriteBaseモジュール、もしくはSpriteArrayモジュールをインクルードしていない要素を削除した配列を返す 登録されている名前順の配列になる。
- 返却値
-
生成したスプライトを返す
299 300 301 |
# File 'lib/Miyako/API/modules.rb', line 299 def sprite_only self.select{|e| e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} end |
#sprite_only! ⇒ Object
各要素からスプライト以外の要素を取り除いた配列を破壊的に作成する
SpriteBaseモジュール、もしくはSpriteArrayモジュールをインクルードしていない要素を削除する 登録されている名前順の配列になる。
- 返却値
-
自分自身を返す
307 308 309 |
# File 'lib/Miyako/API/modules.rb', line 307 def sprite_only! self.delete_if{|e| !e.class.include?(SpriteBase) && !e.class.include?(SpriteArray)} end |
#start ⇒ Object
描く画像のアニメーションを開始する
各要素のstartメソッドを呼び出す
- 返却値
-
自分自身を返す
394 395 396 397 |
# File 'lib/Miyako/API/modules.rb', line 394 def start self.each{|sprite| sprite.start if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } return self end |
#stop ⇒ Object
描く画像のアニメーションを停止する
各要素のstopメソッドを呼び出す
- 返却値
-
自分自身を返す
402 403 404 405 |
# File 'lib/Miyako/API/modules.rb', line 402 def stop self.each{|sprite| sprite.stop if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) } return self end |
#swap(idx1, idx2) ⇒ Object
指定した要素の内容を入れ替える
配列の先頭から順にrenderメソッドを呼び出す。 描画するインスタンスは、引数がゼロのrenderメソッドを持っているもののみ(持っていないときは呼び出さない)
- _idx1,idx2_
-
入れ替え対象の配列要素インデックス
- 返却値
-
自分自身を帰す
427 428 429 430 431 432 433 |
# File 'lib/Miyako/API/modules.rb', line 427 def swap(idx1, idx2) l = self.length raise MiyakoValueError, "Illegal index range! : idx1:#{idx1}" if (idx1 >= l || idx1 < -l) raise MiyakoValueError, "Illegal index range! : idx2:#{idx2}" if (idx2 >= l || idx2 < -l) self[idx1], self[idx2] = self[idx2], self[idx1] return self end |
#update_animation ⇒ Object
描く画像のアニメーションを更新する
各要素のupdate_animationメソッドを呼び出す
- 返却値
-
描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
418 419 420 |
# File 'lib/Miyako/API/modules.rb', line 418 def update_animation self.inject(false){|r, e| r |= (e.class.include?(SpriteBase) || e.class.include?(SpriteArray)) ? e.update_animation : false } end |
#visible ⇒ Object
各要素の描画可能状態を取得する
各要素のvisibleメソッドの値を配列で取得する。 登録されている名前順の配列になる。
- 返却値
-
true/falseの配列
323 324 325 |
# File 'lib/Miyako/API/modules.rb', line 323 def visible return self.sprite_only.map{|e| e.visible} end |
#visible=(v) ⇒ Object
各要素の描画可能状態を一気に設定する
すべての要素のvisibleメソッドの値を変更する 登録されている名前順の配列になる。
- v
-
設定する値(true/false)
- 返却値
-
自分自身を返す
332 333 334 335 |
# File 'lib/Miyako/API/modules.rb', line 332 def visible=(v) self.each{|e| e.visible = v if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)} return self end |