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();
};
//将音乐放在影片剪辑中 通过播放影片剪辑播放声音
//停止场景里面所有音乐
stopAllSounds();(记得一定要加s啊 没有加的话 就不会变色)
SoundMixer.stopAll()
重玩的处理模型
on(press)
{
//停止背景音乐和所有监听以及循环动作
_root.bg_music.stop();
clearInterval(myTimerID);//计时秒表
clearInterval(keyboardMonitorID);
_root.gotoAndPlay("ready");
}
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分钟的算法
Progressmc._xscale=((time/5)/_root.sunTime)*100;//tim
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;
23:滚动分数的处理
路径的写法: _root["s"+(i-1)].gotoAndStop(tmpArray[i-1]);
for(var i=1;i<String(distance).length+1;i++)
{
if(i!=5)
{
tmpArray[i-1]=String(distance+1000).charAt(i-1);
eval("s"+(i-1)).gotoAndPlay(tmpArray[i-1]);
}
}
24:AS2实现水平翻转 垂直翻转的效果
this._xscale=-this._xscale;
mc._xscale = -mc._xscale; mc._yscale = -mc._yscale;
25:声音的处理
bg_music = new Sound();//减命
bg_music.attachSound("背景音乐.mp3");
bg_music.setVolume(30);
bg_music.start(0,100);
26:动态文字和蒙板
剪辑。setMast(蒙板剪辑)
27:剪辑类型分数的处理
_root.scoreShow=add0(_root.score,5);//格式化分数
_root.m_count=add0(_root.m_count,3);格式化个数
function add0(strVar,nMaxLength:Number)//要格式化的值,精确度
{
var count=nMaxLength-(String(strVar).length);
for(var i=0;i<count;i++)
{
strVar="0"+String(strVar);
}
return strVar;//
}
//自动去到帧
function autoGotoFrame(showCount:String,strPrefix:String)//格式化后要显示的数据
{
for(var i=1;i<showCount.length+1;i++)
{
var strTmpe=showCount.charAt(i-1);//各位置上的数
_root[strPrefix+(i-1)].gotoAndStop(int(strTmpe)+1);//s前缀可以做成参数
}
}
28:eval处理访问路劲问题
将字符串转换成可执行的东西
eval(strFirst+i+"."+strSecond+j).gotoAndStop(1)
将括号里字符串转成可识别的东西,成了影片剪辑.子影片剪辑
29:当前帧号
if(this._currentframe==2)
{
return;
}
30:弹框提示
方法:前提 --先把Alert;拖到舞台运行一次 再删除
import mx.controls.Alert;
Alert.show("你快乐吗?", "回答", Alert.OK | Alert.NO);
31:分数模型
FNscore = function (strPrefix,TocurFrame)//string类型的前缀(剪辑名称的前缀),要去到的帧数 (条件:倒序-s5,s4,s3,s2,s1>0)
{
for (var i = 1; i<= 6; ++i)
{
_root[strPrefix + i].gotoAndStop(Math.floor(TocurFrame / Math.pow(10, i - 1)) % 10 + 1);
} // end of for
};
32:时间的处理
FNscore = function (strPrefix,TocurFrame)//string类型的前缀(剪辑名称的前缀),要去到的帧数 (条件:倒序-s5,s4,s3,s2,s1>0)
{
for (var i = 1; i<= 6; ++i)
{
_root[strPrefix + i].gotoAndStop(Math.floor(TocurFrame / Math.pow(10, i - 1)) % 10 + 1);
} // end of for
};
33:键盘监听事件的写法
if(this._x<=541&&Key.isDown(Key.RIGHT))//如果未超出右界 并且按住了向右键
if(Key.isDown(Key.LEFT))
if(Key.isDown(Key.UP))
34:卸载舞台上的影片剪辑
//如果是添加过来的 就移除(后期的添加到舞台上的)
1:removeMovieClip(对象)
2:对象.removeMovieClip()
//如果是托拽进来的 就加载和卸载(加载的时候就在舞台上了)
3:unloadMovie(对象);
3:obj.unloadMovie();
35:舞台添加影片剪辑 (添加进来的就移除,加载进来的就卸载)
attachMovie("1","bc",this.getNextHighestDepth(),{_x:445, _y:-68});
public attachMovie(id: String, name: String, depth: Number, [initObject: Object]) : MovieClip
id:String ― 库中要附加到舞台上某影片剪辑的影片剪辑元件的链接名称。这是在"链接属性"对话框中的"标识符"字段中输入的名称。
name:String ― 附加到该影片剪辑的影片剪辑实例的唯一名称。
depth:Number ― 一个整数,指定 SWF 文件所放位置的深度级别。
initObject:Object [可选] ― (Flash Player 6 和更高版本支持)包含要用来填充新附加的影片剪辑的属性的对象。此参数使动态创建的影片剪辑能够接收剪辑参数。如果 initObject 不是对象,则忽略它。initObject 的所有属性都已复制到新实例中。使用 initObject 指定的属性对于构造函数是可用的。
//处理显示时间 秒表类型
var time_sec:Number=0;
//var showtime_sec:String="";
var time_min:Number=0;
//var showtime_min:String="";
//显示时间
function showTimes()
{
m_times++;
time_min=Math.floor(m_times/60);//分钟
if(String(time_min).length==1)//显示的时候格式化处理
{
_root.timer1.text="0"+String(time_min);
}
else
{
_root.timer1.text=time_min;
}
time_sec=m_times%60;//秒钟
if(String(time_sec).length==1)
{
_root.timer0.text="0"+String(time_sec);
}
else
{
_root.timer0.text=time_sec;
}
}
//时间处理 timer计时器 秒表 制作代码
命名:timer1 timer0降序即可
var m_times:Number=0;//总秒数
var m_timeID=0;//计时器返回值
var time_sec:Number=0;
var time_min:Number=0;
//显示时间
function showTimes()
{
m_times++;//秒递增
time_min=Math.floor(m_times/60);//分钟
//if(String(time_min).length==1)//显示的时候格式化处理
//{
// _root.timer1.text="0"+String(time_min);
//}
//else
//{
_root.timer1.text=time_min;
//}
time_sec=m_times%60;//秒钟
if(String(time_sec).length==1)
{
_root.timer0.text="0"+String(time_sec);
}
else
{
_root.timer0.text=time_sec;
}
}
_root.m_timeID=setInterval(_root.showTimes,1000);
//滚动条制作方法zdtext对象显示文本
//对象获取光标的方法
//对象获取光标的方法
function objGetFocus(objName:String)
{
//_root.input_txt.selectable = true;
Selection.setFocus(objName);
}