Mar 09
和前面的利用Flex的HorizontalList控件创建一个简单的图片展示(相册)很相似,这个例子展示了如何利用Flex的TileList控件,Image控件和PopUpManager类来创建一个简单的图片展示(相册)。
下面是具体的例子以及源代码:
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/08/creating-a-simple-image-gallery-with-the-flex-tilelist-control/ -->
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Style>
- global {
- modal-transparency: 0.9;
- modal-transparency-color: white;
- modal-transparency-blur: 9;
- }
- </mx:Style>
- <mx:Script>
- <![CDATA[
- import mx.effects.Resize;
- import mx.events.ResizeEvent;
- import mx.events.ListEvent;
- import mx.controls.Image;
- import mx.events.ItemClickEvent;
- import mx.managers.PopUpManager;
- private var img:Image;
- private function tileList_itemClick(evt:ListEvent):void {
- img = new Image();
- // img.width = 300;
- // img.height = 300;
- img.maintainAspectRatio = true;
- img.addEventListener(Event.COMPLETE, image_complete);
- img.addEventListener(ResizeEvent.RESIZE, image_resize);
- img.addEventListener(MouseEvent.CLICK, image_click);
- img.source = evt.itemRenderer.data.@fullImage;
- img.setStyle("addedEffect", image_addedEffect);
- img.setStyle("removedEffect", image_removedEffect);
- PopUpManager.addPopUp(img, this, true);
- }
- private function image_click(evt:MouseEvent):void {
- PopUpManager.removePopUp(evt.currentTarget as Image);
- }
- private function image_resize(evt:ResizeEvent):void {
- PopUpManager.centerPopUp(evt.currentTarget as Image);
- }
- private function image_complete(evt:Event):void {
- PopUpManager.centerPopUp(evt.currentTarget as Image);
- }
- ]]>
- </mx:Script>
- <mx:WipeDown id="image_addedEffect" startDelay="100" />
- <mx:Parallel id="image_removedEffect">
- <mx:Zoom />
- <mx:Fade />
- </mx:Parallel>
- <mx:XML id="xml" source="gallery.xml" />
- <mx:XMLListCollection id="xmlListColl" source="{xml.image}" />
- <mx:TileList id="tileList"
- dataProvider="{xmlListColl}"
- itemRenderer="CustomItemRenderer"
- columnCount="4"
- columnWidth="125"
- rowCount="2"
- rowHeight="100"
- themeColor="haloSilver"
- verticalScrollPolicy="on"
- itemClick="tileList_itemClick(event);" />
- </mx:Application>
下面是自定义的ItemRenderer设置文件:
Download: CustomItemRenderer.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/08/creating-a-simple-image-gallery-with-the-flex-tilelist-control/ -->
- <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
- horizontalAlign="center"
- verticalAlign="middle">
- <mx:Image source="{data.@thumbnailImage}" />
- <mx:Label text="{data.@title}" />
- </mx:VBox>
接下来是图片定义的XML文件:
Download: gallery.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/08/creating-a-simple-image-gallery-with-the-flex-tilelist-control/ -->
- <gallery>
- <image title="Flex"
- thumbnailImage="assets/fx_appicon-tn.gif"
- fullImage="assets/fx_appicon.jpg" />
- <image title="Flash"
- thumbnailImage="assets/fl_appicon-tn.gif"
- fullImage="assets/fl_appicon.jpg" />
- <image title="Illustrator"
- thumbnailImage="assets/ai_appicon-tn.gif"
- fullImage="assets/ai_appicon.jpg" />
- <image title="Dreamweaver"
- thumbnailImage="assets/dw_appicon-tn.gif"
- fullImage="assets/dw_appicon.jpg" />
- <image title="ColdFusion"
- thumbnailImage="assets/cf_appicon-tn.gif"
- fullImage="assets/cf_appicon.jpg" />
- <image title="Flash Player"
- thumbnailImage="assets/fl_player_appicon-tn.gif"
- fullImage="assets/fl_player_appicon.jpg" />
- <image title="Fireworks"
- thumbnailImage="assets/fw_appicon-tn.gif"
- fullImage="assets/fw_appicon.jpg" />
- <image title="Lightroom"
- thumbnailImage="assets/lr_appicon-tn.gif"
- fullImage="assets/lr_appicon.jpg" />
- <image title="Photoshop"
- thumbnailImage="assets/ps_appicon-tn.gif"
- fullImage="assets/ps_appicon.jpg" />
- </gallery>
下面是执行实例(可以右键察看源代码):
原文作者:Peter deHaan 翻译:minidxer

March 9th, 2008 at 8:36 pm
还蛮漂亮的说
March 9th, 2008 at 9:00 pm
Flex的表现力相当不错,所以做出来的东西看起来还是比较漂亮的,:)