#==============================================================================# ■ 简谐波式图像扭曲#==============================================================================class Wave #============================================================================ # ■ 参数 #============================================================================ # b 图像的完整路径及其名称 # o 质点的平衡位置及其坐标;用[x, y]表示。 # a 简谐运动的振幅 # f 简谐运动的频率 #============================================================================ def initialize(b, o, a, f) @bitmap = Bitmap.new(b) @sprite = [] for i in [email protected] @sprite[i] = Sprite.new @sprite[i].x = o[0] @sprite[i].y = i + o[1] @sprite[i].bitmap = @bitmap @sprite[i].src_rect.set(0, i, @bitmap.width, 1) r = (2 * Math::PI * f * i) / 180 / Math::PI @sprite[i].x += a * Math.sin(r) end @amp = a @x = {} end #============================================================================ # ■ 刷新 #============================================================================ def update for i in [email protected] @x[i] = @sprite[i].x end for i in [email protected] if i + 1 == @sprite.size @sprite[i].x = @x[0] next end @sprite[i].x = @x[i + 1] end end #============================================================================ # ■ 释放 #============================================================================ def dispose for i in @sprite i.bitmap.dispose i.dispose i = 0 end @sprite = [] @bitmap.dispose @bitmap = nil endendw = Wave.new("Plain.png", [50, 0], 20, 15)loop do Graphics.update w.updateend复制代码