5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:山东
性别:先生
最后登录:2011-01-05
http://xbzg.5d.cn/
专注于Flash+FMS开发...通过Google搜索西部之光Software
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/02/21 | 体验AS3.0(十)
类别(Flash)
|
评论
(0)
|
阅读(133)
|
发表于 17:31
新的委托机制也许需要得到更多的关注。下面这个例子,与事件机制无关,它只是FLASH API的一部分,是语言本身的一种特性。我们建立一个简单的名叫Test2的class,包含一个方法,并把一个function作为参数传递。
package {
import flash.util.trace;
import flash.display.MovieClip;
public class Test
extends MovieClip
{
public function Test() {
var t2:Test2 = new Test2();
// use a member method as parameter
t2.run( onCompleteT2);
//use a anonymous function as parameter
var ref:Test = this;
t2.run( function(){
trace("Test::anonymous function " + this + ":" + ref);
});
}
public function onCompleteT2(){
trace("Test::onCompleteT2 " + this);
}
}
private class Test2
{
public function run( onComplete:Function){
trace("Test2::run");
onComplete();
}
}
}
从trace的第二行信息你可以看到,onCompleteT2的作用范围被限制在Test中。我们不再需要利用Delegate.create或者局部变量去规定这个作为参数的函数的作用范围了。从最后的trace结果可以看出,这个方法仍然运行。同时请注意,匿名的functions不再自动地将活动范围限定于_root,而是global了,这一点你也可以从最后的trace结果看到。
0
评论
Comments
日志分类
首页
[186]
Flash
[84]
FMS
[41]
AIR
[2]
ASP
[11]
作品区
[12]
其他
[36]