意味不明なデモ

うむ、スランプだ。

何か作ってみようと思ってできたものは、機能の有効な使い方ではなく、気の利いたサンプルにもならず、面白いものでもない。
いったいこれはなんなん?!
DXRubyFramework0.0.2用。

require 'dxruby'
require 'dxrubyfw'

class Panel < Sprite
  @@image = Image.new(16, 16, [255,255,255])
  @@command = [[:add_alpha, -1], [:wait, 1]] * 255
  @@command << [:stop]

  def initialize(x, y)
    self.x = x
    self.y = y
    self.collision = [0, 0, 15, 15]
    self.image = @@image
    self.visible = false
  end

  def hit(m)
    self.image_alpha = 255
    self.visible = true
    self.start_command(@@command)
  end

  def stop
    self.visible = false
    self.start_command(nil)
  end
end

panels = []

(0..29).each do |y|
  (0..39).each do |x|
    panels << Panel.new(x * 16, y * 16)
  end
end

mouse = Sprite.new
mouse.collision = [0, 0, 0, 0]
mouse.update

Window.loop do
  mouse.x, mouse.y = Input.mousePosX, Input.mousePosY
  mouse.update
  Sprite.check(mouse, panels)
  Sprite.update(panels)
  Window.drawSprite(panels)
end

強いて言うなら、Spriteは描画せずに衝突判定専用に使うという手がある。ぐらいか。
いずれ色んな形を追加すればDXRubyExと同じ使い方ができちゃったり。もうアレいらないね。
ところでSprite#updateしないと衝突判定の範囲がきちんと更新されないというのは、まあ、もともと仕様でそうしたんだけどこうやって使ってみると使いにくい。
そのうち直そう。