flash action 详解(9)

2016-01-29 13:04 6 1 收藏

flash action 详解(9),flash action 详解(9)

【 tulaoshi.com - Flash 】

同变量一样, 函数也可以具有全局性. 只要在声明时在前面给它加一个 _global 就可以了:
//计算矩形面积的全局函数
_global.areaOfBox = function (a, b) {
return a*b; //在这里返回结果
}
//测试函数
area = areaOfBox(3, 6);
trace("area="+area);
请注意: 在函数体中出现的关键字 this 代表的是调用函数的 MovieClip, 而不是函数体所在的 MovieClip. 这很容易被忽略而产生不期望的结果. 如果要指定 this 所代表的对象就要用到 Function.call() 和 Function.apply() 方法. 在后面的 arguments 对象介绍中会讲到.
函数参数的检查

为了保证函数运行的正确性, 我们有时必须检测用户是否给了足够的或是正确类型的参数. 下面是我对上面例子进行改动后的代码:
//计算矩形面积的全局函数
_global.areaOfBox = function (a, b) {
//输出两个参数之和, 用于理解下面的 typeof 语句
trace("a+b="+(a+b));
//检测参数是否足够且类型正确
if(a==undefined || b==undefined || typeof(a+b)!="number") {
trace("<参数错误");
return 0; //返回 0 作为错误时的结果
}
return a*b; //在这里返回结果
}
//测试函数
trace("----下面是正确的参数----");
area = areaOfBox(3, 6);
trace("area="+area);
trace("----下面是错误的参数----");
//这里为了节省篇幅, 我在命令中直接调用函数, 而不是先将返回值赋给一个变量
//其实这才是我们常用的函数调用方法
trace("area="+ areaOfBox(3, "6"));
trace("----下面是不足的参数----");
trace("area="+areaOfBox(3));
上例中我用 a==undefined 来判断 a 是否被赋值了(即是否已定义, 对于 undefined 数据类型的内容请参阅前一章的内容). 为了确保万无一失, 我还用了 b==undefined 来保证 b 也已被赋值, 中间使用一个逻辑 "或" 运算符 || 来连接这两个条件.
此外, 在这两个条件后面我又通过 typeof(a+b)!="number" 来确认参数类型是否正确(关于 typeof 关键字的信息请参考前一章). 这里我利用了 Actions cript 的一个特点: 数值与字符串相加的和会被优先做为字符串处理. 所以 a+b 中只要有一个为字符串, 那么整个 a+b 的返回值就是一个字符串, 在后面通过 typeof 来检测的结果自然就不是我们所要的 "number". 通过 trace("a+b="+(a+b)); 输出的结果可以看出这一点.

--------------------------------------------------------------------------------
在 Actions cript 中除了用户定义的函数外, 还有预定义的内建函数. 对于不同的对象, 也有不同的函数(或者说是方法)可以调用. 下面是拥有最高优先级的系统内建函数列表:
函数 说明
Boolean 将所给参数值转化为逻辑值(也叫做布尔值)
escape 将所给参数转化为字符串并用 URL 格式编码(所有非标准字符将被转化为以 % 开头的十六进制值)
eval 返回所给参数表示的对象, 参数可以是常量, 表达式, 属性等(这在 DuplicateMovieClip 时经常用到)
getProperty 返回指定对象的指定属性值
getTimer 返回从动画开始运行到当前所经过的毫秒数
getVersion 返回 Flash 版本和操作系统信息
isFinite 返回所给参数是否是有穷的(逻辑型返回值)
//创建新对象
object_1 = new Object();
object_1.value = 0; //为对象加入 value 属性并给予初值 0
object_2 = object_1; //由 object_1 复制出一个 object_2, 此时两者的 value 属性均为 0
//测试函数
areaOfBox.call(object_1, 3, 6);
trace("object_1.value="+object_1.value);
array_ab = [4, 5]; //创建参数数组
areaOfBox.apply(object_2, array_ab);
trace("object_2.value="+object_2.value);

为什么要通过 call 和 apply 来调用函数? 这样不比前面的直接调用麻烦吗?
的确, 这样调用函数比较麻烦, 但你注意到了我使用的第一个参数没有? 通过第一个参数可以指定在函数体中的 this 关键字代表什么对象, 这就是用 call 和 apply 的好处(关于对象和 this 的内容在后面章节中才会提到, 在这里暂且不提). 这个好处只有在实际的编程中你才能体会得到, 这里只是简要介绍一下, 让你有个基本的概念.
如果函数中没有使用 this 关键字, 第一个参数要用 null 代替.
在本例中第一个返回值被放入 object_1 的 value 属性中, 另一个会被放入 object_2 的 value 属性中. 通过 call 和 apply 的第一个参数我们让函数体中的 this 先后代表了 object_1 和 object_2 两个对象. 第一个参数后面的实际参数的给予完全依照要调用函数的参数个数和类型确定.
至于 call 与 apply 的不同之处上面已经表示得很明白了: apply 的实际参数是通过数组传递的.
arguments 对象
arguments 对象
arguments 对象, 顾名思义就是参数对象, 它包含的是函数调用的参数. 作为一个数组对象, 它只有三个属性:
属性 描述
arguments.callee 正被调用的函数
arguments.caller 正在进行此调用的函数
ar

来源:http://www.tulaoshi.com/n/20160129/1488785.html

延伸阅读
标签: flash教程
既然是基础篇,就可以白说一堆大家都知道的废话,来浪费大家的时间,那简直是一定的。但是想想打字挺累得,还是算了吧,那些大家都差不多都知道的话我就不写了,反正在网上也很好找到。故以下作者删去50000字…… 废话少说,咱们现在差不多都是用RGB数值描述一个东西的颜色,RGB,red、green、blue顾名思义,红绿蓝嘛。这三个颜色可以...
标签: flash教程
众所周知,中要实现3D效果是比较麻烦的,下面我们就用ActionScript来实现一个比较简单的3D效果。先看看最终效果,一个看起来像是3D效果的花在场景中旋转,在旋转的过程中会改变颜色,还会响应鼠标作相应的动作。静态效果如图1所示。 一、实现原理 要在只能显示二维图形的Flash中显示三维图形,...
标签: PS PS教程
    “Action”在Photoshop的汉化版中被翻译成“动作”。“Action”这个概念,是从Photoshop 4.0版起开始出现的,在Photoshop 4.0版之前称之为“Command”。Action是一个记录了一系列Photoshop操作指令的文件,就好像DOS下的批处理或是Word中的宏。Action文件的扩展名是ATN。 您只要事先准备好待处理的图像,再...
标签: flash教程
    在Flash MX中,我们可以导入QuickTime或Windows播放器支持的标准媒体文件。对于导入的视频对象,可以进行缩放、旋转、扭曲和遮罩处理,也可以通过编写脚本来创建视频对象的动画。Flash MX 6播放器加入了Sorenson Spark解码器,可以直接支持视频播放。此外,Flash MX还支持运行期动态载入JPEG和MP3...
标签: 手机软件
随着iOS设备功能的日益完善,它们已经不再是功能单一的设备,而是可以让用户的生活更加方便的智能设备,现在在设备当中进行一些文字的编辑工作已经不再是什么新鲜事了,对于文字编辑当中各种功能相信许多人也不会陌生了,今天小编就带来一款对文字编辑菜单有增强效果的插件——《Action Menu》。 详细图文介绍 ...

经验教程

790

收藏

84

精华推荐

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部