チェンジセット 2998

差分発生行の前後
無視リスト:
コミット日時:
2009/08/08 16:00:43 (4 年前)
コミッタ:
yossy
ログメッセージ:

BetweenAS3(ba): Added Bezier tween.

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/BetweenAS3/branches/dramatic-before-after/src/fp10/org/libspark/betweenas3/BetweenAS3.as

    r2996 r2998  
    3939        import org.libspark.betweenas3.core.tweens.ScaledTween; 
    4040        import org.libspark.betweenas3.core.tweens.SlicedTween; 
     41        import org.libspark.betweenas3.core.updaters.BezierUpdater; 
    4142        import org.libspark.betweenas3.core.updaters.display.DisplayObjectUpdater; 
    4243        import org.libspark.betweenas3.core.updaters.geom.PointUpdater; 
     
    6162                public static const VERSION:String = '0.2 (Alpha)'; 
    6263                 
     64                // TODO 
     65                // ActionTween 
     66                // ReversedTween 
     67                // test 
     68                 
    6369                // とりあえず 
    6470                 
     
    105111                } 
    106112                 
     113                public static function bezier(target:Object, to:Object, from:Object = null, controlPoint:Object = null, time:Number = 1.0, easing:IEasing = null):ITween 
     114                { 
     115                        var tween:ObjectTween = new ObjectTween(_ticker); 
     116                        tween.updater = _updaterFactory.createBezier(target, to, from, controlPoint); 
     117                        tween.time = time; 
     118                        tween.easing = easing || Linear.easeNone; 
     119                        return tween; 
     120                } 
     121                 
    107122                public static function parallel(...tweens:Array):ITween 
    108123                { 
  • as3/BetweenAS3/branches/dramatic-before-after/src/fp10/org/libspark/betweenas3/core/updaters/UpdaterFactory.as

    r2994 r2998  
    131131                        return null; 
    132132                } 
     133                 
     134                public function createBezier(target:Object, dest:Object, source:Object, controlPoint:Object):IUpdater 
     135                { 
     136                        var map:Dictionary = new Dictionary(), updaters:Vector.<IUpdater> = new Vector.<IUpdater>, bezierUpdater:BezierUpdater = new BezierUpdater(), name:String, value:Object, isRelative:Boolean, cp:Array, l:uint, i:uint, child:IUpdater, updater:IUpdater; 
     137                         
     138                        bezierUpdater.target = target; 
     139                         
     140                        updaters.push(bezierUpdater); 
     141                         
     142                        if (source != null) { 
     143                                for (name in source) { 
     144                                        if ((value = source[name]) is Number) { 
     145                                                if ((isRelative = /^\$/.test(name))) { 
     146                                                        name = name.substr(1); 
     147                                                } 
     148                                                bezierUpdater.setSourceValue(name, Number(value), isRelative); 
     149                                        } 
     150                                        else { 
     151                                                if (!map[name]) { 
     152                                                        child = createBezier(bezierUpdater.getObject(name), dest != null ? dest[name] : null, value, controlPoint != null ? controlPoint[name] : null); 
     153                                                        updaters.push(new UpdaterLadder(bezierUpdater, child, name)); 
     154                                                        map[name] = true; 
     155                                                } 
     156                                        } 
     157                                } 
     158                        } 
     159                        if (dest != null) { 
     160                                for (name in dest) { 
     161                                        if ((value = dest[name]) is Number) { 
     162                                                if ((isRelative = /^\$/.test(name))) { 
     163                                                        name = name.substr(1); 
     164                                                } 
     165                                                bezierUpdater.setDestinationValue(name, Number(value), isRelative); 
     166                                        } 
     167                                        else { 
     168                                                if (!map[name]) { 
     169                                                        child = createBezier(bezierUpdater.getObject(name), null, source != null ? source[name] : null, controlPoint != null ? controlPoint[name] : null); 
     170                                                        updaters.push(new UpdaterLadder(bezierUpdater, child, name)); 
     171                                                        map[name] = true; 
     172                                                } 
     173                                        } 
     174                                } 
     175                        } 
     176                        if (controlPoint != null) { 
     177                                for (name in controlPoint) { 
     178                                        if ((value = controlPoint[name]) is Number) { 
     179                                                value = [value]; 
     180                                        } 
     181                                        if (value is Array) { 
     182                                                if ((isRelative = /^\$/.test(name))) { 
     183                                                        name = name.substr(1); 
     184                                                } 
     185                                                cp = value as Array; 
     186                                                l = cp.length; 
     187                                                for (i = 0; i < l; ++i) { 
     188                                                        bezierUpdater.addControlPoint(name, cp[i], isRelative); 
     189                                                } 
     190                                        } 
     191                                        else { 
     192                                                if (!map[name]) { 
     193                                                        child = createBezier(bezierUpdater.getObject(name), dest != null ? dest[name] : null, source != null ? source[name] : null, value); 
     194                                                        updaters.push(new UpdaterLadder(bezierUpdater, child, name)); 
     195                                                        map[name] = true; 
     196                                                } 
     197                                        } 
     198                                } 
     199                        } 
     200                         
     201                        if (updaters.length == 1) { 
     202                                updater = updaters[0]; 
     203                        } 
     204                        else if (updaters.length > 1) { 
     205                                updater = new CompositeUpdater(target, updaters); 
     206                        } 
     207                         
     208                        return updater; 
     209                } 
    133210        } 
    134211}