源文地址:http://www.cnblogs.com/wayne23/archive/2010/07/15/1778077.html
AS3 CookBook学习整理(十三)
1. 控制视频声音
使用NetStream对象的soundTransform属性
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.media.SoundTransform; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; public class Sample0623 extends Sprite { private var ns:NetStream; public function Sample0623() { var nc:NetConnection = new NetConnection(); nc.connect(null); ns = new NetStream(nc); ns.client = this; var video:Video = new Video(); video.attachNetStream(ns); ns.play("demo.flv"); stage.addEventListener(MouseEvent.CLICK,onClick); this.addChild(video); } private function onClick(event:MouseEvent):void { var transform:SoundTransform = ns.soundTransform; transform.volume = .2; ns.soundTransform = transform; } public function onMetaData(infoObject:Object):void { for(var proName:String in infoObject) { trace(proName+":"+infoObject[proName]); } } } }
2. 获得播放时间(播放头)
使用NetStream对象的time属性,单位为秒。
textField.text = netStream.time + " seconds";
注意其值没有经过四舍五入,也就是说有时候得到数可能诸如5.235,如果需要整数,可使用Math.round(), Math.floor(), 或Math.ceil()
time属性是只读的
3. 获得视频总时间
使用onMetaData()回调函数读取duration源数据值,单位为秒
NetStream类没有定义一个属性指明视频长度,不过大多数情况,可以从flv文件的元数据获得长度值
当一个NetStream对象载入一个flv文件,它会自动调用onMetaData( )回调方法,该回调模型不同于ActionScript 3.0 API 中的一般事件模型,一般情况下我们通过使用addEventListener( ). 对一个事件进行监听,但是元数据事件必须为一个对象定义一个叫onMetaData( )方法,然后把这个对象赋值给NetStream对象的client属性。该方法自动传递一个类型为Object的关联数组,其包含flv文件的元数据信息
package { import flash.display.Sprite; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; public class Sample0623 extends Sprite { private var ns:NetStream; public function Sample0623() { var nc:NetConnection = new NetConnection(); nc.connect(null); ns = new NetStream(nc); var client:Object = new Object(); client.onMetaData = onMetaData; ns.client = client; var v