|
Flash V2组件基础件开发:ActionRegistry消息分派器。(5) return []; } } }
至于怎么生成组件,不是本文的重点,只要用一个空的MovieClip和它链接,并定义组件即可,是否导出编译组件并不重要。
调用实例
新建一个Flash文件,在里面加入一个ActionRegistry组件实例,命名为action_registry。
在第一桢加入下面的代码: action_registry.testHandler = function (t:String):Array { return [5,4]; }
以上代码是为action_registry加入test消息的解析函数,用它来把消息解析成参数,供侦听回调函数使用。下面代码注册了2个侦听器,它们有不同的处理函数:
var obj = new Object (); obj.onTest = function (t1:Number, t2:Number) { trace ("T1: "+t1); trace ("T2: "+t2); } action_registry.registryListener ("test", obj);
var obj1 = new Object (); obj.onTest = function (t1:Number, t2:Number) { trace (“Result: “+(t1+t2)); } action_registry.registryListener ("test", obj1);
初始化就完成了。我们现在加入一个按钮,给它的click(或是release)事件编写代码: on (click) { _root.action_registry.action = "test:0"; }
因为test消息的参数我们并没有用到,实际上从引号后面就可以空差。现在测试影片吧,你应该可以看到2个消息处理函数都执行了,这也达到了本文的要求。
如果你知道怎么在VC中给影片中的变量赋值,你自然会明白这个组件给你带来了什么——一个多路消息分派器。
如果你只是在Flash中使用此分派器,则无需先将消息格式化为字符串,可以直接调用:
_root.action_registry.dispatchAction (”test”, [5,4]);
这样做也提高了效率。
测试总结
现在我们只要在要侦听这个消息的地方去注册侦听器即可,对代码层次、调用顺序没有任何影响,很好地达到了要求。
本文也使用了一些Flash V2组件脚本的新语法。
|