⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchflickrform.mxml

📁 flex书效果代码
💻 MXML
字号:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	xmlns:degrafa="http://www.degrafa.com/2007"
	xmlns:components="com.san.components.*"
	width="460" height="180"
	creationComplete="init()"
	>
	<mx:states>
		<mx:State name="results">
			<mx:SetProperty name="height" value="564"/>
			<mx:SetProperty name="x" value="{(stage.width/2)-250}" />
			<mx:SetProperty name="y" value="{(stage.height/2)-250}" />
			<mx:SetProperty target="{b_select}" name="includeInLayout" value="true"/>
			<mx:SetProperty target="{b_select}" name="visible" value="true"/>
		</mx:State>
	</mx:states>
	
	<mx:transitions>
		<mx:Transition fromState="" toState="results">
			<mx:Sequence targets="{[this,b_select]}">
				<mx:Parallel target="{this}">
					<mx:Resize duration="400"/>
					<mx:Move duration="400"/>
				</mx:Parallel>
				<mx:SetPropertyAction target="{b_select}" />
			</mx:Sequence>
		</mx:Transition>
	</mx:transitions>
	
	
	<mx:Script>
		<![CDATA[
			import com.san.managers.LibraryManager;
			import com.adobe.webapis.flickr.PhotoSize;
			import com.san.values.Photo;
			import com.adobe.webapis.flickr.PagedPhotoList;
			import mx.collections.ArrayCollection;
			import com.adobe.webapis.flickr.FlickrError;
			import mx.managers.CursorManager;
			import com.adobe.webapis.flickr.FlickrService;
			import com.adobe.webapis.flickr.events.FlickrResultEvent;
			import com.mh.globals.GlobalsManager;
			import mx.core.Application;
			import mx.managers.PopUpManager;

			
			private static const PHOTOS_PER_PAGE:Number = 40;
			
			
			private var flickrService:FlickrService = new FlickrService( GlobalsManager.globals.getGlobal("flickrAPIKey") );
		
			
			private var closed:Boolean = false;
			
		
			private var currentSearchIsTags:Boolean = true;
			private var currentQuery:String = "";
			private var currentUserID:String;
			
			
			[Bindable]
			private var results:ArrayCollection = new ArrayCollection();
			
			
		
			private function init():void
			{
				flickrService.addEventListener( FlickrResultEvent.PEOPLE_FIND_BY_USERNAME, getUserIDCallback );
				flickrService.addEventListener( FlickrResultEvent.PHOTOS_SEARCH, searchCallback );
				flickrService.addEventListener( FlickrResultEvent.PHOTOS_GET_SIZES, getSizesCallback );
				flickrService.addEventListener( IOErrorEvent.IO_ERROR, ioErrorHandler ); 
			}
		
		
		
			private function beginSearch( tags:Boolean ):void
			{
				CursorManager.setBusyCursor();
				
				b_tags.enabled = false;
				b_text.enabled = false;
					
				currentSearchIsTags = tags;
				currentQuery = t_query.text;
				
				if( t_user.text.length > 0 )
					flickrService.people.findByUsername( t_user.text );
				else
				{
					search( currentQuery, currentSearchIsTags );
				}
			}
			
			
			private function getUserIDCallback( event:FlickrResultEvent ):void
			{
				if( event.success )
				{
					currentUserID = event.data.user.nsid; // store user id
					trace( "NSID retrieved:",currentUserID);
					
					search( currentQuery, currentSearchIsTags, 1, currentUserID );
				}
				else
				{
					var error:FlickrError = event.data as FlickrError; 
					ErrorForm.error( "Error getting User ID from the Flickr server.\n\n"+error.errorCode+" - "+error.errorMessage );
				}
				
				CursorManager.removeBusyCursor();
			}
			
			
			
			
			private function search( query:String, tags:Boolean, pageNum:Number = 1, nsid:String = "" ):void
			{
				if( tags )
					flickrService.photos.search( nsid, query, "any", "", null, null, null, null, -1, "", PHOTOS_PER_PAGE, pageNum );
				else
					flickrService.photos.search( nsid, "", "any", query, null, null, null, null, -1, "", PHOTOS_PER_PAGE, pageNum );
			}
			
			
			private function searchCallback( event:FlickrResultEvent ):void
			{
				if( closed )
				{
					CursorManager.removeBusyCursor();
					return;
				}
				
				if( event.success )
				{
					results.removeAll();
					
					var photoList:PagedPhotoList = event.data.photos as PagedPhotoList;
					
					if( photoList.photos.length < 1 )
					{
						ErrorForm.info( "No results to display" );
					}
					else
					{
						for each( var photo:com.adobe.webapis.flickr.Photo in photoList.photos )
						{
							CursorManager.setBusyCursor();
							flickrService.photos.getSizes( photo.id );
						}
					}
					
					b_tags.enabled = true;
					b_text.enabled = true;
					this.currentState = "results";
					
				}
				else
				{
					var error:FlickrError = event.data as FlickrError; 
					ErrorForm.error( "Error getting search results from the Flickr server.\n\n"+error.errorCode+" - "+error.errorMessage );
				}
				CursorManager.removeBusyCursor();
			}
			
			
			private function getSizesCallback( event:FlickrResultEvent ):void
			{
				if( closed )
				{
					CursorManager.removeBusyCursor();
					return;
				}
					
				if( event.success )
				{
					var sizes:Array = event.data.photoSizes as Array;					
					var photo:Photo = new Photo();
					
					for each( var size:PhotoSize in sizes )
					{
						photo.link = size.url;
						 
						switch( size.label )
						{
							case "Square":
								photo.square = size.source;
								break;
							case "Thumbnail":
								photo.thumbnail = size.source;
								break;
							case "Small":
								photo.small = size.source;
								break;
							case "Medium":
								photo.medium = size.source;
								break;
							case "Large":
								photo.large = size.source;
								break;
						}
					}
					
					results.addItem( photo );
				}
				else
				{
					var error:FlickrError = event.data as FlickrError; 
					ErrorForm.error( "Error getting photos urls from the Flickr server.\n\n"+error.errorCode+" - "+error.errorMessage );
				}
				CursorManager.removeBusyCursor();
			}
			
			
			private function addSelectedToLibrary():void
			{
				for each( var photo:Photo in resultDisplay.selectedItems )
				{
					LibraryManager.manager.addPhoto( photo );
				}
				close();
			}
			
			
			private function ioErrorHandler( event:IOErrorEvent ):void
			{
				ErrorForm.error( "Could not connect to Flickr servers. Please check your internet connection." );
			}
			
			 
			 
			public static function show( parent:DisplayObject = null ):SearchFlickrForm
			{
				if( !parent )
					parent = Application.application as DisplayObject;
					
				var form:SearchFlickrForm = PopUpManager.createPopUp( parent, SearchFlickrForm, true ) as SearchFlickrForm;
				
				PopUpManager.centerPopUp( form );
				return form;
			}
			
			public function close():void
			{
				closed = true;
				PopUpManager.removePopUp( this );
			}
			 
		]]>
	</mx:Script>
	
	
	
	<!--
	 * Background
	 -->
	<degrafa:Surface>
		<degrafa:GeometryGroup>
			<degrafa:fills>
				<degrafa:LinearGradientFill id="bgFill" angle="90" >
					<degrafa:GradientStop color="#E5E5E5" ratio="0" />
					<degrafa:GradientStop color="#D0D0D0" ratio="0.3" />
					<degrafa:GradientStop color="#D0D0D0" ratio="1" />
				</degrafa:LinearGradientFill>
			</degrafa:fills>
			
			<degrafa:RoundedRectangle width="{width}" height="{height}" cornerRadius="20" fill="{bgFill}" />
			
			<degrafa:filters>
				<mx:BevelFilter distance="2" />
			</degrafa:filters>
		</degrafa:GeometryGroup>
	</degrafa:Surface>
	
	
	<!--
	 * Title
	 -->
	<mx:Label x="10" y="10" text="Search Flickr" fontWeight="bold" fontSize="12"/>
	
	
	<mx:Canvas left="10" top="38" right="10" bottom="38" styleName="formContent" horizontalScrollPolicy="off" verticalScrollPolicy="off">
		
		<mx:VBox  horizontalCenter="0" top="10">
			<mx:FormItem label="user name:" labelWidth="70" direction="horizontal" horizontalGap="0">
				<mx:TextInput id="t_user" />
				<mx:Label text="(optional)" />
			</mx:FormItem>
			<mx:FormItem label="query:" labelWidth="70" direction="horizontal">
				<mx:TextInput id="t_query" />
			</mx:FormItem>
		</mx:VBox>
		
		<mx:HBox  horizontalCenter="0" top="70">
			<mx:Button id="b_tags" label="Search Tags" width="130" enabled="{t_query.text.length>0}" click="{beginSearch(true)}" icon="@Embed(source='../../../icons/ni0104-16.png')" height="25"/>
			<mx:Button id="b_text" label="Search Text" width="130" enabled="{t_query.text.length>0}" click="{beginSearch(false)}" icon="@Embed(source='../../../icons/ni0104-16.png')" height="25"/>
		</mx:HBox>
		
		
		<components:EasyTileList id="resultDisplay" left="10" right="10" top="120" dataProvider="{results}"
				itemRenderer="com.san.forms.search_classes.ResultRenderer" rowHeight="100" columnWidth="100" allowMultipleSelection="true" height="358">
			
		</components:EasyTileList>
		
	</mx:Canvas>

	
	
	<mx:HBox id="buttons" width="100%" bottom="10" horizontalAlign="center" >
		<mx:Button id="b_select" label="Select" width="100" icon="@Embed(source='../../../icons/tick.png')" enabled="{resultDisplay.selectedItems.length>0}" click="addSelectedToLibrary()" toolTip="add selected to library"  visible="false" includeInLayout="false"/>
		<mx:Button label="Close" width="100" click="close()"  icon="@Embed(source='../../../icons/cancel.png')"/>
	</mx:HBox>	
	
</mx:Canvas>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -