![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Вот код твина:
package MikroacseAS3Lib.Tween{ import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.Sprite; import flash.system.System; public class MTween { private var p:Object; private var o:Object; private var osp:Sprite; private var c:Number; private var vars:Array; private var t:Timer; private var finishFunction:Function; private var playFunction:Function; private var startFunction:Function; public var currentCount:Number; public var stopped:Boolean; public var paused:Boolean; public function MTween(objectToTween:Object,countOfMoves:Number,parameters:Object) { osp=new Sprite() c=Math.floor(countOfMoves)||60 p=parameters o=objectToTween currentCount=0 vars=[] stopped=false paused=false finishFunction=parameters['onFinish'] playFunction=parameters['onPlay'] startFunction=parameters['onStart'] t=new Timer(1,c) for(var strObj:String in p){ if(strObj!='onFinish'&&strObj!='onPlay'&&strObj!='onStart'){ osp[strObj]=o[strObj] vars.push([p[strObj], (osp[strObj]-p[strObj])/c ,strObj]) } } if(p['onStart']){ startFunction() } t.start() t.addEventListener(TimerEvent.TIMER,EnterTimer) t.addEventListener(TimerEvent.TIMER_COMPLETE,EnterTimerFinish) } //-------------------------------- private function EnterTimer(e:TimerEvent){ if(currentCount==c){ currentCount=0 stop() } for(var param=0;param<vars.length;param++){ osp[vars[param][2]]-=vars[param][1] o[vars[param][2]]=osp[vars[param][2]] vars[param]=[p[vars[param][2]], (osp[vars[param][2]]-p[vars[param][2]])/(c-currentCount) ,vars[param][2]] } if(p['onPlay']){ playFunction() } currentCount++ } private function EnterTimerFinish(e:TimerEvent){ for(var paramFinish=0;paramFinish<vars.length;paramFinish++){ o[vars[paramFinish][2]]=vars[paramFinish][0] osp[vars[paramFinish][2]]=vars[paramFinish][0] } if(p['onFinish']){ finishFunction() } stopped=true } //-------------------------------- public function play(){ if(!t.running&&!stopped){ t.start() paused=false } } public function pause(){ if(t.running&&!stopped){ t.stop() paused=true } } public function stop(){ if(t.running&&!stopped){ t.stop() t.reset() stopped=true currentCount=0 } } public static function create(target:Object,counts:Number,objectParameters:Object):MTween{ return new MTween(target,counts,objectParameters) } } } Вызываю так: Собственно, вот что выходит: Dropbox Добавлено через 15 минут Такое ощущение, что с формулой что-то не так: Перевод ![]() (объект[переменная(например,x)]-параметры[переменная])/(количество движений-количество сделанных движений) Последний раз редактировалось MikroAcse; 15.02.2012 в 20:16. |
![]() |
Часовой пояс GMT +4, время: 10:30. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|