[英]How to add event listeners to the numeric stepper's text box?
我有一個數字步進器,我想在其文本框中添加一個事件監聽器:
use namespace mx_internal;
durationStepper.inputField.addEventListener(Event.CHANGE,durationStepperTextInputChanged);
private function durationStepperTextInputChanged(event:Event):void
{
use namespace mx_internal;
trace(durationStepper.inputField.text);
}
但是,事件功能不執行! 我在這里放了一個斷點,但沒有達到! 我在這里想念什么? 謝謝。
問題在於,開發人員已停止冒泡Change事件。 如果轉到NumericStepper的源文件,則可以找到它。 這是兩個函數,它們使您無法獲取事件。
override protected function createChildren():void
{
super.createChildren();
if (!inputField)
{
inputField = new TextInput();
//some code
//some code
inputField.addEventListener(Event.CHANGE, inputField_changeHandler);
addChild(inputField);
}
}
private function inputField_changeHandler(event:Event):void
{
// Stop the event from bubbling up.
event.stopImmediatePropagation();
var inputValue:Number = Number(inputField.text);
if ((inputValue != value &&
(Math.abs(inputValue - value) >= 0.000001 || isNaN(inputValue))) ||
inputField.text == "")
{
_value = checkValidValue(inputValue);
}
}
如您所見,第二個函數具有event.stopImmediatePropagation();。
在這種情況下,您有兩個選擇:要么找到另一種實現邏輯的方法,要么可以復制組件的源代碼並消除此代碼行。
可以重寫該函數,但這是私有的。
我試圖選擇第二種方式。 它完美地工作! 它不僅是* .as文件,而且還使用了其他文件。
您可以在此處下載組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.