flex编写的一个相册浏览

1、目录树:

      

 

2、demo_viewImage.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="application1_creationCompleteHandler(event)" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:viewImage="demo.viewImage.*" backgroundColor="#000000">
	<s:layout>
		<s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			import myevents.ViewImageEvent;

			private var count:int;//总数
			private var step:int = 4;//步长
			private var currentPage:int = 0;//当前页
			
			[Bindable]
			private var dataImg:ArrayCollection = new ArrayCollection(); //图片数据对象
			
			/*启动函数*/
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				setDataImg();//初始化所有图片数据
				this.addEventListener(ViewImageEvent.IMG, VIEHandler);//注册单击图片监听事件
			}
			/*注册点击图片监听事件回归函数*/
			private function VIEHandler(event:ViewImageEvent):void
			{
				viewIMG.source = dataImg[int(event.getEventValue)].img;
			}
			
			/*初始化图片数据对象*/
			private function setDataImg():void
			{
				for(var i:int = 0; i < 6; i++)
				{
					var o:Object = new Object();
					o.img = "demo/viewImage/images/" + i + ".png";
					o.littleImg = "demo/viewImage/images/little_" + i + ".png";
					dataImg.addItem(o);
					count++;
				}
				setLittleImg(0, step);
			}
			
			/*分页设置缩略图*/
			private function setLittleImg(start:int, step:int):Boolean
			{
				vb.removeAllChildren();
				for(var i:int = start; i < start + step; i++)
				{
					if((i+1) > count)
					{
						if(i == start){
							return false;	
						}
						return true;
					}
					if(i < 0)
					{
						if(i == start){
							return false;
						}
						return true;
					}
					var littleImage:LittleImage = new LittleImage();
					vb.addChild(littleImage);
					littleImage.littleImg.source=dataImg[i].littleImg;
					
					littleImage.setArg_littleImg = i.toString();
					if(i == start)
					{
						viewIMG.source = dataImg[i].img;
					}
				}
				return true;
			}
			
			/*左翻页处理*/
			private function leftClick(event:MouseEvent):void
			{
				if(!setLittleImg(currentPage-1, step))
				{
					Alert.show("没有上一张了", "提示信息");
					setLittleImg(currentPage, step);
					currentPage = 0;
				}
				else
				{
					currentPage--;
				}
			}
			
			/*右翻页处理*/
			private function rightClick(event:MouseEvent):void
			{
				if(!setLittleImg(currentPage+1, step))
				{
					Alert.show("已经是最后一张了", "提示信息");
					setLittleImg(currentPage, step);
					currentPage = count-1;
				}
				else
				{
					currentPage++;
				}
				
			}

		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<mx:Image id="viewIMG" width="600" height="450" source="demo/viewImage/images/2.png" />
	<mx:HBox width="700" height="100" horizontalGap="10" verticalScrollPolicy="off" horizontalScrollPolicy="off">
		<viewImage:leftImage click="leftClick(event);"/>
		<mx:HBox width="100%" height="100%" id="vb" horizontalGap="13">
		</mx:HBox>
		<viewImage:rightImage click="rightClick(event);"/>
	</mx:HBox>
</s:Application>


2、leftImage.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark"
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="107" height="100" backgroundColor="#000000">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			[Bindable]
			private var s:String = "demo/viewImage/image/back.png";
			private function moClick(event:MouseEvent):void
			{
				s = "demo/viewImage/image/left.png";
			}
			
			private function moutClick(event:MouseEvent):void
			{
				s = "demo/viewImage/image/back.png";
			}
		]]>
	</fx:Script>
	<mx:Image id="leftImg" width="107" height="100" source="{s}" buttonMode="true" useHandCursor="true" mouseOver="moClick(event);" mouseOut="moutClick(event);"/>
</mx:VBox>


3、rightImage.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark"
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="107" height="100" backgroundColor="#000000">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			[Bindable]
			private var s:String = "demo/viewImage/image/back.png";
			private function moClick(event:MouseEvent):void
			{
				s = "demo/viewImage/image/right.png";
			}
			
			private function moutClick(event:MouseEvent):void
			{
				s = "demo/viewImage/image/back.png";
			}
		]]>
	</fx:Script>
	<mx:Image id="leftImg" width="107" height="100" source="{s}" buttonMode="true" useHandCursor="true" mouseOver="moClick(event);" mouseOut="moutClick(event);"/>
</mx:VBox>


4、littleImage.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="107" height="100">

	<fx:Script>
		<![CDATA[
			import myevents.ViewImageEvent;
			
			[Bindale]
			public var arg_littleImg:String; //用户存放图片对象的ID
			
			public function set setArg_littleImg(args:String):void
			{
				arg_littleImg = args;
			}
			
			protected function littleImg_clickHandler(event:MouseEvent):void
			{
				var viewImageEvent:ViewImageEvent= new ViewImageEvent(ViewImageEvent.IMG, this.arg_littleImg , true);
				dispatchEvent(viewImageEvent);
			}
		]]>
	</fx:Script>

	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>

	<mx:Image id="littleImg" width="107" height="100" source="demo/viewImage/images/little_2.png" buttonMode="true" useHandCursor="true" click="littleImg_clickHandler(event)"/>
</mx:VBox>


5、ViewImageEvent.as

package myevents
{
	import flash.events.Event;

	public class ViewImageEvent extends Event
	{
		public static const LEFT:String = "LEFT";
		public static const RIGHT:String = "RIGHT";
		public static const IMG:String = "IMG";
		
		[Bindable]
		private var eventValue:String;
		
		public function ViewImageEvent(type:String, ev:String, bubbles:Boolean = false, cancelable:Boolean = false )
		{
			super(type, bubbles, cancelable);
			this.eventValue = ev;
		}
		
		public function get getEventValue():String
		{
			return this.eventValue;
		}
	}
}


 

6、运行效果图

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
VB 做的相册(缩略图预览程序VB做的小型相册,实际上是一个图片浏览程序,打开时显示缩略图,鼠标点击显示大图片,并可接着浏览下去,程序相关说明:   函数功能: 该函数将指定位图的位拷贝到缓冲区里?   函数原型:LONG GetBitmapBits(HBITMAP hbmp, LONG cbBuffer, LPVOID lpvBits);   参数:   hbmp:指向感兴趣的位图的句柄?   cbBuffer:指定要从位图拷贝到缓冲区的字节数?   lpvBits:指向接收位图位数据的缓冲区指针?这些位是按字节类型存储在数组中的?   返回值:如果该函数执行成功,那么返回值就是拷贝到缓冲区的字节数;如果该函数执行失败,那么返回值为0。   Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal nwCount As Long, lpBits As Any) As Long      函数功能:该函数将位图的颜色数据位设置成指定值?   函数原型:LONG SetBitmapBits(HBITMAP hmbp, DWORD cBytes, CONST VOID (lpBits);   参数:   hbmp:指向要设置的位图的句柄?   cBytes:指定参数lpBits指向的数组的字节数?   lpBits:指向字节类型数组的指针?该数组中包含了指定位图的颜色数据?   返回值:如果该函数执行成功,则返回值就是在设置位图位时使用的字节数;如果失败,则返回值为0。      函数功能:该函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区。   函数原型:int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject);   参数:   hgdiobj:指向感兴趣的图形对象的句柄,它可以是这样的一个句柄:一个逻辑位图、一个刷子、一种字体、一个调色板、笔或通过调用CreateDIBsection函数创建的与设备无关位图。   cbBuffer:指定将要写到缓冲区的信息的字节数目?‘lpvObject:指向一个缓冲区的指针,该缓冲区将要检索指定图形对象的信息。      函数功能描述:将一块内存的数据从一个位置复制到另一个位置   函数原型:VOID CopyMemory(PVOID Destination,CONST VOID *Source,DWORD Length);   参数:   Destination:要复制内存块的目的地址?   Source:要复制内存块的源地址?   Length:指定要复制内存块的大小,单位为字节   返回值:该函数为VOID型,没有返回值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值