![]() |
|
||||||||||
|
|||||
|
Регистрация: 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. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 150
|
Ужос какой, куча скобочек, @#$ что разбереш, вы бы оформили что ле код...
А на вскидку, возможно у вас нелинейная зависимость, вот к примеру как я интерполирую. Перевод left - прошедшее время time - время анимации _to - начальное значение параметра _from - конечное значение параметра Добавлено через 3 минуты зы. Зачем же на блог то код выкладывать если он не рабочий... И ссылка на дропбокс авторизации требует. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
На блоге рабочий код.
Спасибо за формулу. Скоро испробую |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
Например: |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
О боже... Ознакомьтесь с конвенциями по написанию кода. Например, тут http://opensource.adobe.com/wiki/dis...ng+Conventions
Вместо того, чтобы городить огород из скобок, записывайте значения в переменные. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
У меня 0.188 трейсит. Вы сами-то запускали перед тем как //0.185 написать?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
А void и ; Вам религия не позволяет использовать? Ну подписались Вы на события таймера, а отписываться кто будет?
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 15.02.2012 в 23:58. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
-De-, ну да, только немного другие параметры.
Странно, только что испробовал obj.myX=0.123456 и выдало в Output: 0.123456. Ну ладно, спасибо, что подправил. Добавлено через 9 минут Все, исправил. Заработало. Поменял Sprite на Object. Подправил: На: Добавлено через 10 минут Зачем void нужен? |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|