2010-01-12 22 views
12

Tôi đang cố gắng để có được một đoạn phim để chơi ngược lại khi tôi mouse_out từ nó (nó chơi trên mouse_over).Flash - Phát movie clip ngược lại?

actionscript của tôi là như sau:

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 
} 

Làm thế nào tôi sẽ đạt được điều này?

Cảm ơn

Trả lời

15

Cách tốt nhất là sử dụng trình nghe sự kiện ENTER_FRAME. Về cơ bản đây là những gì bạn muốn làm

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); 
    } 
} 

Điều này sẽ đóng MovieClip của bạn ngược lại cho đến khi nó chạm vào khung 1, sau đó nó sẽ dừng lại.

+0

Cảm ơn rất nhiều công việc đã hoàn hảo! – Probocop

+0

Không sao cả. Như đã đề xuất, bạn có thể thử sử dụng lớp Tween tích hợp hoặc một thư viện tweening khác. Điều tốt nhất về phương pháp ENTER_FRAME là hoạt ảnh của bạn mất cùng một khoảng thời gian lùi lại hoặc tiến lên bất kể tốc độ khung hình của bạn. – sberry

5

Nếu chuyển động cho phép, bạn có thể sử dụng Tween (ví dụ: nếu bạn muốn thay đổi alpha, vị trí hoặc tỷ lệ). Trên MouseOut bạn có thể gọi .yoyo() cho Tween, nó sẽ chơi ngược lại.

Something như thế này:

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(); 
} 
1

Nếu tween của bạn không phải là tất cả những gì bạn có nghĩa là nghiêm trọng có thể làm cho một tập hoàn toàn mới của khung theo hướng ngược lại và chỉ chơi nó từ keyframe đó.

Đó là sự đảo ngược của người đàn ông nghèo.

+0

Rất đúng, và làm thế nào nó đã được thực hiện cho các lứa tuổi. – sberry

3
TweenLite.to(mc, 2, {frame:1}); 
0

Bằng cách sử dụng một boolean mà hoạt động như một kích hoạt và Event.ENTER_FRAME, bạn có thể làm như sau để đảo ngược khung:

//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; 
    } 
} 

bạn //Play in reverse sẽ thiết lập reversing = true;

0

Bạn có thể làm điều đó đi qua các movie clip đối tượng để tìm đối tượng chính xác để đảo ngược. Cách này giúp bạn sử dụng với đứa trẻ mà bạn muốn. Bạn có thể lấy nó bằng:

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); 
    } 
} 
Các vấn đề liên quan