选择显示字体大小

as+js打造页面flash播放控制器

第一次有这个勇气做个教程出来,也许并不成熟,但希望各位能跟我分享~~~:) 这个flash播放控制的页面上其他的内容这里就不考虑了。
假设只有一个要被控制的flash动画和一个起控制作用的control.swf 首先你要准备一个flash动画。就是要被控制播放的那个
但要注明,如果这个动画是你自己做的,那一切都无所谓
但如果是类似闪吧性质的,要控制他人的flash播放的话,那你得确定这个flash不是那种单帧mc的
就是说整个动画应该是在主时间线上进行的,不能是只有一个mc,而所有的动画都在这个mc中,那样这个mc的实例名可能无法得知,所以不方便我们的控制。 好了准备工作完了,接下来开始我们的播放控制器的制作 用flash画出这些图标估计没什么难度吧?这里略去了,但要明确,需要几个控制按钮,我这里仅用了3个,play,pause,stop,以及一个带滑块的进度条。

首先说整个as的思路: 这个播放控制的原理其实利是用叶面中的js
控制用的flash用fscommand跟js交互,给它发送指令,被控制flash则接收js给它的信息,实现播放 ,停止,以及跳转。
复习一下fscommand的用法:
fscommand("command","parameters");
这里 command是一个字符串,parameters是一个变量
分别表示发送的命令和一个变量
在后面我们会看到他们的用处
play,pause,stop三个按钮很简单,没什么说的
main.playbut.onrelease = function() {
fscommand("play", "kevin");
};
main.pausebut.onrelease = function() {
fscommand("pause", "kevin");
};
main.stopbut.onrelease = function() {
fscommand("stop", "kevin");
};
这里"kevin"这个字符串没有任何用处,除了带给自己一点小小的成就感~~:)
因为我的所有的as都是写在主时间线上的,所以整个都是一个mc,名字叫main
进度条这里就稍微麻烦一点了
我嵌套了好几重mc
:(
整个进度条是一个mc,名字是line
里面有另外两个组件:bar跟timeline分别是滑块跟时间线
因为bar的宽度是30,timeline的宽度是250,所以为了今后的方便我在这里把他们的_x都设在-15
这样bar的正中就是0了
他的滑动范围是0到250
在主场景上写下as
main.line.bar.onpress = function() {
_root.onenterframe = undefined;
this.startdrag(false, 0, 0, 250, 0);
fscommand("pause", "kevin");
};//设置鼠标拖动,并且当按下鼠标的时候要保证被控制的flash在这时是暂停的,这个问题我们稍后再提到
main.line.bar.onrelease = function() {
this.stopdrag();
framejump();
};//鼠标左键松开时,滑块停止拖动,并调用控制帧跳转的framejump()函数
main.line.bar.onreleaseoutside = line.bar.onrelease;//这是为了避免一些不必要的麻烦出现~~
main.line.timeline.onpress = function() {
_root.onenterframe = undefined;
main.line.bar._x = this._xmouse;
framejump();
};//这是达到一个直接在timeline上点击就控制进度的效果,跟一般的mp3播放器之类的一样
//当在timeline上点击,设置bar的x坐标为这时鼠标的x坐标,并调用framejump()函数控制帧跳转
现在,整个control的结构和方法你应该已经大致清楚了吧?
在上面那些as的前面应该再加上这些 var totalframes;
var currentframe;//设置了两个变量,分别为flash总帧数和当前帧数
main.line.timeline.usehandcursor = false;
getframe = function () {
fscommand("totalframes", "kevin");
fscommand("currentframe", "kevin");
main.line.bar._x = currentframe/totalframes*250;
};//定义了一个得到当前帧的函数,并设置bar的位置
framejump = function () {
location = main.line.bar._x/250;
targetframe = math.round(location*totalframes);
fscommand("jump", targetframe);
_root.onenterframe = getframe;
};//定义了一个控制帧跳转的函数,按照bar在timeline上的位置来确定跳转的目标帧号,并将目标帧号发送给js
_root.onenterframe = getframe;
//时时获得flash的当前帧数,并设置bar的移动表示进度。这里就要回答前面main.line.bar.onpress里面的要设置flash在这时暂停的原因了。在flash播放的同时,会不停的为bar设置新的位置,使它移动,但如果在鼠标拖动bar的时候,flash仍继续播放,那么结果可想而知。还有这也就是为什么在设置进度条控制的时候总要加一个_root.onenterframe=undefined;了
最后再把完整的as贴上吧
var totalframes;
var currentframe;
main.line.timeline.usehandcursor = false;
getframe = function () {
fscommand("totalframes", "kevin");
fscommand("currentframe", "kevin");
main.line.bar._x = currentframe/totalframes*250;
};
framejump = function () {
location = main.line.bar._x/250;
targetframe = math.round(location*totalframes);
fscommand("jump", targetframe);
_root.onenterframe = getframe;
};
_root.onenterframe = getframe;
//init---------------------------------------------------------------------------------------------
main.playbut.onrelease = function() {
fscommand("play", "kevin");
};
main.pausebut.onrelease = function() {
fscommand("pause", "kevin");
};
main.stopbut.onrelease = function() {
fscommand("stop", "kevin");
};
//controlbutton----------------------------------------------------------------------------------------
main.line.bar.onpress = function() {
_root.onenterframe = undefined;
this.startdrag(false, 0, 0, 250, 0);
fscommand("pause", "kevin");
};
main.line.bar.onrelease = function() {
this.stopdrag();
framejump();
};
main.line.bar.onreleaseoutside = line.bar.onrelease;
main.line.timeline.onpress = function() {
_root.onenterframe = undefined;
main.line.bar._x = this._xmouse;
framejump();
};
发布这个flashhtml格式,选择flash with fscommand

用dw编辑一下这个html文档
在合适的地方插入一个flash动画

为这个flash和播放控制的flash都分别添加id名

下面是js的内容:
因为本身导出的时候选择了 flash with fscommand
所以这时候已经是有js框架
你可以找到这个地方 //
// place your code here...
// 写入如下代码:
function control_dofscommand(command, args) {
var controlobj = inte.netexplorer ? control : document.control;
var movie = inte.netexplorer ?mymovie : document.mymovie; //注意这两句,其中有些东西是要调整的!!!
if (command == "totalframes") {
var totalframes = movie.totalframes;
controlobj.setvariable("/:totalframes",totalframes);
}
//这是得到flash的总针数,并将这个值传给播放控制的flash---control
if (command == "currentframe") {
var currentframe = movie.tcurrentframe("/");
controlobj.setvariable("/:currentframe",currentframe);
}
//这是得到flash的当前针号,并将这个值传给播放控制的flash---control
if(command=="play"){
movie.play();
}
if(command=="pause"){
movie.stopplay();
}
if(command=="stop"){
movie.gotoframe(0);
}
//相当于as中的gotoandstop(frame),但这里第一针的值是0!!
if(command=="jump"){
movie.gotoframe(args);
var currentframe=args;
movie.play();
}
//跳转到某一针并继续播放
ok,现在大功告成!!!
只要打开这个control.html观看flash吧,用下面的控制器可以达到播放控制的作用了~~
你再也不用为 错过某一个精彩的画面而重新等待了,我想看哪里就看哪里!!就象用播放器看电影~~~
好爽~~~ 如果你需要做一个类似闪吧的flash播放页面,把它加进去,不是为网页的浏览者提供了一个很大的方便么~~
这也就是我做这个的目的.嘻嘻~~~   


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons