私は最近、Ruby の内部 DSL 機能を使用する小さなグラフィカル フレームワークである Ruby Shoes フレームワークを再発見しました。具体的には、ここではShoes4です。
例の 1 つ (./samples にあります) が特に印象的でした: sample13.rbは、完全には理解できません。
この例を実行すると、「new」という名前のボタンを含むキャンバスが得られます。このボタンを押すたびに、新しい図形 (プログラムではボックスという名前) がキャンバスに追加されます (形状と色はランダムです)。さらに、後でこれらの図をクリックして移動することもできます。
コードは驚くほど短いです:
Shoes.app :width => 300, :height => 300 do
COLORS = Shoes::COLORS
i = 45
button 'new' do
i += 5
box = rand(2) == 0 ? rect(i, i, 20) : oval(i, i, 20)
box.style :fill => send(COLORS.keys[rand(COLORS.keys.size)])
@flag = false
box.click{@flag = true; @box = box}
box.release{@flag = false}
end
motion{|left, top| @box.move(left-10, top-10) if @flag}
end
このコードがどのように機能するかについての説明が欲しいです。
作成された各フィギュアはどこかに保存されているようですが、正確にはどこですか?新しく作成されたフィギュアのコレクションにアクセスする手段はありますか?
また、表示されているように、クリックやリリースなどの方法をさらに追加すると、図形が表示されます。これは一般的に靴の各オブジェクトに当てはまりますか (靴の Web サイトでは見つかりません) ?