【问题标题】:Where do I put custom code in a custom component in Flash Builder?在 Flash Builder 的自定义组件中,我应该将自定义代码放在哪里?
【发布时间】:2010-12-11 21:35:28
【问题描述】:

在主文件中,我会写:

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

但是,如果我希望组件天生具有这种行为,我应该在 mybutton mxml 文件中的何处写入以使其引用自身?

我尝试了&lt;s:rollOver="point_rollOverHandler(event)"/&gt;,但它抱怨元素类型必须后跟属性规范,> 或 />

【问题讨论】:

    标签: apache-flex mxml flash-builder


    【解决方案1】:

    我的猜测是您的组件基于 s:Button。只需像这样(第 5 行)在组件的主 MXML 节点中声明 rollOver 方法:

    // 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>
    

    【讨论】:

      【解决方案2】:

      在自定义组件的根标签中添加属性:

      creationComplete="init()"
      

      然后在自定义组件的脚本标签中创建该函数并设置鼠标事件监听器:

      function init():void{
        this.addEventListener(MouseEvent.MOUSE_OVER, point_rollOverHandler)
      }
      

      但这会调用自定义组件中定义的函数 point_rollOverHandler(e:MouseEvent)。如果您要调用在其父级上定义的函数,那么您所拥有的就是最好的方法。否则,您会将组件绑得太紧,这会使您的代码变得脆弱且可重用性降低。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多