1505/090
AAS3WDP-Chapter 6 Remote Proxy 远程代理
这里是一个Flickr的远程图片搜索代理实例,对了,Flickr的远程图片搜索需要申请API,别忘了去申请一个。
代码部分,类PhotoSearchProxy.as:
package{
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class PhotoSearchProxy extends EventDispatcher{
private static const API_KEY:String="c4643072bfc38caa0257f4c039624cb5";//这是我的Flickr Api_key
private static const FLICKR_URL:String="http://api.flickr.com/services/rest/";//Flickr的api地址
public function PhotoSearchProxy(){}
private function onComplete(_evt:Event):void{
dispatchEvent(new DataEvent(Event.COMPLETE,false,false,XML(_evt.target.data)));
}
public function search(userId:String,tags:String):void{
var loader:URLLoader=new URLLoader();
var request:URLRequest=new URLRequest(PhotoSearchProxy.FLICKR_URL+"?method=flickr.photos.search&user_id="+userId+"&tags="+tags+"&api_key="+PhotoSearchProxy.API_KEY);
loader.addEventListener(Event.COMPLETE,onComplete);
loader.load(request);
}
}
}
在loader载入request之后dispatchEvent一个DataEvent。
具体调用部分:
import PhotoSearchProxy;
var flickr:PhotoSearchProxy=new PhotoSearchProxy();
flickr.addEventListener(Event.COMPLETE,onComplete);
flickr.search("","yellow");
function onComplete(_evt:DataEvent){
trace(_evt.data);
}
实际化PhotoSearchProxy之后,调用search方法,load完之后接收dispatchEvent的DataEvent的data并trace。
记得以前看过的一个AIR的RSS阅读器也是这样做的,写了个EventDispatcher的子类,载入RSS源地址后dispatchEvent。。。