2010-07-15 47 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); 
}