Animatorその1
全然Animatorじゃないけど。PartialFunctionで状態遷移だけ。
import scala.actors._ import javax.media.opengl.GLAutoDrawable class Animator extends Actor { private val drawables = scala.collection.mutable.Set[GLAutoDrawable]() private var action = stoped orElse pfallways def act() { loop { react(action) } } lazy val stoped : PartialFunction[Any, Unit] = { case Start => action = started orElse pfallways } lazy val started : PartialFunction[Any, Unit] = { case Stop => action = stoped orElse pfallways case Pause => action = paused orElse pfallways } lazy val paused : PartialFunction[Any, Unit] = { case Stop => action = stoped orElse pfallways case Resume => action = started orElse pfallways } lazy val pfallways = pfdrawable orElse pfexit lazy val pfdrawable : PartialFunction[Any, Unit] = { case Add(drawable) => drawables += drawable case Remove(drawable) => drawables -= drawable } lazy val pfexit : PartialFunction[Any, Unit] = { case Exit => exit() } }
名前考えるのがだるい。最後とかpfつけときゃいいやって思考になってて意味不明です。
これに色々肉付けしていって、ラッパーにGLAnimatorControl実装してー(def start()とか被るので)、とか考えてたけど、GLAnimatorControlにgetThreadとかあるわな。
詳しく見てないけど、描画中のスレッドを外部から取得できるようにするってActorとしてまずいんじゃなイカ。
そこんとこどーなのと思いつつ、あんまり触る時間が取れてない。