その他拡張
あと、Parts,Array,SpriteListでは、↓のようなmove!、move_to!メソッドの拡張が行えます。
ただし、Parts#move!,move_to!はすでに予約されているので、SpriteList#move!、SpriteList#move_to!メソッドは、
Parts#parts_move!、Parts#parts_move_to!に改名されています。
これは、数枚の画像を円運動するように動かしているサンプルです。
parts = Miyako::Parts.new([100,100]) parts[:a] = Miyako::Sprite.new(:size=>[50,50], :type=>:ac) Miyako::Drawing.fill(parts[:a], :red) parts[:b] = Miyako::Sprite.new(:size=>[50,50], :type=>:ac) Miyako::Drawing.fill(parts[:b], :green) parts[:c] = Miyako::Sprite.new(:size=>[50,50], :type=>:ac) Miyako::Drawing.fill(parts[:c], :blue) parts[:d] = Miyako::Sprite.new(:size=>[50,50], :type=>:ac) Miyako::Drawing.fill(parts[:d], :yellow) parts[:e] = Miyako::Sprite.new(:size=>[50,50], :type=>:ac) Miyako::Drawing.fill(parts[:e], :white) parts.centering! @cnt=0 loop do Miyako::Audio.update Miyako::Input.update break if Miyako::Input.quit_or_escape? # pair = SpriteListのListPair構造体 parts.parts_move_to!(parts.x+parts.w/2, parts.y+parts.h/2){|pair, i, x, y| # ラジアンを求める rad = (i.to_f+@cnt.to_f/16.0)*2.0*Math::PI/parts.length.to_f # 最終的な移動位置を返す [x+100*Math.cos(rad),y+100*Math.sin(rad)] } @cnt += 1 Miyako::Screen.clear parts.render Miyako::Screen.render end
実行すると、↓の写真のように回転します。