16.12.擦洗视频

问题
我想擦洗视频的回放(快进或倒退播放)
解决办法
联合使用滑竿控制器与seek( )方法
讨论
一般的方法是通过滑竿控制器来快进或倒退播放视频,首先要创建滑竿控制器,下面的例子代码演示滑竿控制器的编写:
+展开
-ActionScript
package com.oreilly.as3cb.components {
import flash.display.Sprite;
import flash.net.NetStream;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
public class VideoScrubber extends Sprite {
private var _thumb:Sprite;
private var _track:Sprite;
private var _stream:NetStream;
private var _duration:Number;
private var _scrubbing:Boolean;
public function VideoScrubber(stream:NetStream, duration:Number) {
_stream = stream;
_duration = duration;
_track = new Sprite( );
_track.graphics.lineStyle( );
_track.graphics.drawRect(0, -2.5, 100, 5);
addChild(_track);
_thumb = new Sprite( );
_thumb.graphics.lineStyle( );
_thumb.graphics.beginFill(0xFFFFFF);
_thumb.graphics.drawRect(-5, -5, 10, 10);
_thumb.graphics.endFill( );
addChild(_thumb);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
_thumb.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
_thumb.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private function onMouseDown(event:MouseEvent):void {
_scrubbing = true;
var rectangle:Rectangle = new Rectangle(0, 0, _track.width, 0);
_thumb.startDrag(false, rectangle);
}
private function onMouseUp(event:MouseEvent):void {
_scrubbing = false;
_thumb.stopDrag( );
}
private function onEnterFrame(event:Event):void {
if(_duration > 0) {
if(_scrubbing) {
_stream.seek(_duration * _thumb.x / _track.width);
}
else {
_thumb.x = _stream.time / _duration * _track.width;
}
}
}
}
}

上面的代码中,构造函数接收两个参数:NetStream 对象和视频长度。构造函数创建滑竿控制器,当用户点击滑竿时,调用startDrag( )方法并设置_scrubbing 为true。当_scrubbing 为true 时,代码调用seek( )方法,根据滑竿的比例传递回放时间给该方法进行定位。

加支付宝好友偷能量挖...


评论(0)网络
阅读(82)喜欢(0)flash/flex/fcs/AIR