初学Flash的积累(一周一总结)提高以后开发速度---呵呵 我记不住这些东东

本文汇总了Flash创作中的多种实用技巧,包括事件处理、鼠标特效、定时器控件使用、随机数生成、声音控制、键盘控制等。同时介绍了如何优化程序运行效率及解决常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1:影片剪辑的事件写法
//剪辑里面的写法
onClipEvent (mouseDown) {
 this.gotoAndPlay(2);
}
//在当前帧里面的写法
tip_mc.onMouseDown=function()
{
trace("提示您");onClipEvent
}


2:鼠标特效
//隐藏鼠标 并变成蝴蝶
Mouse.hide();
fly_mc.startDrag(true);
stopDrag();//停止拖拽
Mouse.show();//显示鼠标


3:类似timer控件
setTimeout(函数名, 延迟时间, 参数) ----到达延时时间只执行一次

//可以省略第三个参数
setInterval(function,interval,arg);  setInterval(a,1000) //定义每1000毫秒(等于1秒)执行函数a()一次

第一个参数function:也就是要调用的函数或方法
可以是匿名的函数、命名函数、对象方法或电影剪辑

第二个参数interval:调用的时间间隔
//毫秒为单位,也就是1秒=1000毫秒  

第三个参数arg:传递给将被调用的函数或方法的参数

ID=setInterval()-----clearInterval(ID) 以取消该间隔。
而这个setTimeout函数就类似于我们常用的 setInterval 可指定延迟时间执行﹐但却不像 setInterval 那样一直循环。

 

4:下一帧
nextFrame();//当前对象的下一帧

 

5:Function的语法和例子  (F1查看本机帮助)
function revert(name_mc:String,bool:Boolean)
{
 //trace();
 eval(name_mc)._visible=bool;
}

6:产生随机数的通用方法
random(n)//产生0---n的范围内的随机数()
random(n)+m:   m<x<n+m

myArray=getRandomList(1,4,4);
trace("myArray="+myArray);
//参数  最大值,最小值,个数
function getRandomList(pMin, pMax, pNum) {
 var range = pMax - pMin + 1;
 var num;
 var temp_array = new Array();
 var data_array = new Array();
 for (var i = 0; i < pNum; i++) {
  do {
   num = Math.floor(Math.random() * range) + pMin;
  } while (temp_array[num]);
  data_array.push(num);
  temp_array[num] = true;
 }
 return data_array;
}

7:声音
//单击事件音乐  //关键步骤: 库里面找到声音对象,右键--连接 --为actionscript导出(设置标示符)
on(click)
{
mysound2 = new Sound();
mysound2.attachSound("ss1.mp3");
mysound2.start();
}
//加载外部音乐
my_sound = new Sound();
my_sound.loadSound("music.mp3", true);//加载库外面的
my_sound.onSoundComplete = function ()
{
    my_sound.start();
};
//将音乐放在影片剪辑中   通过播放影片剪辑播放声音


8:移动影片的场景和删除onEnterFrame事件
delete this.onEnterFrame;
this.onEnterFrame=null;

delete this.onEnterFrame;

_root.onEnterFrame = function ()//这个函数周期的被调用
{
 _root.background_mc._x = _root.background_mc._x - 20;//_root.beijingsudu
}
事件处理函数;以 SWF 文件的帧频持续调用(该帧播放一次,执行一次)。首先处理与 enterFrame 剪辑事件关联的动作,然

后才处理附加到受影响帧的所有帧动作。

对象里面写代码:(飞鸽)
onClipEvent(enterFrame)
{}

9:判断是否为指定类型
 if (_root[i] instanceof MovieClip)//判断是否为指定类型

10:影片剪辑的事件 (剪辑里面的写法)
onClipEvent(load)
{

    this.sudu = Math.random() * 5 + 10;
 trace("飞鸽加载了速度="+this.sudu);
    this.gotoAndPlay(random(26) + 1);
}

10:删除影片剪辑的方法
duplicateMovieClip 复制  (复制的, 副的, 两重的, 两倍的, 完全相同)
//用delete(this.onEnterFrame)
//和
//removeMovieClip(target) 参数  //移除影片
//
//可以用unloadmovie(mymovieclip) 这可以删除你从库里拖出来的MC
removeMovieClip(目标)
  “目标”参数为用 duplicateMovieClip() 创建的影片剪辑实例的目标路径。或者是用 MovieClip.attachMovie() 或

MovieClip.duplicateMovieClip() 创建的影片剪辑的实例名称。
为什么需要深度参数的原因
后面一个参数x为新复制的影片剪辑的深度级别,在这里依次为1、2、3、4、5。在同一时间线上,每一个新复制的影片剪辑占

用一个唯一的深度级别,并层层堆叠,如果后复制出的影片剪辑与前面复制出的影片剪辑深度级别相同就会覆盖并替换掉前一

个影片剪辑,所以必须为每一个新复制的影片剪辑分配一个唯一的深度级别。
复制影片剪辑的语句也可以用点语法“.”的格式来写:
      例如:duplicateMovieClip(shu_mc, "shu_mc" + x, x);
      可以写成:shu_mc.duplicateMovieClip("shu_mc" + x, x);

11:信鸽速度变慢的原因  (卡死)
onClipEvent (enterFrame)
请不要再(enterFrame) 里面加trace() 它会极大的影响速度。因为调试显示框不能大量输出数据(会把程序卡死的---trace输

出框不允许输出大量的数据 极大影响整个程序)


12:Actionscript格式化文本
TextField.setTextFormat( )

13:保留小数点后 几位
Math.round(190.12*10)/10

保留一位小数

保留两位就 Math.round(190.12*100)/100

function toFixed(number:Number, fractionDigits:Number){
    return Math.floor(number*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits);
}

trace(toFixed(12.1923,2)); // output: 12.19

function toFixed(number:Number, fractionDigits:Number){
    return Math.floor(number*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits);
}

trace(toFixed(12.1053,2)); // output: 12.1
/
function toFixed ($n:Number, $l:Number):Number
{
    var digit:Number = Math.pow(10, $l);
    return int($n * digit + .5) / digit;
}

14:或许值的长度
String(distance).length

15:透明度 可见度
_root["icon"+i]._alpha=40;//透明度 (可见度==40)


16:装载声音对象
//装载声音对象 right_music  error_music   全局变量其他同级别帧直接使用
right_music = new Sound();//选对答案
right_music.attachSound("right_music");
right_music.start();

lighten_music.start(0,2);//播放两扁

17:进度条的处理
Progressmc._xscale=time/(sunTime*5)*100;//时间  1分钟的算法

18:移除影片剪辑本身(自我删除)

如果是由添加而来:attachMovie ,loadMovie   和loadMovieNum ,duplicateMovieClip("目标","新名称",深度);
removeMovieClip(目标);
this.removeMovieClip();

如果本来就放在舞台上的影片剪辑:
unloadMovie(this);
this.unloadMovie();

 


19:键盘控制影片剪辑移动
this._x+=Key.isDown(Key.RIGHT)*inc(指步伐的大小)

onClipEvent(load){
inc=5;
}
onClipEvent(enterFrame){
 
this._x+=Key.isDown(Key.RIGHT)*inc-Key.isDown(Key.LEFT)*inc;
this._y+=key.isDown(key.DOWN)*inc-Key.isDown(Key.UP)*inc;
}
假设小球为ball_mc

onEnterFrame = function(){//设定帧循环,可以理解成不断循环

if(Key.isDown(Key.LEFT)) ball_mc._x -= 5;//按下左键,X坐标减5

if(Key.isDown(Key.RIGHT)) ball_mc._x += 5;//按下右键,X坐标加5

if(Key.isDown(Key.UP)) ball_mc._y -= 5;//按下上键,Y坐标减5

if(Key.isDown(Key.DOWN)) ball_mc._y += 5;//按下下键,Y坐标加5

}

 

20:true==1  false==0

21:监听键盘字母
_root.onKeyDown = function() {
//你的程序
};
下面两个函数的用法
Key.getAscii()
 返回按下的最后一个键的 ASCII 值。
Key.getCode()
 返回按下的最后一个键的虚拟键控代码。


22:同比例缩小影片剪辑本身
pic._xscale+=10;
pic._yscale+=10;

pic._xscale-=10;
pic._yscale-=10;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值