| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

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

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

作者:佚名 来源:闪吧 作者: xiankevin 更新:2007-1-13 20:48:34 错误报告 我要投稿

第一次有这个勇气做个教程出来,也许并不成熟,但希望各位能跟我分享~~~:) 这个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();
};
发布这个flash为html格式,选择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 = InternetExplorer ? control : document.control;
var movie = InternetExplorer ?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播放页面,把它加进去,不是为网页的浏览者提供了一个很大的方便么~~
这也就是我做这个的目的.嘻嘻~~~
点击下载源文件
http://www.flash8.net/bbs/UploadFile/200392314122792295.rar

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。