Pessoas,
Comunico que a partir de hoje não estou mais à frente do ASDEVs e deixo a bola apenas com o Jay Moretti.
Foi muito legal a experiência como moderador do grupo e continuarei no chat do msn (grupo1337489@groupsim.com) junto com os vários bons desenvolvedores tirando dúvidas e ajudando quando puder.
Grande abraço,
Filipe Cunha
Muitos desenvovledores da Plataforma Flash já criaram posts sobre a questão do Flash Player e Flex SDK.
Amanhã às 21h, reuniremos todas essas opiniões no endereço https://experts.adobeconnect.com/_a204547676/mesa_redonda/ e todo mundo está mais do que convidado.
Confira quem vai participar.
Stefan Horochovec
Vicente Maciel Jr
Jay Moretti
Fabio Vedovelli
Bruno Ribeiro
Joao Felipe (Justin Bieber)
Lauro Santos
Tofinha
Igor Costa
Odair Seixas
Alex Affonso
Fabio Flatschart
Ystallonne Alves
Neto Leal
Filipe Cunha
Então você se assustou com as declarações da Adobe semana passada, mas você sabe dizer porque exatamente?
Não vou discutir aqui se a Adobe fez “a coisa certa” ao descontinuar o Flash Player para mobile por dois simples motivos:
1) A decisão já foi tomada
2) Isso é papo para o dia 19/11 no #FlashCampSP.
Para quem não terá saco de ler o post até o final, já coloco aqui minha conclusão:
Sim, você terá que aprender HTML5 (e agregados) tão bem quanto você sabe Flash/Actionscript se você quiser continuar desenvolvendo front-end para internet e se você está puto com isso, terá dois trabalhos: Um de ficar puto e outro de deixar de ficar.
Vamos ao título do post: A Adobe não matou o Flash apenas quer definir um lugar para ele.
Sejamos muito francos. Quem aqui já pensou em como seu site/aplicação, desenvolvido para o browser do desktop, ficaria no celular? Nós já ficamos putos em ter que pensar nas diferentes resoluções de monitores, layouts fluidos, resoluções mínimas, bla, bla, bla, quanto mais na tela do celular, que pede um projeto totalmente diferente.
Mesmo trabalhando com a plataforma Flash (entre desenvolvimento e design) há +-8 anos, nunca usei o fato do meu Android rodar Flash Player no browser para outra coisa que não fosse sacanear quem tem iPhone, pelo simples fato de que entrar em sites feitos em Flash no browser do celular nunca lembrou, nem de longe, a experiência que tenho no desktop por 2 motivos:
- A performance do Flash Player no dispositivo móvel é muito menor do que no desktop e segundo o post do Mike Chambers, não estava nem próximo de se igualar.
- Tamanho da tela do celular é tão menor que o monitor que apenas dar zoom na tela ou colocar uma série de if/else if na programação não resolve. Tem que ter outro desenvolvimento, com uma leitura do projeto totalmente diferente, o que lembra a época das trevas de criar sites na versão HTML e na versão Flash.
Por muito tempo houveram coisas na internet que somente o Flash pôde oferecer ou oferecia de uma forma muito mais fácil, tanto para usuários como para desenvolvedores, como áudio, vídeo e animações vetoriais, etc.
Surge o HTML5 prometendo fazer algumas coisas que até então só o Flash fazia (e faz, quardada algumas proporções) sem depender de plugins, contudo que você tenha os browsers mais modernos para poder renderizar tudo corretamente.
Essa semana ouvi bastante de pessoas que fizeram sua carreira em cima da Plataforma Flash, coisas do tipo:
- Eu já sou bom o suficiente com o Flash, vou ter que recomeçar do zero com HTML5?
- Eu estava em um ambiente tão confortável (Flash Player) vou ter que voltar para guerra dos browsers?
- Voltar a programar em javascript depois de trabalhar com AS3 por tanto tempo é um puta retrocesso (Essa é minha).
- Porque eu não ouvi minha mãe e estudei Direito ou Medicina??
Esse tipo de sentimento de alguns na comunidade Flash somado aos comentários de pessoas que se dizem jornalistas e adoram anunciar que “O Flash morreu” sem nem saber de onde veio o tiro e ao total despreparo da Adobe em fazer os anuncios da semana passada, causaram uma boa bagunça na cabeça de algumas pessoas, principalmente de quem está começando na área e de lá até aqui não teve um dia que não viesse algum aluno/ex-aluno perguntar se vale apenas continuar aprendendo AS3.
Vamos aos fatos:
1) Adobe parou de investir esforços no FlashPlayer para dispositivos móveis
Motivos:
Segundo a Adobe, é muito caro manter uma equipe com foco no desenvolvimento do Flash Player para dispositivos móveis e o retorno em cima desse investimento era quase zero.
A Adobe viu que as pessoas não consomem aplicativos, de qualquer natureza, nos browsers e sim como apps, baixadas na App Store do seu dispositivo (Apple App Store, Android Market, Blackberry App World, etc).
E agora?
Segundo a Adobe, eles continuarão a investir no desenvolvimento do Adobe AIR, o que significa que você poderá continuar a desenvolver em Flash/Actioncript para dispositivos móveis, mas ao invés de colocar a aplicação no seu servidor, terá que empacota-lá e envia-lá às App Stores da vida e ao invés do usuário entrar no seu endereço no browser, ele vai baixar aquela aplicação para o celular/tablet.
2) A Adobe continuará a investir no Flash Player para browsers desktop e no Adobe AIR para mobile.
Motivos:
Como já disse, tem coisas que o Flash faz que o HTML5 já faz diretamente no navegador, sem necessidade de plugin (Flash Player), mas tem coisas que mesmo quando a especificação do HTML5 estiver finalizada, ele não fará nem de longe.
A versão 11 do Flash Player já oferece possibilidades de fazer coisas na internet que antes nem sonhavamos (basta ver os vários exemplos de Stage3D, suporte à joystick, entre outros).
A Adobe já anunciou que está trabalhando na versão 12 do Player para desktops e acaba de lançar a nova versão do Adobe AIR
E agora?
Porém a Adobe “sugeriu” uma mudança no escopo do uso do Flash que é para entrega de vídeo de uma forma que o HTML5 não pode, criação de games e desenvolvimento de Apps para mobile.
Eu disse que a Adobe “sugeriu” porque uma vez que o player continuará em desenvolvimento, tecnicamente, nada te impede de continuar a usar o Flash para desenvolver um site inteiro (por exemplo), como já é feito hoje em dia.
Mas não comemore ainda!
O fato de você poder fazer tecnicamente não quer dizer que você vá fazer, pois outras razões influenciam nessa decisão, como desde o cliente que ouviu falar que o Flash morreu e não quer que você faça aquele freela em uma tecnologia “morta”, ou seu chef, que muitas vezes não entende absolutamente nada do que você faz, mas ouviu em algum lugar que não é legal usar Flash, até que realmente o Flash não seja a melhor tecnologia para um determinado projeto.
3) Adobe vai investir em ferramentas que facilitem a vida ao desenvolver com HTML5
Motivo:
O HTML5 é aplamente suportado pelos dispositivos móveis. Novamente, segundo Mike Chambers, o HTML5 é hoje para os browsers de dispositivos móveis o que o Flash Player é para os browsers de desktops.
O Flash Player para mobile já não era lá essas coisas (vamos combinar né?) então a Adobe parou seus esforços em tentar fazer o plugin no mobile ter o mesmo rendimento dos desktops para focar em fazer melhores ferramentas que facilitarão a sua vida.
Outro anuncio que fez a comunidade da Plataforma Flash temer pelo futuro da tecnologia, foi que a Adobe cada vez mais portará recursos do Flash para o HTML5. Nada menos esperado já que eles anunciaram que vão investir pesado na tecnologia.
Isso não quer dizer que o HTML5 SERÁ o Flash, nem mesmo que o substituirá totalmente, mesmo por conta das suas arquiteturas que são muito diferentes.
Ao que tudo indica, nada impede (e é bem provável) da Adobe fazer com que a IDE do Flash dê saída para muita coisa em HTML5…
E agora?
E agora meu amigo… ou você aprende HTML5 para continuar desenvolvendo os front-ends seja na sua agência seja nos seus freelas ou você continua apenas com seu conhecimento de Flash/Actionscript e se concentra no novo escopo que a Adobe quer dar p/ ele, vídeo, games e Apps para mobile (se é que essa moda vai pegar).
E o futuro?
Continuo apostando na Plataforma Flash, não apenas por gostar muito de trabalhar com ela e pelo que ela me permite fazer como desenvolvedor, mas porque em nenhum momento a Adobe disse que a plataforma morrerá e eu também não vi nada que me levasse a crer nisso.
A Adobe errou absurdamente em não dar a devida importância a esse comunicado. Perderam a chance de fazer um evento para explicar as coisas, por exemplo, dando chance para os jornalistas fazerem as perguntas que aos poucos foram se esclarecendo ao longo da semana. Assim evitariam várias especulações e conclusões infundadas de quem já não simpatiza com Flash.
Não é questão de esperar para ver o HTML5 vai vingar ou não… já vingou! E se você ainda está puto com isso, está na hora de deixar de ficar não acha?!
Acho que a comunidade da Plataforma Flash está fazendo muito #mimimi em cima disso, alguns por falta de informação, por medo de perder o posto de “único desenvolvedor de coisas legais da equipe” ou por preguiça/frustação de ter que voltar a mexer com HTML, CSS, javascript (porque na maioria das vezes, esse cara também já brincou com isso) e voltar p/ esse terreno bizarro que é a guerra dos browsers (com o Flash Player a gente não tem que se preocupar muito com isso).
Ao meu ver, o profissional de Flash continuará a ser muito solicitado por um bom tempo, pois longe de morrer, por muito tempo existirão coisas que somente o Flash/Actionscript poderá fazer ou fará de uma forma muito mais fácil e ou com melhor performance que o HTML5.
Mas o pulo do gato é você conhecer muito bem as duas tecnologias, seus poderes e limitações e saber quando usar o que e principalmente o que os dois podem fazer juntos. Na verdade, o cara que hoje só se limita ao Flash, já deveria rever essa postura há muito tempo!
É uma frase batida, mas totalmente válida: Temos que nos apegar à soluções e não à tecnologias, por mais passional que seja a comunidade do Flash (me incluo nisso).
Se você trabalha com internet e não tem disposição para estudar cosias novas, sempre dá tempo de mudar de profissão.
Para esclarecimentos sobre as mudanças com o Flex, passo a bola para o Mário Júnior, Janderson FC e Igor Costa que já escrevem/gravaram bastante coisa à respeito.
O primeiro fato ao mover objetos com seno e cosseno e saber como funciona os ângulos no flash.

O segundo fato e que sempre precisamos converte o ângulo em radiano.
O terceiro fato e termos que ter um valor para o raio desse ângulo.
Observações:
O cosseno movimento objeto apenas na horizontal, ou seja, no eixo x.
O seno faz a movimentação no eixo y, ou seja, apenas na vertical.
Então, agora vamos abrir o Flash e criar um arquivo do tipo “ActionScript 3.0″ de 500px de largura por 500px de altura a 30 fps. Você pode criar o arquivo do tamanho que preferir.
Com a ferramenta “oval toll” ou pressionando “o” criei um círculo branco, e pressione f8 para converte-lo em Movie Clip com o ponto de registro no centro. Também definir que a classe responsável por esse círculo vai ser “Ball” isso possibilita que eu adicione esse círculo no palco por código.

Observe que na biblioteca está o movieclip que acabamos de criar e seu “linkage” é “Ball”. Se você não estiver visualizando a biblioteca pressione “f11″.
Se o círculo criado estiver no palco click sobre ele e pressione “Delete” para que seja excluído.
Pressione “f9″ para que abra a janela “Actions” é onde vamos inserir nosso código.
var ball:MovieClip = new Ball(); //instanciando o objeto criado var posX:Number = stage.stageWidth * .5; //capturando metade do palco na horizontal var posY:Number = stage.stageHeight * .5; //capturando metade do palco na vertical //posicionado e adicionando no centro do palco ball.x = posX; ball.y = posY; addChild(ball);
Apenas adicionei o objeto no palco, ele ainda não tem nenhum movimento. Para adicionar movimento objeto, vou utilizar o evento “ENTER_FRAME” esse evento é atualizando de acordo com o fps definido. Ou seja se você definiu com 30 fps a função responsável por esse evento vai ser chamada 30 vezes por segundo.
Vamos definir também, o raio e o ângulo de movimento. Como não vamos trabalhar com o ângulo diretamente, utilizaremos uma fórmula que vai converter o ângulo em radiano. Que é o seguinte: ângulo multiplicado por (Math.PI / 180)
import flash.display.MovieClip;
import flash.events.Event;
var radius:Number = 50;
var angle:Number = 0;
var ball:MovieClip = new Ball(); //instanciando o objeto criado
var posX:Number = stage.stageWidth * .5; //capturando metade do palco na horizontal
var posY:Number = stage.stageHeight * .5; //capturando metade do palco na vertical
//posicionado e adicionando no centro do palco
ball.x = posX;
ball.y = posY;
addChild(ball);
//adicionando o evento que vai atualizar a posição de ball
ball.addEventListener(Event.ENTER_FRAME, updateBall);
function updateBall(e:Event):void
{
var radians:Number = getRadians(angle);//converteno o ângulo em radiano
ball.x = (Math.cos(radians) * radius) + posX;
ball.y = (Math.sin(radians) * radius) + posY;
angle += 10; //incrementando o ângulo
angle %= 360; //o resto da divisão do ângulo por 360, assim esse valor não ultrapassa 360
}
function getRadians(angle:Number):Number
{
return angle * (Math.PI / 180);
}
Nas linhas 23 e 24 é onde acontece os cálculos referente a nova posição. Utilizei os métodos Math.cos e Math.sin para calcular o cosseno e o senno, passei como parâmetro o valor do ângulo convertido em radiano e multipliquei pelo valor do raio. O ângulo determina a direção em que o objeto vai traçar e o raio determina a velocidade com que o objeto vai traçar a direção!
Faça alguns teste alterando o valor do ângulo, raio e o valor com que o ângulo é incrementado.
Observação:
O diâmetro do movimento de “ball” é 2 vezes o valor do raio, sendo assim 2 * radius = 100.
Você pode movimentar “ball” apenas na direção x ou y comentando as linhas 22 e 23.
Você pode usar valores negativos para o valor do ângulo.
Exemplo: -90 que seria exatamente o mesmo que 270.
Na próxima etapa desse tutorial, vou apresentar alguns exemplos práticos que utilizei na criação de uma game.
Valew galera.
Dia 19/11 acontecerá o Flash Camp SP, nos auditórios da Impacta em São Paulo.
A agenda do evento conta com Lee Brimelow e Paul Trani, evangelistas da Adobe US para a plataforma Flash e vários nomes nacionais de peso, como Arthur Debert, Lucas Dupin, Janderson Cardoso, Leon Kulikowski, Gabriel Peart e Stefan Horochovec, além de Claus Wahlers, um cara que já programava antes de você saber o que é um computador.
Os temas vão desde games em Flash, AIR para mobile e devices até arte generativa com HTML5, divididos em 6 palestras e 4 workshops em um dia inteiro dedicado a fazer você melhorar o desempenho e qualidade das suas aplicações!
Porque você deve sair de casa em um sábado e participar do evento?
1) O Brasil já tem tão poucos eventos dedicados ao desenvolvimento de aplicações RIA que se você tem algum contato com projetos desse tipo, não deveria nem precisar de motivos para se convencer!
2) A agenda do evento foi montada para que todos tirem proveitos das palestras/workshops, independente do nível de conhecimento.
3) O custo do evento é menor do que aquele jantar com a namorada no Japonês. Certamente é melhor o jantar ao invés ver um monte de nerd o dia todo, mas, a não ser que sua namorada seja sua chefe ou você seja Chef de outro restaurante , o japonês não te ajudará profisisonalmente
4) O evento encerra em uma mesa redonda com todos os palestrantes. Não é todo dia que se tem a chance de fazer perguntas diretamente para essas personalidades. Quer saber o que esses caras fizeram para chegar onde estão? É só perguntar.
5) Quer trocar de emprego ou está precisando de freela?? Lá estarão vários outros profissionais da mesma área que certamente conhecem uma empresa procurando alguém para contratação ou freela.
6) Quer mais motivos? Aparece lá na Impacta dia 19/11 que nós te mostramos.
Mais informações em asdevs.com.br/flashcampsp
Vimos no último post sobre SEO e FLASH como funciona a indexação de sites pelo Google, e conforme vimos no link onde o prórpio Google anúncia melhorias na indexação do Flash, é muito importante disposnibilizarmos um Sitemap em XML que deve ser hospedado na raiz (root) do website para facilitar o acesso do Google aos conteúdos de nosso site.
Segue abaixo um exemplo de Sitemap XML para ser usado em um site em Flash que usa SWFADdress e SWFObject.
</?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.seusite.com.br/#/home/</loc>
<lastmod>201-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>http://www.seusite.com.br/#/contato/</loc>
<lastmod>201-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Vejamos as partes e nós mais importantes deste XML:
</?xml version="1.0" encoding="UTF-8"?>
é o cabeçalho do documento XML.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
encapsula o XML e mostra a referência do protocolo
<url>
Nó inicial para entrada das outras tags.
<loc>http://www.seusite.com.br/#/contato/</loc>
Aqui você coloca a URL da sua página, note que o endereço com “#” é justamento o endereço que nos dá o retorno do SWFADdress para dentro do conteúdo de determinada página, neste caso contato.
Neste nó do XML, podemos ter até 2,048 caracteres.
<lastmod>201-01-01</lastmod>
Aqui inserimos a data de última modificação da página. Atentar para o formato ANO/MÊS/DIA, já que é o “W3C Datatime format”.
<changefreq>monthly</changefreq>
Neste nó colocamos com que frequência a página é alterada, é aconselhado colocar o valor correto neste parâmetro, para evitar que ela não seja ignorada pelo crawler do motor de busca.
Os valores podem ser os um dos seguintes: always,hourly,daily,weekly,monthly,yearly,never.
<priority>1.0</priority>
Na tag acima temos onde darmos a prioridae para a URL. Esta prioridade vai de 0.0 até 1.0. O valor padrão, quando este parâmetro falta, é de 0.5.
Obviamente, que se tivermos mais páginas no site, tanto maior será a quantidade de nós que terá este XML. É adequado fazer um nó para cada página no site.
Para mais informações sobre este protocolo, você pode acessar o link abaixo:
http://www.sitemaps.org/protocol.php
O próximo passo é acessar e utilizar a ferramenta de webmaster do Google.