AS3.0百条实用小知识

合集下载

as3.0范例100

as3.0范例100

Flash as3.0小实例教程100例实例一利用缓动类实现图片滚动点击放大效果//缓动类不在flash包中在fl包中所以要先导入import fl.transitions.Tween;//导入缓动类import fl.transitions.TweenEvent;//导入缓动事件import fl.transitions.easing.Regular;//导入缓动效果中有规律的var arrTupian:Array=[];//存放图片的数组var tweenscaleX:Tween;//用来控制图片宽高的缓动类var tweenscaleY:Tween;var datu:MovieClip;for (var i:int=0; i<8; i++) {var xiaotu:MovieClip =new Pic();//这里Pic是库中一个存放图片的类文件addChild(xiaotu);xiaotu.gotoAndStop(i+1);xiaotu.width=120;xiaotu.height=100;xiaotu.x=xiaotu.width/2+i*(xiaotu.width+10);xiaotu.y=420;arrTupian.push(xiaotu);xiaotu.addEventListener(Event.ENTER_FRAME ,dongf);//为每个小球添加移动帧频函数}function dongf(e) {var mc:MovieClip=e.target;mc.x-=6;if (mc.x<0-(xiaotu.width/2+10)) {//如果该图片出了场景则放在最后一张图片的位置mc.x=xiaotu.width/2+7*(xiaotu.width+10);}mc.buttonMode=true;mc.addEventListener(MouseEvent.MOUSE_OVER ,overf);//鼠标移过时候停止移动mc.addEventListener(MouseEvent.MOUSE_OUT,outf);//}function overf(e) {for (i=0; i<arrTupian.length; i++) {//注意是点击一张图片应该让所有的图片都移除移动的侦听arrTupian[i].removeEventListener(Event.ENTER_FRAME ,dongf);arrTupian[i].removeEventListener(MouseEvent.MOUSE_OVER ,overf);//注意也要把移过函数移除,等下次再调用再添加防止下面的效果还没有达到又开始此函数}//此时大图出现datu=new Pic();datu.gotoAndStop(arrTupian.indexOf (e.target)+1);addChild(datu);datu.x=stage.stageWidth/2;datu.y=200;tweenscaleX=new Tween(datu,"scaleX",Regular.easeOut,1,3,0.5,true);//参数从1倍扩大到3倍tweenscaleY=new Tween(datu,"scaleY",Regular.easeOut,1,3,0.5,true);//参数分别是对象,属性,缓动类型,开始参数,结束参数,缓动事件,true表示为单位为妙false表示为帧}function outf(e) {e.target.removeEventListener(MouseEvent.MOUSE_OVER ,overf);e.target.removeEventListener(MouseEvent.MOUSE_OVER ,outf);tweenscaleX=new Tween(datu,"scaleX",Regular.easeOut,3,1,0.5,true);//开始和结束的参数反过来则实现了缩小的效果tweenscaleY=new Tween(datu,"scaleY",Regular.easeOut,3,1,0.5,true);//tweenScaleX=new Tween.yoyo ()或者用这个方法,表示实现原来缓动的相反过程//tweenScaleY=new Tween.yoyo ()tweenscaleX.addEventListener(TweenEvent.MOTION_FINISH,fishf); }function fishf(e) {removeChild(datu);datu=null;//注意从显示列表中清除后,//元件本身还有东西,因此还要把大图元件清空for (i=0; i<arrTupian.length; i++) {arrTupian[i].addEventListener(Event.ENTER_FRAME ,dongf);}************************************************************************************************************************** 实例二利用timer类实现图片的切换场景中有一个pic图片多帧元件,currnum和totalnum两个动态文本speed输入文本,一个msg动态文本var timer:Timer;speed.text="2"//播放的初始速度为1000毫秒btn.addEventListener(MouseEvent.CLICK ,f);function f(e) {msg.text=""timer=new Timer(1000*Number(speed.text),pic.totalFrames);//计时器运行的时间单位都是毫秒,因此输入的速度都是秒应该再乘以1000. //输入的文本都是字符串因此要转化成数字timer.start();timer.addEventListener(TimerEvent.TIMER ,timerf);timer.addEventListener (TimerEvent.TIMER_COMPLETE,comf)//添加一个播放完后的函数}function timerf(e) {pic.gotoAndStop(timer.currentCount);//图片播放的张数及为计时器运行的当前次数//例如运行一次既是第一张,两次则为第二张currnum.text=String(timer.currentCount);totalnum.text=String(timer.repeatCount);//计时器总共运行的次数}function comf(e){msg.text="图片已经播放完毕谢谢欣赏"//信息文本框的文本显示内容}var format:TextFormat=new TextFormat("Impact",15,0xff00ff,true); var txt:TextField=new TextField(); addChildAt(txt,numChildren-1);txt.text="这里随便写些东西";txt.wordWrap=true;txt.setTextFormat(format);txt.width=txt.textWidth;txt.height=txt.textHeight;txt.x=10,txt.y=33;******************************************************************************************************************* 实例三点击小图看大图效果var targetArr:Array=[];var pointArr:Array=[];var picArr:Array=[];var index:int;var targetPoint=new Point(275,200);for (var i:int=0; i<20; i++) {var point:Point=new Point();var targetP:Point=new Point();//var C:Class=getDefinitionByName("cat"+i) as Class;/加载同路径文件夹中的名字为cat+i20张的图片var bmd:BitmapData=new C(0,0);//库中一个图片类文件var bmp:Bitmap=new Bitmap(bmd);var mc:MovieClip=new MovieClip();addChild(mc);mc.addChild(bmp);bmp.x=- bmp.width/2;bmp.y=- bmp.height/2;。

AS3.0编程

AS3.0编程

AS3.0编程对⽂本进⾏格式化⽂本格式化,也就是通过编程设计,设置⽂本对象的显⽰格式。

要实现⽂本格式化,在ActionScript3.0中有三种⽅式可供选择,分别为:使⽤HTML标签、使⽤TextField.setTextFormat()⽅法和使⽤CSS设置⽂本框的StyleSheet样式。

setTextFormat⽅法介绍TextField类的setTextFormat()⽅法⽤于使⽤TextFormat样式来格式化⽂本(具体的样式属性,请参见15.4.2节的内容)。

其⽤法格式如下所⽰。

setTextFormat(format,beginIndex,endIndex)参数说明如下:format:TextFormat对象,⼀个包含字符和段落格式设置信息的TextFormat对象。

beginIndex:数字,指定所需⽂本范围内第⼀个字符的从零开始的索引位置。

默认值为-1。

endIndex:数字,指定所需⽂本范围内最后⼀个字符的从零开始的索引位置。

默认值为-1。

TextFormat格式化属性介绍TextFormat格式化⽅法使⽤TextFormat类来实现。

使⽤TextFormat类可以为⽂本字段创建特定的⽂本格式。

此类设置的⽂本格式不仅可以作⽤于动态⽂本字段,也可以作⽤于静态⽂本字段。

TextFormat类的属性可以设置使⽤设备字体和嵌⼊字体。

但是,嵌⼊字体、粗体或斜体⽂本需要特定字体才能实现。

也就是说,如果要使⽤嵌⼊字体来显⽰粗体或斜体⽂本,则需要嵌⼊该字体的粗体和斜体变体。

要创建TextFormat⽂本格式,先需要使⽤new TextFormat()⽅法创建TextFormat对象,才能设置该构造函数的属性。

格式化输⼊⽂本格式化输⼊⽂本,就是设置输⼊⽂本的默认格式,在⽂本输⼊的时候,同时使⽤默认的格式。

要实现此⽅法,只需把TextFormat对象应⽤于⽂本对象的defaultTextFormat属性上。

AS3.0算法大全

AS3.0算法大全

[AS 功能代码教程15] 点间距离公式 [FL基础理论大师]■[Flash基础理论课16] 矩阵革命 [双重循环]■[AS 功能代码教程14] 鱼眼放大镜 [FL基础理论大师]■[AS 功能代码教程13] 贪吃蛇游戏制作 [FL基础理论大师]■[Flash基础理论课15] 绚酷鼠标 [目标移动]■[Flash基础理论课14] 制作Loading [Loading]■[杂谈四] JavaScript就这么回事 [二次编辑贴]■[AS 功能代码教程12] 填色游戏 [FL基础理论大师]■[Flash基础理论课13] FL记事本 [SharedObject]■[杂谈四] AS代码优化技巧 [综合贴]■[AS 功能代码教程11] 图片转场效果 [FL基础理论大师]■[Flash基础理论课12] 倒计时系统 [getTime]■[杂谈四] 程序员应该学C语言的十个理由■[AS 功能代码教程10] 数据结构排序算法 [FL基础理论大师]■[Flash基础理论课11] AS文本计算器 [文本类]■[AS 功能代码教程09] 点阵字效果 [FL基础理论大师]■[AS 功能代码教程08] BitmapData动态效果 [FL基础理论大师]■[Flash基础理论课10] 缓动效果 [Tween类]■[杂谈三] 微软Silverlight和Flash短兵相接■[AS 功能代码教程07] 百变图 [FL基础理论大师]■[AS 功能代码教程06] AS绘图总结及补充 [FL基础理论大师]■[Flash基础理论课09]满天星及变幻线[MC.onEnterFrame]■[Flash基础理论课08]旋转花朵[for...in]■[游戏赏玩]吸泡泡■[Flash基础理论课07]制作控制滑块[startDrag]■[杂谈二]人类的15个欲望与游戏设计■[AS 功能代码教程04] 进阶三角函数及应用 [FL基础理论大师]■[Flash基础理论课06]制作移动角色[Key类]■[Flash基础理论课05]制作摇奖盘[onEnterFrame]■[AS 功能代码教程05] 打字机效果及字符串概念 [FL基础理论大师] ■[AS 功能代码教程03] 基础三角函数及应用 [FL基础理论大师]■[AS 功能代码教程02]数字魔方及数组概念[FL基础理论大师]■[AS 功能代码教程01]通用延迟代码及FPS概念[FL基理大师原创] ■[Flash基础理论课04] 制作音乐播放器[Sound类]■[Flash基础理论课03]制作简易涂鸦板[画线指令]■[Flash基础理论课02]制作个性鼠标[updateAfterEvent]■[Flash基础理论课01]制作时钟[Date类]■[杂谈一] 什么是真正的Flash高手?希望朋友们多提保贵议建,您的题问和课题将成文我前进的最大动力。

AS3.0

AS3.0

┏━━━━━━━━━━━━━━━━━━┓┃第一部分:ActionScript 3 语言基础┃┗━━━━━━━━━━━━━━━━━━┛================================================第2章ActionScript 3 语言基本元素================================================2.1.2 数据类型概述简单数据类型Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符串)、uint(无符整型)复杂数据类型Array(数组)、Date(日期)、Error(异常)、Function(函数)、RegExp(正则表达)、XML、XMLList2.2.1 变量声明var 变量:类型var 变量:类型= 值;2.3 声明常量const 常量名:类型= 值;2.4 基础数据类型1.布尔值Boolean(初始化为false)2.数字:int uint Numberint 有符号32位整数-2(31次方) - +(2(31次方)-1)uint 无符号32位整数0 - 2(32次方)-1Number 64位浮点能用整数优先用int uint,有正负之分,用int。

只处理整数,用uint,有小数,用Number。

2.4.6 Object及关联数组var 对象:Object = new Object()var 对象:Object = {};2.4.8 Null、NaN、undefined及各自应用对象:变量的默认值数据类型默认值int 0uint 0Number NaNString nullBoolean falseArray null没声明undefined* undefined注意:必须声明初值,否则容易出错。

2.5 运算符,表达式及运用2.5.11 typeof、is、astypeof,用字符串返回对象类型,格式:typeof(对象)is ,判断操作符左边的对象是否属于右边的类型,返回值为Boolean,格式:对象is 数据类型as ,判断操作符左边的对象是否属于右边的类型,属于则返回数据,不属于则返回null,格式:对象as 数据类型typeof对象类型与返回结果对照表对象类型返回结果Array objectBoolean booleanFunction functionint numberNumber numberObject objectString stringuint numberXML xmlXMLList xml2.5.12 inin ,判断操作符左边的对象是否作为右边对象中的键(Key)或索引,返回值为Boolean比如:var a:Array = ["q","w","e"];trace(2 in a); //数组中有索引2,返回truetrace(3 in a); //数组中没有索引3,返回false2.5.13 delete关键字AS2.0中可以删除任意任意对象的delete关键字,在AS3.0中只能用于删除对象的动态实例属性,非动态属性不能删除。

数据类型AS3.0

数据类型AS3.0

了解toString();方法
之前提过,使用trace();函数的时候,会自动调用toString();方法,int类的toString();返回表示数字的字符串。
意思就是说,trace();函数输出的全都是字符串了?
做个小测试
var speed1:int=100;
int类型和int类
int是整数数据类型,32位有符号的整数数据类型,有效值范围从-2147483648到2147483647。
书上说这个类型提高循环运算和不带小数的整数运算,不太明白具体原因。
int类型表示整数
有两个常数在int类的变量之中表示最大值和最小值
MAX_VALUE
另外,在给16进制数赋值的时候在前面带上0x表示16进制数。
即: var speed:uint =0xFF9900;
在对于16进制数输出的时候会自动转换成10进制。
为什么会这样?因为之前说过,trace会自动调用toString();这个方法,而这个方法括号中的数字默认值是10。
另外,toFixed();的取整规则是四舍五入。
任何一个简单数据都可以看做是类的实例,所以可以直接对数据进行属性和方法的调用。
例如:
trace((1.12345).toFixed(2)); //括号是一定要有的~
每一个简单数据都和一个类相关联,定义数据类型的变量之后,就可以使用相关的属性和方法了。
输出的结果应该是什么?是1.1么?不是,而是1.12345。
这说明什么?toFixed();方法没有改变原始值。
改一下代码:
var speed:Number =1.12345;
trace(speed.toFixed(1));

Flash AS3.0 教程 函数之形式参数和实际参数

Flash AS3.0 教程 函数之形式参数和实际参数
在AS3中,所有的参数都是按引用传入的。只不过,简单数据类型是不变对象,传引用和传值的效果一样,所以,如果参数是简单数据类型,可看成是传值,如果参数是复杂数据类型,就是传引用。
对于简单数据类型的参数来说,函数调用开始时,发生了从实参向形参的值传递,函数调用结束时形参并未向实参进行值传递,这种数据传递称为值传递。
var obj1:Object = new Object();
obj1.x = 100;
obj1.y = 200;
按值还是按引用来传入参数
函数的参数可以是任何数据类型的变量,数据类型分为简单数据类型和复杂数据类型。
按值传入,那么参数对象会复制一份副本供函数内部操作,参数本身不会受影响,按引用传入,则不复制副本,函数内操作参数对象的引用,会改变参数对象的状态。
trace(参数1);
trace(参数1,参数2,参数3);
这种不定数量的参数,在AS3中可以实现,AS3允许给函数设定任意数量的参数:
function函数名(...参数):数据类型
{
}
"...参数"中的"..."代表任意数量,参数名可以是任意合法的变量名。
任意数量参数的使用:
//调用函数
test();
看下面的测试程序:见例:值传递
var a:int = 1;
trace("函数调用前,实参a="+a);
test(a);
trace("函数调用后,实参a="+a);
function test(x):void
{
x += 5;
trace("调用函数中,形参x="+x);

AS3.0百条实用小知识

AS3.0百条实用小知识

【鼠标坐标】mouseX mouseY【检查变量类型并返回布尔值】is【检查变量类型并返回类型】typeof【检查对象类型并返回该对象】as【是数字但不是有效数字问题】var quantity:Number = 15 - "rabbits";trace(typeof quantity); //显示: "number" , 但它是NaN (not a number) trace(quantity is Number); //truetrace(quantity != NaN); //false//使用isNaN()函数检测:isNaN(quantity); //true//检测变量是否内含有效数字:!isNaN(quantity); //false【Timer类注意事项】不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.【检测播放器版本】Flash.system.Capabilities.version对于8.5版以前的任何Flash Player版本,这种方法都不适用.【判断客户端系统】Flash.system.Capabilities.os【检测播放器类型】Flash.system.Capabilities.playerType可能的值有:"StandAlone",用于独立的Flash Player"External",用于外部的Flash Player 或处于测试模式下"PlugIn",用于Flash Player 浏览器插件"ActiveX",用于Microsoft Internet Explorer 使用的Flash Player ActiveX 控件【检测系统语言】nguage【判断用户是否启用了IME(输入法编辑器)】Flash.system.IME.enabled【检测屏幕的分辨率】Flash.system.Capabilities.screenResolutionXflash.system.Capabilities.screenResolutionY【把弹出窗口居中的算法】X = (舞台宽/2)-(窗口宽/2)Y = (舞台高/2)-(窗口高/2)【控制影片配合Player的方式,包括缩放问题】stage.scaleMode可供选择值:Flash.display.StageScaleMode【舞台的对齐方式】stage.align可供选择值:Flash.display.StageAlign【隐藏Flash Player的右键菜单】stage.showDefaultContextMenu = false;【检测系统是否具有音频功能】Flash.system.Capabilities.hasAudio【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】Flash.system.Capabilities.hasMP3【检测播放器能(true) 还是不能(false) 播放流式视频】Flash.system.Capabilities.hasStreamingVideo【检测播放器是在支持(true) 嵌入视频的系统上运行,还是在不支持(false) 嵌入视频的系统上运行】Flash.system.Capabilities.hasEmbeddedVideo【检测播放器能(true) 还是不能(false) 对视频流(如来自 Web 摄像头的视频流)进行编码】Flash.system.Capabilities.hasVideoEncoder【显示Flash Player 中的"安全设置"面板】flash.system.Security.showSettings();可供选择项:flash.system.SecurityPanel【数字的不同进制之间的转换】parseInt(str:String, radix:uint = 0):Number 返回十进制的数,参数radix表示要分析的数字的基数.如果省略radix,就默认为10,除非字符串的开头是"0x","0X"或"0":trace(parseInt("0x12")); //设定radix为16,输出:18trace(parseInt("017")); //设定radix为8,输出:15或者使用Number,uint和int对象的toString(radix)方法.【使用Math.round()对一个数取整,四舍五入】Math.round()trace(Math.round(204.499)); //输出:204trace(Math.round(401.5)); //输出:402【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】trace(Math.floor(204.99)); //输出:204【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加1】trace(Math.ceil(401.01)); //输出:402【产生一个随机数】使用Math.random()产生一个伪随机数n,其中0 <= n < 1【把数字取至最近的小数点位,即指定精确度】1. 决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是说你想取至最近的0.01;2. 让输入值除以步骤1所选的数字(此例为0.01);3. 使用Math.round()把步骤2所计得的值取成最近的整数;4. 把步骤3所得的结果乘以步骤2用于除法的那个值.例如,要把90.337取成两个小数点位数,可以使用:trace(Math.round(90.337/0.01)*0.01); //输出:90.34【把数字取成一个整数的最接近倍数值】例1,这样会把92.5取成5的最近倍数值:trace(Math.round(92.5/5)*5); //输出:95例2,这样会把92.5取成10的最近倍数值:trace(Math.round(92.5/10)*10); //输出:90【在指定数值范围内获得随机数】//可取范围:[min, max]private function randRange(min:Number, max:Number):Number {var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;return randomNum;}【弧度(radian)与度数(degree)之间的转换】从弧度转为度数: degrees = radians * 180 / Math.PI从度数转为弧度: radians = degrees * Math.PI / 180【计算两点之间的距离】勾股定理: c2 = a2 + b2假设有两个影片剪辑mc1和mc2,则它们两点间的距离c为:var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));【模拟圆周运动】已知圆心o(x0, y0),半径r和弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * r);y = y0 + (Math.sin(angle) * r);注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.【模拟椭圆运动】已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * a);y = y0 + (Math.sin(angle) * b);【华氏温度和摄氏温度之间的转换】华氏温度= 摄氏度数* 9 / 5 + 32摄氏温度= (华氏度数- 32) * 5 /9【公斤与磅之间的转换】公斤= 磅* 2.2磅= 公斤/ 2.2【对用户输入的文字进行样式化】使用defaultTextFormat属性,样式会施加至用户键入输入框的文字身上:var formatter:TextFormat = new TextFormat();formatter.color = 0x0000FF; //把文字变成蓝色field.defaultTextFormat = formatter;【对现有文字的一部分进行样式化】TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void【设定文字框的字体】例子:HTML: field.htmlText = "<font face='Arial'>Formatted text";TextFormat: formatter.font = "Arial";CSS: P{ font-family: Arial; }也可以使用以逗号隔开的字体清单: formatter.font = "Arial, Verdana, Helvetica";注意:字体和字体群组不同.字体群组有三种: _sans,_serif以及_typewriter._sans群组一般就是指Arial或Helvetica这种字体;_serif群组一般就是指Times或Times New Roman这种字体;_typewriter群组一般就是指Courier或Courier New这种字体.【嵌入字体】使用[Embed]后设标签.[Embed]后设标签应该出现在ActionScript文件中,处于类宣告之外.你可以内嵌True Type字体或系统字体.内嵌TrueType字体时的语法:[Embed(source="pathToTtfFile", fontName="FontName", mimeType="application/x-font-truetype")]pathToTtfFile: ttf文件的路径,TrueType字体的路径可以是相对的,也可以是绝对的; FontName: 字体名称;内嵌系统字体的语法:[Embed(systemFont="Times New Roman", fontName="Times New Roman", mimeType="application/x-font-truetype")]fontName: 以相同名称作为实际系统字体名称.注意: 在使用嵌入字体时,要把TextField的embedFonts属性设为true,这样TextField 只能用内嵌字体了.如果你试着替embedFonts设为true的TextField使用设备字体,什么都不会显示.如果embedFonts设为true,就无法指定以逗号相隔的字体清单.【建立可以旋转的文字】使用内嵌字体.当你旋转文字框时,设备字体就会消失.【显示Unicode文字】1. 从外部来源载入Unicode文字;2. 假如你的编辑器支持Unicode(如Flex Builder),则可以直接在ActionScript程序中使用该字符;3. 使用Unicode转义字符,ActionScript里所有Unicode转义字符都以u开头,后面再跟四位十六进制数字.注意: 如果你想取得Unicode字符,在Windows下使用: 开始>所有程序>附件>系统工具>字符映射表.【把Flash Player的焦点带给文字框】stage.focus = field;把焦点移除:stage.focus = null;注意: 当.swf文件首次载入至网页浏览器时,并没有焦点.因此,以程序的方式把焦点指定给Flash应用程序的一个元素前,必须先把焦点移至Flash Player.【以ActionScript选取文字】使用TextField.setSelection(beginIndex:int, endIndex:int):void为了可以正常选取文字,文字框必须具有焦点:stage.focus = field; //把焦点设给文字框field.text = "This is example text"; //设定文字field.setSelection(0, 4); //把"This"这个单词以高亮显示使用只读的selectionBeginIndex和selectionEndIndex属性访问所选取的字符范围的索引.。

as3.0游戏编程大学--55页

as3.0游戏编程大学--55页

0.绪论对Flash游戏制作者来说,这是一个非常好的时期。

到目前为止,还没有一款软件比这更好的来设计中小型游戏了。

Flash CS3 Professional对我们来说,是快速的,强大的和容易掌握的。

其中最关键的就是,Flash最新发布的版本有着强大的ActionScript 3.0编程语言。

ActionScript1.0和2.0让Flash制作者感到太伤心了,在程序的调试过程中,经常会出现一些Bugs,导致不能快速的制作出自己的作品。

相对而言,ActionScript 3.0编程语言会让你感到非同寻常。

在使用中,你会发现它能够快速地,非常容易的制作出自己想象中的作品。

最后,就让这本书带你走进Flash游戏的世界中吧,希望通过本书的学习,它可以带给你更多的快乐。

0.1 Flash游戏的发展1995年10月,对我这个游戏设计师来说,是非常激动的。

因为Macromedia刚刚发布了Shockwave播放器,这样就可以把自己制作出来的作品发布到网络上了。

从最初的Shockwave播放器发布之后,还有两次比较激动人心的就是,Shockwave 3D和ActionScript3.0的发布。

虽然Flash游戏环绕在我们周围,但如果和Shockwave游戏比起来,它就比较逊色了,因为Shockwave软件在3D方面是非常快速和强大的。

不管怎样,我们现在有了ActionScript3.0,Flash就会变得和Shockwave一样强大。

例如,Flash 9播放器已经占有了全球80%的桌面电脑。

截至到现在,几乎全部安装Flash 8播放器的用户已经将该软件更新到了Flash 9的版本,这对我们Flash游戏制作者来说,无非有莫大的帮助。

Flash 9播放器还可以应用于Linux系统,网络电视窗口,游戏控制台等多方面软件,现在,我们拥有了Flash 9player和ActionScript 3.0以后,就可以轻便地来做这些事情了。

2023大学_as3.0高级动画教程

2023大学_as3.0高级动画教程

2023as3.0高级动画教程AS3.0制作逼真的喷泉动画详细教程第一部分AS3.0语言基础第1章简介1.1AS3.0简介1.2FlashCS3IDE介绍1.3一个AS3.0实例第2章基本语法2.1变量与常量2.2数据与数据类型2.3运算符与表达式2.4数组2.5程序结构与函数第3章面向对象与类第4章事件侦听机制4.1事件与事件侦听4.2常用内置事件类第二部分AS3.0动画编程基础第5章Flash动画简介5.1动画与动画原理5.2“静态”动画与“动态”动画 5.3Flash动画中的坐标系统5.4角与角度、旋转第6章显示编程6.1显示列表6.2渲染第7章用户交互7.1鼠标事件及响应7.2键盘事件及响应7.3移动物体第三部分AS3.0动画编程提高第8章简单运动8.1速度与加速度8.2环境边界与摩擦力8.2.1环境边界8.2.2摩擦力第9章复杂运动第10章3D动画10.1从一维、二维到三维10.23D线框模型与填充10.3消隐与3D灯光10.3.1消隐技术10.3.23D灯光第11章其他动画技巧11.1随机运动11.2随机分布11.3基于定时器的动画11.4基于时间的动画参考文献FlashAS3.0动画制作介绍Flash AcfionScript(AS)3.0是一种功能强大的面向对象的编程语言。

当前,网络游戏、网络特效、互动广告的火爆带动了它的应用和开发。

本书以ActionScript 3.0程序设计为主线,从动画编程的角度介绍了Flash动画的制作与开发。

全书由三大部分组成:第一部分为As 3.0语言基础,介绍了ActionScript 3.0的基本语法、事件侦听机制、类的设计与应用;第二部分为AS 3.0动画编程基础,内容涵盖Flash动画基础知识、Flash动画中的显示编程及交互编程技术;第三部分为AS 3.0动画编程提高,内容涉及动画制作中从简单运动到复杂运动的诸多内容。

本书最大特色是对动画编程附以大量程序范例进行讲解,使读者的学习能够轻松而高效,并在此基础上做出优秀的动画作品。

连词as常用知识点总结

连词as常用知识点总结

连词as常用知识点总结一、as引出原因1. As引出原因时相当于because,表示原因或理由。

例如:- As it was getting late, we decided to go home.- She couldn't come to the party, as she was feeling unwell.2. as结构中可以使用介词短语作状语,表示原因或条件。

例如:- I'll do it as long as you promise to help me.3. as引导的非限制性定语从句中,as可以表示原因或理由。

例如:- We decided to cancel the picnic, as it was raining heavily.二、as引出方式1. as可以表示方式,相当于in the way that或in the manner that。

例如: - She did the job as she was told.2. 在as...as中,as表示方式,表示两者之间的相似性。

例如:- He can swim as well as his brother.三、as引出程度1. as可以表示程度,相当于to the same degree。

例如:- He doesn't work as hard as she does.2. as...as...结构中,as表示程度,表示两者之间的比较。

例如:- The new car is not as expensive as the old one.四、as引出时间1. as可以表示时间,相当于when。

例如:- As I arrived, the meeting had already started.2. as引导的时间状语从句中,表示两个动作同时发生。

例如:- As I was walking down the street, I met an old friend.五、其他用法1. as可以引导让步状语从句,表示尽管,虽然。

AS3.0百条实用小知识

AS3.0百条实用小知识
对于逻辑OR(||):
除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.
总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面.
【super关键字的使用】
super(); //父类的构造函数,只能在类实例构造函数内部使用
super.propertyName; //调用父类的属性,属性需要声明为public或protected
super.methodName(); //调用父类的方法,方法需要声明为public或protected
【建立常数,使用关键字const而不是var】
static public const EXAMPLE:String = "example";
【检测播放器版本】
Flash.system.Capabilities.version
对于8.5版以前的任何Flash Player版本,这种方法都不适用.
Flash.system.IME.enabled
【检测屏幕的分辨率】
Flash.system.Capabilities.screenResolutionX
flash.system.Capabilities.screenResolutionY
【把弹出窗口居中的算法】
X = (舞台宽/2)-(窗口宽/2)
trace(quantity is Number); //true
trace(quantity != NaN); //false
//使用isNaN()函数检测:

AS3.0案例教程

AS3.0案例教程
Flas件机制与应用
AS3.0
视觉编程
类绑定 多媒体控制 调用其他
案例1星星
1、熟悉as3.0代码基本编写思路 2、库元件的类绑定操作 3、ColorTransform与hitTestObject
3
案例2碰撞小球
库元件绑定深入认识 1、文档类与flash文件绑定后,类文件内可以直接 通过实例名调用指向影片元件 2、时间轴代码:直接运用实例名 3、hitTestPoint和hitTestObject用法
4)为5时,显示卡片图案 gotoAndStop(frame); 5)还有什么需要改进?
要实现中心翻转,影片元件中与注册点 对齐位置要改,坐标计算参考量要改
31
期末巩固练习
5.2卡片浏览时间 卡片翻上以后,留有2秒钟时间供玩家记忆,然 后翻黑
1)使用Timer类完成此功能
2)函数添加在哪里?
两张翻过来的卡片不匹配时,内层
状态4配对成功,消除 通过卡片的标号值判断
2、游戏逻辑
if (firstcard=null){ 显示所点击第一张卡片 } else if(firstcard == thiscard) { 第一张显黑 置为空}
期末巩固练习
重复点击
else if (secondcard=null) { 显示第二张卡片 if (firstcard.cardface == secondcard.cardface) { 从显示列表删除这两张卡片removeChild(对象) } else{ 两张卡片显黑 重新显示第一张 } } 27
24
期末巩固练习
2、游戏逻辑
状态1准备选第1张 firstcard=null secondcard=null
25

AS3的一些基础知识

AS3的一些基础知识
与AS2.0相比较,AS3.0有了很大的变化,它改变了我们以往的编程习惯。今天我们通过一个非常简单的入门练习-下雪效果,来认识一下AS3.0,主要了解一下AS3.0与AS2.0的区别。
首先,我们来介绍一下AS3的一些基础知识。
在AS3中怎样把库中的元件加载舞台
我们知道在AS2中我们可以通过attachMovie将库中的mc加载到舞台上。在使用这个命令前我们必须要做的事情是在库中右击元件,打开连接面板,然后在标识符框中为元件取上一个连接名,这样才能用attachMovie()来加载它。现在我们在AS3中来做一下,在库中右击元件,打开连接面板,这时你会叫道:“为什么我的标识符框是灰色的,不能用。”不是你的是灰色的,而是在AS3中都是灰色的,因为在AS3中是不能用 attachMovie()来加载元件的。AS3据说是完全面向对象编程的语言了,这就必须要了解类,对象等概念。类就是一类东西的一个名称,比如动物类就包括了所有动物,动物类下面的所有人就是人类了。又如所有电器可叫电器类,电器类下面又可有电视机类等。对象是某类的一个具体的实例。比如你就是人类中的一个具体的人,你就是人类的一个对象。看到这里你说:“我晕”,我说:“我更晕”。介绍类,对象这些概念看的人不容易看懂,说的人更不容易说清。在 AS3中要加载一个显式对象(我们在舞台上看得见的东西),必须要载入一个类,然后要声明这个类的一个实例,再用new关键字创建它,最后用 addChild()将它加载到舞台。我们将舞台着是一个展台,将库看着是一个仓库,现在仓库中有一台电视机要放到展台上,该怎样做呢?首先需要一个电视机类,然后需要声明一个实例:
on(press){
干点坏事;
}
这样,当我们在mymc元件上按下鼠标时,就会去干点坏事。第二种方法是在帧动作上输入代码:

as3.0 date用法

as3.0 date用法

as3.0 date用法在AS3.0中,Date类用于处理日期和时间。

它提供了一些方法和属性,用于获取、设置和操作日期和时间。

下面我会从多个角度来介绍Date类的用法。

首先,我们可以使用Date类来获取当前日期和时间。

可以通过创建一个新的Date对象来实现,例如:javascript.var currentDate:Date = new Date();这样就可以得到当前的日期和时间。

其次,Date类提供了一些方法来获取特定的日期和时间信息,比如年、月、日、小时、分钟、秒等。

例如,可以使用getFullYear()方法来获取年份,getMonth()方法来获取月份(注意月份是从0开始计数的,所以实际月份需要加1),getDate()方法来获取日期,getHours()方法来获取小时,getMinutes()方法来获取分钟,getSeconds()方法来获取秒数等等。

另外,Date类还可以用于比较日期和时间。

可以使用getTime()方法来获取自1970年1月1日午夜以来的毫秒数,然后可以比较这些毫秒数来判断日期先后顺序。

除此之外,Date类还提供了一些方法来设置日期和时间。

可以使用setFullYear()、setMonth()、setDate()、setHours()、setMinutes()、setSeconds()等方法来设置特定的日期和时间。

总的来说,AS3.0中的Date类提供了丰富的方法和属性,可以方便地处理日期和时间。

通过这些方法和属性,我们可以获取当前日期和时间,获取特定的日期和时间信息,比较日期和时间,以及设置日期和时间。

希望这些信息能够帮助你更好地理解和使用AS3.0中的Date类。

FlashAS3.0数据类型详细介绍

FlashAS3.0数据类型详细介绍

FlashAS3.0数据类型详细介绍数据类型的说明基元数据类型包括Boolean、int、Null、Number、String、uint 以及 void。

ActionScript 3.0核心类还有下列复杂数据类型:Object、Array、Date、Error、Function、RegExp、XML 以及 XMLList。

常用数据类型介绍:Boolean 数据类型Boolean 数据类型包含两个值:true 和 false。

或者是0 和1 ,对于Boolean 类型的变量,其它任何值都是无效的。

已经声明但尚未初始化的布尔变量的默认值是 false。

int 数据类型int 数据类型在内部存储为32 位整数,它包含一组介于-2,147,483,648 (-231) 和 2,147,483,647 (231 - 1) 之间的整数(包括-2,147,483,648 和 2,147,483,647)。

早期的 ActionScript 版本仅提供 Number 数据类型,该数据类型既可用于整数又可用于浮点数。

在ActionScript 3.0 中,现在可以访问 32 位带符号整数和无符号整数的低位机器类型。

如果您的变量将不会使用浮点数,那么,如果某变量永远是正整数,那么该变量使用 int 数据类型来代替 Number 数据类型应会更快更高效。

对于小于int 的最小值或大于int 的最大值的整数值,应使用Number 数据类型。

Number 数据类型可以处理-9,007,199,254,740,992 和9,007,199,254,740,992(53 位整数值)之间的值。

int 数据类型的变量的默认值是 0。

Null 数据类型Null 数据类型仅包含一个值:null。

这是 String 数据类型和用来定义复杂数据类型的所有类(包括 Object 类)的默认值。

其它基元数据类型(如 Boolean、Number、int 和 uint)均不包含 null 值。

符合as3000标准的电气测试证书

符合as3000标准的电气测试证书

标题:符合AS3000标准的电气测试证书:保障电气安全的重要保障一、引言在我们日常生活中,电气安全是至关重要的。

然而,电气设备和系统的安全性却往往容易被忽视。

为了确保电气设备和系统的安全性,AS3000标准提出了一系列的要求,在这个基础上,电气测试证书成为了一个重要的保障。

本文将从AS3000标准对电气设备和系统的要求出发,探讨符合AS3000标准的电气测试证书的重要性和作用。

二、AS3000标准对电气设备和系统的要求AS3000标准是澳大利亚电气行业的标准规范,其要求对电气设备和系统提出了一系列的要求,旨在确保电气设备和系统的安全性和稳定性。

根据这一标准,所有的电气工程都必须符合这些要求,才能保证电气安全。

而电气测试证书则成为了验证电气设备和系统是否符合AS3000标准的重要工具。

三、电气测试证书的重要性1. 确保电气设备和系统的安全性符合AS3000标准的电气测试证书是电气设备和系统安全性的重要保障。

通过对电气设备和系统进行全面的测试,可以及早发现潜在的安全隐患,并及时修复,从而保障电气设备和系统的安全性。

2. 合规性证明电气测试证书是电气设备和系统合规性的重要证明。

在澳大利亚,所有的电气工程都必须符合AS3000标准的要求。

而电气测试证书可以为电气工程提供合规性的证明,确保电气设备和系统的合法使用。

3. 提升市场竞争力拥有符合AS3000标准的电气测试证书,可以提升电气企业的市场竞争力。

在澳大利亚,消费者更加重视电气设备和系统的安全性和稳定性。

而拥有电气测试证书可以为电气企业赢得消费者的信任,提升品牌形象,进而提升市场竞争力。

四、个人观点和理解符合AS3000标准的电气测试证书是保障电气安全的重要保障,对于确保电气设备和系统的安全性至关重要。

电气工程企业应当重视电气测试证书的编制和审核工作,确保所有的电气设备和系统符合AS3000标准的要求,为用户提供安全、可靠的电气设备和系统。

五、总结和回顾本文从AS3000标准对电气设备和系统的要求出发,探讨了符合AS3000标准的电气测试证书的重要性和作用。

OSAS基础必学知识点

OSAS基础必学知识点

OSAS基础必学知识点
1. OSAS是Open Source Application Server的缩写,是一种开源的
应用服务器,用于托管和运行Web应用程序。

2. OSAS的特点包括易于安装和配置、支持多种开发语言和框架、具有高可扩展性和性能、支持负载均衡和容错等特性。

3. OSAS支持的开发语言包括Java、Python、PHP等,可以使用不同的框架和库进行开发。

4. OSAS提供了一套完整的开发工具和运行环境,包括Web服务器、数据库服务器、应用容器等,可以方便地进行应用程序的开发和部署。

5. OSAS具有良好的安全性和稳定性,可以通过配置安全策略、访问控制和日志记录等功能来保护应用程序的安全。

6. OSAS支持集群部署和分布式架构,可以实现横向扩展和负载均衡,提高应用程序的性能和可用性。

7. OSAS提供了一些常用的功能模块和插件,例如认证和授权、缓存和会话管理、数据访问和持久化等,可以简化开发人员的工作。

8. OSAS还支持不同的部署模式,包括内部部署、云端部署和混合部署,可以根据需求选择最适合的部署方式。

9. OSAS具有广泛的应用领域,包括电子商务、社交网络、企业协作、物联网等,可以满足不同行业和场景的需求。

10. 学习OSAS需要掌握相关的开发技术和工具,了解OSAS的架构和
原理,同时要不断学习和实践,提高自己的技能水平。

Flash AS3.0 数组应用

Flash AS3.0 数组应用

Flash AS3.0 数组应用数组有两种形式:第一种:数字形式的数组:var myNumber:Array = new Array(1,2,3,4,5);第二种:文本形式的数组:var myString:Array=["张志晨","王升军","宋广佳"]换言之,数组的值是字符串型的应该用[ ] 创建,是数字型的则用( )创建。

创建一维数组,同时也进行了初始化。

2 数组应用push 在数组尾部增加一个元素pop 删除数组的最后一个元素shift 删除数组的第一个元素indexof 返回该元素在数组中的位置sort 对数组进行自定义排序splice 将元素添加到指定的位置并删除所需元素concat 将指定的元素与原来的数组连接join 将数组中的元素转为字符串,在元素之间插入指定分隔符,返回字符串unshift 在元素的开始增加一个元素reverse 把现有的数组的顺序完全倒过来这里都是常用的一些方法,经常会用到,还老是忘记,这里就稍微总结下,在做游戏和一些程序的时候会经常用到,用数组来存取读取简单的数据还是非常容易方便的。

3 理解数组[学习笔记]数组:也叫索引数组。

索引数组是一个对象,其属性由表示该属性在数组中位置的数字来标识。

此数字称为索引。

所有索引数组都从零开始,这意味着数组中的第一个元素为[0],第二个元素为[1],依此类推。

4 创建数组[学习笔记]若要创建一个Array 对象,请使用构造函数new Array()。

如:var myNumber:Array = new Array(1,2,3,4,5);5 访问数组[学习笔记]访问数组中的元素,请使用数组访问运算符([])。

如:myNumber[0] = 1;6 多维数组[学习笔记]您可以创建一个多维数组。

方法是创建一个索引数组,然后给它的每个元素分配不同的索引数组。

这样的数组被视为是多维的,原因是它可用于表示表中的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AS3.0百条实用小知识【改变输出swf的尺度,背景颜色或帧频】在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">在"Additional compiler arguments"里输入你所需要的命令如想改变背景颜色,请输入: -default-background-color 0xffffff【鼠标坐标】mouseX mouseY【检查变量类型并返回布尔值】is【检查变量类型并返回类型】typeof【检查对象类型并返回该对象】as【是数字但不是有效数字问题】var quantity:Number = 15 - "rabbits";trace(typeof quantity); //显示: "number" , 但它是NaN (not a number)trace(quantity is Number); //truetrace(quantity != NaN); //false//使用isNaN()函数检测:isNaN(quantity); //true//检测变量是否内含有效数字:!isNaN(quantity); //false【取消默认的严格编译模式】在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">取消"Enabel compile-time type checking"选项【基元数据类型和复杂数据类型好比"值类型"和"引用类型"】基元数据类型类似按值传递:var intOne:int = 1;var intTwo:int = 1;trace(intOne == intTwo); //true【复杂数据类型类似按引用传递】var arrayOne:Array = new Array("a", "b");var arrayTwo:Array = arrayOne;trace(arrayOne == arrayTwo); //true//-----------------------------------var arrayOne:Array = new Array("a", "b");var arrayTwo:Array = new Array("a", "b");trace(arrayOne == arrayTwo); //false【优化逻辑AND(&&)和OR(||)的小知识】对于逻辑And(&&):除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了.对于逻辑OR(||):除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面.【Timer类注意事项】不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.【private,protected,internal,public访问权限】private:只能在类本身内部访问,按惯例,命名私有成员时以下划线"_"开头;protected:可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线"_"开头;internal:可以由类本身或者相同包内的任何类访问;public:可以在类内部访问,也可以由类实例访问,或者声明为static时,可以直接从类访问.【一个函数具有未知个数的参数,用arguments对象或"...(rest)"符号访问它的参数】注意:使用"...(rest)"参数会使arguments 对象不可用;private funciton average():void{trace(arguments.length); //输出参数的个数// arguments的类型是:object,但可以像访问数组一样去访问它trace(arguments[1]); //输出第二个参数}private function average(...argu):void{trace(argu[1]); //输出第二个参数,argu参数名是自定义的.}【错误处理try,catch,finally】private function tryError():void{try {trace("测试开始-try");throwError();}catch(errObject:Error) {trace("错误信息:" + errObject.message);trace("测试结束-catch");return;}finally{trace("虽然catch里已经有return方法,但位于return方法后面的finally里的代码依然会被执行.其实无论return方法是在try里,还是catch里,finally里的代码始终会被执行");}trace("前面已经有return了,此处是不会再执行的.除非没有抛出错误,以使catch里的代码没有被执行");}private function throwError():void{throw new Error("抛出错误");}【for...in与for each...in的区别】与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).【命名包路径的小技巧】使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果Example Corp()写了一些ActionScript3.0类,就会把所有类放在com.examplecorp包内(或者com.examplecorp的子包内).如此一来,如果英国有另一家Example Corp()也写了一些ActionScript3.0类,只要使用包uk.co.examplecorp,就可确保唯一性.当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,Example Corp可能有个应用程序名叫WidgetStore.如果WidgetStore应用程序使用一个名为ApplicationManager的类,则此类就应该放在com.examplecorp.widgetstore包内,或者位于该包的子包内.按惯例来说,包名称的开头是小写字母.【隐式的取出方法(getter)和设定方法(setter)】public function get count():uint {return _count;}public function set count(value:uint):uint {if(value < 100){_count = value;}else {throw Error();}}【确保类是绝不会有子类,使用final】final public class Example{}【super关键字的使用】super(); //父类的构造函数,只能在类实例构造函数内部使用super.propertyName; //调用父类的属性,属性需要声明为public或protected super.methodName(); //调用父类的方法,方法需要声明为public或protected【建立常数,使用关键字const而不是var】static public const EXAMPLE:String = "example";【检测播放器版本】Flash.system.Capabilities.version对于8.5版以前的任何Flash Player版本,这种方法都不适用.【判断客户端系统】Flash.system.Capabilities.os【检测播放器类型】Flash.system.Capabilities.playerType可能的值有:"StandAlone",用于独立的Flash Player"External",用于外部的Flash Player 或处于测试模式下"PlugIn",用于Flash Player 浏览器插件"ActiveX",用于Microsoft Internet Explorer 使用的Flash Player ActiveX 控件【检测系统语言】nguage【判断用户是否启用了IME(输入法编辑器)】Flash.system.IME.enabled【检测屏幕的分辨率】Flash.system.Capabilities.screenResolutionXflash.system.Capabilities.screenResolutionY【把弹出窗口居中的算法】X = (舞台宽/2)-(窗口宽/2)Y = (舞台高/2)-(窗口高/2)【控制影片配合Player的方式,包括缩放问题】stage.scaleMode可供选择值:Flash.display.StageScaleMode【舞台的对齐方式】stage.align可供选择值:Flash.display.StageAlign【隐藏Flash Player的右键菜单】stage.showDefaultContextMenu = false;【检测系统是否具有音频功能】Flash.system.Capabilities.hasAudio【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】Flash.system.Capabilities.hasMP3【检测播放器能(true) 还是不能(false) 播放流式视频】Flash.system.Capabilities.hasStreamingVideo【检测播放器是在支持(true) 嵌入视频的系统上运行,还是在不支持(false) 嵌入视频的系统上运行】Flash.system.Capabilities.hasEmbeddedV ideo【检测播放器能(true) 还是不能(false) 对视频流(如来自Web 摄像头的视频流)进行编码】Flash.system.Capabilities.hasVideoEncoder【显示Flash Player 中的"安全设置"面板】flash.system.Security.showSettings();可供选择项:flash.system.SecurityPanel【让其它域的.swf访问本域的.swf】在本域的.swf文件里加上:Flash.system.Security.allowDomain()或者使用安全策略文件"crossdomain.XML". 在Flash 8以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.system.Security.loadPolicyFile(),指定安全策略文件所在的位置.拒绝任何域的做法是在<cross-domain-policy>标签内什么也不填,安全策略文件也支持通用字符"*":<?xml version="1.0"?><!-- /crossdomain.xml --><cross-domain-policy><allow-Access-from domain="" /><allow-access-from domain="*" /><allow-access-from domain="210.38.196.48" /><allow-access-from domain="*" /></cross-domain-policy>【数字的不同进制之间的转换】parseInt(str:String, radix:uint = 0):Number 返回十进制的数,参数radix表示要分析的数字的基数.如果省略radix,就默认为10,除非字符串的开头是"0x","0X"或"0":trace(parseInt("0x12")); //设定radix为16,输出:18trace(parseInt("017")); //设定radix为8,输出:15或者使用Number,uint和int对象的toString(radix)方法.【使用Math.round()对一个数取整,四舍五入】Math.round()trace(Math.round(204.499)); //输出:204trace(Math.round(401.5)); //输出:402【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】trace(Math.floor(204.99)); //输出:204【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加1】trace(Math.ceil(401.01)); //输出:402【产生一个随机数】使用Math.random()产生一个伪随机数n,其中0 <= n < 1【把数字取至最近的小数点位,即指定精确度】1. 决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是说你想取至最近的0.01;2. 让输入值除以步骤1所选的数字(此例为0.01);3. 使用Math.round()把步骤2所计得的值取成最近的整数;4. 把步骤3所得的结果乘以步骤2用于除法的那个值.例如,要把90.337取成两个小数点位数,可以使用:trace(Math.round(90.337/0.01)*0.01); //输出:90.34【把数字取成一个整数的最接近倍数值】例1,这样会把92.5取成5的最近倍数值:trace(Math.round(92.5/5)*5); //输出:95例2,这样会把92.5取成10的最近倍数值:trace(Math.round(92.5/10)*10); //输出:90【在指定数值范围内获得随机数】//可取范围:[min, max]private function randRange(min:Number, max:Number):Number {var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;return randomNum;}应用例子:模拟投银币,即希望得到随机布尔值(true 或false): randRange(0, 1);模拟投骰子,即希望得到随机六个值: randRange(1, 6);为避免被缓存而需要产生一个独一无二的数字追加在URL尾端,通常最佳方法是取得当前毫秒数.【弧度(radian)与度数(degree)之间的转换】从弧度转为度数: degrees = radians * 180 / Math.PI从度数转为弧度: radians = degrees * Math.PI / 180【计算两点之间的距离】勾股定理: c2 = a2 + b2假设有两个影片剪辑mc1和mc2,则它们两点间的距离c为:var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));【模拟圆周运动】已知圆心o(x0, y0),半径r和弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * r);y = y0 + (Math.sin(angle) * r);注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.【模拟椭圆运动】已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * a);y = y0 + (Math.sin(angle) * b);【华氏温度和摄氏温度之间的转换】华氏温度= 摄氏度数* 9 / 5 + 32摄氏温度= (华氏度数- 32) * 5 /9【公斤与磅之间的转换】公斤= 磅* 2.2磅= 公斤/ 2.2【向数组尾端添加元素】var array:Array = new Array();array.push("a", "b");//向数组尾端添加单一元素也可以这样:array[array.length] = "c";//如果以索引设定的元素不存在,数组本身会自动扩展以包含足够的元素数目.介于中间的元素会被设为undefined:array[5] = "e";trace(array[4]); //输出: undefined【向数组开端添加元素】var array:Array = ["a", "b"];array.unshift("c", "d");trace(array); //输出: c,d,a,b【删除数组中第一个元素并返回该元素,使用shift()方法】var letters:Array = new Array("a", "b", "c");var firstLetter:String = letters.shift();trace(letters); //输出: b,ctrace(firstLetter); //输出: a【删除数组中最后一个元素并返回该元素的值,使用pop()方法】var letters:Array = new Array("a", "b", "c");trace(letters); //输出: a,b,cvar letter:String = letters.pop();trace(letters); //输出: a,btrace(letter); //输出: c【删除数组中的元素,给数组添加新元素并返回删除的元素,使用splice()方法】splice(startIndex:int, deleteCount:uint, ... values):ArraystartIndex: 一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引; deleteCount: 一个整数,它指定要删除的元素数量;... values: 用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由startIndex 参数指定的位置.【查找数组中第一个相匹配的元素】var array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];var match:String = "b";for(var i:int = 0; i < array.length; i++) {if(array[i] == match) {trace("Element with index " + i + " found to match " + match);//输出: Element with index 1 found to match bbreak;}}【查找数组中最后一个相匹配的元素】var array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];var match:String = "b";for(var i:int = array.length - 1; i >= 0; i--) {if(array[i] == match) {trace("Element with index " + i + " found to match " + match);//输出: Element with index 5 found to match bbreak;}}【把字符串转成数组】使用String.split()方法:var list:String = "I am Y oungBoy.";var words:Array = list.split(" "); //以空格作为分隔符将字符串切割trace(words); //输出: I,am,Y oungBoy.【把数组转成字符串】使用String.join()方法:var myArr:Array = new Array("one", "two", "three");var myStr:String = myArr.join(" and ");trace(myArr); //输出: one,two,threetrace(myStr); //输出: one and two and three【使用对象数组处理相关数据】var cars:Array = new Array();cars.push({make:"Mike", year:1997, color:"blue"});cars.push({make:"Kelly", year:1986, color:"red"});for(var i:int = 0; i < cars.length; i++) {trace(cars[i].make + " - " + cars[i].year + " - " + cars[i].color); }//输出:// Mike - 1997 - blue// Kelly - 1986 - red【在数组中获取最小或最大值】var scores:Array = [10, 4, 15, 8];scores.sort(Array.NUMERIC);trace("Minimum: " + scores[0]);trace("Maximum: " + scores[scores.length - 1]);【使用for ... in语句读取关联数组元素】var myObject:Object = new Object(); = "Y oungBoy";myObject.age = 20;for(var i:String in myObject) {trace(i + ": " + myObject[i]);}//输出: name: Y oungBoy// age: 20注意: for ... in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内.【A VM(ActionScript Virtual Machine,虚拟机)和渲染引擎(Rendering Engine)】A VM负责执行ActionScript程序,而渲染引擎则是把对象绘制在显示器上.【指出容器的显示清单中有多少显示对象】每个容器都有numChildren属性.【把项目新增至显示清单】addChild(child:DisplayObject)addChildAt(child:DisplayObject, index:int)index: 添加该子项的索引位置.如果指定当前占用的索引位置,则该位置以及所有更高位置上的子对象会在子级列表中上移一个位置.【从显示清单中移除项目】removeChild(child:DisplayObject)removeChildAt(index:int)index: 要删除的DisplayObject 的子索引,该子项之上的任何显示对象的索引位置都减去1. 如果想移除窗口所有子元件,可以结合removeChildAt(),numChildren属性以及for循环.因为每次一个子元件被移除时,索引位置都会变化,所以,有两种方法可以处理所有子元件的移除:1. 总是移除位置0的子元件;2. 倒过来移除子元件,也就是从尾端开始.【更改现有子项在显示对象容器中的位置】setChildIndex(child:DisplayObject, index:int):void可能用到的方法:返回DisplayObject 的child 实例的索引位置: getChildIndex(child:DisplayObject):int返回位于指定索引处的子显示对象实例: getChildAt(index:int):DisplayObject注意: 当子元件移到低于它现在所在位置的索引时,那么,从标的索引起,直到子元件索引前面的那个索引的所有子元件都会令其索引增加1,而该子元件就会指定至标的索引.当子元件移到较高索引时,从该子元件索引之上的那个索引起,直到标的索引的所有子元件都会令其索引往下减1,而该子元件就会指定至标的索引值.【关于TextField以垂直方式把文字摆在按钮表面中心点的小技巧】textField.y = (_height - textField.textHeight) / 2;textField.y -= 2; //减2个像素以调整偏移量【外部.swf影片载入和互动】1. 监听init事件;2. 透过content属性存取所载入的影片.当所载入的影片做好足够的初始化工作,使其方法和属性可以接受互动时,init事件就会被发起.只有在载入器发起init事件后,才能控制影片.所载入的影片还没初始化就试着与它互动,是会产生执行期间错误的._loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit); //当载入的.swf的属性和方法可用时_loader.load(new URLRequest("ExternalMovie.swf"));private function handleInit(event:Event):void {var movie:* = _loader.content;trace(movie.getColor());movie.setColor(0xFF0000);}【TextField有两种类型:动态(dynamic)和输入(input),默认值为动态.改变TextField类型方法】field.type = TextFieldType.INPUT; //selectable属性默认值为trueFlash.text.TextFieldType.INPUT和flash.text.TextFieldType.DYNAMIC【过滤文字输入】TextField.restrict = "此处为可输入的内容";field.restrict = "^此处为禁止输入的内容";restrict属性支持一些类似正则表达式的样式:field.restrict = "a-zA-z"; //只允许大小字母field.restrict = "a-zA-z "; //只允许字母和空格field.restrict = "0-9"; //只允许数字field.restrict = "^abcdefg"; //除了小写字母abcdefg不允许外,其它都允许field.restrict = "^a-z"; //所有小写字母都不允许,但是,其它内容都允许,包括大写字母field.restrict = "0-9^5"; //只允许数字,但5例外让restrict字符包含具有特殊意义的字母(例如-和^):field.restrict = "0-9\\-"; //允许数字和破折号field.restrict = "0-9\\^"; //允许数字和^field.restrict = "0-9\\\\"; //允许数字和反斜杠你也可以使用Unicode转义序列,指定允许的内容.例如:field.restrict = "^\u001A";注意:ActionScript有区分大小写的,如果restrict属性设为abc,允许字母的大写形式(A,B和C)输入时会变成小写对待形式(a,b和c),反之亦然.restrict属性只影响用户可以输入的内容,脚本可将任何文本放入文本字段中.【设定输入框的最大长度】TextField.maxChars:int【向TextField追加内容】TextField.appendText(text:String):void与通过对text 属性使用加法赋值来连接两个字符串(例如field.text += moreText)相比,此方法的效率更高.【显示HTML格式的文字】TextField.htmlText = "<b>Html text</b>";支持的HTML标签集有: <b>,<i>,<u>,<font>(有face,size以及color属性),<p>,<br>,<a>,<li>,<img>以及<textformat>(有leftmargin,rightmargin,blockindent,indent,leading以及tabstops属性,相应于TextFormat类的同名属性)【缩减空白】TextField.condenseWhite = true;删除具有HTML文本的文本字段中的额外空白(空格,换行符等),如同多数HTML浏览器所做的那样.注意: 在设置htmlText 属性之前设置condenseWhite 属性【自动大小调整和对齐】TextField.autoSize = TextFieldAutoSize.LEFT;可选之值:Flash.text.TextFieldAutoSize.CENTERflash.text.TextFieldAutoSize.LEFTflash.text.TextFieldAutoSize.NONEflash.text.TextFieldAutoSize.RIGHT【指示文本字段是否自动换行】TextField.wordWrap = true; //自动换行【用程序手段滚动文字】水平方向以像素为单位,而垂直方向以行做单位:scrollV: 指出文字框可见区域的最顶行,可读写;bottomScrollV: 指出文字框内最底端可见行,只读;maxScrollV: scrollV的最大值,只读;numLines: 定义多行文本字段中的文本行数,只读;TextField.scrollV = field.maxScrollV; //滚动到最后一页【响应滚动事件】field.addEventListener(Event.SCROLL, onTextScroll);【样式化文字的方法】1. 使用HTML标签进行样式化;2. 使用TextFormat对象;3. 使用CSS.例如: HTML是用<font>标签,TextFormat对象是设定font属性,而CSS是使用font-family属性的.受支持的层叠样式表(CSS)属性和值,及其相应的ActionScript属性名称(小括号内):color(color),display(display),font-family(fontFamily),font-size(fontSize),font-style(fontStyle),font -weight(fontWeight),kerning(kerning),leading(leading),letter-spacing(letterSpacing),margin-left(marginLe ft),margin-right(marginRight),text-align(textAlign),text-decoration(textDecoration),text-indent(textIndent)受支持的HTML实体: <(小于号: <), >(大于号: >), &(和: &), "(双引号: "), '(撇号,单引号: ')其中样式对象的两种写法:写法一:var sampleStyle:Object = new Object();sampleStyle.color = "#FFFFFF";sampleStyle.textAlign = "center";css.setStyle(".sample", sampleStyle);写法二:var sampleStyle:Object = {color: "#FFFFFF", textAlign: "center"};css.setStyle(".sample", sampleStyle);【对用户输入的文字进行样式化】使用defaultTextFormat属性,样式会施加至用户键入输入框的文字身上:var formatter:TextFormat = new TextFormat();formatter.color = 0x0000FF; //把文字变成蓝色field.defaultTextFormat = formatter;【对现有文字的一部分进行样式化】TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void【设定文字框的字体】例子:HTML: field.htmlText = "<font face='Arial'>Formatted text</font>";TextFormat: formatter.font = "Arial";CSS: P{ font-family: Arial; }也可以使用以逗号隔开的字体清单: formatter.font = "Arial, V erdana, Helvetica";注意:字体和字体群组不同.字体群组有三种: _sans,_serif以及_typewriter._sans群组一般就是指Arial或Helvetica这种字体;_serif群组一般就是指Times或Times New Roman这种字体;_typewriter群组一般就是指Courier或Courier New这种字体.【嵌入字体】使用[Embed]后设标签.[Embed]后设标签应该出现在ActionScript文件中,处于类宣告之外.你可以内嵌TrueType字体或系统字体.内嵌TrueType字体时的语法:[Embed(source="pathToTtfFile", fontName="FontName",mimeType="application/x-font-truetype")]pathToTtfFile: ttf文件的路径,TrueType字体的路径可以是相对的,也可以是绝对的; FontName: 字体名称;内嵌系统字体的语法:[Embed(systemFont="Times New Roman", fontName="Times New Roman",mimeType="application/x-font-truetype")]fontName: 以相同名称作为实际系统字体名称.注意: 在使用嵌入字体时,要把TextField的embedFonts属性设为true,这样TextField只能用内嵌字体了.如果你试着替embedFonts设为true的TextField使用设备字体,什么都不会显示.如果embedFonts设为true,就无法指定以逗号相隔的字体清单.【建立可以旋转的文字】使用内嵌字体.当你旋转文字框时,设备字体就会消失.【显示Unicode文字】1. 从外部来源载入Unicode文字;2. 假如你的编辑器支持Unicode(如Flex Builder),则可以直接在ActionScript程序中使用该字符;3. 使用Unicode转义字符,ActionScript里所有Unicode转义字符都以\u开头,后面再跟四位十六进制数字.注意: 如果你想取得Unicode字符,在Windows下使用: 开始>所有程序>附件>系统工具>字符映射表.【把Flash Player的焦点带给文字框】stage.focus = field;把焦点移除:stage.focus = null;注意: 当.swf文件首次载入至网页浏览器时,并没有焦点.因此,以程序的方式把焦点指定给Flash应用程序的一个元素前,必须先把焦点移至Flash Player.【以ActionScript选取文字】使用TextField.setSelection(beginIndex:int, endIndex:int):void为了可以正常选取文字,文字框必须具有焦点:stage.focus = field; //把焦点设给文字框field.text = "This is example text"; //设定文字field.setSelection(0, 4); //把"This"这个单词以高亮显示使用只读的selectionBeginIndex和selectionEndIndex属性访问所选取的字符范围的索引.【在文字内设定安插点(游标位置)并访问游标位置的索引值】可以使用TextField.setSelection()把起始和结尾的索引参数都设成相同值,在文字内设定游标位置(假设具有焦点):field.setSelection(0, 0); //在第一个字符前摆放安插点trace(field.caretIndex); //输出游标位置的索引值【当文本字段受到选取或取消选取时给予响应】获得焦点时: FocusEvent.FOCUS_IN失去焦点时: FocusEvent.FOCUS_OUT通过键盘(Tab键)把焦点移除时: FocusEvent.KEY_FOCUS_CHANGE通过鼠标把焦点移除时: FocusEvent.MOUSE_FOCUS_CHANGEFocusEvent 类有一个relatedObject属性.就FOCUS_IN事件而言,relatedObject属性是刚才拥有焦点的对象的引用地址;对于FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject 属性是刚接收到焦点的对象的引用地址.FOCUS_IN和FOCUS_OUT事件都是在焦点改变后发生的,所以两者都是不可取消的事件.对于KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消默认行为:field.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus);private function onKeyFocus(event:FocusEvent):void {if(field.text == "") {event.preventDefault(); //当field没有任何文字前,不允许使用Tab键把焦点移除}//event.relatedObject就是刚才拥有焦点的对象的引用地址,即下一个获得焦点的对象的引用地址}更详细的AS3参考资料请访问/ued/archives/category/flash%e9%a1%b9%e7%9b%ae%e5%bc%80%e5%8 f%91。

相关文档
最新文档