我在哪里将自定义代码放在Flash Builder的自定义组件中?

时间:2010-12-11 21:35:29

标签: flex mxml flash-builder

在主文件中,我会写:

<components:mybutton id="mybutton1" rollOver="point_rollOverHandler(event)" />

但是如果我希望组件天生具有这种行为,那么我在mybutton mxml文件中将它写在哪里让它自己引用?

我尝试了<s:rollOver="point_rollOverHandler(event)"/>,但它抱怨元素类型必须遵循atrribute规范,&gt;或/&gt;

2 个答案:

答案 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)。如果你想调用一个在其父级上定义的函数,那么你拥有的是最好的方法。否则,你会将组件绑得太紧,这会使你的代码变得脆弱,而且可重用性降低。