簡體   English   中英

如何將事件偵聽器添加到數字步進器的文本框中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM