2011-04-20 124 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

相关问题