Ослабление и таймер события AS3 - PullRequest
0 голосов
/ 08 февраля 2010

Мой счетчик выглядит великолепно, и стрелка вращается в петле. Как мне добавить ослабление к нему?

Счетчик построен на основе события таймера. Я хочу, чтобы игла подпрыгнула в конце. Вместо того, чтобы просто добавить переменную, мне нужен некоторый контроль над тем, когда это происходит, чтобы я мог настроить ее с помощью анимации.

альтернативный текст http://www.ashcraftband.com/myspace/videodnd/icon8.jpg

РАБОЧИЙ КОД "Thxs to member"

var timer:Timer = new Timer(20, 30);//tick 200, 36<br>

timer.addEventListener(TimerEvent.TIMER, onTimer); 
timer.addEventListener(TimerEvent.TIMER_COMPLETE, startAgain); 

timer.start(); 

function startAgain($evt:TimerEvent):void { 
    timer.reset(); 
    timer.start(); 
} 

function onTimer($evt:TimerEvent):void { 
    watch.hand.rotation = 30 + timer.currentCount;//tick 5 
} 

НЕПРАВИЛЬНАЯ ПОПЫТКА "игла сумасшедшая, просто надо подпрыгивать"

//the "tick" may mess up the effect

import fl.transitions.Tween;
import fl.transitions.easing.*;
var timer:Timer = new Timer(20, 30);//tick 200, 36
  var startValue:Number = watch.hand.rotation;
  var finishValue:Number = 33;//400
  var duration:Number = 222;//3
  var myTween:Tween = new Tween(watch.hand, "rotation", Elastic.easeOut, startValue, finishValue, duration, false);//true
  myTween.looping = true;
timer.addEventListener(TimerEvent.TIMER, onTimer); 
timer.addEventListener(TimerEvent.TIMER_COMPLETE, startAgain); 

timer.start(); 

function startAgain($evt:TimerEvent):void { 
    timer.reset(); 
    timer.start(); 
} 
function onTimer($evt:TimerEvent):void { 
    watch.hand.rotation = 30 + timer.currentCount;//tick 5
 //watch.x =+ 66;

} 

ЭКСПЕРИМЕНТ
Мой проект требует более глубокого понимания событий таймера и анимации. Если я смогу заставить эту анимацию делать что-то, я думаю, что смогу лучше понять, как передавать вызовы функций и настраивать события.

Ответы [ 2 ]

1 голос
/ 08 февраля 2010

Как уже упоминалось @pfunc, это будет гораздо проще сделать с помощью сторонней библиотеки анимации. Это можно сделать с помощью fl.transitions.Tween, но цепочка обработки твинов и обработка onComplete меньше, чем хотелось бы.

Как уже упоминалось, проверьте один из них:

GTween

TweenLite

Tweener

Все эти 3 имеют очень похожий API (который намного лучше, чем встроенный в Flash Tween - IMHO)

Когда я помог с твоим первоначальным вопросом о классе Timer, я не понял, что это то, что ты хотел сделать. Класс Timer не является подходящим выбором для этой проблемы, поскольку он предназначен для обработки событий на согласованной основе.

1 голос
/ 08 февраля 2010

Я бы использовал для этого другой твининг-движок. Проверьте твинер или гтвин. Упрощает анимацию, и вы можете вызывать функции, когда анимация закончена. Вы можете создавать собственные анимации и настраивать, сколько отказов вы хотите. Возможно, есть способ сделать это с помощью встроенного в движок анимации, но не знаю как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...