【发布时间】:2009-08-04 13:13:38
【问题描述】:
我在 Main.mxml 中有很多按钮。我正在尝试将按钮功能移动到一个类中,并让类内的事件侦听器响应 Click 并调用其他函数。我写过:
Main.mxml
<mx:Button x="23.5" y="10" label="checker" click="{goListen()}" />
<mx:Button id="btnT1" x="252.5" y="10" label="t1" />
<mx:Button id="btnT2" x="309" y="10" label="t2"/>
<mx:Button id="btnT3" x="366" y="10" label="t3"/>
Main.as
private function goListen():void
{
var t:ButtonListener = new ButtonListener(btnT1, btnT2, btnT3);
}
ButtonListener.mxml
package com.util
{ 导入 flash.events.EventDispatcher; 导入 flash.events.MouseEvent;
import mx.controls.Alert;
import mx.controls.Button;
public final class ButtonListener extends EventDispatcher
{
private var __btnArray:Array;
public function ButtonListener(...btnList)
{
__btnArray = new Array();
for each (var item:Button in btnList)
{
__btnArray.push(item);
}
buildListeners();
}
private function buildListeners():void
{
for each (var item:Button in __btnArray)
{
item.addEventListener(MouseEvent.CLICK, traceMe, false, 0, true);
}
}
private function traceMe(event:MouseEvent):void
{
trace(event.target.label + " was clicked");
}
}
}
所以当我调试时,我看到数组填满了按钮,但是 traceMe() 函数不起作用。不知道我怎样才能让它工作。还是我只需要在主类中有 30 个事件侦听器和相应的函数。
【问题讨论】:
标签: apache-flex class button event-handling flexbuilder