我试图在Action Script 3中制作一个反向播放模块。我有一个200帧长的视频,我作为影片剪辑导入Flash。我命名影片剪辑并插入一些关键帧以使视频停在特定的帧上,使其成为3阶段动画。
每当我向右滑动/平移(检测到正x偏移)时,它会发出命令play();
,影片剪辑将播放,直到找到停止。
我想要实现的是当我向左滑动(检测到负偏移)时,从当前帧向后播放直到上一个停止。(
我整理了滑动/触摸编程,而我所缺少的是向后位。我设法让它工作,倒退1个单帧,而不是在击中前一个停止帧之前存在的整个束。我的滑动和播放代码是这样的,包含单个prev帧,这使我只返回一帧而不是前一站之前的整个帧。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
mymovieclip.stop();
mymovieclip.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);
function onSwipe (e:TransformGestureEvent):void{
if (e.offsetX == 1) {
//User swiped right
mymovieclip.play();
}
if (e.offsetX == -1) {
//User swiped left
mymovieclip.prevFrame();
}
}
答案 0 :(得分:0)
你可以试试这个:
import flash.events.Event;
import flash.display.MovieClip;
//note that this is not hoisted, it must appear before the call
MovieClip.prototype.playBackward = function():void {
if(this.currentFrame > 1) {
this.prevFrame();
this.addEventListener(Event.ENTER_FRAME, playBackwardHandler);
}
}
function playBackwardHandler(e:Event):void {
var mc:MovieClip = e.currentTarget as MovieClip;
if(mc.currentFrame > 1 && (!mc.currentFrameLabel || mc.currentFrameLabel.indexOf("stopFrame") == -1)) { //check whether the clip reached its beginning or the playhead is at a frame with a label that contains the string 'stopFrame'
mc.prevFrame();
}
else {
mc.removeEventListener(Event.ENTER_FRAME, playBackwardHandler);
}
}
var clip:MovieClip = backMc; //some clip on the stage
clip.gotoAndStop(100); //send it to frame 100
clip.playBackward(); //play it backwards
现在你可以将'stopFrame'标签放到剪辑的时间轴上(stopFrame1,stopFrame2 ... stopFrameWhatever),剪辑应该停在那里直到再次调用playBackward。请注意,如果剪辑尚未到达stopFrame或其开头并且您想要从MovieClip API调用播放/停止,则应删除输入帧事件侦听器,否则可能会导致问题。