← Autoload no PHP 5
Alchemy = C/C++ com ActionScript 3.0 →
Posted on May 20, 2009 by Leonardo França 16 Comments
As vezes você precisa que seu aplicativo rode em "background" bastando acessa-lo por um icone no systray do seu computador. O Adobe AIR suporta essa funcionalidade, sendo possivel usar a interação tanto com o botão direito quanto com o botão esquerdo do mouse.
Vamos pegar uma imagem qualquer para nosso exemplo, como essa:
Carregaremos a imagem em nossa aplicação usando a classe Loader, assim que o carregamento estiver completo, sera adicionando no system tray usando a propriedade NativeApplication.nativeApplication.icon.bitmaps.
icon.load(new URLRequest("brick.png"));
Executando a aplicação, veremos a imagem ao lado do relogio do windows. Vamos adicionar um tooltip:
systray.tooltip = "to aqui ô!!! o/";
Rodando o programa veremos o icone aparecendo no system tray, ao passar o mouse por cima, o tooltip.
Agora vamos implementar a ação para quando o usuário clicar com o botão direito do mouse. Usaremos o a classe NativeMenu e NativeMenuItem, é bem parecido com o que já usamos no Flash Player. Vamos instanciar a classe e adicionar um evento para a ação de select:
var aboutCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("blablabla"));
var webCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Ir para o blog"));
webCommand.addEventListener(Event.SELECT,goURL);
iconMenu.addItem(new NativeMenuItem("",true));//separator
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit")); exitCommand.addEventListener(Event.SELECT, closeApp);
Agora verificando se o sistema operacional suporta system tray:
http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7dcc.html
Muito obrigado pelo tutorial! Vai me ajudar bastante! =D
Só um detalhe. Se vc quiser complementar sua informação, eu fiz uma verificação se o SO é Mac. Se for, adiciono um icone de 128x128px pois ele será mostrado no dock. Se for windows, insiro o icone padrao de 16x16px.
// Verifica se é MacOS
icon.load(new URLRequest("assets/images/icons/icone128x128.png"));
icon.load(new URLRequest("assets/images/icons/icone16x16.png"));
Boa Ved, não tinha testado ainda no mac ;o)
May 23, 2009 at 18:42
May 26, 2009 at 12:22
boa dica, muito útil, vlw!
Boa noite ! Queria deixar a seguinte questão.. Porque razão num video flashchat , apos uns dias de utilização ao entrar um nick ou ao sair do chat , não conseguimos escrever durante breves segundos e apos o server enviar um pedido por E-mail aos serviços do Flash media server para me fazerem reset o chat deixa de bloquiar durante uns dias . o erro é do flash media server ou da configuração do chat?? Antecipadamente o meu Obrigado
Dificil responder assim, entra ai uma serie de fatores, como o servidor esta configurado, a banda da internet usada, erro do programador etc
ola grande leonardo que acompanho a anos, eu tenho uma duvida simples ate, eu to fazendo um navegador tem como eu clicar com o botao direito do mouse e abrir link em outra aba???
mal se for easy de mas é que to novo nisso ainda.
Olá, li o seu tutorial, e já li outros similares, mas ainda estou com uma dúvida, seria possível restaurar o aplicativo do system tray, com um comando do teclado(hotkey) algo como o google desktop faz(duplo ctrl)?
June 28, 2009 at 23:02
Ola, obrigado pelo prestigio! 😀
Quanto a sua pergunta, possivel sim, da um trabalhinho mas é possivel sim, assim que sobrar um tempo, posso deixar um exemplo no blog 😉
June 28, 2009 at 23:42
É possivel sim, basta implemantar o evento de restaurar a janela com o evento do teclado(KeyboardEvent) com um contator simples.
caso queira, posto um exemplo 😉
Primeiro parabéns pelo blog, conteúdo simples e objetivo, muito bom mesmo.
Fiquei com uma dúvida, isso funciona da mesma forma no linux?
July 2, 2009 at 12:48
Ainda nao testei no linux, vou ver se consigo fazer um teste, mas em teoria deve funcionar da mesma forma 😉
Olá Leonardo..
Muito bom o post.. contudo tenho uma dúvida.
Seria possível a janela da aplicação ficar visível mas não aparecer na taskbar?
No Windows seria mais ou menos como Crtl+R, o famoso "Executar", .. a janela está visível mas não é representada na barra de tarefas..
é possivel sim, vc vai usar a mesma tecnica para esconder a janela
É costume ao se desenvolver implementando Design Patterns, a criação de um arquivo por classe e vários packages para organização...