在AS3中设置选择

时间:2010-07-15 23:02:38

标签: flash actionscript-3 actionscript adobe

如何让Set Selection在文本字段中工作。我在movieclip中有一个文本字段,上面有一个点击监听器的按钮。当它点击时我希望它选择里面的所有文本。这就是我到目前为止,我希望你能提供帮助。

send.addEventListener(MouseEvent.CLICK, function() {
    panel.tweet.selectable = true;
    stage.focus = panel.tweet;
    panel.tweet.setSelection(0, panel.tweet.text.length);
});

5 个答案:

答案 0 :(得分:2)

疯狂 - 应该可以正常工作。

我做了一个小演示,让你看到它正常工作:

http://strangemother.com/actionscript/demos/select_text_click_demo/

import flash.events.MouseEvent;

send.addEventListener(MouseEvent.CLICK, sendMouseClickEventHandler);

function sendMouseClickEventHandler(ev:MouseEvent):void
{
    stage.focus = tweet;
    tweet.selectable = true;
    tweet.setSelection(0, tweet.text.length ); 

}

答案 1 :(得分:1)

有一个更好的解决方案: 使用callLater;问题是mouseEvent。如果您稍后尝试执行选择,则可以正常工作。

答案 2 :(得分:0)

尝试这样做:(我现在没有Flash来测试......)

send.addEventListener(MouseEvent.CLICK, function() {
    panel.tweet.selectable = true;
    panel.tweet.stage.focus = panel.tweet;
    panel.tweet.setSelection(0, panel.tweet.text.length);
});

如果不是这个,那么它可能是破坏突出显示的mouseup事件。(?)

答案 3 :(得分:0)

我认为你的代码应该有用。

是否正在调用事件监听器?

也许在它上面有一些阻止你的发送按钮的电影剪辑(它可能是透明的,你可能没有意识到它在那里)。

快速而又脏的方法来检查是否存在问题:

send.stage.addChild(send);

这会将您的按钮放在每个对象的顶部。如果你的处理程序没有被调用,并且在调用之后,你可以非常肯定有阻止它的东西。如果是这种情况,您可以重新安排深度或尝试将阻止动画片段mouseEnabled属性设置为false。如果所述的动画片段还包含其他阻挡对象(当然不需要对鼠标事件作出反应),mouseChildren也可以提供帮助。

答案 4 :(得分:0)

问题在于焦点。

这样做(引入10毫秒的延迟)

var timer1:Timer = new Timer(10,1);
timer1.addEventListener(TimerEvent.TIMER, delayedSelection);
timer1.start();

function delayedSelection(e:TimerEvent):void
{
    stage.focus = tweet;
    tweet.selectable = true;
    tweet.setSelection(0, tweet.text.length ); 
}