Actionscript 3 AS3:setSelection向上箭头覆盖

Actionscript 3 AS3:setSelection向上箭头覆盖,actionscript-3,Actionscript 3,当按下向上箭头时,我想把重点放在文本字段的末尾。我正在使用: txt.setSelection(txt.text.length,txt.text.length); 这适用于除向上箭头以外的任何键。我相信当文本字段处于焦点时,向上箭头会自动将选择设置为文本字段的开头。如何覆盖此默认行为?如果操作是可取消的,您可以将此功能应用于该操作,否则您可以尝试使用以下功能: 这尚未经过测试,但应类似于: function buttonPress(ev:KeyboardEvent):void{ txt

当按下向上箭头时,我想把重点放在文本字段的末尾。我正在使用:

txt.setSelection(txt.text.length,txt.text.length);
这适用于除向上箭头以外的任何键。我相信当文本字段处于焦点时,向上箭头会自动将选择设置为文本字段的开头。如何覆盖此默认行为?

如果操作是可取消的,您可以将此功能应用于该操作,否则您可以尝试使用以下功能:

这尚未经过测试,但应类似于:

function buttonPress(ev:KeyboardEvent):void{
    txt.setSelection(txt.text.length,txt.text.length);
    ev.preventDefault();
}
如果操作是可取消的,您可以将此函数应用于该操作,我认为它是可取消的,否则您可以尝试使用以下函数来捕获它:

这尚未经过测试,但应类似于:

function buttonPress(ev:KeyboardEvent):void{
    txt.setSelection(txt.text.length,txt.text.length);
    ev.preventDefault();
}

我想更改主密钥的行为,我就是这样做的: 下面的代码本质上应该禁用HOME键,但可以修改以使其执行任何操作

// Create two variables two remember the TextField's selection
// so that it can be restored later. These varaibles correspong
// to TextField.selectionBeginIndex and TextField.selectionEndIndex
var overrideSelectionBeginIndex:int = -1;
var overrideSelectionEndIndex:int;

// Create a KEY_DOWN listener to intercept the event ->
// (Assuming that you have a TextField named 'input')
input.addEventListener(KeyboardEvent.KEY_DOWN, event_inputKeyDown, false, 0, true);

function event_inputKeyDown(event:KeyboardEvent):void{
    if(event.keyCode == Keyboard.HOME){
        if(overrideSelectionBeginIndex == -1){
            stage.addEventListener(Event.RENDER, event_inputOverrideKeyDown, false, 0, true);
            stage.invalidate();
        }

        // At this point the variables 'overrideSelectionBeginIndex'
        // and 'overrideSelectionEndIndex' could be set to whatever
        // you want but for this example they just store the
        // input's selection before the home key changes it.
        overrideSelectionBeginIndex = input.selectionBeginIndex;
        overrideSelectionEndIndex   = input.selectionEndIndex;
    }
}

// Create a function that will be called after the key is
// pressed to override it's behavior
function event_inputOverrideKeyDown(event:Event):void{
    // Restore the selection
    input.setSelection(overrideSelectionBeginIndex, overrideSelectionEndIndex);

    // Clean up
    stage.removeEventListener(Event.RENDER, event_inputOverrideKeyDown);
    overrideSelectionBeginIndex = -1;
    overrideSelectionEndIndex   = -1;
}

我想更改主密钥的行为,我就是这样做的: 下面的代码本质上应该禁用HOME键,但可以修改以使其执行任何操作

// Create two variables two remember the TextField's selection
// so that it can be restored later. These varaibles correspong
// to TextField.selectionBeginIndex and TextField.selectionEndIndex
var overrideSelectionBeginIndex:int = -1;
var overrideSelectionEndIndex:int;

// Create a KEY_DOWN listener to intercept the event ->
// (Assuming that you have a TextField named 'input')
input.addEventListener(KeyboardEvent.KEY_DOWN, event_inputKeyDown, false, 0, true);

function event_inputKeyDown(event:KeyboardEvent):void{
    if(event.keyCode == Keyboard.HOME){
        if(overrideSelectionBeginIndex == -1){
            stage.addEventListener(Event.RENDER, event_inputOverrideKeyDown, false, 0, true);
            stage.invalidate();
        }

        // At this point the variables 'overrideSelectionBeginIndex'
        // and 'overrideSelectionEndIndex' could be set to whatever
        // you want but for this example they just store the
        // input's selection before the home key changes it.
        overrideSelectionBeginIndex = input.selectionBeginIndex;
        overrideSelectionEndIndex   = input.selectionEndIndex;
    }
}

// Create a function that will be called after the key is
// pressed to override it's behavior
function event_inputOverrideKeyDown(event:Event):void{
    // Restore the selection
    input.setSelection(overrideSelectionBeginIndex, overrideSelectionEndIndex);

    // Clean up
    stage.removeEventListener(Event.RENDER, event_inputOverrideKeyDown);
    overrideSelectionBeginIndex = -1;
    overrideSelectionEndIndex   = -1;
}

我今天发布了一个类似的答案,但我已经删除了。在这种情况下,preventDefault方法没有帮助。停止播放也不起作用。我已经测试了他们两个。顺便说一句,曾经有一个类似的问题:OP也说他尝试过预防违约和停止即时侵权,但没有一个对他有效。我只是不明白他为什么要接受一个答案,因为这个答案对他——对我也是如此。我今天发布了一个类似的答案,但我已经删除了它。在这种情况下,preventDefault方法没有帮助。停止播放也不起作用。我已经测试了他们两个。顺便说一句,有一次也有一个类似的问题:手术医生还说他尝试过预防默认和停止即时版权保护,但没有一个对他有效。我只是不明白他为什么接受了一个答案,因为这个答案对他——对我也不起作用。太棒了,我可以确认这对键盘。向下和键盘。向上也很有效,这让我可以让我的自动完成表单工作。非常感谢!太棒了,我可以确认这对Keyboard.DOWN和Keyboard.UP也非常有效,这让我可以让我的自动完成表单正常工作。非常感谢!