热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flash与课件制作:视频播放

参考昨天Mp3的制作,今天弄一个视频播放。其实道理差不多,今天比较懒,没用其他类库只是单独写在一起。考虑到只是笔记就写上来。一些元件都是在

  

 

参考昨天Mp3的制作,今天弄一个视频播放。其实道理差不多,今天比较懒,没用其他类库只是单独写在一起。

考虑到只是笔记就写上来。

一些元件都是在这个基础上修改的

 http://blog.csdn.net/hero82748274/archive/2011/02/22/6201133.aspx

一些元件都是在舞台上命名的。

制作课件的时候,拿来练手也不错的选择。特别制作视频播放的时候经常需要用到。

  

   

package { import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.display.MovieClip; import flash.events.*; import flash.net.*; import flash.media.*; import flash.geom.*; import flash.display.SimpleButton; public class Main extends Sprite { private var position:Number &#61; 0;//播放位置 private var video:Video; private var videoUrl:String &#61; "2.MP4";//视频的路径 private var isPlay:Boolean &#61; false;//是否播放 private var stream:NetStream; private var duration:Number;//时间 private var sound:SoundTransform&#61;new SoundTransform(); public function Main() { init(); } private function init():void { init_Connection();//初始化链接 init_ui(); } //初始化视频和链接 private function init_Connection():void { video&#61;new Video(320*1.2,240*1.2); video.x &#61; 80; video.y &#61; 20; addChild(video); var connection:NetConnection&#61;new NetConnection(); connection.connect(null); stream &#61; new NetStream(connection); var client:Object&#61;new Object(); client.onMetaData &#61; onMetaData;//回调函数&#xff0c;获取总的时间 stream.client &#61; client; video.attachNetStream(stream); stream.bufferTime &#61; 1;//设置缓冲时间 stream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,netAsyncErrorHandler); playVideo(videoUrl); } //初始化ui private function init_ui():void { playBtn.stop(); volumeBtn.stop(); playBtn.buttonMode &#61; true; stopBtn.buttonMode &#61; true; progressBar.controlBar.mouseEnabled &#61; false; volumeBar.controlBar.mouseEnabled &#61; false; progressBar.buttonMode &#61; true; volumeBtn.buttonMode &#61; true; volumeBar.buttonMode &#61; true; fullScreenBtn.buttonMode&#61;true; volumeBar.controlBar.width &#61; volumeBar.width; //开始按钮&#xff0c;停止按钮&#xff0c;进度条监听鼠标事件 playBtn.addEventListener(MouseEvent.CLICK,onPlaySoundHandler); stopBtn.addEventListener(MouseEvent.CLICK,onStopVideoHandler); progressBar.addEventListener(MouseEvent.MOUSE_DOWN,onStartDragBarHandler); volumeBtn.addEventListener(MouseEvent.CLICK,onMuteSoundHandler); volumeBar.addEventListener(MouseEvent.MOUSE_DOWN,onStartDragVolomeBarHandler); fullScreenBtn.addEventListener(MouseEvent.CLICK,onFullScreendHandler); playBtn.gotoAndStop("pause"); isPlay &#61; true; addEventListener(Event.ENTER_FRAME,onProgressHandler); } private function netStatusHandler(event:NetStatusEvent):void { } private function netAsyncErrorHandler(event:AsyncErrorEvent):void { } private function onMetaData(data:Object):void { duration &#61; data.duration; } private function onProgressHandler(event:Event):void { if (isPlay) { progressBar.controlBar.width&#61;stream.time/this.duration*progressBar.width;//让进度条产生宽度变化 } if (progressBar.controlBar.width <&#61; progressBar.width && progressBar.controlBar.width >&#61; progressBar.width - 2) { stopVideo(); } } //播放和暂停处理 private function onPlaySoundHandler(event:MouseEvent):void { if (playBtn.currentLabel &#61;&#61; "start") { if (isPlay &#61;&#61; false) { isPlay &#61; true; playBtn.gotoAndStop("pause"); resumeVideo(); } } else { if (isPlay) { isPlay &#61; false; playBtn.gotoAndStop("start"); pauseVideo(); } } } private function onStopVideoHandler(event:MouseEvent):void { stopVideo(); } //全屏处理 private function onFullScreendHandler(event:MouseEvent):void { fullScreen(); } private function onStartDragBarHandler(event:MouseEvent):void { pauseVideo(); playBtn.gotoAndStop("pause"); progressBar.controlBar.width &#61; progressBar.mouseX; event.updateAfterEvent(); position&#61;progressBar.controlBar.width/progressBar.width*duration; progressBar.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler); stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler); } private function onMouseMoveHandler(event:MouseEvent):void { pauseVideo(); progressBar.controlBar.width &#61; progressBar.mouseX; position&#61;progressBar.controlBar.width/progressBar.width*duration; event.updateAfterEvent(); } private function onMouseUPHandler(event:MouseEvent):void { if (progressBar.hasEventListener(MouseEvent.MOUSE_MOVE)) { progressBar.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler); stream.seek(position); resumeVideo(); } if (volumeBar.hasEventListener(MouseEvent.MOUSE_MOVE)) { volumeBar.removeEventListener(MouseEvent.MOUSE_MOVE,onChangeVolumeHandler); } stage.removeEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler); } //静音处理 private function onMuteSoundHandler(event:MouseEvent):void { if (volumeBtn.currentLabel &#61;&#61; "start") { volumeBtn.gotoAndStop("stop"); setVolume(0); } else { volumeBtn.gotoAndStop("start"); setVolume(1); } } //拖动声音控制 private function onStartDragVolomeBarHandler(event:MouseEvent):void { volumeBar.controlBar.width &#61; volumeBar.mouseX; var volume:Number &#61; getPercent(); setVolume(volume); event.updateAfterEvent(); volumeBar.addEventListener(MouseEvent.MOUSE_MOVE,onChangeVolumeHandler); stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler); } //修改声音 private function onChangeVolumeHandler(event:MouseEvent):void { volumeBar.controlBar.width &#61; volumeBar.mouseX; var volume:Number &#61; getPercent(); event.updateAfterEvent(); stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler); } private function getPercent():Number { return volumeBar.controlBar.width / volumeBar.width; } //停止播放视频 private function stopVideo():void { playBtn.gotoAndStop("start"); position &#61; 0; isPlay &#61; false; video.clear(); stream.seek(0); stream.close(); progressBar.controlBar.width &#61; 1; } //播放视频 private function playVideo(videoUrl:String):void { stream.play(videoUrl); } //暂停视频 private function pauseVideo():void { stream.pause(); isPlay &#61; false; } //继续播放 private function resumeVideo():void { isPlay &#61; true; if(stream.time&#61;&#61;0) { stream.play(videoUrl); } else stream.resume(); } //设置音量 private function setVolume(volumes:Number):void { sound.volume&#61;volumes; stream.soundTransform&#61;sound; } //全屏模式 private function fullScreen():void { if (stage.displayState&#61;&#61;StageDisplayState.NORMAL) { stage.displayState &#61; StageDisplayState.FULL_SCREEN; } else if (stage.displayState &#61;&#61;StageDisplayState.FULL_SCREEN) { stage.displayState&#61;StageDisplayState.NORMAL; } } } }



推荐阅读
author-avatar
Wang嘉伟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有