サムネイル画像付きのTileListがあります。各サムネイル画像の下に、画像の名前を表示します。名前変更機能を構築したい。したがって、TileListの下には、[選択した画像の名前を変更]ボタンがあります。
このボタンをクリックすると、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:Imageとmx:Textを備えた単なるmx:VBoxです。mx:Textがmx:TextInputに変わる別のmx:Stateがあります。
<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}" />