分享

flash动作脚本代码集锦

 子晓_18 2016-01-23
flash动作脚本代码集锦


1 、简单 loading 代码:
方法 1 、使用载入字节数判断
b=getbytestotal();// 获取总的字节数
a=getbytesloaded();// 已经下载的字节数
onenter=(){// 进入帧时 , 进行判断
if (a == b) {// 如果载入的字节数等于总的字节数
delete this.onenter// 删除进入帧
gotoandplay("");// 转入到你要播放的帧
] else {// 否则
a=getbytesloaded();// 已经下载的字节数
percent=int(a/b*100)+"%";// 计算已经下载的百分比
]
}
把上面方法放入第一帧就可以了

方法 2 、使用载入的帧数判断_
用 action 语法地 if is loaded 来实现 , 新建一层,这层专门放 action,
第一帧,
ifloaded (" 场景 ", ) {// 假如场景中地祯数已经载入
goto and play() // 跳至并播放某某祯 ( 自己设定 )
}
第二帧, o*np@q
goto and play(" 场景 1", 1)// 跳至并播放第一祯循环
再加上一个 load 地 mc 循环播放在这两帧的中间,就 ok 了。
2 、用 flash 做那种弹出的小窗口
分两步:
给 flash 中的按钮加入如下 action:
on (release) { idd{
geturl ("mm_openbrwindow('newweb.htm','','width=600,height=100')");
在 html 页面的 ... 之间加入下面的 java 代码 .
< language="java">



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 );
onenter = () {
if ( _level1 ) {
     with ( _level1 ) {
         _x = 50 ;
         _y = 100 ;
     }
     delete onenter ;
}
};
在 flash 2004 中,增加了 moviecliploader 类,使用它可以控制播放,下面是一个测试代码:
var mcl= new moviecliploader(); // 定义新的 moviecliploader 对象~
var listener = new object(); // 定义一个新的对象,用来监听 load 进程
listener.progress=(target,loadedbytes,totalbytes ){ //progress 加载过程中每当将加载的内容写入磁盘时调用
// 其中 loadedbytes 是已经下载的字节, totalbytes 是正在加在的文件的总字节数
x=loadedbytes
y=totalbytes
//trace(x+ " bytes 已经 load 了 ");
//trace(totalbytes + " bytes 需要 load");
d=x*100/y // 计算已经载入的百分比
)
listener.init = (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",1)// 使用自定义的对象,加载 swf 文件

4 、设为首页
on (release) {
geturl("void(links.style.behavior='url(#default#homepage)');voidlinks.sethomepage(' http://www./')","_self", "post");
}
注意要将网页中的 flash 的 id 号命名为 "links"

加入收藏夹
on (release) {
geturl("void external.addfavorite(' http://www.163.com',' 网页 ');","_self", "post");
}

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", true)
禁止缩放-> fs command ("allowscale", false)
禁止菜单-> fs command ("showmenu", false)
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 = () {
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 文件中加入以下代码即可:
<>
open("*.swf","","fullscreen=1,menubar=no,width=800,height=600")

其中 *.swf 为要调用的 flash 文件,记住要将该文件放在 html 文件的同一路径下面。要退出全屏状态需按 alt + f4 或退出。
如果在 swf 文件中,添加关闭按钮,使用下面的代码:
on(release) {
geturl("opener=null;close();");
}

10 、用 as 怎么把影片倒放
prev(target) {
     target.gotoandstop(target._totals);
     target.onenter = () { [
         if (this._current>1) {
             this.gotoandstop(this._current-1);
         } else {
             delete this.onenter;
         }
     };
}
prev(_root.mc);    // 指定要倒退播放的 mc instance >
11 、声音相关
之前为 mysound 链接一个属性
1 : mysound=new sound();// (注释) mysound 是一个变量名, new sound 是一个构造函数,表示 mysound 是一个 sound 对象。
以后可以通过 mysound 来调用 sound 方法 }*hk[
2: mysound.attachsound('name'); 这里的 >3: mysound.setvolume(50); 这个是控制声音播放时的声音大小,取值在 0 到 100 ,意义大家都知道吧,不会有人认为 0 是最大声吧 ~
4:mysound.start(0.01); 这个语句是表示开始播放声音,()里的参数表示声音开始的位置,单位为秒,再来就是循环几次 ~ 比如 mysound.start(30 , 2);// 声音从 30 秒处开始循环 2 次。

12 、倒计时
首先新建文件以后,在主场景中分别用文字工具建立三个动态文本框,变量名字分别是: leftmin,leftsec,leftmilli, 也就是分别来显示计时的分钟、秒数和毫秒数。
然后新建一层,在第一桢写上如下代码即可:(已经做了详细解释,相信大部分朋友能够理解这些代码的意思)
= (){// 当场景加载以后执行
totalmin = 40;
totalsec = 60;
totalmilli = 100;
// 初始化一些变量,在后面的计算中要用到这些变量
}
     onenter = (){// 逐桢执行动作"
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 onenter;// 删除这个逐桢动作,以节省资源
};
}
}

13 、键盘控制上下左右
怎样用键盘中的上下左右控制动画!
onclipevent (load) {
speed = 5;// 当 mc 载入时,设置速度为 5 ,也就是说每按一下方向键,就移动 5 象素
}
onclipevent (enter) {
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 轴坐标不断增加,也就是不断向下移动
}
}
onenter = () {
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", 1);
// 创建一个空的 pic mc 用来装载外面载入的图片
_root.pic._x = 200;
_root.pic._y = 200;
// 简单设置一下 mc 的位置
_root.pic.loadmovie(num+".jpg",1);
// 随即载入外面的图片

15 、暂停
可以把要暂停的地方 , 帧数放长啊
或者在当前帧写
stop();
pause(){
     clearinterval(pauseinterval);
     play();

pauseinerval=setinterval(pause,1000);    //1000 是 1 秒

16 、怎样改变某一影片剪辑的播放速度
go(obj) {
     with (obj) {
         next();
         if (_current == _totals) {
             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);
  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多