在as3中要想将参数传递给另一个函数,写法function a(obj:object)这种写法是不正确的。
解决:增加两个类文件
package {
/**
* @author bacon
* @version 1.0
* @change
*/
public class EventDelegate {
public function EventDelegate() {
}
public static function create(f:Function,...arg):Function {
var F:Boolean=false;
var _f:Function=function(e:*,..._arg){
_arg = arg;
if(!F){
F = true;
_arg.unshift(e);
}
f.apply(null, _arg);
};
return _f;
}
}
}
此类是增加参数的函数,他支持多个参数传递。
创建事件函数
package {
import flash.events.Event;
/**
* @author bacon
* @version 1.0
* @change
*/
public class ScreenEvent extends Event{
public var _data:Object;
public function ScreenEvent(e_type:String,_data:Object)
{
super(e_type);
this._data = _data;
}
}
}
使用方法:
要从navigation类传入show类
navigation中加入
EventDelegate.create(showphoto, photolist);
private function showphoto(event:MouseEvent,...arg):void
{
dispatchEvent(new ScreenEvent("showphoto",arg[0]));
}
photolist为xml对象(任何对象都可以)。并将showphoto加入事件流中。
在main调用navigation中方法进行传参
navigation = new Navigation();//左
navigation.addEventListener("showphoto", showphoto);
private function showphoto(e:ScreenEvent)
{
show.showphoto(e._data);
}
这样就可以将参数传给show类了。
代码简写多,只是做学习。