2011-11-10 77 views
1

我要搜索一個詞在textfiled這就是多線,發現它是不是一個大問題,但我能夠滾動到那個位置,如記事本,當您單擊查找下一個,將跳轉到該點AS3跳轉到多行文本字段中的某個單詞?

我不是要求爲我做,你能給我一個提示,我應該在哪裏看?

在此先感謝

編輯解決方案

var textInput:String="String To Search"; 
txt.text=textInput; // txt is a dynamic textfield 

var currentIndex:int = 0; 

function search(searchInput) { 

    var searchString:String = searchInput.toLowerCase(); 
    txt.stage.focus = txt; 
    var txtForSearch:String = textInput.toLowerCase(); 

    if(currentIndex == 0){ 
     var index:int = txtForSearch.indexOf(searchString,currentIndex); 
     currentIndex = index+searchString.length; 
    } else { 
     index = txtForSearch.indexOf(searchString,currentIndex); 
     currentIndex = index+searchString.length; 
    } 
    if(index < 0) { 
     txt.setSelection(0, 0); 
    } else { 
     txt.setSelection(index, currentIndex); 
    } 
} 

input.addEventListener(TextEvent.TEXT_INPUT, inputChanged); 
function inputChanged (e:TextEvent):void { 
    currentIndex = 0; 
} 

srBtn.addEventListener(MouseEvent.CLICK,doSearch) // srBtn my search button instance 
function doSearch(e:Event):void{ 
    search(input.text); // input is an input textfield (search query)  
}; 

回答

1
+0

'TextField.getCharBoundaries()'返回texfield的可見部分的某些指標,我的意思是,如果文本太長'getCharBoundaries( )如果給定的索引沒有顯示在文本字段的可見部分,則返回null!有沒有解決它的問題? – Synxmax

+0

也許'while(!tf.getCharBoundaries(1111)){tf.scrollV ++;}' – www0z0k

+0

我用setSelection完成了,無論如何謝謝,您的建議將我帶入論壇的精彩帖子 – Synxmax

1

我這個問題糾結了好幾個小時設置TextField.scrollV。我得到一個空的矩形,我通常認爲textfield的原始大小小於擴大後的大小,它被自動化以適應更多的文本。

原始textField大小以外的所有內容都返回null。我通過擴展舞臺上textField的大小解決了這個問題,使它足夠大以適應所有動態文本。

我通常不使用時間軸動畫,但它是客戶端提供的文件。

感謝這個循環,幫助我弄清楚了事情的原委:

for(var i:int= 0; i<tf.text.length; i++) 
{ 
var char:String = tf.text.substr(i,1); 
trace(i, ": " , (char=="\n"||char=="\r" ?"<CR>":char) ,": ", tf.getCharBoundaries(i)) 
}