2011-04-20 119 views
0

我有一個應用程序,用於替換tilelist中所選符號的行中的選定文本,這些文本都是動態加載的字符! 我不知道該怎麼做才能夠確定選擇了多少個字符,如果您選擇了一個符號,然後下載某些字符(替換),並且如果其他字符(如果其他字符未選中或選擇爲tsyfry ...那麼這條消息...如何知道字符串中的哪些字符被分配?

我只是爲了突出字符被選中tilelist ... 其餘的!請幫助....

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    applicationComplete="contactsService.send()" 
    creationComplete="init()" 
    layout="absolute" viewSourceURL="srcview/index.html"> 
    <fx:Script> 
     <![CDATA[ 

      private function replaceSelect(event:MouseEvent):void 
      { 
       var obj:Object = lst.selectedItem; 
       var selStr:int = txt.selectionBeginIndex; 
       var selEnd:int = txt.selectionEndIndex; 

       if((lst.selectedItem != null)&&(selStr!=selEnd)) 
       { 
        txt.text = txt.text.substring(0,selStr)+lst.selectedItem.toString()+txt.text.substring(selEnd,txt.text.length) 
       } 
       lst.visible = false; 
      }   

      [Bindable] 
      private var cm:ContextMenu; 

      private function init():void { 
       var cmi:ContextMenuItem = new ContextMenuItem("Special Characters", true); 
       cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, cmSelect); 
       cm = new ContextMenu(); 
       cm.hideBuiltInItems(); 
       cm.customItems = [cmi]; 

      } 

      private function cmSelect(evt:ContextMenuEvent):void { 
       lst.visible = true; 

      } 

     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <mx:HTTPService id="contactsService" 
         resultFormat="e4x" 
         url="symbols.xml"/> 
    </fx:Declarations> 
    <mx:Panel width="508" height="487" x="20" y="20"> 
     <mx:TextInput 
      id="txt" 
      text="Test String Flex" 
      contextMenu="{cm}" 
      width="303"/> 
     <mx:TileList 
      id="lst" 
      visible="false" 
      dataProvider="{contactsService.lastResult.symb}" 
      columnCount="4" 
      columnWidth="25" 
      rowCount="3" 
      rowHeight="25" 
      verticalScrollPolicy="on" 
      click="{replaceSelect(event)}"/> 
    </mx:Panel> 
</mx:Application> 

回答

0

獲取用戶選定的字符串就可以得到像這樣

var userSelectedText:String = txt.text.substring(selStr, selEnd); 

和用戶選擇的符號可以得到儘可能

var userSelectedSymbol:String = lst.selectedItem.toString(); 

,您可以使用數組維護報表歷史爲

在類級別聲明數組

var repalceHistory :Array = ne Array(); 

,並保存用戶的行動作爲

var action:Object = new Object(); 
action.symbol = userSelectedSymbol; 
action.selectedText = userSelectedText; 

repalceHistory.push(action); 

並能得到歷史的

var action:Object = repalceHistory.pop(); 

希望幫助

+0

我不能完全理解你所寫的 – Sersh 2011-04-20 12:11:17

+0

哪一部分?你是否試圖保存「歷史」和「撤消」行動? – Imran 2011-04-20 12:17:09

+0

不,我需要在選擇一個字母時加載符號,如果您選擇加載其他字符的2個字母,並且如果沒有選擇不是一個字母..顯示消息..表示沒有選擇一個字母 我來自根據這個我覺得很難解釋(((( – Sersh 2011-04-20 12:29:51

相關問題