ago 19

Baixe os arquivos fonte do aquário 3d aqui.

Uma das minhas maiores diversões ultimamente tem sido explorar as possibilidades do Papervision3D (como essa brincadeira com o aquário da Cabana aí de cima). Já está no forno até o primeiro site cabanudo que explorará um pouco da ferramenta. Por hora, quero compartilhar com vocês importantes fontes de informação que estão facilitando muito a minha vida. Vale o clique!

Blog Oficial do Papervision3D
A referência das referências. Tudo começa aqui.

Como instalar
Post do Cabanoblog. Muito bem explicadinho e em português!

Tartiflop
Passo-a-passo pra ficar por dentro.

Mad Vertices
Excelentes Tutoriais

Zupko.info
Blog de um dos desenvolvedores com muitos arquivos fonte.

Barcinski-JeanJean
Dois programadores que explanam.

PV3D.org Arquive
Mais um blog de desenvolvedor da ferramenta. Lá você encontra outros muitos links interessantes.

EveryDay Flash
Muitos exemplos de como usar a criatividade com Papervision3D.

Ramdom Lucubrations
Entenda como dimensionar e posicionar em 3D.

PV3D Zone
Mais bons exemplos.

Dehash
Muitos arquivos fonte. Excelente.

Se tiver alguma outra sugestão de link, deixe um comentário.

Pablo Cabana

jul 02

Aqui deve entrar o cubo_bacana. Faltando o Flash Player?

Ok. À primeira vista o Papervision3D pode parecer apenas algo meio WoW, que só serve pras coisas na web ficarem bonitinhas e com um visual 3D a lá iPhone. Mas isso é um engano. As engines 3D, como o próprio Papervision3D, o Away3D e até mesmo o Astro (o novo Flash Player) aos poucos vão modificar o modo como acessamos a informação digitalmente, pois ganharemos novas dinâmicas de disposição de conteúdo, permitindo que tudo fique, além de extremamente amigável aos olhos, interativo a um nível antes impossível. Sem lenga-lenga pra carregar sites pesadíssimos, sem exigir muito das máquinas, essas engines conseguem usar programação para gerar dinâmicas surpreendentes através de códigos.

Tendo esta crença como base dos meus atuais estudos, estou namorando o Papervison3D para conquistá-lo como ferramenta de trabalho (por enquanto não posso me dar ao luxo de ganhar dinheiro com isso pois não domino perfeitamente a engine e não quero oferecer gambiarras aos meus clientes) e ao mesmo tempo finalmente migrar para ActionScript 3.0. Obviamente, uma das minhas principais referências é o magnífico gotoAndLearn, mantido pelo profeta da interatividade Lee Brimelow.

Foi lá que eu estudei dois tutoriais. O primeiro me fez entender como construir um cubo 3D interativo através do Papervision3D e o segundo me mostrou como é incrivelmente mais simples lidar com arquivos XML usando AS3 ao invés de AS2. Então me inspirei pra tentar meu primeiro projeto Open-Source, o Cubo Bacana.

O Cubo Bacana nada mais é do que um cubo 3d que mostra as últimas 6 notícias de qualquer blog, flickr ou qualquer site que gere RSS através de xml com a estrutura “channel-item-titleâ€, que é a usada pela grande maioria dos provedores RSS.

Existem algumas maneiras de usá-lo, dependendo do seu perfil. Se você é um nerd como eu e entende um pouco de Flash, pode baixar os arquivos fonte na página do Cubo Bacana e começar a fuçar tudo (é preciso ter o Papervision 3D instalado, veja como faze-lo aqui) para fazer uma customização completa. Só peço que em algum lugar haja um link pra página do Cubo Bacana.

Se você é um usuário comum que apenas quer ter o Cubo Bacana no seu site ou blog, basta recortar o código abaixo e colar no código do seu site ou blog com pequenas configurações. Onde aparece http://www.cabanacriacao.com/blog/feed, (aparece 2 vezes) você deve substituir pelo endereço de RSS das notícias que vai disponibilizar, e onde aparece #FFFFFF você deve substituir pela cor de fundo que desejar.

  1. <object width="200" height="220"><param name="movie" value="http://www.cabanacriacao.com/cubobacana/cubo_bacana_1.swf?link_feed=http://www.cabanacriacao.com/blog/feed"></param><param name="allowFullScreen" value="false"></param><embed src="http://www.cabanacriacao.com/cubobacana/cubo_bacana_1.swf?link_feed=http://www.cabanacriacao.com/blog/feed" type="application/x-shockwave-flash" allowfullscreen="false" width="200" height="220" bgcolor="#FFFFFF"></embed></object>

Outros códigos mais amigáveis são possíveis. Dê uma olhada na página do Cubo Bacana.

Veja os exemplos:

As últimas fotos do Flickr da minha amiga Julia Pina.

 

Aqui deve entrar o cubo_bacana. Faltando o Flash Player?

As últimas notícias do Brainsorm9

Aqui deve entrar o cubo_bacana. Faltando o Flash Player?

Pablo Cabana

jun 20

Acabei de ler no blog do Papervision3D sobre a ferramenta FotoViewr. Poucas coisas na web são, ao mesmo tempo, tão simples e tão visualmente ricas. Você entra no FotoViewr, escolhe o tipo de galeria, escreve o seu nome do Flickr (ou de algum amigo seu. Eu, que não tenho Flickr, fiz a galeria com as fotos da minha cônjuge Tárin e da minha amiga Julia), escolhe as tags das fotos para filtrar (uma pena não ser possível mesclar várias tags) e voalá! O FotoViewr cria uma galeria 3D alucinante pra nenhum iPhone botar defeito.

As galerias são construídas utilizando os RSSs gerado pelo Flickr mais as maravilhas 3D do Papervision 3D, do qual eu já falei aqui.

Além do problema com as tags, o outro defeito que eu encontrei foi eles não fornecerem um código “embed” pra permitir que se publique a galeria em outros sites ou blogs (assim como eu coloco os vídeos do YouTube aqui). Sem este tipo de ferramenta, a viralidade da marca FotoViewr perde trocentos por cento. Portanto, para ver a galeria da Tárin e da Julia, vocês vão ter que clicar nos links abaixo. Eles melhoraram isso, agora fornecem o código. Olha a galeria nova da Julia:

Galeria da Tárin

Galeria da Julia

Pablo Cabana

jun 06

Estamos no ar há menos de um ano, mas já estamos conquistando algum espaço entre os trilhões de blogs na web. O Antonio Beux, responsável técnico do website e aluno do curso de design da Faculdade da Serra Gaúcha indicou o Cabanoblog no seu “Blog de Blogs“. Valeu Antonio!

mai 08

Este é um detalhe que muita gente esquece na hora de construir um website. Quando clicamos com o botão direito em qualquer arquivo swf, normalmente nos surge um menu com opções do tipo “zoom in”, “zoom out”, etc. Este menu, que na maioria das vezes é inofensivo, pode, entretanto, arruinar a navegação e a experiência de alguns websites. Principalmente quando são em janela cheia, como é o caso que usei no site da Brazucah e do Bruno Latini. Além disso, é muito mais bacana um menu personalizado do que um monte de frase em inglês sem nenhuma ligação com o usuário. Em tempos de WEB 2.0, adequação nos mínimos detalhes é fundamental.

Eis abaixo o script. Já está com todos os comentários explicadinhos. Basta recortar o código abaixo e colar no painel de action script do primeiro frame do seu arquivo .fla.

//Primeiro definimos as funções que
  1. //queremos executar, que eu chamei
  2. //aqui de "pegarArquivos" e "gotoCabana".
  3.  
  4. function pegarArquivos () {
  5. getURL("http://www.cabanacriacao.com/tutoriais/customizar_menu.fla", "_blank");
  6. }
  7.  
  8. function gotoCabana () {
  9. getURL("http://www.cabanacriacao.com", "_blank");
  10. }
  11.  
  12. //Agora criamos um menu novo e desativamos os itens que já vem acoplados, como "zoom in", "zoom out", etc.
  13. //Lembrando que não há como desativar "About Flash Player 9" e "settings".
  14. //Criamos a variável "meuMenu" e dizemos que é um novo "ContextMenu"
  15. //Depois dizemos para os itens acoplados desaparecerem: "hideBuiltInItems".
  16. var meuMenu:ContextMenu = new ContextMenu();
  17. meuMenu.hideBuiltInItems();
  18.  
  19. //Criamos as variáveis que serão lançadas dentro do novo menu
  20. //e fazemos referências às funções que queremos puxar: "pegarArquivos" e "gotoCabana"
  21. //O que vai entre aspas é a frase exposta no Menu ao usuário final.
  22. var vaiArquivos:ContextMenuItem = new ContextMenuItem("Baixar os arquivos fonte.", pegarArquivos);
  23. var vaicabana:ContextMenuItem = new ContextMenuItem("Quem fez este tutorial bacana?", gotoCabana);
  24.  
  25. //Mandamos um "push" para literalmente "empurrar" as variáveis dentro da lista
  26. //de variáveis que o menu já tem
  27. meuMenu.customItems.push(vaiArquivos, vaicabana);
  28.  
  29. //Pra finalizar, lançamos o "meuMenu" no lugar do "menu" original.
  30. _root.menu = meuMenu;
  31.  
  32. //pronto!

Ah! Utilizei o excelente plugin Highlight Source Pro pra mostrar o código como aparece no Flash. Demorei pra achar um plugin WordPress que funcionasse bem e fosse simples de usar.

Pablo Cabana

abr 30

Conheci, através do excelente blog do Erick Souza a ferramenta Papervision 3D e descobri como ela é genial. Trata-se de um software open-source que, junto ao Flash CS3, gera interatividade 3D do mais alto nível, tudo através de código Action Script. Dá uma olhada nestes sites pra você entender do que eu estou falando:

In an ABSOLUT World

Whitevoid

O site do Papervision 3D traz um monte de exemplos e também mostra todo o desenvolvimento da ferramenta, inclusive um Wiki para ajudar o pessoal a usá-la. Contudo, a explicação da instalação é meio confusa. Tive que quebrar a cabeça um pouquinho até conseguir. Segue abaixo o caminho das pedras:

1 - Faça o download e instale um cliente SVN. Este é um programinha pra baixar os diversos arquivos do software e mantê-los atualizados. Eles recomendam o Tortoise. Faça o download aqui.

2 - Crie um pasta onde você vai colocar os arquivos do Papervision3D, entre nesta pasta, clique com o botão direito e clique de novo em “SVN checkout”. No box que abriu, cole este endereço: http://papervision3d.googlecode.com/svn/trunk/

3 - Aguarde o Tortoise fazer o download dos arquivos. São muitos, inclusive com vários exemplos bacanas.

4 - Abra o Flash CS3, vá em Edit>Preferences>Actionscript e clique no botão “Actionscript 3.0 settings”.

5 - No box chamado “class path”, clique no sinal de “+” e depois no alvo para escolher o diretório.

6 - Vá no diretório que você criou para fazer o download do Papervision3D e escolha a pasta “as3\trunk\src”  (atualizado para a versão 2.0 Great White Final)

7 - Está pronto e instalado. Abra um dos exemplos (na pasta “\as3\trunk\examples” há alguns) e tente publicá-lo. Se der tudo certo, é porque a instalação está OK.

Abaixo, o primeiro resultado dos meus iniciais estudos com a ferramenta. Cabanudos 3D.

Adendo 02-07-2008: Já saiu segundo resultado: aqui e aqui.

Pablo Cabana

abr 04

Baixe o arquivo fonte aqui.

Existem várias formas de alterar o cursor do mouse no Flash. A maioria delas usa “onEnterFrameâ€, o que significa que a cada frame o swf atualiza a posição do cursor. Daí já dá pra perceber a falha desse método porque se precisarmos usar um frame rate baixo, como 12, por exemplo, o cursor novo não fica totalmente fiel ao cursor normal. Pode-se argumentar que o uso do comando “updateAfterEvent†resolve isto, mas eu encarei um problema quando estava construindo o site da Brazucah. Ao utilizarmos gráficos complexos, que exigem grande processamento do CPU, a tendência é que o mouse fique tremido e pouco fiel. Saí estudando todas as possibilidades e finalmente encontrei a resposta, e ela se chama “setIntervalâ€. Com este comando, dizemos ao swf para executar uma tarefa de tempo em tempo, mas medindo este tempo em segundos, ao invés de utilizar os frames. O que eu fiz foi programar este tempo para 0.1 milesegundos (milesegundo é a medida de tempo utilizada pelo Flash, cada milesegundo é 1 segundo dividido por 1000) e mandar o swf atualizar a posição do cursor sempre que se completasse esse período. Ou seja, a todo instante.

Crie um novo arquivo no Flash, coloque o Movie Clip que você deseja que substitua o mouse no palco, clique nele e nomeie sua instância (no canto inferior direito, em baixo de “Movie Clipâ€) como “rato†(sem aspas).

Depois, no primeiro frame do filme principal, cole este código:

stop();
//De início, escondemos o mouse.
Mouse.hide();

//É preciso dar um nome para o “setInterval” e definí-lo como número
var Mudando:Number;

//Aqui você escolhe o período de tempo que “setInterval” executará
var tempo:Number = 0.1;

//Esta é a função executada a cada 0,1 milesegundo
function mudaMouse():Void {
//vc está dizendo para o seu movie clip acompanhar o x e o y do mouse
rato._x = _root._xmouse;
rato._y = _root._ymouse;

//Este comando auxilia na independência deste evente em relação ao que acontece no resto do seu filme
updateAfterEvent();

}
//Aqui está o setInterval. O “this” se refere a ele mesmo, “mudaMouse” é o nome da função a ser repetida e “tempo” é o período escolhido acima.
Mudando = setInterval(this, “mudaMouse”, tempo);

//Eu criei um outro Movie Clip chamado “imagem” e o coloquei como fundo do swf para brincarmos

_root.imagem.onPress = function() {
//ao clicar no fundo, o mouse muda de Cabana é Bacana para Bacana é Cabana
rato.gotoAndStop(2);
}

_root.imagem.onRelease = _root.imagem.onReleaseOutside = function() {
//ao soltar, dentro ou fora do MC “imagem” o mouse volta ao frame anterior
rato.gotoAndStop(1);

}
_root.imagem.onRollOut = function() {

/*mandamos o mouse ficar escondido de novo, pois se apertarmos o botão direito
o menu do Flash puxa o mouse normal novamente*/
Mouse.hide();
}
_root.imagem.onRollOver = function() {

/*mandamos o mouse ficar escondido de novo, pois se apertarmos o botão direito
o menu do Flash puxa o mouse normal novamente*/
Mouse.hide();
}

Fácil né? Se tiver dificuldade, deixa um comentário.

Pablo Cabana

fev 17

Clique aqui para baixar o arquivo fonte.

Existem várias maneiras de mover objetos via Action Script, mas a que eu mais costumo usar, pela facilidade de adaptações, é com “onClipEvent (enterFrame)â€. Usei isso pra mover as barrinhas do site do Bruno Latini. Esta função significa que a cada frame, de acordo com seu frame rate, seu filme irá executar as funções que você determinar. Você pode, por exemplo, dizer que a cada frame seu objeto ganha 10 pixels em x, e isso o fará andar para direita.

Já fez o download do arquivo fonte? Com ele aberto, clique no Cabana é Bacana e veja o Action Script (F9).

onClipEvent (enterFrame) {
var tempo:Number = 12;

/* Esta sentença “x += y†é uma abreviação que o Action Script usa para dizer:
“x passa a ser o x antigo mais y”. O “tempo” é que dá o efeito de easing.
Quanto maior, mais lento será o movimento. E cada botão modificará a variável
“final”. */

//Este para posição
this._x += (finalX-this._x)/tempo;
this._y += (finalY-this._y)/tempo;

//Este para tamanho
this._xscale += (finalXscale-this._xscale)/tempo;
this._yscale += (finalYscale-this._yscale)/tempo;

/*Este para rotação. Eu usei “tempo/3″ para que a rotação aconteça mais rápido do que a posição. Sem isso, pode acontecer do objeto tremer no finalzinho do movimento. */
this._rotation += (finalRotation-this._rotation)/(tempo/3);

//Este para transparência
this._alpha += (finalAlpha-this._alpha)/tempo; }

Este movie clip ganhou o nome de instância de “cabanabacana†para que suas variáveis possam ser referenciadas nos botões. Agora clique no botão “Tudo†(no quadrado preto atrás do texto) e veja a action nele.

on(release){
cabanabacana.finalXscale = 100;
cabanabacana.finalYscale = 100;
cabanabacana.finalX = 240;
cabanabacana.finalY = 125;
cabanabacana.finalRotation = 0;
cabanabacana.finalAlpha = 100;
}

Assim nós estamos dizendo para o movie clip se mover nestes parâmetros. Basta mudar os valores para colocar o Cabana é Bacana onde, com o tamanho, rotação e transparência que você quiser. Não falei que é simples?

Clique aqui para baixar o arquivo fonte.

Pablo Cabana

jan 27

Eu não sabia que isso era possível, até que um dos nossos clientes, Nilton Lessa, sócio da Moleque de Idéias, chegou com o desafio. Nós havíamos criado uma pequena ação de web-marketing na qual crianças recebiam folders onde havia uma charada. Com a charada respondida, entravam no site para acessar o conteúdo secreto. E veio o Nilton: “Como podemos saber quantas pessoas responderam corretamente a charada no site?â€. Eis o pepino: o site era todinho em Flash.

Aí o próprio Nilton veio com a solução (isso que é cliente porreta!), o Google Analytics oferece um código mutíssimo simples que computa eventos em Flash. Mais uma vez, só pra variar, a Google me surpreendeu positivamente. Veja como é fácil.

Antes de mais nada, você deve estar usando o script do Analytics no seu site. Entre em www.google.com/analytics, cadastre seu site e coloque o código gerado imediatamente antes do tag </body> em todas as páginas onde quiser gerar estatísticas.

Depois basta colocar uma ação de getURL no evento Flash que você quiser rastrear. Desse jeito (coloquei onRelease mas pode ser qualquer tipo de evento):

//se você está usando a versão velha do Analytics:

on(release){
getURL(”javascript:urchinTracker(’/tutorial_analytics/achou_bacana’);”);
}

//se você está usando a versão nova do Analytics:

on(release){
getURL(”javascript:pageTracker._trackPageview(’/tutorial_analytics/achou_bacana’);”);
}

Vocês viram a pergunta no começo deste tutorial? Então, eu coloquei um script desse nos dois botões. Se você clicar no primeiro surgirá nas estatísticas um acesso à página /tutorial_analytics/achou_bacana, caso clique no segudo, aparecerá /tutorial_analytics/achou_sacana. Aí você configura com a página imaginária que bem entender.

Divirta-se.

Clique aqui para baixar o arquivo fonte.

Pablo Cabana

jan 14

 

Baixe os arquivos para acompanhar (utilizei o Flash CS3 mas salvei em versão 8)

Este é meu primeiro tutorial Flash, espero que goste. Vou ensinar a fazer botões (e o que mais a imaginação quiser – utilizei os mesmos princípios tanto em www.upper-agency.com e www.ravimidia.com) que retornam na timeline do Flash, como no bannerzinho acima.

A primeira coisa é definir o seu layout. No meu caso eu escolhi um bem simples: “Cabana†em um fundo preto. Já pensando, é claro, em como será a animação.

Crie um novo arquivo flash. Eu ainda estou usando Action Script 2. Por isso, se quiser seguir este tutorial, escolha esta opção. Vá em “Insert†– “New Symbol†– “Movie Clipâ€. O nome que dei foi Cabana é bacana. Esta será a sua animação. No meu caso, a animação é “Passe o mouse†indo pra baixo e o “Cabana é bacana†aparecendo. Use a criatividade e faça a sua própria.

Olhe abaixo as minhas camadas. A animação está nas três camadas da máscara, uma mascarando outras duas. As outras três camadas você vai criar junto comigo.

 

camadas

Crie a camada “actionâ€, abra o painel de Action Script (F9) e coloque o código “stop();†(sem aspas) na primeiro e no último frame de sua animação. Isto impede que a animação comece sozinha e também faz com que ela pare quando chegar ao fim.

Crie a camada “botão ação†e nela desenhe um quadrado do tamanho do seu botão. Este quadrado será a área de ação do seu botão. No meu caso eu coloquei um do tamanho do swf para que a animação funcione em qualquer lugar onde o mouse estiver.

Crie a camada “retornadorâ€. Aqui está o pulo do gato. Vamos criar nesta camada um movie clip que fará com que a animação retorne. Mais uma vez, vá em “Insert†– “New Symbol†– “Movie Clipâ€. Dê o nome de retornador.

 

camadas retornador

 

Você deve colocar o nome de instância deste movie clip retornador como “retornador_mc†(sem aspas)

instância retornador

Crie três keyframes e coloque em cada um as seguintes ações (respectivamente):

Frame 1: stop(); //isto impede que este movie clip comece a rodar sozinho e o mantém parado quando não precisarmos dele

Frame 2: _parent.prevFrame(); // _parente indica “o movie clip pai deste onde está o código†e prevFrame() faz este movie clip pai ir para o frame anterior

Frame3: gotoAndPlay(2); // isto faz com que este movie clip volte para o frame 2 e novamente jogue o movie clip pai para o frame anterior. Ou seja, a animação que você criou vai retornando até encontrar o começo novamente.

Para finalizar, volte para a cena principal e coloque este código no movie clip principal:

on(rollOver){

this.retornador_mc.gotoAndStop(1);

this.play(1);

}

// ao passar o mouse em cima, mandamos o retornador ficar parado sem fazer efeito e mandamos a animação rodar

on(rollOut){

this.retornador_mc.gotoAndPlay(2);

}

//ao tirar o mouse, mandamos o retornador começar a fazer sua “mágicaâ€. Ele vai para o frame 2 e começa a fazer com que a animação retorne.

Prontinho. Baixe os arquivos fonte e divirta-se.

Qualquer dúvida ou sugestão, deixe um comentário bacana.

Pablo Cabana