邮件订阅
5ucms插件,用Flash来制作一个Flash播放器
作者: 来源: 日期:2017/1/8 20:33:16 浏览量:8(滞后) 人气:LOADING...(实时) 【

5ucms插件,用Flash来制作一个Flash播放器
最近在网上看到了很多用Flash制作的播放器,就想试着用Flash来制作一个播放器。点击这里下载源文件一、实现背景仔细研究一下各个播放器的实现方法,其实原理是大同小异的,都是用Flash来实现,只是有的实现还利用了Java Script跟Flash的通讯,通过网页来控制Flash的播放。最简单的实现方法是,在Flash中先用Load Movie函数将影片导入场景中,使用Movie Clip相应的函数,如play,gotoAndStop,stop,nextFrame,prevFrame等等,就可以实现播放器的大概功能了。不过,想要将播放器做的比较通用,在制作过程中还是有点复杂,再加上考虑播放影片的质量控制、场景的缩放、fps的计算、Flash与Java Script的通讯等等因素,就更加复杂了。下面我们通过一个例子来看看具体的实现。  最终效果演示 [ 全屏观看 ]二、实现步骤我们先来制作一个被控制的目标影片,然后再制作播放器的主体部分。1、新建一个Flash文件,按Ctrl + F8建立一个Movie Clip,命名为“Sample Movie Graphic”,在此Clip的场景中绘制如图1所示的图样。
2、再按Ctrl + F8建立一个Movie Clip,命名为“Sample Movie”,将上一步所制作的Clip拖到Sample Movie的场景中,在时间轴的第345帧上面插入关键帧,并用工具条中的缩放工具,将第345帧上面的Sample Movie Graphic旋转一定的角度。在Sample Movie的第一帧和第345帧的Acti
_root.scrubber.butt
_root.scrubber.butt){
gotoAndStop("closed")
}else{
gotoAndStop("open")
}
}注释:根据变量,设置相应的状态13、按Ctrl + F8新建立一个Movie Clip,命名为“scrubFlipSwitchGraphic”。在scrubFlipSwitchGraphic这个Clip的场景中,绘制一个长方形。14、按Ctrl + F8新建立一个Movie Clip,命名为“scrubFlipSwitch”。将scrubFlipSwitchGraphic Clip拖到此帧的场景中,将帧标签设置为“off”,并在此帧的Action面板上面增加如下语句:
stop()15、在scrubFlipSwitch Clip的时间轴的第二帧上面,插入一个关键帧,将帧标签设置为“on”,并在此帧的Action面板上面增加如下语句:
stop()16、在scrubFlipSwitch Clip的第二帧场景中的Clip的Action面板上面增加如下语句:
onClipEvent (enterFrame) {
_root.scrubber.scrubEngine(_root.scrubTarget, _root.scrubSpeed);
}注释:上面这些语句等于是整个播放器的引擎。17、分别用Ctrl + F8新建立六个Button,依次在Button的场景里面绘制“跳到最前”、“后退”、“停止”、“播放”、“前进”、“跳到最后”的箭头。18、按Ctrl + F8新建立一个Movie Clip,命名为“scrub button row”。将scrubFlipSwitch Clip拖到此Clip的场景中,命名为“flipSwitch”,在scrub button row Clip的场景里面用文本框拉两个文本输入框,设置属性分别如图3和图4所示。

将第17步绘制的六个箭头拖到scrub button row Clip的场景里面,在“跳到最前” 箭头的Action面板上面增加如下语句:
on (press) {
_root.scrubber.begin(_root.scrubTarget, 1);
}注释:调用帧函数里面的“跳到最前”函数。在“后退” 箭头的Action面板上面增加如下语句:
on (press) {
_root.scrubDirection = "reverse";
_root.scrubber.buttonRow.flipSwitch.gotoAndStop("on");
}
on (release, releaseOutside) {
_root.scrubber.buttonRow.flipSwitch.gotoAndStop("off");
}注释:调用帧函数里面的“后退”函数在“停止” 箭头的Action面板上面增加如下语句:
on (press) {
_root.scrubber.stopMovie(_root.scrubTarget);
_root.scrubTargetState = "stop";
}注释:调用帧函数里面的“停止”函数。在“播放” 箭头的Action面板上面增加如下语句:
on (press) {
_root.scrubber.playMovie(_root.scrubTarget);
_root.scrubTargetState = "play";
}注释:调用帧函数里面的“播放”函数。在“前进” 箭头的Action面板上面增加如下语句:
on (press) {
_root.scrubDirection = "forward";
_root.scrubber.buttonRow.flipSwitch.gotoAndStop("on");
}
on (release, releaseOutside) {
_root.scrubber.buttonRow.flipSwitch.gotoAndStop("off");
}注释:调用帧函数里面的“前进”函数。在“跳到最后” 箭头的Action面板上面增加如下语句
on (press) {
_root.scrubber.end(_root.scrubTarget);
}注释:调用帧函数里面的“跳到最后”函数。19、按Ctrl + F8新建立一个Movie Clip,命名为“control”。将scrubFlipSwitch Clip从图库拖到control Clip的场景中,命名为“buttonRow”。将时间滑块scrubberTimeLineHandle Clip从图库拖到control Clip的场景中,命名为“handle”,并在scrubberTimeLineHandle Clip的Action面板上面增加如下语句:
onClipEvent (enterFrame) {
_root.scrubCurrentFrame = _root.scrubber.currentFrame(_root.scrubTarget)
if (_root.scrubTimeLineHandle == "scrub") {
_root.scrubber.scrubHandle(_root.scrubTarget);
} else {
_root.scrubber.scrubHandlePlay(_root.scrubTarget);
}
}20、将缩放的箭头scrub b shade 2 Clip从图库拖到control Clip的场景中。将移动的箭头scrub b drag从图库拖到control Clip的场景中,并在scrub b drag Clip的Action面板上面增加如下语句:
on (press) {
this.startDrag();
}
on (release, releaseOutside) {
this.stopDrag();
} 21、在control Clip的时间轴上面插入一个新的层,将时间轴scrubberTimeLineGraphic Clip拖到此帧的场景中,命名为“timeLine”,在帧的Action面板上面插入如下语句:
function end (setTarget, frame) { //注释1
setTarget.gotoAndStop(setTarget._totalframes);
_root.scrubTargetState = "stop";
}
function begin (setTarget, frame) { //注释2
setTarget.gotoAndStop(frame);
_root.scrubTargetState = "stop";
}
function stopMovie (setTarget) { //注释3
setTarget.stop();
}
function playMovie (setTarget) { //注释4
setTarget.play();
}
function scrubHandlePlay (setTarget) { //注释5
_root.scrubber.handle._x = (_root.scrubber.timeLine._width-_root.scrubber.handle._width)*(setTarget._currentFrame/setTarget._totalFrames);
}
function scrubHandle (setTarget) { //注释6
setTarget.gotoAndStop(int(setTarget._totalFrames*(_root.scrubber.handle._x/(_root.scrubber.timeLine._width-_root.scrubber.handle._width))));
}
function currentFrame (setTarget){ //注释7
return setTarget._currentFrame
} function scrubEngine (target, speed) { //注释8
if (_root.scrubDirection == "reverse") {
direction = target._currentframe - Number(speed);
_root.direction = direction
}else{
direction = target._currentframe + Number(speed);
_root.direction = direction
}
target.gotoAndStop(direction);if (direction<1) {
target.gotoAndStop(1);
}
if (direction>target._totalframes) {
target.gotoAndStop(target._totalframes);
_root.scrubTargetState = "stop";
}
if (_root.scrubTargetState == "play") {
target.play();
} else {
target.stop();
}
}注释1:定义“跳到最后”函数。
注释2:定义“前进”函数。
注释3:定义“停止”函数。
注释4:定义“播放”函数。
注释5:移动时间滑块。
注释6:移动时间滑块时调用的函数。
注释7:显示当前播放帧数的函数。
注释8:根据输入的速度,调整播放情况。22、将影片的主场景中的第一帧的帧标签设置为“scrubber”。23、将control Clip拖到影片的主场景中,命名为“scrubber”,并在Clip的Action面板上面增加如下语句:
onClipEvent (load) {
_root.scrubTarget = _root.movie;
_root.scrubTargetState = "stop";
}注释:定位播放器要播放的影片三、小结至此,一个Flash播放器就算制作完成。本质上是对Movie Clip这个函数的控制,只不过在最外一层增加了许多封装的东西,看起来就显得有点复杂。如果想做成网页模板,在模板里面使用这个播放器,可以在网页中通过Java Script来控制Flash播放器。这里面最重要的是Java Script与Flash之间的通讯,即是在浏览器里面的操作动作,要通过Java Script传到Flash播放器里面去。两者之间的通讯的一种实现方法是这样的:先把Flash所生成的swf文件插入到网页中,然后在网页中插入如下Java Script语句。
<SCRIPT LANGUAGE=JavaScript>
function doPassVar(args){ //注释1
var sendText = args.value;
window.document.myFlash.SetVariable("myVar", sendText); //注释2
}
</SCRIPT>注释1:这是响应浏览器里面动作的函数,在需要响应的地方加入这个函数,就可以触发这个函数。
注释2:myFlash是插入的swf的名字,SetVariable函数的作用是将页面里的sendText变量传到Flash中的myVar变量,在Flash中对myVar变量进行相应的操作,就可以控制播放了。点击这里下载源文件

选择5ucms.org 选择未来

本站推荐: 5ucms模板下载 5ucms插件下载 仿站联系Q3876307       [复制给好友] [打印] [关闭] [返回] [顶部]
上一篇:5ucms模版,FlashMX基础应用(1.4)
下一篇:5ucms仿站,用FlashMX组件打造全新留言板
本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。
5ucms插件,用Flash来制作一个Flash播放器的关键词:
评论信息
相关分类
本周热门
本月热门
关于我们 - 版权/免责 申明 - 建站服务 - 网站地图 - 稿件投递 - 联系我们 - 5ucms
Copyright © 2008-2015 www.5ucms.org