Вспышка - Воспроизведение видеоклипа в обратном направлении?
Я пытаюсь получить видеоролик, чтобы играть в обратном порядке, когда я mouse_out от него (он играет на mouse_over).
Мой ActionScript выглядит следующим образом:
mc.stop();
mc.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc.addEventListener(MouseEvent.MOUSE_OUT,mout);
function mover(e:MouseEvent):void
{
mc.play();
}
function mout(e:MouseEvent):void
{
//Play in reverse
}
Как я могу это достичь?
Спасибо
Ответы
Ответ 1
Лучший способ - использовать прослушиватель событий ENTER_FRAME. В основном это то, что вы хотите сделать
function mover(e:MouseEvent):void {
stopPlayReverse();
mc.play();
}
function mout(e:MouseEvent):void {
this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
}
function playReverse(e:Event):void {
if (mc.currentFrame == 1) {
stopPlayReverse();
} else {
mc.prevFrame();
}
}
function stopPlayReverse():void {
if (this.hasEventListener(Event.ENTER_FRAME)) {
this.removeEventListener(Event.ENTER_FRAME, playReverse);
}
}
Это будет воспроизводить ваш MovieClip в обратном порядке до тех пор, пока он не достигнет кадра 1, и он остановится.
Ответ 2
Если движение позволяет, вы можете использовать Tween (например, если вы хотите изменить альфа, местоположение или масштаб). На MouseOut вы можете вызвать .yoyo() для Tween, который будет воспроизводить его в обратном порядке.
Что-то вроде этого:
var tween:Tween;
mc.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc.addEventListener(MouseEvent.MOUSE_OUT,mout);
function mover(e:MouseEvent):void
{
tween = new Tween(obj, "alpha", None.easeNone, 1, 0, 1, true);
}
function mout(e:MouseEvent):void
{
tween.yoyo();
}
Ответ 3
TweenLite.to(mc, 2, {frame:1});
Ответ 4
Если ваша анимация не настолько серьезна, вы можете буквально создать совершенно новый набор кадров в обратном порядке и просто воспроизвести ее с этого ключевого кадра.
Чтобы бедный человек перевернул твинов.
Ответ 5
Используя логическое значение, которое работает как триггер, и Event.ENTER_FRAME
, вы можете сделать следующее для обратных кадров:
//Boolean and Event.ENTER_FRAME
var reversing:Boolean = false;
AddEventListener(Event.ENTER_FRAME, reverse);
function reverse(e:Event){
if(reversing)
{
//mc is displaying previous frame every frame
mc.prevFrame();
//until the currentFrame is 1
if(mc.currentFrame == 1)
reversing = false;
}
}
Ваш //Play in reverse
установил reversing = true;
Ответ 6
Вы можете сделать это, передав объект мувиклипа, чтобы найти правильный объект для изменения. Этот способ помогает вам использовать ребенка, которого вы хотите. Вы можете получить его с помощью:
fMoveBack (this.getChildByName( "my_clip" ));
function fMoveBack(my_clip:MovieClip):void {
this.addEventListener(Event.ENTER_FRAME, playReverse(my_clip));
}
function playReverse(mc:MovieClip):Function {
return function playReverse(e:Event):void {
if (mc.currentFrame == 1) {
stopPlayReverse(mc);
} else {
mc.prevFrame();
}
};
}
function stopPlayReverse(mc:MovieClip):void {
if (this.hasEventListener(Event.ENTER_FRAME)) {
this.removeEventListener(Event.ENTER_FRAME, playReverse);
}
}