假设我有一个包含 180 帧全高清的 .flv。
我将它导入到 Flash(或 flex)中,并希望能够通过单击并拖动视图来平滑地浏览时间线。
我该怎么做?
我目前的解决方案是将每一帧加载到一个 BitmapData 数组中,它可以工作,但它使用 1.5 GB 内存,这可能会导致我的一些问题。
我只需要一种能够单击并向左/向右拖动以平滑地向前/向后滚动帧的方法。
在我的简单测试中,它真的很滞后。
这是我的简单测试代码,它太慢了:
import flash.events.Event;
import flash.events.MouseEvent;
stop();
var mouseDownValue:Boolean = false;
var currentFrameValue:int = 0;
var maxFramesValue:int = 180;
var oldMouseX:int;
myMovie.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
myMovie.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
myMovie.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
function mouseDownHandler(evt:MouseEvent):void{
mouseDownValue = true;
}
function mouseUpHandler(evt:MouseEvent):void{
mouseDownValue = false;
}
function mouseMoveHandler(evt:MouseEvent):void{
if(mouseDownValue){
if(oldMouseX<0) oldMouseX = mouseX;
currentFrameValue += (oldMouseX - mouseX)/2;
if(currentFrameValue>=(maxFramesValue-2)) currentFrameValue -= (maxFramesValue-1);
if(currentFrameValue<0) currentFrameValue += (maxFramesValue-1);
myMovie.gotoAndStop(currentFrameValue+1);
oldMouseX = mouseX;
}
}