Class: Miyako::RasterScroll
Overview
ラスタスクロール実行クラス
波の様に揺れる(疑似)ラスタスクロールを行うクラス 波はサイン波で構成される
Instance Method Summary collapse
-
#effecting? ⇒ Boolean
ラスタスクロールの実行状態を問い合わせる 返却値:: ラスタスクロール中の時はtrueを返す.
-
#fade_out(fs, fw) ⇒ Object
ラスタスクロールをフェードアウトさせる 引数fwに与えられた間隔で振幅が減っていき(減る量は引数fsで与えられた値)、振幅がゼロになると終了する fs:: フェードアウトの変化量 fw:: フェードアウトの変化を待つカウント(WaitCounterクラスインスタンス).
-
#fade_out? ⇒ Boolean
ラスタスクロールの実行状態を問い合わせる 返却値:: ラスタスクロール中の時はtrueを返す.
-
#initialize(sspr) ⇒ RasterScroll
constructor
インスタンスを作成する ラスタスクロール対象のスプライトを登録する sspr:: ラスタスクロール対象スプライト 返却値:: 作成したインスタンス.
-
#render ⇒ Object
ラスタスクロールを画面に描画する.
-
#render_to(dst) ⇒ Object
ラスタスクロールを画像に描画する dst:: 描画先画像.
-
#start(params) ⇒ Object
ラスタスクロールを開始する ラスタスクロール実行用に設定する引数は以下の通り :lines -> ライン数(:lines=>3を指定すると、3ラインずつラスタスクロールを行う)。デフォルトは1(ライン) :size -> 最大振幅数(:size=>20を指定すると、最大20ピクセルの高さの波となる)。デフォルトは4(ピクセル) :start_angle -> 開始角度(一番上のラインでの振幅角度(ラジアンではなく角度なのに注意!))。デフォルトは0(度) :distance -> 角度の変化量(ラインごとの角度の変化量。:distance=>1のときは、1度ずつ変化させる)。デフォルトは1(度) :wait -> 変化させる間隔(WaitCounterクラスのインスタンス)。デフォルトは0.1秒間隔 params:: ラスタスクロール情報引数 返却値:: 自分自身を返す.
-
#stop ⇒ Object
ラスタスクロールを停止する.
-
#update ⇒ Object
ラスタスクロール処理を更新する 返却値:: 自分自身を返す.
Constructor Details
#initialize(sspr) ⇒ RasterScroll
インスタンスを作成する
ラスタスクロール対象のスプライトを登録する
- sspr
-
ラスタスクロール対象スプライト
- 返却値
-
作成したインスタンス
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 31 def initialize(sspr) @src = sspr @lines = 0 @h = @src.h @size = 0 @sangle = 0 @dangle = 0 @fade_out = false @fo_size = 0 @effecting = false end |
Instance Method Details
#effecting? ⇒ Boolean
ラスタスクロールの実行状態を問い合わせる
- 返却値
-
ラスタスクロール中の時はtrueを返す
88 89 90 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 88 def effecting? return @effecting end |
#fade_out(fs, fw) ⇒ Object
ラスタスクロールをフェードアウトさせる
引数fwに与えられた間隔で振幅が減っていき(減る量は引数fsで与えられた値)、振幅がゼロになると終了する
- fs
-
フェードアウトの変化量
- fw
-
フェードアウトの変化を待つカウント(WaitCounterクラスインスタンス)
156 157 158 159 160 161 162 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 156 def fade_out(fs, fw) @fo_size = fs @fo_wait = fw @fo_wait.start @fade_out = true return self end |
#fade_out? ⇒ Boolean
ラスタスクロールの実行状態を問い合わせる
- 返却値
-
ラスタスクロール中の時はtrueを返す
94 95 96 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 94 def fade_out? return @fade_out end |
#render ⇒ Object
ラスタスクロールを画面に描画する
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 108 def render angle = @sangle ty = @src.oy th = @src.oh pos = @src.pos @src.oh = @lines @src.oy = 0 @h.times{|y| rsx = @size * Math.sin(angle) @src.render_xy @src.x + rsx, @src.y + y * @lines ny = @src.oy + @lines @src.oh = @src.h - ny if (@src.h - ny < @lines) @src.oy = ny angle = angle + @dangle } @src.oy = ty @src.oh = th @src.move_to!(*pos) return self end |
#render_to(dst) ⇒ Object
ラスタスクロールを画像に描画する
- dst
-
描画先画像
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 131 def render_to(dst) angle = @sangle ty = @src.oy th = @src.oh pos = @src.pos @src.oh = @lines @src.oy = 0 @h.times{|y| rsx = @size * Math.sin(angle) @src.render_xy_to dst, @src.x + rsx, @src.y + y * @lines ny = @src.oy + @lines @src.oh = @src.h - ny if (@src.h - ny < @lines) @src.oy = ny angle = angle + @dangle } @src.oy = ty @src.oh = th @src.move_to!(*pos) return self end |
#start(params) ⇒ Object
ラスタスクロールを開始する
ラスタスクロール実行用に設定する引数は以下の通り :lines -> ライン数(:lines=>3を指定すると、3ラインずつラスタスクロールを行う)。デフォルトは1(ライン) :size -> 最大振幅数(:size=>20を指定すると、最大20ピクセルの高さの波となる)。デフォルトは4(ピクセル) :start_angle -> 開始角度(一番上のラインでの振幅角度(ラジアンではなく角度なのに注意!))。デフォルトは0(度) :distance -> 角度の変化量(ラインごとの角度の変化量。:distance=>1のときは、1度ずつ変化させる)。デフォルトは1(度) :wait -> 変化させる間隔(WaitCounterクラスのインスタンス)。デフォルトは0.1秒間隔
- params
-
ラスタスクロール情報引数
- 返却値
-
自分自身を返す
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 52 def start(params) @lines = params[:lines] || 1 @size = params[:size] || 4 @sangle = params[:start_angle] || 0 @dangle = params[:distance] || 1 @wait = params[:wait] || WaitCounter.new(0.1) @h = @h / @lines @fade_out = false @fo_size = 0 @effecting = true @wait.start return self end |
#stop ⇒ Object
ラスタスクロールを停止する
99 100 101 102 103 104 105 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 99 def stop @wait.stop @fo_size.stop if @fo_size @effecting = false @fade_out = false return self end |
#update ⇒ Object
ラスタスクロール処理を更新する
- 返却値
-
自分自身を返す
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/Miyako/EXT/raster_scroll.rb', line 68 def update return self unless @effecting if @wait.finish? @sangle = (@sangle + @dangle) % 360 @wait.start if @fade_out return self unless @fo_wait.finish? @size = @size - @fo_size @fo_wait.start if @size <= 0 @effecting = false @fade_out = false end end end return self end |