狭路百度云:四、FLASH课件工具面板积件制作(9)----制作flv播放器 - Qzone日志

来源:百度文库 编辑:中财网 时间:2024/04/27 03:05:23
1、创建新元件,名称:swf播放器,类型:影片剪辑。
2、打开“swf影片剪辑”,创建新图层,并重新命名,如下图

3、在“窗口边框”层制作一个546×380的长方形。定位:x=0,y=0

4、在“窗口”层制作一个512×288的白边黑底的长方形。定位:x=17,y=33


5、首先我们打开Flash的元件库,如图下图所示,我们点击红色的部分新建一个视频元件。

在“video”图层,将视频元件从元件库拖到舞台中并更改大小为512*288,给舞台中的视频元件命名实例名为:vflv,定位:x=17,y=33。如图


6、在“controlBar”层制作一个512×37的无边渐变底的长方形。位置:x=17,y=327


7、在“音量控件”层制作一个103×5.6无边白底的长方形。选中该长方形把它转为影片剪辑,命名为“音量控制”实例名为“volbtnctrl”。
打开“音量控制”影片剪辑,选中该长方形定位:x=0,y=0
新建一个图层制作一个3×7的滑块,选中该滑块把它转为影片剪辑,命名为“滑块”实例名为“volbtn”。选中“滑块”影片剪,打开动作面板写上代码:
on (releaseOutside, release) {
          stopDrag();
}
新建一个as2图层,打开动作面板写上代码:
volbtn.onPress = function() {
          volbtn.startDrag(true,0,0,100,0);
          volbtn.isDragging = true;
};
volbtn.onMouseMove = function() {
          if (volbtn.isDragging) {
                   _parent.mysound.setVolume(volbtn._x);
          }
};
8、在“txt”层制作三个动态文本框,“标题”、“时间”文本实例名分别为“bt_txt”、“times”,音量文本变量名为vol
9、在“btn”层制作“播放”、“暂停”、“停止”和“打开”按钮,实例名分别为“play_btn”、“ pause_btn”、“stop_btn”和“dkwj_btn”。复制一个“播放”按钮,实例名分别为“play1_btn”把它放在“play_btn”按钮上面。
再做两个“窗口显示比例”按钮,实例名分别为“windows1_btn”和“ windows2_btn”。如下图:

全部布局如下图:

10、新建一个“as2”图层,打开动作面板写上代码:
/*=========  朱邦根  QQ:286866998   ========*/
// 创建一个 NetConnection 对象
var ncvideo:NetConnection = new NetConnection();
// 创建一个本地流连接
//true代表将ncvideo写入硬盘,false、mull或省略代表不写入,只作临时存在
ncvideo.connect(null);
// 创建一个 NetStream 对象并定义一个 onStatus() 函数
var nsvideo:NetStream = new NetStream(ncvideo);
this.createEmptyMovieClip("flv_mc",this.getNextHighestDepth());
// 将 NetStream 音频输入信号附加到Audio 对象
flv_mc.attachAudio(nsvideo);
var mysound:Sound = new Sound(flv_mc);
var vpath:String;
function playvideo(videopath) {
          nsvideo.play(videopath);
          // 设置缓冲时间
          nsvideo.setBufferTime(1);
          // 将 NetStream 视频输入信号附加到 Video 对象
          vflv.attachVideo(nsvideo);
}
// 定义总持续时间全局变量,并获得其值。
var nduration:Number=0;
nsvideo.onMetaData = function(infoObject:Object) {
          //获得FLV文件中嵌入的描述性信息,这里获得获得总持续时间(单位:秒)
          nduration = infoObject.duration;
};
function update():Void {
          var npercent:Number = nsvideo.time/nduration*100;
          mprogress._xscale = npercent;
          abcd.text = Math.floor(npercent*100)/100;
          this.bofangtiao.huakuai._x = 544*npercent/100;
          this.bofangtiao.playBar._x = 544*npercent/100;
          times.text = Math.floor(nsvideo.time/60)+":"+Math.floor(nsvideo.time%60)+" / "+Math.floor(nduration/60)+":"+Math.floor(nduration%60);
          bt_txt.text = vpath;
}
var intervalID:Number = setInterval(update, 200);

/**************设置音量控制**************/
onEnterFrame = function () {
          mysound.setVolume(volbtnctrl.volbtn._x);
          vol = volbtnctrl.volbtn._x;
};

/**************打开文件***************/
//FileReference类提供了在用户计算机和服务器之间上传和下传文件的方法
import flash.net.FileReference;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "视频格式 (*.flv)";
imageTypes.extension = "*.flv";
allTypes.push(imageTypes);
var listener:Object = new Object();
listener.onSelect = function(file:FileReference):Void  {
          vpath = file.name;
          playvideo("video/"+vpath);
};
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);

/*============按钮设置==============*/
play_btn.onRelease = function() {
          nsvideo.pause(false);
};
pause_btn.onRelease = function() {
          nsvideo.pause(true);
};
stop_btn.onRelease = function() {
          nsvideo.seek(0);
          nsvideo.pause(true);
};
dkwj_btn.onRelease = function() {
          fileRef.browse(allTypes);
};

/**********设置窗口大小比例**********/
windows1_btn.onRelease = function() {
          with (vflv) {
                   _x = 17;
                   _y = 33;
                   _width = 512;
                   _height = 288;
          }
};
windows2_btn.onRelease = function() {
          with (vflv) {
                   _x = 81;
                   _y = 33;
                   _width = 384;
                   _height = 288;
          }
};
stop();
11、Ctrl+Enter测试一下。
这里需要说明一下,其实只建立一个Sound对象就可以控制声音了,但是如果不指定是谁的声音时,他控制的是根影片的音量,因此这里将ns中的声音引入到vSound影片剪辑当中,然后指定video_sound对象控制的是vSound影片剪辑当中的声音。
说明:视频文件必须放在同文件夹里的video文件夹里。