日記 (2014 年 9 月 18 日)
人工言語の方が一段落ついた (気がする) ので、 ゲーム制作の方を再開しようと思います。
さて、 Java の Swing で画像を半透明にして描画する方法を探していたのですが、 AlphaComposite
クラスを使うようです。
こんな感じですね。
コードは JRuby です。
graphics.composite = AlphaComposite.get_instance(AlphaComposite::SRC_OVER, alpha)
まわりくどい!
…そんなわけで、 Graphics2D
クラスを拡張しておきましょう。
class Graphics2D
def alpha
return self.composite.alpha
end
def alpha=(alpha)
self.composite = AlphaComposite.get_instance(AlphaComposite::SRC_OVER, alpha)
end
end
これですっきりコードが書けますね。
さて、 便利な半透明描画ですが、 どうやら少し重いようです。 JRuby だからでしょうか。 気楽にコードが書けるので JRuby は好きなんですが、 Java とか Scala とかに比べると速度があまり出ませんね。 Scala に移った方が良いんでしょうか…。