Archive

Archive for the ‘ActionScript’ Category

Manipulação de audio

June 21st, 2010 No comments

Entre as novidades do Flash Player 10.1 existe a possibilidade de trabalhar a manipulação de som vinda do microfone. Dê uma olhada no estudo abaixo e deixe sua sugestão.

Ligue seu microfone e fone (é importante usar o fone), a webcam e dê uma olhada.

*Requer Flash Player 10.1

The Flash plugin is required to view this object.

Quer saber mais sobre transformações de audio, veja os links abaixo.

http://labs.hellokeita.com/

http://tv.adobe.com/watch/adc-presents/microphone-access-in-flash-player-101/

http://blog.onebyonedesign.com/?p=416

http://www.nickkuh.com/flash-flex-air/pitching-the-microphone-with-flash-player-10-1-beta/2010/03/

http://blog.andre-michelle.com/2009/pitch-mp3/

http://blog.onebyonedesign.com/?p=416

http://www.smart-page.net/blog/2009/12/30/sing-like-hal-with-the-flash-player-101/

Categories: ActionScript Tags: ,

Multitouch – Parte I

June 9th, 2010 No comments

Como (quase) todo mundo sabe, o Flash Player 10.1 e AIR 2.0 trazem suporte ao Multitouch, isso torna inúmeras possibilidades de interação viáveis. Ainda existe um grande problema que é a ausência de dispositivos preparados para este tipo de interação.

Para quem tem um Macbook Pro (entre outros dispositivos), já pode utilizar o Multitouch. No caso do Macbook, ainda existe a necessidade da aplicação estar rodando no AIR. Apesar disso, o desenvolvimento é extremamente simples, porém, é preciso muito cuidado com o que o dispositivo suporta.

Uma maneira simples de saber quais eventos o dispositivo suporta é usando:

trace(Multitouch.supportsTouchEvents, Multitouch.supportsGestureEvents);

Neste trace você poderá avaliar que tipo de eventos o dispositivo suporta, caso ele tenha suporte a Gestures, você ainda pode verificar quais eventos estão disponíveis.

trace(Multitouch.supportedGestures);

O código abaixo mostra as fases dos eventos, como não faria sentido disponibilizar um aplicativo em AIR para isso, depois do código está o print do retorno.

package net.brunoribeiro.multitouch
{
  import flash.display.Sprite;
  import flash.display.StageScaleMode;
  import flash.events.Event;
  import flash.events.TouchEvent;
  import flash.events.TransformGestureEvent;
  import flash.ui.Multitouch;
  import flash.ui.MultitouchInputMode;

  /**
   * @author Bruno Ribeiro
   */


  [SWF(backgroundColor="#FFFFFF", frameRate="31", width="800", height="600")]
  public class Main extends Sprite
  {
    public function Main()
    {
      Multitouch.inputMode = MultitouchInputMode.GESTURE;
      stage ?_init(null) : addEventListener(Event.ADDED_TO_STAGE, _init);
    }

    private function _init(event : Event) : void
    {
      stage.scaleMode = StageScaleMode.NO_SCALE;
      txtTouch.text   = Multitouch.supportsTouchEvents ? "disponível" : "indisponível";
      txtGesture.text = Multitouch.supportsGestureEvents ? "disponível" : "indisponível" ;
     
      if(Multitouch.supportsGestureEvents)
      {
        stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, _updateInfo, false, 0, true);
        stage.addEventListener(TransformGestureEvent.GESTURE_ROTATE, _updateInfo, false, 0, true);
        stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE, _updateInfo, false, 0, true);
        stage.addEventListener(TransformGestureEvent.GESTURE_PAN, _updateInfo, false, 0, true);
      }
    }
   
    private function _updateInfo (e:*) : void
    {
      txtTipo.text = e.type;
     
      txtLog.text += "\n--------";
      txtLog.text += "\n Tipo: " + e.type;
      txtLog.text += "\n Fase: " + e.phase;
     
      if(e.type == TransformGestureEvent.GESTURE_ZOOM)
      {
        txtLog.text += "\n Valor: " + e.scaleX;     }
      else if (e.type == TransformGestureEvent.GESTURE_ROTATE)
      {
        txtLog.text += "\n Valor: " + e.rotation;
      }
   
      txtLog.scrollV  = txtLog.maxScrollV;
    }
  }
}

Fases do evento

Categories: ActionScript Tags: ,

JORNADA ADOBE CS5 2010

May 19th, 2010 No comments


Vejo vocês lá.

Categories: ActionScript, Evento, Work Tags:

Flash, Flex, Air e AS3

March 17th, 2010 No comments

Eu sei que existe farto material sobre a diferença disso tudo na internet, mas por conta de recentes fatos, me vi quase que obrigado a escrever sobre isso. Espero com isso esclarecer as diferenças e uso disso tudo.

Flash IDE

Ambiente de desenvolvimento, normalmente utilizado para a criação de efeitos visuais, animações e look’n feel do site/aplicação. É pouco utilizado por desenvolvedores, mas permite, entre outras coisas a compilação de arquivos para gerar SWFs.

Flex Builder / Flash Builder

IDE para construção de aplicações, tanto (E não somente) utilizando o MXML quanto AS3 puro.

Flex

Framework – conjunto de classes e componentes – usado para a construção de aplicativos em AS3.

MXML

Linguagem de marcação para construir aplicações Flex. No momento da compilação a marcação é “substituida” por AS3.

SWF

Arquivo gerado após compilação no Flash e/ou Flex.

Air SDK

Pacote de desenvolvimento para distribuição de aplicativos em Air

Air Runtime

Em linhas gerais, é uma forma de distribuição de suas aplicações criadas no Flash, Flex ou mesmo em HTML. Usa o Webkit e Flash Player para renderização do HTML e arquivos SWF.

Categories: ActionScript, Mercado, Work Tags: ,

Respondendo ao analytics – Parte II

February 2nd, 2010 No comments

Quais as classes necessarias para trabalhar com 3d e tweens no flash cs3?
A princípio você pode usar qualquer uma dessas: Tweener, Greensock Tweening Plataform, Gtween ou qualquer uma outra.

Tô com dois freelas
Isso é ótimo, me manda um! :)

Carregar imagens no centro stage as3

img.x   = (stage.stageWidth - img.width) * .5
img.x   = (stage.stageHeight - img.height) * .5

Como criar um adobe user group?
Se você quer montar um User Group da Adobe, aqui está o link. Mas aviso, eu não recomendo.

Como limpar bitmap em as3?
seuBitmap.dispose();

Ideias para integração no trabalho
Cerveja. Cerveja (ou qualquer outra bebida alcoolica) é a melhor forma de integrar a equipe. Daí tudo fica mais fácil.

O que fazer quando você não recebe pagamento de freela?
Existem várias formas de lidar com isso. Não entregar o código fonte é uma das saídas mais comuns, mas o que eu recomendo de verdade é conversar com a empresa. Certamente eles não estão fazendo isso de sacanagem, então, é mais fácil entrar num acordo que tomar uma medida extrema. Em todo caso, vale sempre ter um contrato (que ninguém nunca faz).

Problemas e erros em projetos
Todo projeto tem erros e problemas, eu escrevi sobre isso, aqui.

Quando o freelance atrapalha os trabalhos da empresa
Dispense este e arrume outro em quem você confia. Mas antes, verifique se ele realmente está atrapalhando o trabalho ou se é um problema de fluxo de informação/aprovação/desenvolvimento.

Pai do mozart petter
Essa foi a mais bizarra. Infelizmente não sei nada sobre o pai do Mozart, mas sei que o Mozart é um ótimo programador, serve?

Categories: ActionScript, Idéias, Mercado Tags:

Flash Camp Brasil

December 16th, 2009 1 comment

Finalmente vai começar o primeiro evento de grande proporção focado na comunidade que utiliza o Adobe Flash. É a melhor oportunidade de conhecer pessoas e trocar conhecimento.

FlashCamp

flashcamp2

Compreendendo como funciona uma aplicação do Facebook

December 5th, 2009 2 comments

Na última semana estive trabalhando no projeto de uma aplicação que roda dentro do Facebook, como eu nunca tinha feito nada pro Facebook, no começo achei tudo meio estranho, mas no fim das contas as coisas começaram a fazer sentido.

A primeira coisa a fazer é baixar a biblioteca do php e a biblioteca AS3, na hora de editar seu arquivo index, não esqueça de dar uma olhada na documentação do FBML e no Developer roadmap.

Quando você adiciona um SWF via FBML, ele mesmo já passa algumas informações importantes via flashvars, secret e fb_sig_user (id do usuário que está usando sua aplicação). Com isso já é possível começar a aplicação. O Fluxo no Facebook está representado (toscamente, claro) no diagrama abaixo.

Facebook

Para que se possa entender melhor, um exemplo.

Imports:

import com.facebook.events.FacebookEvent;
import com.facebook.Facebook;
import com.facebook.net.FacebookCall;
import com.facebook.utils.FacebookSessionUtil;
import com.facebook.data.users.FacebookUser;
import com.facebook.data.users.FacebookUserCollection;
import com.facebook.commands.users.GetInfo;
import com.facebook.data.users.GetInfoData;

Declarações:

private var _facebook       : Facebook;
private var _session        : FacebookSessionUtil;
private var _userCollection : FacebookUserCollection;
private var _user           : String;

Inicialização:

_user       = loaderInfo.parameters.fb_sig_user;
_session    = new FacebookSessionUtil(API_KEY, SECRET, loaderInfo);
_session.verifySession();
_facebook   = _session.facebook;

Chamando um dos métodos e tratando a informação:

/**
* Chamada para recuperar todos os amigos do usuário
*/

private function _getFriends () : void
{
var _getFriendsCall : FacebookCall  = _facebook.post(new GetFriends(null, _user));
_getFriendsCall.addEventListener(FacebookEvent.COMPLETE, _getFriendsComplete, false, 0, true);
}

/**
* Recupera os ids dos amigos do usuário e dispara a chamada para buscar as informações dos usuários
*/

private function _getFriendsComplete(e:FacebookEvent):void
{
e.currentTarget.removeEventListener(FacebookEvent.COMPLETE, arguments.callee, false);
var friends : FacebookUserCollection    = GetFriendsData(e.data).friends || new FacebookUserCollection();
var i       : int   = friends.length;
var aFriends: Array = [].concat();

while (i--)
{
aFriends.push(FacebookUser(friends.getItemAt(i)).uid);
}

_toCollection(aFriends);
}

/**
* Busca os detalhes selecionados de todos os amigos do usuário
*/

private function _toCollection (aUids : Array = null) : void
{
var columns : Array         = [GetInfoFieldValues.NAME, GetInfoFieldValues.PIC_SQUARE, GetInfoFieldValues.PIC];
var info    : FacebookCall  = _facebook.post(new GetInfo(aUids, columns));
info.addEventListener(FacebookEvent.COMPLETE, _createCollection, false, 0, true);
}

/**
* Armazena numa collection as informações dos amigos do usuário
*/

private function _createCollection(e:FacebookEvent):void
{
e.currentTarget.removeEventListener(FacebookEvent.COMPLETE, arguments.callee, false);
_userCollection = GetInfoData(e.data).userCollection;
//trace(FacebookUser(_userCollection.getItemAt(0)).name)
}

Acho que com isso já fica mais fácil começar a desenvolver seus aplicativos, daí é possível se aprofundar mais estudando a documentação da API do Facebook e da biblioteca AS3.

Ps.: Se você usou este post para começar sua aplicação, deixe o link nos comentários!

Categories: ActionScript, Work Tags: ,

Outlander GT

October 28th, 2009 No comments

www.outlandergt.com.br

Abertura

Home

Votação

Features

TECNOLOGIAS:

AS3, Flash Remoting.

FICHA TÉCNICA INTERNET:
Agência: Africa
Anunciante: Mitsubishi Motors do Brasil
Produto: Mitsubishi Outlander GT
Criação: Humberto Fernandez/Flavio Waitman/Daniel Matsumoto
Diretores de Criação: Nizan Guanaes/Sergio Gordilho/Cassio Zanatta/Humberto Fernandez/Flavio Waitman
Atendimento: Marcio Santoro/ Carolina Barreto/ Veridiana Gerbasi
Mídia: Luiz Fernando Vieira/Fábio Freitas /Eduardo Shinohara / Wagner Torreti
Planejamento: Pedro Cruz/Márcia Neri
Art Buyer: Andrea Mancini
Fotógrafo: Leonardo Vilela / Platinum
Produção: Platinum
Aprovação/cliente: Corinna de Souza Ramos, Renata de Souza Ramos e Letícia Mesquita

Produção: Juice Comunicação Concentrada
Direção Geral: Fábio Pinho
Direção de Criação: Bernardo Annechino
Design: Raul Queiroz
Arte 3D: Alexej Tykac
Animação: Raul Queiroz/Vladimir Andrade/Ruy Chagas Jr
Redação: Natasha Szczerb, Bernardo Annechino
Desenvolvimento Action Script: Bruno “Tatuí” Ribeiro
Desenvolvimento Server Side: Leandro Carneiro
Desenvolvimento Client Side: Thiago Velloso
Atendimento: Larissa Raposo

Categories: ActionScript, Work Tags: , ,

My thoughts on Flash CS5 and iPhone – By Keith Peters

October 14th, 2009 No comments

Eu normalmente não colocaria aqui um post de outra pessoa, mas esse em específico eu achei tão bom que vale a pena! Além disso, se trata de um tema importante e que provavelmente vai ser discutido bastante durante os próximos meses. Como eu estava me contendo para falar o que penso sobre isso, foi um grande alívio encontrar alguém que compartilhe em 100% minha opinão.

Destaco uma parte em especial:

There’s one thing that really concerned me after the announcement. It was the number of Flash developers in the community saying, “We are all now iPhone developers! Yay!” and “Whew! I don’t need to learn Objective-C now. I’m throwing away all my Objective-C books!” I still believe the bottom line is, if you are serious about developing for the iPhone, you must learn Objective-C. For God’s sake, it’s NOT THAT HARD! Be a professional. Learn a new language. If you are even moderately skilled with AS3, you will be able to pick up Objective-C inside a week. Yeah, the memory management stuff will probably continue to challenge you for a while – I’m still coming to terms with it – but in general, you can be up and running in Cocoa in no time.

O post completo do Keith Peters você encontra no blog dele: http://www.bit-101.com/blog/?p=2410

Categories: ActionScript, Idéias Tags:

Respondendo ao analytics

August 1st, 2009 1 comment

Olhando os dados do Google analytics resolvi escrever um post respondendo as palavras-chave que trouxeram pessoas pro meu blog.

Como salvar o Bitmap de um MovieClip com ActionScript 3? (actionscript 3 salvar bitmap de um movie clip)

Não tenho certeza se entendi o que queriam dizer, mas vou colocar duas possibilidades

  • Como copiar o conteúdo de um MovieClip para um Bitmap:

<br />
var bmpdata: BitmapData = new BitmapData(mcOriginal.width, mcOriginal.height, false);<br />
bmpdata.draw(mcOriginal, null, null, null, null, true);<br />
var bmpCopy : Bitmap = new Bitmap(bmpdata, "auto", true);<br />

  • Como enviar isso para o cliente:

<br />
var jpgSource   : BitmapData    = new BitmapData (mcImg.width, mcImg.height);<br />
jpgSource.draw(mcImg, null, null, null, null, true);</p>
<p>var jpgEncoder:JPGEncoder = new JPGEncoder(100);<br />
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);</p>
<p>var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");<br />
var jpgURLRequest:URLRequest = new URLRequest("download.php?name=img.jpg");<br />
jpgURLRequest.requestHeaders.push(header);<br />
jpgURLRequest.method = URLRequestMethod.POST;<br />
jpgURLRequest.data = jpgStream;<br />
navigateToURL(jpgURLRequest, "_self");<br />

Dessa forma você também pode salvar no servidor. Existe também um jeito mais simples de forçar o download da imagem usando o método download da classe FileReference.

Como carregar imagens  e deixar em cache?

Em alguns casos, o que eu acho mais simples é criar um Vector ou Array com as imagens que preciso e depois é só consultar o Array.

Como aumentar a performance do TweenLite?

Você pode tentar otimizar a engine, mas uma dica é evitar o uso de muitos tweens ao mesmo tempo.

Como me graduar sem estudar?

Ok, essa eu não sei responder.

Como conversar com programador?

Isso pode ser muito complicado, mas tente ser direto, lógico e falar apenas quando necessário, isso ajuda.

Qual a diferença entre public e private no AS3?

  • public: Pode ser acessado por qualquer classe;
  • private: Classes filhas podem acessar;
  • internal: Classes do mesmo pacote podem acessar;
  • protected: Classes filhas podem acessar e compartilhar;

Como jogar um MovieClip pra frente usando AS3?

<br />
setChildIndex(mc,numChildren-1);<br />

Sou graduando, colocar isso no curriculum?

Simples, diga qual o curso e o status (em curso).

Quem é Alexej Tykac?

Alexej é o responsável pelo 3D dos projetos online da Mitsubishi Motors e atualmente trabalha na Juice Comunicação (RJ).

E só pra fechar, a mais estranha; Devo ou não contar que gosto dele?

E por que não? Vai lá, conte sim!

devo ou não contar que gosto dele?