我有一個TileList縮略圖。在每個縮略圖圖像下,我顯示圖像的名稱。我想建立重命名功能。所以在TileList下是一個「重命名選定的圖像」按鈕。訪問所選項目的itemRenderer
單擊此按鈕時,我想更改itemRenderer組件的狀態。圖像下方的標籤將更改爲TextInput,以便用戶可以輸入新名稱。這很像Windows重命名文件功能。
如何訪問所選圖像的itemRenderer?我怎樣才能讓它收聽重命名按鈕的點擊事件?
一些代碼:
<mx:TileList id="imageTileList" width="100%" height="100%" doubleClickEnabled="true"
itemsChangeEffect="{tileListEffect}" dataProvider="{images}"
keyDown="{tileListKeyDownHandler(event)}"
itemRenderer="com.n200.components.htmlElement.ImageTile"
columnWidth="128" rowHeight="128" itemDoubleClick="{insertImage()}"
horizontalScrollPolicy="off" verticalScrollPolicy="auto" />
<mx:LinkButton label="Rename selected image" labelPlacement="left"
enabled="{imageTileList.selectedIndex>0}"
styleName="rename24" click="{renameSelectedImage()}" />
<mx:Script>
<![CDATA[
private function renameSelectedImage():void
{
// Need to access itemRenderer of selected image here
}
]]>
</mx:Script>
的itemRenderer只是一個MX:VBox中的MX:圖像和MX:文本。 在還有另一個MX:狀態,其中MX:文本變成一個MX:的TextInput:
<mx:states>
<mx:State name="rename">
<mx:RemoveChild target="{imageName}" />
<mx:AddChild>
<mx:TextInput id="newName" text="{originalName}" keyDown="{textInputKeyDownHandler(event)}"
width="100%" focusOut="{commit()}" focusThickness="0" />
</mx:AddChild>
</mx:State>
</mx:states>
<enterComponents:P200Image source="{imgFunction?imgFunction.fileId:null}" width="82" height="82" verticalAlign="bottom" stretch="true" />
<mx:Text id="imageName" text="{imgFunction.name}" selectable="false" truncateToFit="true"
textAlign="center" width="82" toolTip="{imgFunction.name}" />
您好,感謝答案。這不是我正在尋找的。我試圖澄清。 我所追求的是重命名功能,如Windows文件瀏覽器的重命名功能。如果您單擊列出的項目,然後按F2,文件的名稱將更改爲TextInput。用戶可以在列表中輸入新名稱。 這是我想要實現的,這意味着我需要更改我的itemRenderer的狀態,以便文本更改爲輸入並且名稱變爲可編輯。 – Bocaxica 2010-02-03 13:18:17
好吧,我明白你的意思。不過,我認爲這不是最好的選擇。不建議直接訪問itemrenderer(如此處所述:http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html)。你應該讓行動從itemrenderer內部進行。 希望你找到一種方法來做到這一點! – Pbirkoff 2010-02-04 15:52:58