Revision: 15066
Updated Code
at January 15, 2010 11:24 by chrisaiv
Updated Code
/************************
Use this in your Flash file
************************/
var photoSetLoader :FlickrLoader = new FlickrLoader();
photoSetLoader.load( "flickrPhotoSetID" );
photoSetLoader.addEventListener( Event.COMPLETE, photoSetCompleteHandler, false, 0, true );
function photoSetCompleteHandler( e:Event ):void
{
var flickrLoader:FlickrLoader = FlickrLoader( e.currentTarget );
flickrLoader.removeEventListener( Event.COMPLETE, photoSetCompleteHandler );
var totalImages:Number = flickrLoader.getImageData().length;
var currentImage:uint = Math.floor( Math.random() * totalImages );
trace( flickrLoader.getImageData() );
}
/************************
Place this is a file called FlickrLoader.as
************************/
package
{
import com.adobe.serialization.json.JSON;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
public class FlickrLoader extends EventDispatcher
{
private var _data:Array;
private static const FLICKR_API:String = "FLICKR_API_KEY";
public function FlickrLoader(target:IEventDispatcher=null)
{
super(target);
}
public function load( photoSetID:String ):void
{
var urlVars:URLVariables = new URLVariables();
urlVars.method = "flickr.photosets.getPhotos";
urlVars.api_key = FLICKR_API;
urlVars.photoset_id = photoSetID;
urlVars.format = "json";
var urlRequest:URLRequest = new URLRequest();
urlRequest.url = "http://api.flickr.com/services/rest/";
urlRequest.method = URLRequestMethod.GET;
urlRequest.data = urlVars;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onJSONLoaded );
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
urlLoader.load( urlRequest );
}
private function onJSONLoaded( e:Event ):void
{
_data = new Array();
var rawData = e.currentTarget.data as String;
var data:String = rawData.slice( rawData.indexOf("{"), rawData.lastIndexOf("}") + 1 );
// trace( data );
var json:Object = JSON.decode( data ) as Object;
var photos:Object = json.photoset.photo as Object;
//Create new image objects
for( var i:uint; i < photos.length; i++ ){
_data.push({
"title" : photos[i].title.toString(),
"url" : "http://farm" +
photos[i].farm +
".static.flickr.com/" +
photos[i].server + "/" +
photos[i].id + "_" +
photos[i].secret + ".jpg"
});
}
//Fire once the XML has been converted into Image Objects
dispatchEvent( new Event( Event.COMPLETE ) );
}
public function getImageData():Array
{
return _data;
}
private function httpStatusHandler ( e:HTTPStatusEvent ):void
{
//trace("httpStatusHandler:" + e);
}
private function securityErrorHandler ( e:SecurityErrorEvent ):void
{
trace("securityErrorHandler:" + e);
}
private function ioErrorHandler( e:IOErrorEvent ):void
{
trace("ioErrorHandler: " + e);
}
private function progressHandler( e:ProgressEvent ):void
{
//trace(e.currentTarget.bytesLoaded + " / " + e.currentTarget.bytesTotal);
}
}
}
Revision: 15065
Updated Code
at January 15, 2010 11:24 by chrisaiv
Updated Code
package
{
import com.adobe.serialization.json.JSON;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
public class FlickrLoader extends EventDispatcher
{
private var _data:Array;
private static const FLICKR_API:String = "FLICKR_API_KEY";
public function FlickrLoader(target:IEventDispatcher=null)
{
super(target);
}
public function load( photoSetID:String ):void
{
var urlVars:URLVariables = new URLVariables();
urlVars.method = "flickr.photosets.getPhotos";
urlVars.api_key = FLICKR_API;
urlVars.photoset_id = photoSetID;
urlVars.format = "json";
var urlRequest:URLRequest = new URLRequest();
urlRequest.url = "http://api.flickr.com/services/rest/";
urlRequest.method = URLRequestMethod.GET;
urlRequest.data = urlVars;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onJSONLoaded );
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
urlLoader.load( urlRequest );
}
private function onJSONLoaded( e:Event ):void
{
_data = new Array();
var rawData = e.currentTarget.data as String;
var data:String = rawData.slice( rawData.indexOf("{"), rawData.lastIndexOf("}") + 1 );
// trace( data );
var json:Object = JSON.decode( data ) as Object;
var photos:Object = json.photoset.photo as Object;
//Create new image objects
for( var i:uint; i < photos.length; i++ ){
_data.push({
"title" : photos[i].title.toString(),
"url" : "http://farm" +
photos[i].farm +
".static.flickr.com/" +
photos[i].server + "/" +
photos[i].id + "_" +
photos[i].secret + ".jpg"
});
}
//Fire once the XML has been converted into Image Objects
dispatchEvent( new Event( Event.COMPLETE ) );
}
public function getImageData():Array
{
return _data;
}
private function httpStatusHandler ( e:HTTPStatusEvent ):void
{
//trace("httpStatusHandler:" + e);
}
private function securityErrorHandler ( e:SecurityErrorEvent ):void
{
trace("securityErrorHandler:" + e);
}
private function ioErrorHandler( e:IOErrorEvent ):void
{
trace("ioErrorHandler: " + e);
}
private function progressHandler( e:ProgressEvent ):void
{
//trace(e.currentTarget.bytesLoaded + " / " + e.currentTarget.bytesTotal);
}
}
}
Revision: 15064
Updated Code
at June 22, 2009 23:22 by chrisaiv
Updated Code
/************************
Use this in your Flash file
************************/
var photoSetLoader :FlickrLoader = new FlickrLoader();
photoSetLoader.load( "flickrPhotoSetID" );
photoSetLoader.addEventListener( Event.COMPLETE, photoSetCompleteHandler, false, 0, true );
function photoSetCompleteHandler( e:Event ):void
{
var flickrLoader:FlickrLoader = FlickrLoader( e.currentTarget );
flickrLoader.removeEventListener( Event.COMPLETE, photoSetCompleteHandler );
var totalImages:Number = flickrLoader.getImageData().length;
var currentImage:uint = Math.floor( Math.random() * totalImages );
trace( flickrLoader.getImageData() );
}
/************************
Place this is a file called FlickrLoader.as
************************/
package
{
import com.adobe.serialization.json.JSON;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
public class FlickrLoader extends EventDispatcher
{
private var _data:Array;
private static const FLICKR_API:String = "FLICKR_API_KEY";
public function FlickrLoader(target:IEventDispatcher=null)
{
super(target);
}
public function load( photoSetID:String ):void
{
var urlVars:URLVariables = new URLVariables();
urlVars.method = "flickr.photosets.getPhotos";
urlVars.api_key = FLICKR_API;
urlVars.photoset_id = photoSetID;
urlVars.format = "json";
var urlRequest:URLRequest = new URLRequest();
urlRequest.url = "http://api.flickr.com/services/rest/";
urlRequest.method = URLRequestMethod.GET;
urlRequest.data = urlVars;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onJSONLoaded );
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
urlLoader.load( urlRequest );
}
private function onJSONLoaded( e:Event ):void
{
_data = new Array();
var rawData = e.currentTarget.data as String;
var data:String = rawData.slice( rawData.indexOf("{"), rawData.lastIndexOf("}") + 1 );
// trace( data );
var json:Object = JSON.decode( data ) as Object;
var photos:Object = json.photoset.photo as Object;
//Create new image objects
for( var i:uint; i < photos.length; i++ ){
_data.push(
new Object( photos[i].title.toString(),
"http://farm" +
photos[i].farm + ".static.flickr.com/" +
photos[i].server + "/" +
photos[i].id + "_" +
photos[i].secret + ".jpg" )
);
}
//Fire once the XML has been converted into Image Objects
dispatchEvent( new Event( Event.COMPLETE ) );
}
public function getImageData():Array
{
return _data;
}
private function httpStatusHandler ( e:HTTPStatusEvent ):void
{
//trace("httpStatusHandler:" + e);
}
private function securityErrorHandler ( e:SecurityErrorEvent ):void
{
trace("securityErrorHandler:" + e);
}
private function ioErrorHandler( e:IOErrorEvent ):void
{
trace("ioErrorHandler: " + e);
}
private function progressHandler( e:ProgressEvent ):void
{
//trace(e.currentTarget.bytesLoaded + " / " + e.currentTarget.bytesTotal);
}
}
}
Revision: 15063
Updated Code
at June 22, 2009 23:20 by chrisaiv
Updated Code
/************************
Use this in your Flash file
************************/
var photoSetLoader :FlickrLoader = new FlickrLoader();
photoSetLoader.load( "flickrPhotoSetID" );
photoSetLoader.addEventListener( Event.COMPLETE, photoSetCompleteHandler, false, 0, true );
function photoSetCompleteHandler( e:Event ):void
{
var flickrLoader:FlickrLoader = FlickrLoader( e.currentTarget );
flickrLoader.removeEventListener( Event.COMPLETE, photoSetCompleteHandler );
var totalImages:Number = flickrLoader.getImageData().length;
var currentImage:uint = Math.floor( Math.random() * totalImages );
trace( flickrLoader.getImageData() );
}
/************************
Place this is a file called FlickrLoader.as
************************/
package
{
import com.adobe.serialization.json.JSON;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
public class FlickrLoader extends EventDispatcher
{
private var _data:Array;
private var responseFunction:Function;
private static const FLICKR_API:String = "";
public function FlickrLoader(target:IEventDispatcher=null)
{
super(target);
}
public function load( photoSetID:String ):void
{
var urlVars:URLVariables = new URLVariables();
urlVars.method = "flickr.photosets.getPhotos";
urlVars.api_key = FLICKR_API;
urlVars.photoset_id = photoSetID;
urlVars.format = "json";
var urlRequest:URLRequest = new URLRequest();
urlRequest.url = "http://api.flickr.com/services/rest/";
urlRequest.method = URLRequestMethod.GET;
urlRequest.data = urlVars;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onJSONLoaded );
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
urlLoader.load( urlRequest );
}
private function onJSONLoaded( e:Event ):void
{
_data = new Array();
var rawData = e.currentTarget.data as String;
var data:String = rawData.slice( rawData.indexOf("{"), rawData.lastIndexOf("}") + 1 );
// trace( data );
var json:Object = JSON.decode( data ) as Object;
var photos:Object = json.photoset.photo as Object;
//Create new image objects
for( var i:uint; i < photos.length; i++ ){
_data.push(
new Object( photos[i].title.toString(),
"http://farm" +
photos[i].farm + ".static.flickr.com/" +
photos[i].server + "/" +
photos[i].id + "_" +
photos[i].secret + ".jpg" )
);
}
//Fire once the XML has been converted into Image Objects
dispatchEvent( new Event( Event.COMPLETE ) );
}
public function getImageData():Array
{
return _data;
}
private function httpStatusHandler ( e:HTTPStatusEvent ):void
{
//trace("httpStatusHandler:" + e);
}
private function securityErrorHandler ( e:SecurityErrorEvent ):void
{
trace("securityErrorHandler:" + e);
}
private function ioErrorHandler( e:IOErrorEvent ):void
{
trace("ioErrorHandler: " + e);
}
private function progressHandler( e:ProgressEvent ):void
{
//trace(e.currentTarget.bytesLoaded + " / " + e.currentTarget.bytesTotal);
}
}
}
Revision: 15062
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 22, 2009 23:16 by chrisaiv
Initial Code
package src
{
import com.adobe.serialization.json.JSON;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
public class FlickrLoader extends EventDispatcher
{
private var _data:Array;
private var responseFunction:Function;
private static const FLICKR_API:String = "";
public function FlickrLoader(target:IEventDispatcher=null)
{
super(target);
}
public function load( photoSetID:String ):void
{
var urlVars:URLVariables = new URLVariables();
urlVars.method = "flickr.photosets.getPhotos";
urlVars.api_key = FLICKR_API;
urlVars.photoset_id = photoSetID;
urlVars.format = "json";
var urlRequest:URLRequest = new URLRequest();
urlRequest.url = "http://api.flickr.com/services/rest/";
urlRequest.method = URLRequestMethod.GET;
urlRequest.data = urlVars;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener( Event.COMPLETE, onJSONLoaded );
urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
urlLoader.load( urlRequest );
}
private function onJSONLoaded( e:Event ):void
{
_data = new Array();
var rawData = e.currentTarget.data as String;
var data:String = rawData.slice( rawData.indexOf("{"), rawData.lastIndexOf("}") + 1 );
// trace( data );
var json:Object = JSON.decode( data ) as Object;
var photos:Object = json.photoset.photo as Object;
//Create new image objects
for( var i:uint; i < photos.length; i++ ){
_data.push(
new Image( photos[i].title.toString(), "",
"http://farm" +
photos[i].farm + ".static.flickr.com/" +
photos[i].server + "/" +
photos[i].id + "_" +
photos[i].secret + ".jpg" )
);
}
//Fire once the XML has been converted into Image Objects
dispatchEvent( new Event( Event.COMPLETE ) );
}
public function getImageData():Array
{
return _data;
}
private function httpStatusHandler ( e:HTTPStatusEvent ):void
{
//trace("httpStatusHandler:" + e);
}
private function securityErrorHandler ( e:SecurityErrorEvent ):void
{
trace("securityErrorHandler:" + e);
}
private function ioErrorHandler( e:IOErrorEvent ):void
{
trace("ioErrorHandler: " + e);
}
private function progressHandler( e:ProgressEvent ):void
{
//trace(e.currentTarget.bytesLoaded + " / " + e.currentTarget.bytesTotal);
}
}
}
Initial URL
Initial Description
You can access Flickr using AS3 the same way as Javascript with JSON. You just have to massage the data a bit. Here's how you would use the class. In your Main.as, create an instance of the FlickrLoader. You will need the JSON.decoder class from http://code.google.com/p/as3corelib/
Initial Title
AS3: Flickr Loader
Initial Tags
Initial Language
ActionScript 3