forked from: forked from: forked from: Tweenerの挙動?

by soundkitchen forked from forked from: forked from: Tweenerの挙動? (diff: 9)
今ひとつ内容理解してなかった :-(
泥臭くなったけども一応ぐるぐるまわるようになった。
あーサンプルが悪かったですね。
今度はクリックするたびにrotationを10づつ増やしてみる。180を超えると1回転する
自己解決、無知晒し上等、Tweenerも糞も関係ない。rotationの値が-180~180だったのね。
結局 
なんかライブラリ上で上手いこと処理してくれたら嬉しいのにな。
しかくクリックでTweener動きます
rotation181以上で同じ値でTweenさせると、なぜぐるっと一回転するのか?
回らないのを想像してたんだが・・・いまさら?
なんかいい回避方法ないですか?って概出?
おとなしく違うライブラリ使えってことですね。
♥0 | Line 33 | Modified 2010-07-21 14:57:48 | MIT License
play

ActionScript3 source code

/**
 * Copyright soundkitchen ( http://wonderfl.net/user/soundkitchen )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/qetn
 */

// 今ひとつ内容理解してなかった :-(
// 泥臭くなったけども一応ぐるぐるまわるようになった。
// forked from minon's forked from: forked from: Tweenerの挙動?
//あーサンプルが悪かったですね。
//今度はクリックするたびにrotationを10づつ増やしてみる。180を超えると1回転する
//自己解決、無知晒し上等、Tweenerも糞も関係ない。rotationの値が-180~180だったのね。
// 結局 
//なんかライブラリ上で上手いこと処理してくれたら嬉しいのにな。
// forked from Murai's forked from: Tweenerの挙動?
// forked from minon's Tweenerの挙動?
//しかくクリックでTweener動きます
//rotation181以上で同じ値でTweenさせると、なぜぐるっと一回転するのか?
//回らないのを想像してたんだが・・・いまさら?
//なんかいい回避方法ないですか?って概出?
//おとなしく違うライブラリ使えってことですね。

package {
    
    import caurina.transitions.Tweener;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.display.Sprite;
    
    public class FlashTest extends Sprite {
        
        private var _box:Sprite;
        private var _txt:TextField;
        private var next:Number;
        
        public function FlashTest() {
            // write as3 code here..
            
            _box = new Sprite();
            _box.graphics.beginFill( 0xFF0000, 1 );
            _box.graphics.drawRect( -50, -50, 100, 100 );
            _box.graphics.endFill();
            _box.x = _box.y = 200;
            this.addChild( _box );
            
            _txt = new TextField();
            _txt.border = true;
            _txt.text = "100";
            _txt.type = TextFieldType.INPUT;
            this.addChild( _txt );
            next = _box.rotation;
            
            _box.addEventListener( MouseEvent.CLICK, function():void {
               // 泥臭くなった :-(
               // 普通に next = _box.rotation + 10; とかじゃダメなんだろうか?
               next = (Number(_txt.text) + 10) % 360;
               if (_box.rotation >= 0 && next < -180) next = 360 + next;
               else if (_box.rotation < 0 && next > 180) next = -(360 - next);
               
               _txt.text = next + "";
               Tweener.addTween( _box, { rotation:Number(next), time:0.6, transition:"easeOutQuad" } );
            } );

            
        }
    }
}