[FLEX 3.0] HorizontalList와 ControlBar로 이미지 slider 구현하기
FLEX/FLEX 2010. 7. 12. 21:38이미지 카테고리를 만들려고 구현하다가 스크롤바가 너무 보기 싶어서 다른방법을 써보기로 했다.
http://blog.flexexamples.com/ 이곳에서 찾아보다가 HorizontalList와 controlBar로 구현하면 되겠다 싶어서
내가 필요한것으로 좀 변경해보았다..
이미지 카테고리 이기때문에 파일 업로드시 이미 내가 필요한 사이즈 대로 여러가시 썸네일을 구현해 놓은 상태이고
다순히 화면에 보여주기만 하면된다.
기본 로직은 http://blog.flexexamples.com/ 에 나와있는 소스 그대로 이고 화면에 보여줄때 itemRenderer를 사용해버려서리
스크롤바가 나타나는데 그것을 방지 하기 위해서 대표 이미지를 하나 구해서 이미지의 사이즈를 구했다..
----------------------------------------------------------------------------------------------
sliderTest.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="hListInit();">
<mx:Script>
<![CDATA[
import mx.controls.Image;
import mx.events.SliderEvent;
private var imageUrl:String = "";
private var basePlusWidth = 6;
private var basePlusHeight = 26;
private function prev():void
{
var pos:int = hList.horizontalScrollPosition - 1;
var min:int = 0;
var value:int = Math.max(min, pos);
hList.horizontalScrollPosition = value;
}
private function next():void
{
var pos:int = hList.horizontalScrollPosition + 1;
var max:int = hList.maxHorizontalScrollPosition;
var value:int = Math.min(pos, max);
hList.horizontalScrollPosition = value;
}
private function slider_change(evt:SliderEvent):void
{
hList.horizontalScrollPosition = evt.value;
}
private function hListInit():void
{
var listData:Array = arr;
var baseImage:Image = new Image();
var baseImageWidth:int = 0;
var baseImageHeight:int = 0;
if(listData && listData.length > 0)
{
imageUrl = listData[0]["src"];
baseImage.addEventListener(Event.COMPLETE, imageLoadHandler);
baseImage.load(imageUrl);
}
}
private function imageLoadHandler(event:Event):void
{
var baseImage:Image = event.currentTarget as Image;
baseImage.width = baseImage.contentWidth;
baseImage.height = baseImage.contentHeight;
hList.columnWidth = baseImage.width + basePlusWidth;
hList.rowHeight = baseImage.height + basePlusHeight;
}
]]>
</mx:Script>
<mx:Array id="arr">
<mx:Object lbl="TEST 1" src="http://riamx.com/UploadFile/album3List/data-20081114_.jpg" />
</mx:Array>
<mx:Panel styleName="opaquePanel">
<mx:HorizontalList id="hList"
dataProvider="{arr}"
itemRenderer="HorizontalListItemRenderer"
verticalScrollPolicy="off"
horizontalScrollPolicy="off"
rowCount="1"
borderSkin="{null}"/>
<mx:ControlBar>
<mx:Button label="Previous" click="prev();" />
<mx:HSlider id="slider" minimum="0" maximum="{hList.maxHorizontalScrollPosition}"
value="{hList.horizontalScrollPosition}" liveDragging="true" snapInterval="1"
tickInterval="1" showDataTip="false" width="100%" change="slider_change(event);" />
<mx:Button label="Next" click="next();"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
------------------------------------------------------------
HorizontalListItemRenderer.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label text="{data.lbl}" fontWeight="bold" horizontalCenter="0"/>
<mx:Image source="{data.src}" verticalCenter="10" horizontalCenter="0"/>
</mx:Canvas>
'FLEX > FLEX' 카테고리의 다른 글
[FLEX 3.0] Flex SWF Font만들기 (0) | 2010.07.12 |
---|---|
[AS3.0] AS에서 동적 변수 사용하기(또는 동적 함수명 사용하기) (0) | 2010.07.12 |
[FLEX 3.0] swc 디컴파일 - swc decompiler (0) | 2010.07.12 |
[AIR] AIR에서 navigateToURL을 사용해서 데이터 넘길때 POST는 죽어도 않된다.ㅠ.ㅠ (0) | 2010.07.12 |
[AIR] AIR Window Basics (0) | 2010.07.12 |