当前位置 :主页>知识堂>Flex专区教程>列表

如何在一个类里面调用在Flex MXML文件里面定义的函数

时间:2008-03-25 来源:http://youyee.org  作者:youyee   点击:
    核心提示:以上两个方法都能解决这个问题,第一个方法简单直观,但是存在很大的隐患,首先你编译的时候有可能编译器会提示出错说该方法未被定义...

最近偶然地被人多次问到如何在一个类里面调用在Flex MXML文件里面定义的函数这个问题,想到里面牵涉的一些知识,于是打算在这里总结出来。
先回答问题:
方法一:可以用过 Application.application.声明的函数名() 来调用函数
方法二:可以通过参数传递的方法来把函数传递给类再让类调用
private var _myfunction:Function;
public set myFunction(func:Function):void
{
    _myfunction = func;
}
//以后只需要在你的类里面调用 _myfunction.call() 即可

以上两个方法都能解决这个问题,第一个方法简单直观,但是存在很大的隐患,首先你编译的时候有可能编译器会提示出错说该方法未被定义,还有就是当你执行的时候假设是Application还没有被初始化你就已经初始化并执行了你的类的方法,这个时候肯定会出现运行错误。

所以采用第二个方法是最好的因为其能保证您的Application初始化之后再定义其调用方法。当然这个方法也有可能出现初始化错误等问题但是初始化错误能够通过检测和验证来解决,其不具备不可预知性。

在这里要另外说明一下ActionScript里面的两个特殊的类型:
Function 函数
Class 类
这两个类可以说是最简单的但是却是初学者可能最少直接通过参数传递来使用的。
Class类的具体的使用方法
function set myClass(c:Class):void
{
    //传递一个Class来动态生成一个任意的Class
    var class:* = new c();
}
其实Class作为参数传递是非常有用的。例如我们在Flex里面看到的PopUpManager.createPopUp 方法里面就能发现其应用的一个很好的例子。
而Function类型就更加广泛地被应用了,event_dispatcher.addEventListener(Event.Complete, MyFunction);
在这里设置监听器就是用过Function类型来为一个对象设置监听器的。

最后再来介绍一个非常特殊的参数类型:
空:俗话说色即是空,或者说武功的最高境界是无式,那么函数的参数如果是留空的,那么他就真的无敌了
//private function average(...args):Number{
private function average( ):Number {
    var sum:Number = 0;
    for (var i:int = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum/arguments.length;
}
这个函数摘自 《ActionScript 3.0 Cook Book》里面,其作用是用来计算平均值的,使用的时候可以任意传入参数:
//编译时会提示出错,忽略即可
average(1, 2);
average(3, 4, 5, 6);
看到了其的特别性了吗?

关于函数的调用与参数就写这么多了!

上一篇:详细讲解flex调用外部JS的用法     下一篇:对Adobe Flex的十大误解
版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意:本站所提供的源文件,电子书,第三软件,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。
 评论内容:(最新评论共有 0) 位网友发表了评论不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名? 马上注册
 
 
知识堂分类
 
本站所提供的所有素材版权归原作者所有,本站只供网友参考与交流,未经作者同意请勿用于商业用途
服务器带宽提供:零刻数据 本站CDN由海诺互动提供技术支持。 下载带宽支持:重庆万网
京ICP备08051668号