DClick

Problema de foco com Flash/Flex no Firefox

Categorias relacionadas: Flash Player, Flex
Twitter!

Estou trabalhando em um projeto atualmente em que o cliente solicitou que o aplicativo pudesse ser controlado por teclas de atalho. Elas funcionam perfeitamente no Google Chrome e no IE mas, por algum motivo, o Firefox não trabalha muito bem com o foco em objetos "embedados" as vezes.

Depois de muitos testes, encontrei uma maneira bem simples de "resolver" esse problema. Primeiro você precisa abrir sua aplicação em algum navegador e olhar o código fonte de página. Procure pela tag <object> e olhe o valor do atributo "id" dela. Se você estiver no Flex usando o template padrão, esse valor deverá ser o nome da sua Application. No meu caso esse valor é "index". Então escrevi essa linha em JavaScript para colocar o foco novamente no Flash:

JAVASCRIPT:
  1. document.getElementById('index').focus();

Para usar esse código em sua aplicação Flex sem precisar mudar nada no template, faça:

ACTIONSCRIPT:
  1. navigateToURL(new URLRequest("javascript:try{ document.getElementById('index').focus(); void(0); }catch(err){}"), "_self");
  2. algumComponente.setFocus();

Funcionará melhor se você tentar encontrar onde sua aplicação está perdendo o foco (ao abrir alguma popup, no meu caso) e colocar o código logo em seguida. Usei um try/catch para evitar problemas, como no caso do usuário abrir o SWF diretamente.

Espero que seja útil,
Abraços!

Por André Gil em 26/August/2010
Nenhum Comentário »


No Translations

Como desenvolver e debugar Flex no Google Chrome

Categorias relacionadas: Eclipse, Flex
Twitter!

Desenvolver e debugar aplicações Flex no Google Chrome as vezes pode dar um pouco de dor de cabeça. Por isso, vou mostrar para vocês como resolver alguns dos problemas mais comuns.

Configurando o Eclipse


Primeiro você deve configurar o Eclipse. Abra Preferences > General > Web Browser e selecione "Use external Web Browser". Então, clique em "New" e adicione "Google Chrome" usando a seguinte "Location":

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome

Suas configurações deverão ficar assim:

Se estiver usando o Windows, você deverá clicar em "Browse..." e encontrar o arquivo .EXE do Google Chrome, no local onde foi instalado.

Debug Flash Player


O Chrome tem seu próprio Flash Player, então mesmo se você instalar a versão de debug, pode ser que ela não seja usada pelo Chrome. Então primeiro, se você não tem o Player de debug, baixe ele.

Se você já instalou e reiniciou o Chrome, entre nesse endereço:

about:plugins

Se você reparar, vai ter duas versões do Flash Player instaladas. Uma delas, vai estar dentro das pastas do Chrome, e essa versão você deverá desativar. Mantenha a que você acabou de instalar. Vai ficar assim:

Update: Se você não conseguir desativar seus plugins, baixe o Chrome na versão de desenvolvimento aqui.

Depois disso, clique com o botão direito sobre o Flash de qualquer site e veja se você tem a opção "Show Redraw Regions". Se tiver, você já está usando o player de debug.

Problemas com Cache


Se ficar atualizando a aplicação o tempo todo, você pode ter problemas com o cache do Chrome. Como acho que não existe uma opção fácil para desativar o cache, criei um aplicativo para Mac que vai iniciar o Chrome com alguns parâmetros para remover o cache temporariamente.

Para usar, baixe o aplicativo, descompacte, e mova para a pasta Applications do Mac. Se quiser, você pode arrastar depois o app para o Dock do Mac para ter acesso rápido a ele:

Como o Chrome mantém uma instância inicial, você deverá iniciar ele pelo meu aplicativo caso não queira o Cache. Se você executar depois de já ter iniciado o Chrome, ele ainda vai manter o cache. Para ativar o cache novamente, basta fechar tudo e iniciar pelo link normal do Chrome.

Para usuários do Windows, basta copiar o atalho do Chrome, clicar com o botão direito na cópia, ir em "Propriedades" e adicionar esses parâmetros na linha de comando:

--disk-cache-size=1 --media-cache-size=1

O ícon preto do Chrome foi criado por GreasyBacon. Não deixe de conhecer os outros trabalhos dele.

Conclusão


É isso! O único problema que ainda tenho é ao usar a opção "Find in Language Reference". Se descobrir como resolver, atualizarei o post. Se você descobrir algo, não esqueça de deixar nos comentários.

Abraços!

Por André Gil em 10/May/2010
2 Comentários »


No Translations

A DClick apresenta o Agon

Categorias relacionadas: Notícias
Twitter!

Hoje a DClick é muito conhecida por causa do Blog. O Twitter também já é o que mais trás acesso para o nosso site. Sempre quisemos que as pessoas postassem mais, fizessem mais Screencasts e, principalmente, compartilhassem com os demais as coisas maravilhosas que criam. Por isso criamos o Agon. Uma maneira de estimular a recompensar as pessoas por agregarem valor à Empresa ao mesmo tempo em que desenvolvem grandes soluções para os nossos clientes.

Não posso deixar de mencionar o Eduardo Horvath (Designer Digital) e o Leonardo Manopeli (Arquiteto de Informação) que até aqui estão entre os que mais contribuíram com o desenvolvimento da versão "Alpha" do Agon e ao Rafael Martinelli e Rogério Martinelli, sócios fundadores da DClick, que deram todo apoio para este projeto interno.

Por Beck Novaes em 22/April/2010
19 Comentários »


No Translations

Processo Seletivo Estagiários 2010

Categorias relacionadas: Notícias
Twitter!

A DClick está iniciando um processo seletivo para estagiários. O candidato deve dominar as seguintes tecnologias:

NDS 3.0, VA 4.0, POP 4.0, AOSP 5.0.

Se você não entendeu nada desta sopa de letrinhas não se preocupe. Aqui vai uma descrição detalhada do que você deve dominar para ter boas chances de garantir uma vaga no nosso processo seletivo:

NDS 3.0: Noções de Desenvolvimento de Software
VA 4.0: Vontade de Aprender
POP 4.0: Proatividade Orientada à Pesquisa
AOSP 5.0: Autodidata Orientado a Soluções de Problemas

Ao contrário das siglas de TI os números não se referem as versões e sim ao peso que cada característica terá neste processo seletivo.

É desejável que o candidato esteja cursando alguma faculdade relacionada a Desenvolvimento de Software, mas isto não é impeditivo desde que o candidato domine o NDS 3.0.

Ah... o que você irá fazer? Veja este vídeo:

Os interessados devem enviar um currículo para: oportunidade@dclick.com.br

Por Beck Novaes em 20/April/2010
6 Comentários »


No Translations

Mário Júnior, bem vindo ao DClick Team!

Categorias relacionadas: Notícias
Twitter!

Quem trabalha com Flex e participa da comunidade deve saber quem é Mário Júnior. Seja na FlexDev, no seu blog, ou em apresentações (BlazeDS: Integrando Java e Flex Facilmente) e treinamentos pela Web ele já mostrou sua competência no desenvolvimento de Rich Internet Applications.

Agora chegou a hora do Mário Jr. colaborar com o DClick Team. Desde ontem ele trabalha para a DClick na unidade do Rio de Janeiro.

Mário Júnior, em nome de todo o time da DClick desejo-lhe boa sorte.

Por Beck Novaes em 20/April/2010
8 Comentários »


No Translations

Groovy XmlSlurper & invokeMethod

Categorias relacionadas: Grails, Groovy
Twitter!

Grande parte do dinamismo do groovy se deve ao invokeMethod. Quando declarado, este método será executado caso um método inexistente for chamado no objeto em questão (Method missing no Ruby ou Python).

"invokeMethod(String name, Object args) is at the heart of Groovy metaprogramming.", Groovy Recipes

Leia o artigo completo »

Por Bruno Fuster em 30/March/2010
1 Comentário »


No Translations

Evitando problemas com Views e DTOs

Categorias relacionadas: Flex Components, Screencast
Twitter!

No seu aplicativo você tem um DTO cujo os dados são renderizados por diferentes Views (telas). Então, toda hora que o seu DTO muda, você percebe sua aplicação travada por uns segundos. Depois de um tempo você percebe que o problema é que mesmo as telas que estão invisíveis estão executando código de apresentação de dados com base no novo DTO. Bem, este é um problema comum quando trabalhamos com DTOs complexos e abusamos do Data Binding.

A notícia ruim é que se você não teve este problema ainda, um dia você terá. A notícia boa é que uma das maneiras de evitar este problema é utilizar o DTOViewHelper, componente disponibilizado neste screencast.

Alguns Frameworks atuais do Flex oferecem maneiras de resolver este problema, mas o DTOViewHelper é independente do Framework que você usa. Além disso, como pode ser visto no Screencast, você pode definir métodos auxiliares dentro do DTOViewHelper com o objetivo compartilhar lógica de apresentação de dados de DTOs entre diferentes Views (veja o exemplo da Data que mostra a string "Hoje" no Screencast).

Clique aqui para fazer o download do código fonte do exemplo "errado" (I could be WRONG).

Clique aqui para fazer o download do código fonte do exemplo "certo" (I could be RIGHT).

Por Beck Novaes em 4/March/2010
17 Comentários »


No Translations