Miyakoサンプルリスト

(1)SpriteListサンプル

四角形が順番に点滅しています。

require 'miyako'

include Miyako

list = SpriteList.new
list[:s1] = Sprite.new(:size=>[50,50], :fill=>[255,  0,  0])
list[:s2] = Sprite.new(:size=>[50,50], :fill=>[255,255,  0])
list[:s3] = Sprite.new(:size=>[50,50], :fill=>[255,  0,255])
list[:s4] = Sprite.new(:size=>[30,30], :fill=>[  0,255,  0])
list[:s5] = Sprite.new(:size=>[30,30], :fill=>[  0,  0,255])
list.move_to!(25,25){|pair, i, dx, dy| [i*dx,i*dy]}

# SpriteListの要素を自動描画
Sprite[:ss] = list

# 登録した名前一覧をcycleで取得
names = list.names.cycle

# 先頭のスプライトのみ描画
Sprite[:ss].hide(*Sprite[:ss].all)
Sprite[:ss].show(names.next)

# 1秒ごとに描画を入れ替える処理を
# コールバックとして登録
wait = WaitCounter.new(0.2)
wait.append_callback{|w|
  Sprite[:ss].show_only(names.next)
}
wait.start

# 更新作業はループ外で行ってくれるので、中はほとんど空
Miyako.main_loop do
  break if Input.quit_or_escape?
end


(2)SpriteListサンプル

様々なイメージは動いています。
画像は、以下のリンク先のファイルをお使いください。
images.zip

 

require 'miyako'

include Miyako

# アニメーションを生成する
def create_animation(path)
  sprite = Sprite.new(:file=>path)
  sprite.oh = sprite.ow
  SpriteAnimation.new(:sprite=>sprite, :wait=>0.1)
end

@red_ruby = create_animation("red_ruby.png")
@blue_dia = create_animation("blue_dia.png")
@blocks   = create_animation("blocks.png")

@red_ruby.move!(32,32)

# スプライトの自動描画に登録
Sprite[:blocks] = @blocks
Sprite[:red_ruby] = @red_ruby
Sprite[:blue_dia] = @blue_dia
# アニメーションの自動更新に登録
Animation[:red_ruby] = @red_ruby
Animation[:blue_dia] = @blue_dia
Animation[:blocks] = @blocks

# 更新はブロックの外で行っているので、ループ内では何も記述することがない
Animation.start
Miyako.main_loop do
  break if Input.quit_or_escape?
end
Animation.stop


(3)音声再生サンプル(1)

音声再生機能のサンプルです。 音声は、以下のリンク先のファイルをお使いください
(かなりヘボい音声ですが・・・自作デス)
sample_sound.zip

require 'Miyako/miyako'

# 音声ファイルの用意
@bgm = Miyako::Audio::BGM.new("BGM.wav", -1)
@ses1 = Miyako::Audio::SE.new("SE.wav", 100)

# メッセージ用スプライトの生成
Miyako::Sprite[:notice] = Miyako::Shape.text(:font=>Miyako::Font.sans_serif){
                            text "Push Space Bar"
                          }.centering!

# BGMの再生
@bgm.play
# 効果音の再生(無限繰り返し)
@ses1.start(nil, -1)
Miyako.main_loop do
  break if Miyako::Input.quit_or_escape?
  # 効果音が終わったら終了
  break unless @ses1.playing?
  # スペースバーを押したら効果音のフェードアウト開始
  @ses1.fade_out(5000) if Miyako::Input.pushed_any?(:spc)
end
@bgm.stop


(4)音声再生サンプル(2)

Miyakoの画像描画機能を使わずに、音声再生機能だけを使ったサンプルです。 音声は、以下のリンク先のファイルをお使いください。
(こちらも、(3)とおなじです・・・)
sample_sound.zip

require 'miyako_require_only'

include Miyako

# SDL.initを直接使っているところがポイント
# 入力関係はINIT_VIDEOが一緒に無いと機能しないため、
# Inputモジュールは使っていない
# タイマーカウントで制御している
SDL.init(SDL::INIT_AUDIO)
Audio.init(4096, 44100)

# 音声ファイルからオブジェクトを生成
# BGMは無限繰り返し
@bgm = Audio::BGM.new("test/BGM.wav", -1)
@ses1 = Audio::SE.new("test/m1.wav", 100)
#@bgm = Audio::BGM.new("BGM.wav", -1)
#@ses1 = Audio::SE.new("SE.wav", 100)

@bgm.play
# SEも無限繰り返し
@ses1.start(nil, -1)

count = 0

# 入力関係はビデオ処理が無いと機能しないため、
# タイマーで処理している
loop do
  Audio.update
  # フェードアウトが終了すればループ脱出
  break unless @ses1.playing?
  count = count + 1
  # カウンタが100になれば、フェードアウト開始
  if count == 100
    @ses1.fade_out(5000)
    puts "Fadeouting..."
  end
  # ウェイトを掛けないと、突然プログラムが終了する問題があるため、
  # sleepメソッドで0.1秒ウェイトをかける
  sleep 0.1
end
@bgm.stop