Flickr API Demo
Como nunca mais tinha escrito nenhum post técnico aqui, resolvi fazer um exemplo simples para quem estiver interessado em iniciar uma aplicação do gênero em Flash possa ter seus passos iniciais facilitados.
O primeiro passo para você que quer desenvolver sua "Flash-Flickr-Application" é criar um cadastro no Flickr. Pra isso acesse www.flickr.com. Se você já tiver uma ID do Yahoo nem precisará preencher formulários. Depois entre em www.flickr.com/services e solicite uma APIKey. Vão te fornecer uma senha bem grande para você usar para acessar a API do Flickr remotamente.
O segundo passo é ler a documentação e registrar seu domínio no site do Flickr. Isso pode ser feito acessando www.flickr.com/services. Como já deve ser de conhecimento de todos, o FlashPlayer 8 não permite que sejam acessados documentos diretamente fora do servidor onde o arquivo SWF está hospedado. Isso significa que se você estiver rodando localmente um swf e tentar uma ação do tipo "meuMovieClip.loadMovie('http://static.flickr.com/42/84392637_5474d426a7_m.jpg')" a imagem será carregada normalmente. Porém se você hospedar esse mesmo SWF em um servidor web, não irá funcionar por uma questão de segurança do Flash Player. É por isso que o registo do seu domínio é importante.
Terceiro passo: vá até o site do Kelvin Luck (http://www.kelvinluck.com/projects/flashr-a-flickr-api-wrapper-for-flash) e baixe as classes criadas por ele para facilitar a nossa vida (Thanks Kelvin!). O que fazer com as classes ? Bom, você pode descompactar o arquivo ZIP no mesmo diretório que seus arquivos .FLA ou pode por direto na pasta 'classes' na instalação do Flash 8.
O exemplo que segue abaixo faz uma consulta simples que busca as fotos públicas de um determinado usuário do Flickr e as retorna.
import com.kelvinluck.flickr.Flickr;
import com.kelvinluck.flickr.FlickrResponseListener;
import com.kelvinluck.flickr.Person;
import com.kelvinluck.flickr.Photo;
import mx.utils.Delegate;
//Sua apiKey fornecida pelo Flickr.com
var api:String = "sua_api_key_do_flickr";
//Seu nome de usuário (aquele endereço original que você tinha antes de criar um 'alias')
var un:String = "seu_nome_de_usuario";
//Criando a instância do objeto da classe Flickr
var flickr:Flickr = Flickr.getFlickr();
//O ResponseListener irá receber todas as ocorrências de retorno dos métodos
//executados pelo flickr. É ele quem recebe os callbacks
var resp:FlickrResponseListener = new FlickrResponseListener();
//Função para iniciar a aplicação
function inicia():Void{
//Definindo qual apiKey será usada para executar os métodos no Flickr (obrigatório)
flickr.apiKey = api;
//Configurando os callbacks
configuraRespListener();
//Efetuando a busca de fotos
buscaFotosPublicas();
}
//Função para buscar as fotos públicas no Flickr
function buscaFotosPublicas():Void{
//Método que busca as fotos públicas
//Pâmetros:
//nsid: String => User Name (definido na variável 'un')
//extras: String => Critérios extras de filtro
//perPage: Number => Número de fotos por página (default = 100)
//page: Number => Número da página recuperada (default = 1)
flickr.peopleGetPublicPhotos(un);
}
//função para configurar o ResponseListener
function configuraRespListener():Void{
//callback do método peoploGetPublicPhotos
resp.onPeopleGetPublicPhotos = Delegate.create(this, recebeFotos);
/*
O uso da classe Delegate é interessante para não perder a referência
ao objeto representado por 'this' na função 'recebeFotos'
Ex.:
//Requer MovieClip no Stage. Nome de instância 'mcTeste"
import mx.utils.Delegate;
var mcTeste:MovieClip;
function testeSemDelegate():Void{
trace("Sem Delegate: " + this); //Aparece: _level0.mcTeste
}
function testeComDelegate():Void{
trace("Com Delegate: " + this); //Aparece: _level0
}
mcTeste.onPress = testeSemDelegate;
mcTeste.onRelease = Delegate.create(this, testeComDelegate);
*/
}
//Função final, executada quando as fotos do Flickr são recebidas pela aplicação
//Parâmetros: usuario: Person => Objeto que representa o usuário consultado
function recebeFotos(usuario:Person):Void{
//Método getPhotos retorna um array de objetos do tipo 'Photo'
var fotos:Array = usuario.getPhotos();
//Loop exibindo no output o título de todas as fotos recebidas
for(var i = 0, t = fotos.length; i < t; i++){
//Recuperando a foto relativa ao iterador 'i'
var foto:Photo = fotos[i];
//Exibindo o título
trace(foto.title);
}
}
//Iniciando a aplicação
inicia();
Agora que você já viu a API funcionando, é só soltar a imaginação e fazer sua própria Flickr Application!
Permalink para este Post
32 Comentários
Leonardo França , Higor Oliveria , Implante de Cabelos , alexandre , Jackson , Fashion blog , louis vuitton , louis , lv , john , Replica Watches , junior , LJ , cv , Bruno Tavares , sanorita , Patch panel , louboutin , 123 , cheap lotro gold , dfdg , uggboots , ugg boot , kisspuma e uggs on sale Comentaram









Ate mais
Leonardo França