分享
 
 
 

Flash Actionscript 2.0中的函数与事件 之 函数类(Function Class)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Flash Actionscript 2.0中的函数与事件 之 函数类(Function Class)

作者:LeeFJ

函数是什么,在面向对象里面通常称为方法(Method),但是在AS2.0里面它却被定义为一个类。在我刚刚开始接触Flash的时候,我就是这样理解的,但是,问题是,他不是这样的,所以有点郁闷了。诶于是就翻看了MM的资料,终于知道了关于函数的一些比较细节的东西,这里是我自己的一点体会与理解,希望和大家一起分享探讨。

首先我们来看一下函数类,Function类包括两个方法和一个属性。也不知道是不是这样翻译的,看起来Function.apply()和Function.call()似乎差不多,呵呵,再看看它们是怎么用的吧。

Function.apply()

使AS代码可以调用该函数

Function.call()

用Function对象来调用函数

Function.prototype

一个类原形的引用

Function.apply() 包括两个参数:funcObj:指定被调用函数中的this关键字引用,一般调用时通常都指定为null;argumentsObj:参数对象。Function.apply()调用funcObj函数,argumentsObj参数列表传入到被调用函数。在MM的文档中介绍了使用它的两种方法,但是我这里把它做了一些修改,首先定义一个被调函数:

function showText ()

{

//打印函数已经被调用

trace ("Function showText Is Applied...");

trace("this.name="+this.name);

//输出传入的参数

for (j in arguments)

{

trace (arguments[j]);

}

}

然后定义一个调用它的函数:

function caller (funcName, numParameters)

{

//获取函数引用

var theFunction = eval (funcName);

//获取参数个数

var n = Number (numParameters);

//生成假设的参数

var parameters:Array = new Array ();

for (var i = 0; i < n; i++)

{

parameters.push ("parameter" + i);

}

//创建一个对象OBJ,并添加name属性

var OBJ:Object=new Object();

OBJ.name="LeeFJ";

//用OBJ对象指定被调用函数中的this关键字

theFunction.apply (OBJ, parameters);

//调用函数,并传入参数

theFunction.apply (theFunction, parameters);

}

在这里要传入两个参数,一个是函数名(String类型),一个是参数个数。最后再调用caller函数:

//传入函数名 和参数个数

caller ("showText", 8);

输出结果:

Function showText Is Applied...

this.name=LeeFJ

parameter7

parameter6

parameter5

parameter4

parameter3

parameter2

parameter1

parameter0

这样,大家已经看到运行结果了,Function.apply()的使用方法就知道了,它可以在运行是根据用户的指定名称来调用已经定义好的函数。哈哈,就是这个样子。

然后在看看Function.call()到底是怎么玩的。Function.call()有若干个参数,第一个参数和Function.apply()的作用几乎没什么差别,其后的参数,将作为被调函数的参数列表。在MM的文档中有一个比较有意思的例子,拿来看看先:

//定义一个空函数

function MyObject (){}

//定义需要调用的函数

function MyMethod (obj)

{

trace ("this == obj? " + (this == obj));

trace("obj.name="+obj.name);

}

//创建一个对象

var obj = new MyObject ();

obj.name="LeeFJ";

//调用MyMethod()方法,并用obj指定MyMethod()方法中的this关键字,

//同时把它作为一个参数传入

MyMethod.call (obj, obj);

输出结果是:

this == obj? true

obj.name=LeeFJ

这样Function.call()的使用也基本知道拉,哈哈,其实用Function.apply()和Function.call()的第一个参数指定被调函数中的this关键字还是比较有用的,尤其是在使用XML,LoadVars等数据对象是,比较容易定义和处理数据(我还没有具体试过,大家可以尝试一下,当时我是用个另外一种方法解决的)。

关于Function.prototype属性,MM文档中的第一句话是:If you are using ActionScript 2.0, you don’t need to use this property。哈哈,所以在这里就不多说了。

但是,我到底要说明什么呢?再来看一个例子,呵呵:

//创建一个简单的Love函数。

function Love(girl,boy)

{

trace(boy+" LOVE "+girl+"!");

}

//然后创建一个新的函数对象或者函数引用

var f:Function;

//var f:Function=new Function();

f=Love;

f.call(f,"Leaf","LeeFJ");

//这样也是可以的哦~

var ff:Function=new Love("LeeFJ", "Leef");

ff.call();//var

输出结果:

LeeFJ LOVE Leaf!

Leef LOVE LeeFJ!

其实这些例子主要说明了函数类,它的方法和属性。必须清楚的是,函数是一个类,当你定义了一个函数之后,它似乎就是一个类,你可以去new它,也可以赋值,这看起来似乎有点乱,因为在通常的OOP中似乎没有像AS2.0中这样的用法(这些可不是我要在这里讨论的哦)。了解了函数类之后,对于我们进一步使用函数和事件处理有比较大的帮助。

我的测试文件:

点击浏览该文件

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有