1 、简单 loading 代码:
方法 1 、使用载入字节数判断
b=getBytesTotal();// 获取总的字节数 a=getBytesLoaded();// 已经下载的字节数
onEnterFrame=function(){// 进入帧时 , 进行判断 if (a == b) {// 如果载入的字节数等于总的字节数 delete this.onEnterFrame// 删除进入帧
gotoAndPlay(\"frame\");// 转入到你要播放的帧 ] else {// 否则
a=getBytesLoaded();// 已经下载的字节数
percent=int(a/b*100)+\"%\";// 计算已经下载的百分比 ] }
把上面方法放入第一帧就可以了
方法 2 、使用载入的帧数判断_
用 Action 语法地 if frame is loaded 来实现 , 新建一层,这层专门放 Action, 第一帧,
ifFrameLoaded (\" 场景 \假如场景中地祯数已经载入 goto and play() // 跳至并播放某某祯 ( 自己设定 ) }
第二帧, O*Np@Q
goto and play(\" 场景 1\跳至并播放第一祯循环
再加上一个 load 地 MC 循环播放在这两帧的中间,就 OK 了。 2 、用 flash 做那种弹出的小窗口 分两步:
给 flash 中的按钮加入如下 action: on (release) { idd{ getURL
(\"javascript:MM_openBrWindow('newweb.htm','','width=600,height=100')\");
在 HTML 页面的
... 之间加入下面的 javascript 代码 .3 、载入 swf 文件的控制
在 flash 中可以使用 loadmovie ()和 loadmovienum ()两个函数控制,具体代码如下:
loadmovie 载入的控制
_root.createEmptyMovieClip ( \"aa\" , 1 ); with ( aa ) { _x = 50 ; _y = 100 ; _width=200 _height=300 _alpha=50
loadMovie ( \"02.swf\" ); }
loadMovieNum 的载入控制:
loadMovieNum ( \"02.swf\" , 1 ); onEnterFrame = function () { if ( _level1 ) {
with ( _level1 ) { _x = 50 ; _y = 100 ; }
delete onEnterFrame ; } };
在 flash 2004 中,增加了 MovieClipLoader 类,使用它可以控制播放,下面是一个测试代码:
var mcl= new MovieClipLoader(); // 定义新的 MovieClipLoader 对象~ var listener = new Object(); // 定义一个新的对象,用来监听 load 进程 listener.onLoadProgress=function(target,loadedBytes,totalBytes ){ //onloadprogress 加载过程中每当将加载的内容写入磁盘时调用 // 其中 loadedBytes 是已经下载的字节, totalBytes 是正在加在的文件的总字节数
x=loadedBytes y=totalBytes
//trace(x+ \" bytes 已经 load 了 \");
//trace(totalBytes + \" bytes 需要 load\"); d=x*100/y // 计算已经载入的百分比 )
listener.onLoadInit = function(target) // 当执行加载的剪辑的第一帧上的动作时调用 {
if(d<100){ // 如果没有加载完成,不要播放 target.stop();
} else { // 加载完成,可以设置加载的 swf 文件开始播放的帧数 target.gotoAndPlay(2);
}
target._width=400 // 设置加载的影片的大小及其位置等相关属性 target._height=350 target._x=25 target._y=50 }
mcl.addListener(listener); // 注册一个新的监听对象
mcl.loadClip(\"***.swf\使用自定义的对象,加载 swf 文件
4 、设为首页 on (release) {
getURL(\"javascript:void(document.links.style.behavior='url(#default#homepage)');voiddocument.links.setHomePage(' http://www.flash8.net/')\\"_self\}
注意要将网页中的 flash 的 ID 号命名为 \"links\"
加入收藏夹 on (release) {
getURL(\"javascript:void window.external.AddFavorite(' http://www.163.com',' 网页 ');\\"_self\}
5 、如何随机设置 MC 颜色? 方法 1 、 MC 实例名为 \"mc\" mycolor=new Color(\"mc\")
mycolor.setRGB(random(0xffffff)) 方法 2 、 MC 实例名为 \"mc\" mycolor=new Color(\"mc\") [
mycolor.setRGB(random(16777215)) 方法 3 、 myColor = new Color(mc);
myColorTransform = new Object();// 用 new Object() 为 //setTrandform() 创建参数并随机取值 myra = random(100); myrb = random(255); myga = random(100); mygb = random(255); myba = random(100); mybb = random(255); myaa = random(100); myab = random(255);
myColorTransform = {ra:myra, rb:myrb, ga:myga, gb:mygb, ba:myba, bb:mybb, aa:myaa, ab:myab};
myColor.setTransform(myColorTransform);
方法 4 、 mycolor = new Color(mc);
mycolor.setRGB(random(255)<<16|random(255)<<8|random(255));
6 、关于随机数的技巧
用来产生 6--20 之间的 5 个不重复的随机数
1): 首先产生一个随机数 , 放在数组对象中的第一个位置 2): 产生一个新的随机数
3): 检查新产生的随机数和所有目前已产生的随机数是否相同 , 若是相同则返回 (2), 否则返回 (4)
4): 将新的随机数加入数组对象中下一个数组元素内
5): 检查数组对象个数是否已达到 5 个 , 若是跳到 (6), 否则返回 (2) 6): 结束 AS 如下 :
data1=newArray(5); tot=1;
data1=[tot-1]=random(20-6+1)+6; do{
gen_data=random(20-6+1)+6; reapeat_data=0;
for(i=0,i<=tot-1;i++){ if(gen_data==data reapeat_data=1; break; } }
if(reapeat_data==0){ tot++
data[tot-1]=reapeat_data; }
}while(tot<5); trace(data1);
7 、如何禁止右键菜单、缩放、全屏 在第一桢中输入下面命令:
全屏-> FS Command (\"fullscreen\禁止缩放-> FS Command (\"allowscale\禁止菜单-> FS Command (\"showmenu\fscommand 的方法还是只能适用于 fp ,在网页中使用还是必须添加额外的参数
或者用最简单的一句 as ,在 fp 和网页中均适用: Stage.showMenu=false;
8 、如何实现双击效果? 把下面的代码放到按钮上:
on (press) {
time = getTimer()-down_time; if (time<300) { trace(\"ok\"); }
down_time = getTimer(); }
这样的话,如果都用比较麻烦,写了一个类来判断 MovieClip.prototype.doubleClick = function() { this.timer2 = getTimer()/1000;
if ((this.timer2-this.timer)<0.25) { return true; } else {
this.timer = getTimer()/1000; return false; } };
继承了 mc 的类,可以重复使用,当然也可以封装为 2 。 0 的类 9 、如果要在浏览器中实现全屏效果,只需在 html 文件中加入以下代码即可:
其中 *.swf 为要调用的 FLASH 文件,记住要将该文件放在 html 文件的同一路径下面。要退出全屏状态需按 ALT + F4 或退出。 如果在 swf 文件中,添加关闭按钮,使用下面的代码: on(release) {
getURL(\"javascript :opener=null;window.close();\"); }
10 、用 AS 怎么把影片倒放 function prev(target) {
target.gotoAndStop(target._totalframes); target.onEnterFrame = function() { [ if (this._currentframe>1) {
this.gotoAndStop(this._currentframe-1); } else {
delete this.onEnterFrame; } }; }
prev(_root.mc); // 指定要倒退播放的 MC instance name 就可以了
11 、声音相关
之前为 MYSOUND 链接一个属性 1 : mysound=new Sound();// (注释) mysound 是一个变量名, new Sound 是一个构造函数,表示 mysound 是一个 Sound 对象。 以后可以通过 mysound 来调用 Sound 方法 }*HK[
2: mysound.attachSound(\"name\"); 这里的 NAME 就是你之前在标识符里写的东西了,对应好了就 OK !
3: mysound.setVolume(50); 这个是控制声音播放时的声音大小,取值在 0 到 100 ,意义大家都知道吧,不会有人认为 0 是最大声吧 ~ 4:mysound.start(0.01); 这个语句是表示开始播放声音,()里的参数表示声音开始的位置,单位为秒,再来就是循环几次 ~ 比如 mysound.start(30 , 2);// 声音从 30 秒处开始循环 2 次。
12 、倒计时
首先新建文件以后,在主场景中分别用文字工具建立三个动态文本框,变量名字分别是: leftmin,leftsec,leftmilli, 也就是分别来显示计时的分钟、秒数和毫秒数。
然后新建一层,在第一桢写上如下代码即可:(已经做了详细解释,相信大部分朋友能够理解这些代码的意思)
onLoad = function(){// 当场景加载以后执行 totalmin = 40; totalsec = 60; totalmilli = 100;
// 初始化一些变量,在后面的计算中要用到这些变量 }
onEnterFrame = function(){// 逐桢执行动作\" currentsec = Math.round(getTimer()/1000); // 求出当前影片已经播放的秒数(取整) currentmilli = Math.round(getTimer()/10); // 求出当前影片已经播放的毫秒数(取整) leftsec = totalsec- currentsec;~
// 剩余的秒数等于总的秒数减去已经播放的秒数 leftmin = totalmin; ^
// 开始分钟数等于总的分钟数,开始是不变的 leftmilli = totalmilli - currentmilli;
// 剩余的毫秒数等于总的毫秒数减去已经播放的毫秒数 if(leftsec<10){leftsec = \"0\"+leftsec} if(leftmin<10){leftmin = \"0\"+leftmin}
if(leftmilli<10){leftmilli = \"0\"+leftmilli} // 以上三句是当分钟数、秒数、毫秒数小于 10 的时候,前面加上一个 “0” 。 if(leftmilli<=1){totalmilli+=100;} );
// 当计时剩下的毫秒小于 1 的时候,总秒数再加 100 ,以便下一次重新计时(这里注意得到的影片播放的毫秒数是一直增加的) if(leftsec == 0){// 当剩余的秒数等于 0 的时候
totalsec+=60;// 类似上面的解释,总秒数加 60
totalmin-=1;// 这时候相当于过了 60 秒,所以分钟数要减 1 if(leftmin ==0){// 当分钟数等于 0 的时候,计时结束 leftsec = \"00\"; , leftmin = \"00\"; leftmilli = \"00\";
// 将三个计时框都附值为 0
delete onEnterFrame;// 删除这个逐桢动作,以节省资源 }; } }
13 、键盘控制上下左右
怎样用键盘中的上下左右控制动画! onClipEvent (load) { speed = 5;// 当 MC 载入时,设置速度为 5 ,也就是说每按一下方向键,就移动 5 象素 }
onClipEvent (enterFrame) { if (Key.isDown(Key.LEFT)) {
this._x -= speed;// 当 ← 被按下时,自身的 X 位置不断减 speed , X 轴坐标不断减小,也就是不断向左移动 }
if (Key.isDown(Key.RIGHT)) {
this._x += speed;// 当 → 被按下时,自身 X 位置不断加 speed , X 轴坐标不断增加,也就是不断向右移动 }
if (Key.isDown(Key.UP)) {
this._y -= speed;// 当 ↑ 被按下时,自身的 Y 位置不断减 speed , Y 轴坐标不断减小,也就是不断向上移动 }
if (Key.isDown(Key.DOWN)) {
this._y += speed;// 当 ↓ 被按下时,自身的 Y 位置不断加 speed , Y 轴坐标不断增加,也就是不断向下移动 } }
onEnterFrame = function () { if (Key.isDown(Key.LEFT)) { mc._x -= 20; }
if (Key.isDown(Key.RIGHT)) { mc._x += 20; }
if (Key.isDown(Key.UP)) {
mc._y -= 20; }
if (Key.isDown(Key.DOWN)) { mc._y += 20; }
if (mc._x<0) { mc._x = 0; }
if (mc._x>550-mc._width) { mc._x = 550-mc._width; }
if (mc._y<0) { mc._y = 0; }
if (mc._y>400-mc._height) { mc._y = 400-mc._height; } }
14 、随机调用外部图片
用 9 个图片为例子,这个也可以使用 loadmovie 调用 num=Math.round(9*Math.random()+1) // 设置随即数字( 1-9 )
_root.createEmptyMovieClip(\"pic\
// 创建一个空的 PIC MC 用来装载外面载入的图片 _root.pic._x = 200; _root.pic._y = 200;
// 简单设置一下 MC 的位置
_root.pic.loadMovie(num+\".jpg\// 随即载入外面的图片
15 、暂停
可以把要暂停的地方 , 帧数放长啊 或者在当前帧写 stop();
function pause(){
clearInterval(pauseInterval); play();
pauseInerval=setInterval(pause,1000); //1000 是 1 秒
16 、怎样改变某一影片剪辑的播放速度 function go(obj) { with (obj) {
nextFrame();
if (_currentframe == _totalframes) { gotoAndStop(1); } } )
go(mc);
setInterval(go, 100, mc);
17 、怎样调用 .chm 文件
getURL(mk:@MSITStore:F:\\...\\xxx.chm::/index.htm)
18 、随机生成一个有 30 个数字的数组,这 30 个数字随机在 1~500 之间取,且不能重复,而且要乱序的。 tmp = new Array(); k = new Array();
for (i=0; i<=499; i++) { tmp = i+1; } for (i=0; i<=29; i++) { k = tmp.splice(random(tmp.length-1), 1); }
trace(k);
Flash常用动作脚本
作者:平凡 日期:2009-3-15 23:19:59
1、用flash 做那种弹出的小窗口 分两步:
给flash中的按钮加入如下action: on (release) {
getURL (\"javascript:MM_openBrWindow('newweb.htm','','width=600,height=100')\"); }
在HTML页面的...之间加入下面的javascript代码.
2、如何使得flash一打开就是全屏? fscommand(\"fullscreen\ 如何不能使用右键?
fscommand (\"showmenu\
3、用命令载入一个动画,我需要确定载入动画在画面中的位置,用什么语言来设置? 例如载入名为dd.swf的动画,我要确定这个动画的中心位置在(205,250),该怎么设置? 在要加载动画的那钟加入 loadMovie(\"dd.swf\ a._x=205; a._y=250;
你得先做一个空的MC起名叫\"a\",导入时,在右下角也起名为a
4、当鼠标经过时动画播放到某处 on (rollover) { gotoAndPlay(10); }
当鼠标按下时动画播放到某处 on (release) { gotoAndPlay(1); }
5、播完动画后自动跳到某网页 getURL(\"siteindex.htm\
6、设为首页 on (release) {
geturl\\(http://www.bcjx.net/blog/javascript:void(document.links.style.behavior='url\\(http://www.bcjx.net/blog/#default#homepage\\)');void
document.links.setHomePage ('http://www.bcjx.net/blog')\ }
注意要将网页中的flash的ID号命名为\"links\"
加入收藏夹 on (release) {
geturl\\(http://www.bcjx.net/blog/javascript:void
window.external.AddFavorite('http://www.bcjx.net/blog,'网页');\ }
7、关于随机数的技巧
用来产生6--20之间的5个不重复的随机数:
1):首先产生一个随机数,放在数组对象中的第一个位置; 2):产生一个新的随机数.
3):检查新产生的随机数和所有目前已产生的随机数是否相同,若是相同则返回(2),否则返回(4)
4):将新的随机数加入数组对象中下一个数组元素内.
5):检查数组对象个数是否已达到5个,若是跳到(6),否则返回(2) 6):结束. AS如下:
data1=newArray(5); tot=1;
data1=[tot-1]=random(20-6+1)+6; do{
gen_data=random(20-6+1)+6; reapeat_data=0; for(i=0,i<=tot-1;i++){ if(gen_data==data reapeat_data=1; break; } }
if(reapeat_data==0){ tot++
data[tot-1]=reapeat_data; }
}while(tot<5); trace(data1);
8 、如何使得flash一打开就是全屏的 这里说的方法只是用于flash Player (fp)
9 、如何禁止右键菜单
fscommand的方法还是只能适用于fp,在网页中使用还是必须添加额外的参数
或者用最简单的一句as,在fp和网页中均适用: Stage.showMenu=false;
10、载入动画的问题
loadMovie(\"dd.swf\这里没有引号~
11、播完动画后自动跳到某网页
geturl\\(http://www.bcjx.net/blog/siteindex.htm\这里有引号滴~
凡是Flash工具的“行为”面板、“发布设置”面板里可以可视化操作的,以及动作向导里可查询的,比如Flash Player里全屏、退出设置,Flash Player及网页里屏蔽右键菜单等,此类动作脚本不再收录。这里主要收集一些Flash工具里不易查到的脚本。欢迎大家一起来补充。
1、用flash 做弹出小窗口 给flash中的按钮加入如下action: on (release) {
getURL (\"javascript:MM_openBrWindow('newweb.htm','','width=600,height=100')\"); }
2、设为首页 on (release) {
geturl\\(http://www.bcjx.net/blog/javascript:void(document.links.style.behavior='url\\(http://www.bcjx.net/blog/#default#homepage\\)');void document.links.setHomePage ('http://www.bcjx.net/blog/')\\"_self\ }
注意要将网页中的flash的ID号命名为\"links\"
3、加入收藏夹 on (release) {
geturl\\(http://www.bcjx.net/blog/javascript:void window.external.AddFavorite('http://www.163.com','网页');\ }
4、新建军一个文档,选择时间轴的第1帧,从{窗口}菜单里选择{开发面板}下的{动作面板}命令。(或按“F9”键)
点击{时间轴控制}按钮,选择{全局函数}下的{时间轴控制},右边的下拉菜单中所列的九项,就是Flash中最常用的动作脚本。单击这些命令,就可以将它们添加到脚本编辑中。
下面介绍一下常用动作脚本的含义;
gotoAndPlay:从当前帧转到指定帧后继续播放。
gotoAndStop:从当前帧转到指定帧后停止播放。
play:这个命令是激活一个动画或者影片剪辑。当这个动作被执行时,Flash按照时间线的顺序开始播放放每一帧。
Stop:这个命令是终止正在播放的一个动画或影片剪辑的进程,经常与按钮一起用于控制动画的播放或者用来停止到动画序列的某一帧。
nextFrame:跳转到当前帧的下一帧。
prevFrame:跳转到当前帧的上一帧。
nextScene:跳转到当前场景的下一个场景。 prevScene:跳转到当前场景的上一个场景。
stopAllSound:这个命令是使动画中播放的任何声音静音,但并不使声音功能永久失效,它仅仅是取消当前正在播放的声音效果.
一、关于如何编写flash中的脚本
首先,要知道编写脚本,不需要用户对AS有完全的了解!
现在要考虑的问题是,如何在你的flash中添加编写脚本?简单的说,添加脚本可分为两种:一是把脚本编写在时间轴上面的关键桢上面(注意,必须是关键桢上才可以添加脚本)。二是把脚本编写在对象身上,比如把脚本直接写在MC(影片剪辑元件的实例)上、按钮上面。
此外,大家也需要简单理解一下flash是如何执行你编写的脚本的。当你在时间周的关键桢上添加了脚本,那么当flash运行的时候,它会首先执行这个关键桢上的脚本,然后才会显示这个关键桢上的对象。
还有一些简单的知识,AS中的对象都包括什么呢?它可以包含数据,也可以是舞台上的电影剪辑,也可以是舞台上的按钮等。既然包含了那么多对象,那么每种对象肯定有各自的属性!比如电影剪辑(movieclip)对象,它的属性就有:_height(高度),_rotation(旋转),等,这些属性不需要你去特意的记忆,当使用的时候可以随时翻阅脚本字典。在以后的教程中会陆续给大家介绍一些基础脚本的使用技巧。
废话少说,开始这次教程的例子吧
二、本次教学需要学到的基本AS命令如下:
stop()、play()、gotoandplay()、gotoandstop()、nextFrame()、prevFrame();、nextScene()、prevScene();、stopAllSounds(); 按钮的AS编写规则
三、实例制作
为了能更清楚的认识这些简单的命令,咱们就从一个最简单的例子开始!
首先看一下例子,简单的控制影片的播放、暂停、前进、后退、停止
最终效果演示
1、 打开flash,按ctrl+F8,新建立一个影片剪辑,并起名字为mo。需要先做一个简单的移动动画的影片剪辑。就做一个圆形的滚动效果吧。
2、 回到舞台工作区,按F11打开库,将mo影片剪辑拖放到舞台中。并给这个实例起个名字叫mc。
(现在就可以按ctrl+回车测试效果,你可以看到这个圆形一直在不停的移动。)
3、 添加脚本,现在要让这个mc在影片一开始不要自动播放,不然怎么来控制它呢。咱们把脚本写在时间轴的关键桢上。选中时间轴的第一桢,按F9打开动作面板,选择专家模式,输入:_root.mc.stop(); (_root
代表舞台,这个脚本的意思就是,舞台上名字叫mc的实例停止播放。)
4、 现在咱们来制作几个按钮,分别表示播放、暂停、前进、后退、停止。并摆放在舞台上。关于按钮的制作方法我就不多介绍。
5、 现在要添加控制影片的脚本。这次把脚本直接写在舞台上这些按钮的身上。选中播放按钮,打开动作面板,输入:
on (release) { _root.mc.play(); }
如果要在按钮身上写脚本的话,必须使用on(事件){//脚本程序}的格式来写!上面的脚本作用就是:当你在这个按钮上按一下鼠标(release事件)的时候,就会执行下面的_root.mc.play();程序,它的意思是让舞台上的mc开始播放!
6、同理:咱们选中舞台上的暂停按钮,在它上面输入: on (release) { _root.mc.stop() }
然后依次在快退上输入: on (release) {
_root.mc.prevFrame(); //prevFrame表示回到动画的上一桢 }
在快进的按钮上输入: on (release) { _root.mc.nextFrame(); }
在停止的按钮上输入: on (release) {
_root.mc.gotoAndStop(1); //跳到mc影片的第一桢,并停止播放! }
好了,到现在为止就结束啦,你可以按ctrl+回车测试一下你的成果咯
因篇幅问题不能全部显示,请点此查看更多更全内容