2010-07-15 100 views
1

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

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

我看到在我的代码和你的差异。你能告诉我什么是一个面板(什么类型的对象)和你的'推特'? – Glycerine 2010-07-16 00:44:05

+0

在函数中添加一条跟踪语句以确保它首先被调用 – Amarghosh 2010-07-16 04:19:10

回答

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); 

} 
+0

我发现问题,它是CS5,新的TLF文本doesn' t支持这个功能,非常感谢adobe,让我再次感到困惑,谢谢大家的帮助,非常感谢 – 2010-07-16 05:20:50

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); 
}); 

如果不是这样,那么它可能是已重挫的鼠标松开事件(?)

+0

不幸的是,我试过了,它不起作用,谢谢 – 2010-07-15 23:24:32

0

您的代码应该工作,我想。

事件监听器是否被调用?

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

一个快速和肮脏的方法来检查,如果这就是问题所在:

send.stage.addChild(send); 

这将对每个对象的顶端的按钮。如果你的处理程序没有被调用,并且在被调用之后,你可以确信有阻止它的东西。如果是这种情况,您可以重新排列深度或尝试将阻止影片剪辑mouseEnabled属性设置为false。如果所述影片剪辑包含其他阻止对象(当然不需要对鼠标事件作出反应),那么mouseChildren也可以有帮助。

+0

这绝对是被调用的,所以我会去处理它一些 – 2010-07-16 05:02:33

1

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

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); 
}