图1-10 如图1-10,我们在第一帧上写上代码: stop(); var vol = 100;
第二帧上写上代码: vol = 0;
返回场景,将该元件的实例名命名为vSound,选择层action的第一帧,输入以下代码: vSound.attachAudio(ns); var video_sound:Sound = new Sound(vSound); vSound.onRelease = function(){ if(this.vol == 100){ video_sound.setVolume(0); this.gotoAndStop(2); }else{ video_sound.setVolume(100); this.gotoAndStop(1); } }
Ctrl+Enter测试一下。这里需要说明一下,其实只建立一个Sound对象就可以控制声音了,但是如果不指定是谁的声音时,他控制的是根影片的音量,因此这里将ns中的声音引入到vSound影片剪辑当中,然后指定video_sound对象控制的是vSound影片剪辑当中的声音。
*****************************第七步:*****************************
我们的播放器总算有模有样了,不过还缺少样东西。大家在播放流媒体的时候,是不是常常会见到缓冲?没错,就是缓冲。还等什么,赶快动手。 首先,我们在层video和controlBar之间新建一层并命名为buffer,然后用矩形在舞台上绘制一个320*240的黑色矩形,将其和video的位置对齐,正好能挡着video。然后我们按F8将其转换给影片剪辑,并命名其实例名为buffer_mc。双击进入编辑状态,新建一层名为text,用文字工具输入文字:视频缓冲中。并将其转换为元件创建一个Alpha渐变的动画,如图1-11:
图1-11 返回场景,选择层action,输入一下代码: //设置ns缓冲时间为15秒 ns.setBufferTime(15); //创建ns的onStatus处理函数,详细请查看帮助文档 ns.onStatus = function(info:Object){ //当缓冲为满的时候,buffer_mc隐藏 if(info.code == "NetStream.Buffer.Full"){ buffer_mc._visible = false; } //当缓冲空的时候,buffer_mc显示 if(info.code == "NetStream.Buffer.Empty"){ buffer_mc._visible = true; } //当视频播放结束时,重新播放 if(info.code == "NetStream.Play.Stop"){ ns.seek(0); } } OK,导出测试一下。
*****************************第八步:*****************************
下面我们来给播放器做个右键菜单(;^ ^)首先,在action层第一帧输入一下代码: var myMenu:ContextMenu = new ContextMenu(); myMenu.hideBuiltInItems(); 这里我们自定义了一个myMenu为新的ContexMenu对象,然后我们使用hideBuiltInItems()方法将“设置”和“版权声明”以外的选项都隐藏起来。导出测试一下。 然后我们再输入以下代码: var i1:ContextMenuItem = new ContextMenuItem("::::: Video Controls :::::",trace); var i2:ContextMenuItem = new ContextMenuItem("Play / Pause",pauseIt,true); var i3:ContextMenuItem = new ContextMenuItem("Replay",replayIt); var i4:ContextMenuItem = new ContextMenuItem("Select a Flv files",selectIt,true); var i5:ContextMenuItem = new ContextMenuItem("Copyright 2006 Sailon",trace,true); myMenu.customItems[0] = i1; myMenu.customItems[1] = i2; myMenu.customItems[2] = i3; myMenu.customItems[3] = i4; myMenu.customItems[4] = i5;
定义i1-i5为新的ContexMenuItem,并在该构造函数中填入相应的参数,具体的参数说明可以查看帮助文档^_^ 然后我们将myMenu的属性coustomItems(数组)赋给i1-i5。 好,现在我们定义好了菜单,下面我们给所对应菜单写上方法,代码如下: import flash.net.FileReference; //播放暂停方法 function pauseIt() { ns.pause(); } //重放方法 function replayIt() { ns.seek(0); } //选择Flv方法 function selectIt(){ var listener:Object = new Object(); listener.onSelect = function(file:FileReference):Void { trace("Opened " + file.name); playVideo(file.name); } listener.onCancel = function(file:FileReference):Void { trace("User cancelled"); } var fileRef:FileReference = new FileReference(); fileRef.addListener(listener); fileRef.browse(); } 这里需要说明一下,selectIt()方法在选择flv文件后会触发playVideo()方法,因此我们这里还需要修改步骤一的代码。将步骤一的代码修改如下: var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); var myVideo:Video; myVideo.attachVideo(ns); function playVideo(video){ |