サイログ。

~雑多な記事置き場~

その他拡張

あと、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

実行すると、↓の写真のように回転します。