<components:mybutton id="mybutton1" rollOver="point_rollOverHandler(event)" />
但是如果我希望组件天生具有这种行为,那么我在mybutton mxml文件中将它写在哪里让它自己引用?
我尝试了<s:rollOver="point_rollOverHandler(event)"/>
,但它抱怨元素类型必须遵循atrribute规范,&gt;或/&gt;
答案 0 :(得分:2)
我的猜测是你的组件基于s:Button。只需在组件主MXML节点中声明rollOver方法,如下所示(第5行):
// myButton.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
rollOver="button1_rollOverHandler(event)"
>
<fx:Script>
<![CDATA[
protected function button1_rollOverHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:Button>
答案 1 :(得分:1)
在自定义组件的根标记中添加属性:
creationComplete="init()"
然后在自定义组件的脚本标记中创建该函数并设置鼠标事件监听器:
function init():void{
this.addEventListener(MouseEvent.MOUSE_OVER, point_rollOverHandler)
}
但这将调用自定义组件中定义的函数point_rollOverHandler(e:MouseEvent)。如果你想调用一个在其父级上定义的函数,那么你拥有的是最好的方法。否则,你会将组件绑得太紧,这会使你的代码变得脆弱,而且可重用性降低。