こんにちは。きんくまです。
期末ですね。もうすぐ3月ですね。みなさま、いかがお過ごしですか。
オリンピックはじまりましたね。
さてThread(そうめん)を、再度勉強しているところです。
Threadは、非同期処理が結構柔軟にかけると思いました。
非同期処理の手続きを開始したあとは、その非同期処理を中止するか、終わるのをひたすら待つかのどちらかなのですが、Threadは非同期処理中の動作を細かく設定できるんですね。だから、ゲームやサーバーと頻繁にデータの出し入れなんかするときに結構役に立つと思います。
で、BetweenAS3です。
これはTweenerと同じ、アニメーション用のライブラリです。
一見複雑そうに見えたのですが、基本はBetweenAS3.toさえ使えればTweenerの代わりにすぐ使えるようになりました。
それで、Thread用にBetweenAS3Threadを作りました。
package { import fl.motion.ITween; import org.libspark.betweenas3.BetweenAS3; import org.libspark.betweenas3.core.easing.IEasing; import org.libspark.betweenas3.tweens.IObjectTween; import org.libspark.thread.IMonitor; import org.libspark.thread.Monitor; import org.libspark.thread.Thread; public class BetweenThread extends Thread { private var _target:Object; private var _to:Object; private var _time:Number; private var _easing:IEasing; private var _delay:Number; private var _monitor:IMonitor; private var _tween:IObjectTween; public function BetweenThread(target:Object, to:Object, time:Number = 1.0, easing:IEasing = null, delay:Number = 0) { _target = target; _to = to; _time = time; _easing = easing; _delay = delay; _monitor = new Monitor(); } override protected function run():void { _monitor.wait(); interrupted(interruptedHandler); _tween = BetweenAS3.to(_target, _to, _time, _easing); if (_delay != 0) { BetweenAS3.delay(_tween, _delay); } _tween.onComplete = completeHandler; _tween.play(); } public function cancel():void { interrupt(); } private function completeHandler():void { _monitor.notifyAll(); } private function interruptedHandler():void { if (_tween != null && _tween.isPlaying) { _tween.stop(); } } } }
TweenerThreadを参考にしながら作りました。
ところが、さっき検索かけたらすでにさくーしゃさんがBetweenAS3Threadを作られていました。
それで気がつきました。そうだよなー。コンストラクタの引数をITweenにしておけばBetweenAS3.toに固定しなくてすむもんなー。頭いいなー。と
BetweenAS3はパラレル・シリアルの複数トゥイーンを制御するグループ機能があるので、そっちの方が使い勝手がよいと思いました。
なのでさくーしゃさん方式で今後はいきたいと思いました。
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ