Adobe FlashCamp Brasil

Posted by Andrews on dezembro 30th, 2009

Flash Camp Brasil - 15 & 16 / JAN 2010 - Maceió - Adobe Flash Platform

FLEX FOR KIDS 2010

Posted by Andrews on dezembro 27th, 2009

Flex for Kids

Populando ComboBox no Adobe Flex com dados vindos do PHP

Posted by Andrews on agosto 14th, 2009

Percebi que muita gente busca esta informação poraqui devido a outro post que fiz sobre como popular ComboBox no Adobe Flash com PHP e MySQL, então resolvi escrever este pequeno post solucionando e ajudando quem tem está dúvida.

Teremos então uma function no PHP que retorna os dados para o Adobe Flex dentro de um Array.

function popularCombo() {
  for ($i = 0; $i<=10; $i++) {
    $aReturn['data'][$i]['data']  = $i;
    $aReturn['data'][$i]['label'] = 'Label ' . $i;
  }
  return $aReturn;
}

E no Adobe Flex devemos então criar outro for que por sua vez, irá tratar e jogar os dados para dentro do ComboBox.

// Variavel do tipo ArrayCollection,
// que serve para acondicionar
// os dados para o dataProvider
private var aDados:ArrayCollection = new ArrayCollection();
 
// Function
function... {
  for(var i:int = 0; i<event.result.data.length; i++) {
    var objDados:Object = new Object();
    // passando ao objeto (objDados)
    // os dados vindos do php
    objDados.data  = event.result.data[i].data;
    objDados.label = event.result.data[i].label;
    // adiciona o objeto da vez ao ArrayCollection (aDados)
    this.aDados.addItem(objDados); 
  }
  // informa ao dataProvider do ComboBox que ele
  // recebera os dados do ArrayCollection (aDados),
  // assim preenchendo o mesmo
  ComboBox.dataProvider = this.aDados;
} // End of function

Bem simples não?
Não me apronfudei muito, pois entendo que neste caso, tu saiba trabalhar com Adobe Flex e PHP.

Aplicando filtros com caurina FilterShortcuts

Posted by Andrews on abril 14th, 2009

Continuando os posts sobre as classes caurina vou mostrar como trabalhar com os filtros DropShadow, Glow e Blur.
Não vou me ater muito na criação do arquivo para não ficar extenso o post, assim entendo que tu saiba trabalhar com flash.
Neste caso estou aplicando os filtros através de uma function, onde verificamos qual é o filtro solicitado pelo botão, após aplica-se o filtro solicitado.

// IMPORTAMOS A CLASSE Tweener e FilterShortcuts
import caurina.transitions.Tweener;
import caurina.transitions.properties.FilterShortcuts;
 
// INICIANDO A CLASSE FilterShortcuts
FilterShortcuts.init();
 
/**
 * FUNCTION aplicarFiltro
 * @param MouseEvent
 */
function aplicarFiltro(event:MouseEvent):void {
	var target:String = event.target.name;
	switch(target) {
		case 'shadow_mc':
			Tweener.addTween(container_mc, {_DropShadow_blurX:30, _DropShadow_blurY:30, time:.5, transition:'linear'});
			break;
		case 'glow_mc':
			Tweener.addTween(container_mc, {_Glow_blurX:30, _Glow_blurY:30, time:.5, transition:'linear'});
			break;
		case 'blur_mc':
			Tweener.addTween(container_mc, {_Blur_blurX:30, _Blur_blurY:30, time:.5, transition:'linear'});
			break;
	}
}
 
/**
 * FUNCTION removerFiltro
 * @param MouseEvent
 */
function removerFiltro(event:MouseEvent):void {
	var target:String = event.target.name;
	switch(target) {
		case 'shadow_mc':
			Tweener.addTween(container_mc, {_DropShadow_blurX:0, _DropShadow_blurY:0, time:.5, transition:'linear'});
			break;
		case 'glow_mc':
			Tweener.addTween(container_mc, {_Glow_blurX:0, _Glow_blurY:0, time:.5, transition:'linear'});
			break;
		case 'blur_mc':
			Tweener.addTween(container_mc, {_Blur_blurX:0, _Blur_blurY:0, time:.5, transition:'linear'});
			break;
	}
}
 
// EVENTOS
shadow_mc.addEventListener(MouseEvent.MOUSE_OVER, aplicarFiltro);
shadow_mc.addEventListener(MouseEvent.MOUSE_OUT, removerFiltro);
glow_mc.addEventListener(MouseEvent.MOUSE_OVER, aplicarFiltro);
glow_mc.addEventListener(MouseEvent.MOUSE_OUT, removerFiltro);
blur_mc.addEventListener(MouseEvent.MOUSE_OVER, aplicarFiltro);
blur_mc.addEventListener(MouseEvent.MOUSE_OUT, removerFiltro);

Repare que no filtro Glow você precisa alterar a cor, pois ele utiliza uma cor padrão para o filtro. Neste caso pode-se estar aplicando também a propriedade _Glow_color, que é o responsável pela manipulação da cor do Glow.

Tweener.addTween(container_mc, {_Glow_blurX:30, _Glow_blurY:30, _Glow_color:0x333333, time:.5, transition:'linear'});

As classes caurina são uma mão na roda para quem não curte usar a timelime e manipular os objetos no palco, assim facilitando e muito nossa vida. Lembrando que devemos essa ao Zeh por te-la disponibilizado a comunidade.

Clique aqui e veja como ficou o exemplo.

Criando um perseguidor de mouse

Posted by Andrews on abril 2nd, 2009

Uma dica bem simples para causar um tchan a mais ao se passar o mouse sobre objetos em uma aplicação flash é criar um perseguidor ou como queiram chamar.
Pois bem… primeiro crie então um movieclip no palco e instancie-o com o nome de botao_mc, após ter o botão criado, criaremos nosso perseguidor.
Desenho um circulo, retângulo ou qualquer outra coisa no palco, e transforme-o em um movieclip setando seu nome como perseguidor_mc, também será necessário setar uma identificação para o Linkage, pois iremos chamar ele da biblioteca. Para fazer isto clique em Advanced, e após marque a opção Export for ActionScript. Veja o exemplo abaixo.

configuração do perseguidor

Após ter criado o perseguidor, delete-o do palco, deixando apenas o botão.
Crie uma nova layer e escreva a action que será responsável por atachar e movimentar o persseguidor do mouse.

// IMPORTANDO A CLASSE CAURINA TWEENER
import caurina.transitions.Tweener;
 
// EVENTO OVER
botao_mc.onRollOver = function() {
 
	// ATACHA O PERSEGUIDOR NA POSICAO X E Y DO MOUSE
	attachMovie('perseguidor_mc', 'perseguidor_mc', 1, {_x:_xmouse, _y:_ymouse});
 
	// AO MOVER O MOUSE, MOVE TAMBEM O PERSEGUIDOR
	onMouseMove = function() {
 
		// APLICANDO TWEENER PARA SUAVIZAR O MOVIMENTO DO PERSEGUIDOR
		Tweener.addTween(perseguidor_mc, {_x:_xmouse+9, _y:_ymouse+20, time:1, transition:'easeOutExpo'});
	}
}
 
// EVENTO OUT
botao_mc.onRollOut = function() {
 
	// REMOVE O PERSEGUIDOR
	removeMovieClip(perseguidor_mc);
 
	// DELETA A FUNCAO MOUSE MOVE
	delete onMouseMove;
}

Esta feito nosso perseguidor, supimpa não!
clique aqui e veja como ficou o exemplo

Resultado do 1º Censo Brasileiro de Desenvolvedores ActionScript

Posted by Andrews on março 7th, 2009

Realizado entre os dias 23/01/2009 a 20/02/2009 pelo AUG-RJ, saiu então o resultado do 1º Censo Brasileiro de Desenvolvedores ActionScript
Confira aqui o resultado

Populando ComboBox no Flash com PHP, MySQL e XML

Posted by Andrews on fevereiro 5th, 2009

Tenho estudado muito nos últimos dias, afinal quem trabalha nesta área tem de estar em aprendizado constante. Estou iniciando meus estudos em OOP no PHP e também aprofundando meu conhecimento no Adobe Flex, e tenho progredido bastante neste período.
Mas brother, vamos ao que interessa para este post, acabei escrevendo um código utilizando PHP e MySQL, onde o PHP gera um XML através de uma consulta na tabela para alimentar um ComboBox Component no Flash.
Alimentar um ComboBox é simples, mas resolvi que iremos alimetar dois ComboBox, onde, um irá alimentar o outro, utilizarei os estados do Brasil e suas cidades como exemplo.

1ª Etapa:
Aqui, definiremos nossas tabelas no MySQL.
Tabela estado

CREATE TABLE `estado` (
    `est_codigo` int(2) NOT NULL auto_increment,
    `est_nome` varchar(50),
    PRIMARY KEY  (`est_codigo`)
)
insert  into
    `estado`(`est_codigo`,`est_nome`)
values
    (1,'Santa Catarina'),
    (2,'Paraná'),
    (3,'Rio Grande do Sul'),
    (4,'São Paulo'),
    (5,'Rio de Janeiro');

Tabela cidade

CREATE TABLE `cidade` (
    `cid_codigo` int(5) NOT NULL auto_increment,
    `cid_est_codigo` int(2) default NULL,
    `cid_nome` varchar(70) default NULL,
    PRIMARY KEY  (`cid_codigo`)
)
insert  into
    `cidade`(`cid_codigo`,`cid_est_codigo`,`cid_nome`)
values
    (1,1,'Porto União'),
    (2,1,'Canoinhas'),
    (3,1,'Balneário Camboriú'),
    (4,1,'Caçador'),
    (5,1,'Florianópolis'),
    (6,2,'Curitiba'),
    (7,2,'União da Vitória'),
    (8,2,'Foz do Iguaçu'),
    (9,3,'Porto Alegre'),
    (10,3,'Canoas'),
    (11,3,'Caxias do Sul'),
    (12,4,'São Paulo'),
    (13,4,'Campinas'),
    (14,4,'Santos'),
    (15,4,'Ubatuba'),
    (16,5,'Rio de Janeiro'),
    (17,5,'Angra dos Reis'),
    (18,5,'Paraty');

2ª Etapa:
Precisaremos de uma conexão com nosso banco de dados, caso ja tenha ou saiba como criar uma pode passar para a próxima etapa.
Crie um novo arquivo PHP e salve-o com o nome de Conexao.php então escreveremos a classe Conexao.

<?php
class Conexao {
 
        // CONSTRUTOR
	function __construct() {
		return true;
	}
 
	/**
	 * FUNCTION CONEXAO
	 * @return $cnx
	 */
	function conectar() {
		$sHost      = 'nome-do-host';
		$sDB        = 'nome-do-db';
		$sUser      = 'nome-do-user-mysql';
		$sPassword  = 'senha-do-usuer';
		$cnx        = mysql_connect($sHost, $sUser, $sPassword);
		mysql_select_db($sDB, $cnx);
		return $cnx;
	}
}
?>

3ª Etapa
Nesta etapa definiremos as classes que irão gerar o XML para alimentar o ComboBox de estados que por sua vez irá alimentar o ComboBox de cidades.
Então crie um arquivo PHP chamado Estado.php e escreva a classe abaixo.

<?php
// INFORMAMOS QUE O DOCUMENTO SERA DO TIPO XML
header("Content-Type: text/xml; charset=UTF-8", true);
 
// CONEXAO
require_once('Conexao.php');
 
// CLASS ESTADO
class Estado {
 
	// CONSTRUTOR
	function __construct() {
		return true;
	}
 
	/**
	 * FUNCTION getEstado
	 * @return xml
	 */
	function getEstado() {
 
		// CONEXAO
		$conexao = new Conexao();
		$cnx     = $conexao->conectar();
 
		// SELECIONA ESTADO NO DB
		$sSQL = "SELECT est_codigo, est_nome FROM estado ORDER BY est_nome ASC";
		$qSQL = mysql_query($sSQL, $cnx) or die(mysql_error());
 
		// GERANDO XML
		echo "<?xml version='1.0' encoding='UTF-8'?> ";
		echo "<estados>";
			while( $aRow = mysql_fetch_array($qSQL) ) {
				echo "<estado>";
				echo "<codigo><![CDATA[" . $aRow['est_codigo'] . "]]></codigo>";
				echo "<nome><![CDATA["   . $aRow['est_nome']   . "]]></nome>";
				echo "</estado>";
			};
		echo "</estados>";
	}
 
}
 
// INICIA CLASSE
$estado = new Estado();
echo $estado->getEstado();
 
?>

Salve-o, e agora iremos criar a classe que alimentará as cidades.
A Classe de cidades é exibida de forma dinâmica, onde, ao selecionar o estado desejado passaremos o código dele como parametro para consultar somente as cidades que fazem referência a este estado.
Crie um novo arquivo PHP e salve-o como o nome Cidade.php, e escreva a classe para as cidades.

<?php
// INFORMAMOS QUE O DOCUMENTO SERA DO TIPO XML
header("Content-Type: text/xml; charset=UTF-8", true);
 
// CONEXAO
require_once('Conexao.php');
 
// CLASS CIDADE
class Cidade {
 
	// CONSTRUTOR
	function __construct() {
		return true;
	}
 
	/**
	 * FUNCTION getCidade
	 * @param Number codigo
	 * @return xml
	 */
	function getCidade($codigo) {
 
                // CONEXAO
		$conexao = new Conexao();
		$cnx     = $conexao->conectar();
 
		$nCodigo = $codigo;
		$sSQL    = "SELECT
		                cid_codigo, cid_nome
					FROM
					    cidade
					WHERE
						cid_est_codigo = $nCodigo
					ORDER BY
						cid_nome ASC";
		$qSQL    = mysql_query($sSQL, $cnx) or die(mysql_error());
 
		// GERANDO XML
		echo "<?xml version='1.0' encoding='UTF-8' ?>";
		echo "<cidades>";
			while ($aRow = mysql_fetch_array($qSQL)) {
				echo "<cidade>";
				echo "<codigo><![CDATA[" . $aRow['cid_codigo'] . "]]></codigo>";
				echo "<cidade><![CDATA[" . $aRow['cid_nome']   . "]]></cidade>";
				echo "</cidade>";
			}
		echo "</cidades>";
	}
}
 
/**
 * INICIAMOS A CLASSE E PASSAMOS O CODIGO DO
 * ESTADO COMO PARAMETRO PARA A CONSULTA
 */
$cidade = new Cidade();
echo $cidade->getCidade($_GET['codigo']);
?>

4ª Etapa
Nesta quarta e última etapa, criaremos e escreveremos nosso arquivo Flash.
Então, crie um novo arquivo Flash, e arraste dois Components ComboBox para o palco, de o nome de instância para eles de estado_cbx e cidade_cbx, também crie um campo de texto dinâmico com o nome de alerta_txt.
Abaixo temos a imagem de como ficará os objetos no palco.
populando-combobox
Agora, insira uma nova Layer para que possamos escrever nosso código ActionScript, onde, este por sua vez será o reponsável pelo carregamento e população dos ComboBox.

System.useCodepage = true;
 
/**
 * FUNCTION getEstado
 */
getEstado = function() {
	var xmlEstado:XML     = new XML();
	xmlEstado.ignoreWhite = true;
	xmlEstado.load("Estado.php");
	xmlEstado.onLoad = function(ok) {
		if (ok) {
 
			var aDados = Array();
			var nTotal = this.firstChild.childNodes.length;
 
			// PASSANDO DADOS DO XML PARA ARRAY
			for (var i = 0; i < nTotal; i++) {
				aNode     = this.firstChild.childNodes[i];
				aDados[i] = { data:aNode.childNodes[0].firstChild.nodeValue, label:aNode.childNodes[1].firstChild.nodeValue };
			}
 
			// POPULANDO COMBOBOX COM OS DADOS DO ARRAY
			estado_cbx.dataProvider = aDados;
		}
	};
 
	// LISTENER PARA ESTADO
	var objEstado:Object = new Object();
	objEstado.change = function() {
		sEstado         = estado_cbx.selectedItem.label;
		nCodigo         = estado_cbx.value;
		alerta_txt.text = sEstado;
		getCidade(nCodigo);
	};
	estado_cbx.addEventListener("change", objEstado);
}
getEstado();
 
/**
 * FUNCTION getCidade
 * @param Number nCodigo
 */
getCidade = function(nCodigo) {
 
	var xmlCidade:XML     = new XML();
	xmlCidade.ignoreWhite = true;
	xmlCidade.load("Cidade.php?codigo="+nCodigo);
	xmlCidade.onLoad = function(ok) {
		if (ok) {
 
			var aDados = Array();
			var nTotal = this.firstChild.childNodes.length;
 
			// PASSANDO DADOS DO XML PARA ARRAY
			for (var i = 0; i < nTotal; i++) {
				aNode     = this.firstChild.childNodes[i];
				aDados[i] = { data:aNode.childNodes[0].firstChild.nodeValue, label:aNode.childNodes[1].firstChild.nodeValue };
			}
 
			// POPULANDO COMBOBOX COM DADOS DO ARRAY
			cidade_cbx.dataProvider = aDados;
		}
	}
 
	// LISTENER PARA CIDADE
	var objCidade:Object = new Object();
	objCidade.change = function() {
		sEstado = estado_cbx.selectedItem.label;
		sCidade = cidade_cbx.selectedItem.label;		
		alerta_txt.text = sCidade + " - " + sEstado;
	};
	cidade_cbx.addEventListener("change", objCidade);
}

Agora, salve o arquivo Flash com qualquer nome, compile e teste-o.
Prontinho, nosso trabalho está feito, e com a certeza de que tiraremos bastante proveito dele.
O post ficou grande, porém tenho a certeza de que estou progredindo em meus estudos e em meu conhecimento também, e assim espero repassar o pouco do que estou aprendendo com os demais, pois, como nossa areá vive em constante apredizado e nem todos tem a oportunidade de estar aprendendo em uma sala de aula fica ai então a pequena contribuição. :)

Clique aqui e veja como ficou nossa pequena aplicação

Macanudo, finalizo este post ao som de Chromophobia, Gui Boratto. d(-_-)b

1º Censo Brasileiro de Desenvolvedores ActionScript

Posted by Andrews on janeiro 23rd, 2009

O AUGRJ criou um censo tendo como objetivo realizar um levantamento sobre as características do desenvolvedor ActionScript brasileiro, com isso teremos um mapa do mercado, necessidades e ações possíveis a serem executadas para fortalecer a comunidade.

Então, clique aqui e participe!

Ele estará disponível até o dia 20/02/2009.

Um novo e rico projeto esta por vir

Posted by Andrews on dezembro 17th, 2008

Atualmente venho trabalhando e estudando fortemente com a ferramenta Adobe Flex (ferramenta para desenvolvimento de RIA – Rich Internet Application), a qual esta em grande crescimento no mercado.

Fui contratado para desenvolver o software da Domit Medicina, e como trata-se de um software altamente complexo e que necessita rodar através do browser, então não restou outra alternativa a não ser utilizar RIA para construi-lo. Desde então venho me dedicando ao máximo para que o software saia a altura de que meu cliente espera.

Assim que o sistema estiver finalizado postarei aqui mais detalhes sobre o mesmo, enquanto isso vamos gerar um pouco de suspense com a tela de login.

Domit Medicina

Curso de extensão em Adobe Flash

Posted by Andrews on dezembro 5th, 2008

Através de convite por parte de colegas de classe e amigos e após oficializado pelo professor André Weizmann coordenador do curso de Sistemas de Informação da Uniguaçu, realizei do dia 29/09 à 03/10/2008 um curso de extensão em Adobe Flash/Actionscript 2.0. Embora a idéia inicial era apenas mostrar o caminho das pedras para que os alunos pudessem ter idéia de como é trabalhar com a ferramenta, fiquei feliz em ver o desempenho e dedicação dos mesmos, pois em tão pouco tempo (20 horas) conseguiram se adaptar a ferramenta e trabalhar de forma simples com ela.
O que me deixa contente é a possibilidade de disseminar o conhecimento sobre a ferramenta Adobe Flash bastante utilizada nos dias de hoje e que em nossa região existem poucas pessoas qualificadas para tal.
Após o curso tive contato com alguns alunos os quais estão estudando/desenvolvendo com a ferramenta e o melhor, alguns ficaram tão interessados que estão buscando informações sobre desenvolvimento de jogos utilizando Adobe Flash e outros estão iniciando seus estudos em Adobe Flex.
Fiquei muito feliz em poder disseminar o pouco conhecimento que tenho com pessoas que estão buscando uma profissão para seu futuro profissional.
As poucas horas de estudo renderam no último dia de curso um mini site, o qual pode ser visto clicando aqui.

Então, demos um VIVA para o Adobe Flash!


Feito com Wordpress
Copyright © 2008 Andrews Roberson.