为了保障原创作者在本站发表文章的利益, 并维护本站原创的精神, 特声明: RIAShanghai对有以下任何情况之一的文章将不通知作者并直接进行快意删除:
- 非原创, 或者原创但一文多发;
- 各种形式的广告与吹擂;
- 不符合本站文章格式.
欢迎各位读者监督. 谢谢合作. 另: 作为Adobe正式的UG, 我们将把Adobe不定期分发的软件,书籍及各种纪念品赠送给发文活跃的作者, 共同进步.
在使用Flex Builder的时候,大家常常会为代码提示功能而感到方便。
当我们在一个类或者类的实例后输入 “.” 后, 会跟随有属于前面变量的一些属性和方法等的提示。
当使用Flex的event meta tag标签时,也会有相应的提示。例如,当我们自定义一个事件类,名为 CusEvent.as
package event
{
import flash.events.Event;
public class CusEvent extends Event
{
public static const MY_TEST_EVENT:String = "myTestEvent";
public function CusEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}在一个自定义的Student.as类中,加入其event meta tag,方便调用Student.as的类进行事件的监听
[Event(name="myTestEvent", type="event.CusEvent")]
在主程序中调用Student这个类,并激发myTestEvent为名称的事件。同时设置这个事件的监听。用Flex Builder写代码的时候,会有如下截图的提示,
还真是方便。
如果我们改变事件的名称,如下改动,
package event
{
import flash.events.Event;
public class CusEvent extends Event
{
public static const MY_TEST_EVENT:String = "helloWorldEvent";
public function CusEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}相应的,meta tag改为
[Event(name="helloWorldEvent", type="event.CusEvent")]
当再次利用代码提示功能的时候,会发生如下的情况。提示的代码和真实的情况不符合,
自定义事件类中,并没有相对应的static const var HELLO_WORLD_EVENT。如果这时,在CusEvent后使用代码提示时,会有正确的信息出现。如下,
看来,Adobe是想规范我们meta tag事件的名名。如果事件的名称为abcXyzEvent, 那么用于定义事件的static const var最好是把每个单词段都大写,并且在中间加入下横线。变为ABC_XYZ_EVENT。
用意是好,不过不小心的话,程序是编译不过的。
P.S. 此问题由GL同学发现,作者帮助记录。
回應
还有一个前提条件是, 这个event
还有一个前提条件是, 这个event name的constant必须是放在单独的custom event class中; 但绝大多数情况下应该使用flash.events.Event而非创建自己的event class. 这个event提示功能基本上只适用于Flex SDK里的events了.