﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Virtualize Interatividade Digital &#187; 2. Intermediário</title>
	<atom:link href="http://www.virtualizeid.com.br/category/artigos-e-tutoriais/actionscript3/intermediario/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.virtualizeid.com.br</link>
	<description>Agencia Digital de Salvador</description>
	<lastBuildDate>Sat, 27 Feb 2010 18:08:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Formulario de contato e envio de e-mail</title>
		<link>http://www.virtualizeid.com.br/2009/09/formulario-de-contato-e-envio-de-e-mail/</link>
		<comments>http://www.virtualizeid.com.br/2009/09/formulario-de-contato-e-envio-de-e-mail/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:01:59 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criação de sites]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/?p=771</guid>
		<description><![CDATA[Seja em um formulário de contato, uma validação de e-mail, um pré-orçamento ou confirmação de um pedido, uma das tarefas mais comuns em projetos com Flash é o envio de e-mail. Nesse tutorial discutiremos como enviar e-mails utilizando Actionscript 3 e um script CGI.]]></description>
			<content:encoded><![CDATA[<p>Enviar e-mail é sem dúvida uma função fundamental em qualquer aplicação WEB.</p>
<p>Para entendermos a mecânica de envio de e-mail, precisamos entender o formato cliente-servidor da comunicação na Internet.</p>
<p>Quando acessamos uma página na Internet, tudo que vemos é o resultado do processamento de um arquivo que está hospedado no servidor da página. Para tanto, existem tecnologias cujo objetivo é possibilitar ao desenvolvedor da página definir como o conteúdo a ser enviado paro visitante será gerado.</p>
<p>Dessa forma, temos duas perspectivas na aplicação: a perspectiva do desenvolvedor, que, por exemplo, ao acessar o código fonte da página verá as diversas regras e algorítmos que definem como o conteúdo será gerado, e a persperctiva do cliente, que ao acessar o código-fonte da página verá apenas o conteúdo gerado, e desconhece as regras.</p>
<p>Para definir as regras para geração dinâmica de conteúdo existem linguagens como PHP, ASP ou JSP. Essas linguagem são chamadas &#8220;server-side&#8221;, pois são executadas no lado servidor. Para definir o formato, layout e mecânicas de interação da página existem linguagens como HTML, Javascript e CSS. São linguagens &#8220;client-side&#8221; pois são executadas no lado cliente (no navegador do visitante).</p>
<p>Para enviarmos um e-mail precisamos utilizar um servidor de e-mail. Os servidores de hospedagem de sites frequentemente possuem um servidor de e-mail integrado. Quando, por exemplo, configuramos nossa conta de e-mail no outlook (informando smtp, pop3, etc), estamos configurando a conexão entre o outlook e o servidor de e-mail, para que ele possa realizar os envios.</p>
<p>Da mesma forma, para enviarmos um e-mail através de uma aplicação Actionscript precisamos utilizar um servidor de e-mail. A forma mais fácil de fazer essa conexão entre nossa aplicação e o servidor de e-mail é utilizar uma página em linguagem &#8220;server-side&#8221;.</p>
<p>Nosso projeto em Actionscript envia os dados que desejamos enviar para a página e essa página conecta com o servidor de e-mail, enviando o e-mail. Nesse exemplo utilizarei uma página em linguagem PHP, mas isso se aplica a outras linguagens. Vamos ao exemplo!</p>
<p>Crie um formulário no seu projeto em Flash. Para isso crie campos de texto do tipo InpuText (nome, email e mensagem). Nomeie eles de nome_txt, email_txt e mensagem_txt. Crie também um campo de texto chamado resultado_txt (para exibirmos o resultado do envio) e um botão enviar_btn. Veja a figura (o exemplo estará disponível para download ao fim do tutorial):</p>
<div id="attachment_772" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/09/exemplo.jpg"><img src="http://www.virtualizeid.com.br/wp-content/uploads/2009/09/exemplo-300x234.jpg" alt="Exemplo do tutorial." title="Tutorial Actionscript 3 - Formulário de contato e envio de e-mails com Actionscript 3" width="300" height="234" class="size-medium wp-image-772" /></a><p class="wp-caption-text">Exemplo do tutorial.</p></div>
<p>O código para que nosso formulário funcione é apresentado a seguir:</p>
<pre class="brush: as3;">
// Associamos o click no botão enviar à função de envio de e-mail.
enviar_btn.addEventListener(MouseEvent.CLICK, EnviarEmail);

function EnviarEmail(evt)
{
	resultado_txt.text = &quot;Enviando mensagem... aguarde!&quot;;

	// Cria o objeto que realizará o envio dos dados para a página
	// envio_email.php.
	var loader:URLLoader = new URLLoader();

	// Criamos o listener que será chamado ao fim da execução do script
	// de envio de e-mail.
	loader.addEventListener(Event.COMPLETE					, FimLoad);

	// Criamos os listener que serão chamados em caso de erro ao tentar abrir
	// o script (arquivo não encontrado ou em outro domínio por exemplo).
	loader.addEventListener(IOErrorEvent.IO_ERROR				, ErroLoad);
	loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR	, ErroLoad);	

	// Definimos qual script enviará o e-mail e como serão enviados os
	// parâmetros para esse script.
	var request:URLRequest = new URLRequest(&quot;envio_email.php&quot;);
	request.method = &quot;POST&quot;;

	// Definimos os parâmetros a serem passados para o script
	// envio_email.php.
	var variables:URLVariables = new URLVariables();
	variables.nome	 	= nome_txt.text;
	variables.email		= email_txt.text;
	variables.mensagem	= mensagem_txt.text;
	request.data 		= variables;

	// Solicitamos a execução do Script.
	loader.load(request);
}

function FimLoad(evt)
{
	// Exibimos o resultado do envio.
	resultado_txt.text = evt.target.data;
}

function ErroLoad(evt)
{
	resultado_txt.text = &quot;Ocorreu um erro durante o envio do e-mail.&quot;;
}
</pre>
<p>Na linha 2 associamos o clique no botão enviar à função que realiza o envio de e-mail.</p>
<p>Na linha 10 criamos um objeto do tipo URLLoader. Esse objeto é utilizado para se carregar conteúdos de páginas externas. Ele servirá como ponte entre nossa aplicação em Flash e a página em PHP que realizará o envio do e-mail.</p>
<p>Nas linhas 14 dizemos que quando o objeto URLLoader terminar de carregar os dados da página (que definiremos qual será mais adiante) queremos que a função FimLoad seja executada. Nas linhas 18 e 19 definimos que a função ErroLoad deverá ser chamada caso ocorra algum erro durante o carregamento da página.</p>
<p>Na linha 23 criamos um objeto que define qual página deverá ser carregada. Na linha 24 definimos o formato do envio de dados para a página, não irei entrar em detalhes quanto a isso para não alongar o tutorial.</p>
<p>Na linha 28 criamos um objeto que passará parâmetros para a página que iremos carregar. Assim, poderemos definir o nome de quem está enviado o e-mail, o e-mail desta pessoa e a mensagem. Nas linhas 29 a 31 definimos os parâmetros, e na linha 32 associamos esses parâmetros ao objeto Request.</p>
<p>Por fim, na linha 35 solicitamos o carregamento da página. A partir daí entra em execução a página PHP que realizará o envio da mensagem, cujo código é apresentado a seguir:</p>
<pre class="brush: php;">
// Recuperamos os parâmetros enviados através do formulário.
$nome		= $_POST[&quot;nome&quot;];
$email		= $_POST[&quot;email&quot;];
$mensagem	= $_POST[&quot;mensagem&quot;];

// Definimos o título da mensagem (lembrando que '.' é operador de concatenação em PHP).
$assunto	= &quot;Mensagem de &quot; . $mensagem . &quot; (&quot; . $email . &quot;)&quot;;

// Definimos o destinatário da mensagem.
$destino	= &quot;seuemail@seudominio.com.br&quot;;

// Enviamos o e-mail.
if (mail($destino, $assunto, $mensagem))
{
	echo &quot;Mensagem enviada com sucesso!&quot;;
}
else
{
	echo &quot;Não foi possível enviar sua mensagem!&quot;;
}
</pre>
<p>Nas linhas 1 a 3 recuperamos os parâmetros que enviamos através do Actionscript 3. Observe que o nome dos parâmetros têm que ser idêntico aos digitado nas linhas 29 a 31 do código Actionscript. Na linha 13, utilizamos a função mail() do PHP, para realizar o envio do e-mail. Observe que isso tudo ocorre no lado servidor, e até agora não geramos nenhum conteúdo para o cliente (no caso a aplicação Flash). Na linha 15 utilizamos o comando &#8220;echo&#8221; para enviar um resultado ao cliente, que será recuperado na linha 41 da aplicação Flash, com o acesso a propriedade target.data do evento de fim de load.</p>
<p><strong><br />
Lembre-se que para que esse exemplo funcione você precisa enviá-lo (tanto o arquivo .swf e o arquivo .php) para um servidor de hospedagem com suporte a PHP.</strong></p>
<p>O uso de linguagens dinâmicas (como o PHP) e seu acesso através do Flash possibilita a criação de sistemas que acessam banco de dados, o que é fundamental em diversos projetos.</p>
<p>Vamos ficando por aqui, até o próximo tutorial. Dúvidas?</p>
<p><center><a href='http://www.virtualizeid.com.br/wp-content/uploads/2009/09/email.zip' alt="Tutorial Actionscript 3 - Formulario de contato e envio de e-mails com Actionscript 3." title="Tutorial Actionscript 3 - Formulario de contato e envio de e-mails com Actionscript 3.">Baixar tutorial</a></center></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F09%2Fformulario-de-contato-e-envio-de-e-mail%2F&amp;linkname=Formulario%20de%20contato%20e%20envio%20de%20e-mail">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/09/formulario-de-contato-e-envio-de-e-mail/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Reposicionando elementos após redimensionamento da janela</title>
		<link>http://www.virtualizeid.com.br/2009/07/reposicionando-elementos-apos-redimensionamento-da-janela/</link>
		<comments>http://www.virtualizeid.com.br/2009/07/reposicionando-elementos-apos-redimensionamento-da-janela/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 21:42:17 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criação de sites]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=582</guid>
		<description><![CDATA[Quando desenvolvemos um site, uma preocupação que devemos ter diz respeito a resolução que será utilizada pelo visitante para visualização. Atualmente, a resolução mais comum é 1024x768. Entretanto, muitos computadores adotam resoluções superiores a esta, e alguns resoluções inferiores. No flash, podemos redistribuir os elementos do layout de um site, posicionando-os de forma a explorar toda a área disponível no navegador, resultando em um layout mais agradável e com mais espaço. Vejamos como fazer isso neste tutorial.]]></description>
			<content:encoded><![CDATA[<p>O layout de uma página de internet ou de uma aplicação desktop em flash deve ser projetado tendo em mente uma resolução mínima. Caso não tratemos a possibilidade de várias resoluções (ou mesmo o redimensionamento da área disponível no navegador), é possível que o usuário do produto veja barras de rolagem horizontais e verticais (em aplicações WEB), ou que parte do seu conteúdo seja cortado.</p>
<p>Barras de rolagem (principalmente a horizontal) afetam a usabilidade e a estética do site. Para evitar esse tipo de problema em aplicações Flash, podemos estabelecer que o nosso conteúdo SWF ocupará 100% da área disponível no navegador, conforme explicado no tutorial &#8220;Fazendo o site ocupar toda a área do navegador&#8221;.</p>
<p>Entretanto, quando adotamos essa abordagem, o conteúdo Flash é redimensionado de acordo com a resolução e área disponível no navegador do visitante, o que pode resultar em efeitos indesejados na aparência final (redimensionamentos que não seguem proporção por exemplo).</p>
<p>Para evitar esse tipo de efeito, podemos gerenciar o redimensionamento do conteúdo em Flash, reposicionando e redimensionado o conteúdo conforme desejarmos.</p>
<p>Podemos ter, por exemplo, um website composto de um menu esquerdo, um conteúdo central, e um espaço na lateral direita reservado para banners. Eu desejo que o menu esquerdo fique sempre a 20 pixels da margem esquerda do navegador (centralizado verticalmente), que o conteúdo central fique sempre no centro (vertical e horizontal), e que o espaço de banners fique a 20 pixels da margem direita (centralizado verticalmente). Desejo também que o conteúdo não seja rediomensionado de acordo com o tamanho da área do navegador.</p>
<p>Tendo em vista essas especificações, devemos definir os pontos de registro dos movieclips correspondentes de acordo com os respectivos alinhamentos. Exemplo, se eu quero que o menu esquerdo fique alinhado a esquerda horizontalmente e ao centro verticalmente, o ponto de registro do seu movieclip deverá estar alinhado a esquerda e centralizado verticalmente, conforme a figura a seguir:</p>
<div id="attachment_583" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/07/ponto-registro.jpg"><img class="size-medium wp-image-583" title="Tutorial actionscript - Definição do ponto de registro - Criação de sites" src="http://www.virtualizeid.com.br/wp-content/uploads/2009/07/ponto-registro-300x240.jpg" alt="Definindo corretamente o ponto de registro" width="300" height="240" /></a><p class="wp-caption-text">Definindo corretamente o ponto de registro</p></div>
<p>Essa configuração do ponto de registro não é obrigatória, mas facilitará o nosso trabalho ao alinhar o elemento. A mesmo lógica se aplica a outros tipos de alinhamento. Por exemplo, se desejo alinhar um elemento ao centro (horizontalmente e verticalmente), seu ponto de registro deve estar no centro.</p>
<p>Após definirmos corretamente os pontos de registro, precisamos dizer ao flash que não desejamos que ele redimensione o conteúdo de acordo com a área disponível. Precisamos também, definir uma orientação para o stage, quando o arquivo flash estiver em tamanhos superiores ou inferiores ao tamanho original do stage. Para isso, usamos o código a seguir:</p>
<pre class="brush: as3;">
// Indica que o conteúdo não dever ser redimensionado.
stage.scaleMode = StageScaleMode.NO_SCALE;

// Indica que caso a área do flash (no navegador por exemplo) seja
// maior ou menor que o stage, o ponto 0,0 do stage deve-se posicionar
// no canto superior (TOP) esquerdo (LEFT) da área.
stage.align		= StageAlign.TOP_LEFT;
</pre>
<p>Feito isso, podemos tratar o redimensionamento da área de conteúdo com facilidade. Para exemplificar, vou utilizar 3 conteúdos, um que será alinhado a 10 pixels da margem superior esquerda, outro que será alinhado ao centro e outro que será alinhado a 10 pixels da margem inferior direita, conforme a figura a seguir (o código fonte deste tutorial encontra-se no fim do texto):</p>
<div id="attachment_584" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/07/estrutura.jpg"><img class="size-medium wp-image-584" title="Tutorial actionscript - estrutura do exemplo - criação de sites" src="http://www.virtualizeid.com.br/wp-content/uploads/2009/07/estrutura-300x233.jpg" alt="Estrutura do exemplo apresentado nesse tutorial" width="300" height="233" /></a><p class="wp-caption-text">Estrutura do exemplo apresentado nesse tutorial</p></div>
<p>Nesse exemplo, nomearei os movieclips dos quadrados como quadEsqTop_mc, quadCent_mc e quadDirBaixo_mc (respectivamente da esquerda para direita).</p>
<p>Para realizar o reposicionamento dos elementos a partir do redimensionamento do stage criamos um ouvinte para o evento &#8220;Event.RESIZE&#8221;. O evento &#8220;Event.RESIZE&#8221; sempre que o conteúdo flash é redimensionado. Veja:</p>
<pre class="brush: as3;">

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align		= StageAlign.TOP_LEFT;

// Criamos um ouvinte para o evento Event.RESIZE (redimensionamento).
stage.addEventListener(Event.RESIZE, Redimensionamento);
function Redimensionamento(evt)
{
	// Alinhamento a 10 pixels da margem superior esquerda.
	quadEsqTop_mc.x = 10;
	quadEsqTop_mc.y = 10;

	// Alinhamento ao centro.
	quadCent_mc.x	= stage.stageWidth 	/ 2;
	quadCent_mc.y	= stage.stageHeight	/ 2;

	// Alinhamento a 10 pixels da margem inferior direita.
	quadDirBaixo_mc.x = stage.stageWidth 	- 10;
	quadDirBaixo_mc.y = stage.stageHeight 	- 10;
}

// Chamamos a função inicialmente para que os quadrados posicionem-se
// nas margens desejadas.
Redimensionamento(null);
</pre>
<p>Na linha 05, associamos o evento de redimensionamento à função Redimensionamento, que irá tratar esse evento. Nas linhas 09 a 18 posicionamos os quadrados de acordo com o desejado. Utilizamos as propriedades stage.stageWidth e stage.stageHeight para saber a largura e altura atuais do stage.</p>
<p>Na linha 23 realizamos uma chamada à função, para assegurar que assim que o site seja carregado a função seja disparada, e a distribuição dos elementos seja aplicada.</p>
<p>Experimente rodar esse exemplo no flash e redimensionar a janela do .SWF. Veja que as margens se mantêm as mesmas, e quadrado central permanece sempre no centro.</p>
<p>Dúvidas, é só perguntar! Até o próximo artigo!</p>
<p><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/07/exemplo.fla">Tutorial actionscript &#8211; Reposicionando elementos após redimensionamento da janela</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F07%2Freposicionando-elementos-apos-redimensionamento-da-janela%2F&amp;linkname=Reposicionando%20elementos%20ap%C3%B3s%20redimensionamento%20da%20janela">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/07/reposicionando-elementos-apos-redimensionamento-da-janela/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Fazendo o site ocupar toda a área do navegador</title>
		<link>http://www.virtualizeid.com.br/2009/07/fazendo-o-site-ocupar-toda-a-area-do-navegador/</link>
		<comments>http://www.virtualizeid.com.br/2009/07/fazendo-o-site-ocupar-toda-a-area-do-navegador/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 20:14:02 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Artigos e Tutoriais]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criação de sites]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=473</guid>
		<description><![CDATA[Quando desenvolvemos um Website Full-Flash (completamente em flash) normalmente desejamos que o site ocupe toda a área disponível do browser. Isso, além de nos oferecer mais área para explorar, também apresenta o layout de uma forma mais integrada ao navegador. Vejamos como fazer isso nesse tutorial.]]></description>
			<content:encoded><![CDATA[<p>Quando desenvolvemos um Website Full-Flash (completamente em flash) normalmente desejamos que o site ocupe toda a área disponível do browser. Isso, além de nos oferecer mais área para explorar, também apresenta o layout de uma forma mais integrada ao navegador.</p>
<p>Para que nosso site ocupe 100% da área disponível, precisamos fazer duas coisas (os arquivos fontes deste tutorial estão disponíveis ao fim do texto):</p>
<p>1. Adicionar um CSS ao HTML da página que inclui o arquivo .SWF, indicando que não desejamos nenhum tipo de borda no site. O CSS é uma linguagem padrão que trabalha junto ao HTML na formatação/estilização de sites. É uma linguagem cujo conhecimento é importantíssimo para Web Designers. Veja o exemplo a seguir.</p>
<pre class="brush: xml; highlight: [9,10,11,12,13,14,15,16];">
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
		&lt;title&gt;Virtualize Interatividade Digital - Tutorial Actionscript&lt;/title&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			swfobject.embedSWF(&quot;exemplo.swf&quot;, &quot;exemplo&quot;, &quot;100%&quot;, &quot;100%&quot;, &quot;9.0.0&quot;, &quot;expressInstall.swf&quot;);
		&lt;/script&gt;
		&lt;style type=&quot;text/css&quot;&gt;
		body
		{
			height:100%;
			margin:0;
			padding:0;
		}
		&lt;/style&gt;
	&lt;/head&gt;
	&lt;body bgcolor=&quot;#000000&quot;&gt;
		&lt;div id=&quot;exemplo&quot;&gt;
			&lt;h1&gt;Conteúdo alternativo&lt;/h1&gt;
			&lt;p&gt;&lt;a href=&quot;http://www.adobe.com/go/getflashplayer&quot;&gt;&lt;img src=&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot; alt=&quot;Get Adobe Flash player&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>2. Precisamos indicar que o flash deve ocupar 100% da altura e largura da página, o que fazemos utilizando os parâmetros da tag object ou do SWFObject. O SWFObject é uma pequena biblioteca em Javascript, que permite a inclusão de conteúdo Flash em páginas HTML, através de um comando Javascript. Essa bibliteca nos livra da preocupação em identificar se o usuário possui Flash player ou Javascript ativado. Aconselho utilizá-la em seus projetos. Veja o código:</p>
<pre class="brush: xml; highlight: [6,7,8,19,20,21,22];">
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
		&lt;title&gt;Virtualize Interatividade Digital - Tutorial Actionscript&lt;/title&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			swfobject.embedSWF(&quot;exemplo.swf&quot;, &quot;exemplo&quot;, &quot;100%&quot;, &quot;100%&quot;, &quot;9.0.0&quot;, &quot;expressInstall.swf&quot;);
		&lt;/script&gt;
		&lt;p&gt;&lt;style type=&quot;text/css&quot;&gt;
		body&lt;
		{
			height:100%;
			margin:0;
			padding:0;
		}
		&lt;/style&gt;
	&lt;/head&gt;
	&lt;body bgcolor=&quot;#000000&quot;&gt;
		&lt;div id=&quot;exemplo&quot;&gt;
			&lt;h1&gt;Conteúdo alternativo&lt;/h1&gt;
			&lt;p&gt;&lt;a href=&quot;http://www.adobe.com/go/getflashplayer&quot;&gt;&lt;img src=&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot; alt=&quot;Get Adobe Flash player&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Nas linhas 06 a 09, importamos e fazemos uso da biblioteca SWFObject. Na linha 08, está o comando que realiza toda a &#8220;mágica&#8221; do processo. O 1° parâmetro deste comando é o arquivo .swf a ser exibido. O 2° é o identificador do arquivo, um nome que daremos para nosso conteúdo. O 3° e 4° parâmetros são as dimensões do arquivo, largura e altura, o qual pode ser fornecido em percentagem. O 5° parâmetro é a versão de Flash Player necessária para rodar o arquivo.O 6° parâmetro é um utilitário para instalação automática do Flash Player que já vem com o SWFObject.</p>
<p>Como falei, o SWFObject identifica a versão do Flash do visitante. Caso a versão seja inferior a exigida o conteúdo da div de id correspondente ao 2° parâmetro da chamada &#8220;swfobject.embedSWF()&#8221;. Caso  contrário, o SWF será exibido no lugar da div.</p>
<p>Isso é o suficiente para o seu conteúdo Flash ser executado ocupando toda a área do navegador. Observe que quando definimos tamanho 100% para o conteúdo flash, o conteúdo também cresce, e não apenas o Stage. Isso não é desejado na maioria dos projetos. Nos próximo artigos veremos como evitar isso e também como alinhar os elementos do site de acordo com o redimensioanamento.</p>
<p>Dúvidas, é só perguntar! Até o próximo artigo!</p>
<p><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/07/Fazendo-o-site-ocupar-toda-a-área-do-navegador.zip">Tutorial actionscript &#8211; Fazendo o site ocupar toda a área do navegador</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F07%2Ffazendo-o-site-ocupar-toda-a-area-do-navegador%2F&amp;linkname=Fazendo%20o%20site%20ocupar%20toda%20a%20%C3%A1rea%20do%20navegador">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/07/fazendo-o-site-ocupar-toda-a-area-do-navegador/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Criando MovieClips dinamicamente com Action Script 3 &#8211; III</title>
		<link>http://www.virtualizeid.com.br/2009/06/criando-movieclips-dinamicamente-com-action-script-3-iii/</link>
		<comments>http://www.virtualizeid.com.br/2009/06/criando-movieclips-dinamicamente-com-action-script-3-iii/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 21:09:36 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Artigos e Tutoriais]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criação de sites]]></category>
		<category><![CDATA[criando movieclips dinamicamente]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=495</guid>
		<description><![CDATA[Neste artigo exploraremos as funções de desenho oferecidas pelo Flash. Elas permitem a criação de projetos interessantes, como jogos de pintar e aplicações onde o usuário pode alterar e brincar com o layout.]]></description>
			<content:encoded><![CDATA[<p>Criar MovieClips dinamicamente, utilizando Action Script 3, é uma tarefa fundamental para ao desenvolvimento de aplicações dinâmicas e interativas.</p>
<p>Quando falamos em criação de MovieClips dinamicamente, temos três finalidades:</p>
<p>1. Utilizar o MovieClip criado como container para outros símbolos.<br />
2. Utilizar o MovieClip criado como um elemento de interface modelo (que se repetirá).<br />
3. Desenhar dinamicamente o conteúdo do MovieClip.</p>
<p>Nesse artigo iremos falar sobre a terceira finalidade.</p>
<p>Para acessar os recursos de desenho nós utilizaremos a propriedade graphics dos MovieClips. Essa propriedade nos fornece acesso a um objeto do tipo Graphics, que está presente em todos os MovieClips.<br />
Ao realizar uma chamada a um método da classe Graphics o flash realiza a ação sobre o movieclip proprietário do atributo graphic correspondente. Por exemplo, se você usa &#8220;movie_mc.drawCircle()&#8221;, você estará desenhando um círculo dentro do MovieClip de nome &#8220;movie_mc&#8221;.  Execute o exemplo a seguir no flash:</p>
<pre class="brush: as3;">
// Criamos um MovieClip vazio.
var circulo_mc = new MovieClip();

// Definimos a cor (ox123456) ao desenharmos dentro do MovieClip circulo_mc.
circulo_mc.graphics.beginFill(0x123456);

// Desenhamos um círculo com a cor específicada no comando anterior, na posição
// 100,100 e com raio de 50 pixels.
circulo_mc.graphics.drawCircle(100, 100, 50);

// Adicionamos o MovieClip criado/desenhado ao root.
addChild(circulo_mc);
</pre>
<p>Os recursos da classe Graphics permite-nos a criação de aplicações muito intessantes. Existem até mesmo programas de edição gráfica disponíveis na Web que utilizam a classe Graphics. Sugiro ao leitor acessar o help da classe Graphics do flash. Lá encontramos a lista completa de métodos da classe.</p>
<p>Vamos a um exemplo um pouco mais complexo. Crie um projeto em flash e adicione dois botões ao stage, um chamado &#8220;desenhar_btn&#8221; e outro chamado &#8220;apagar_btn&#8221;. Esses botões vão assumir a função dos botões de lápis e borracha da toolbar de uma aplicação gráfica, como o paint, por exemplo. Veja:</p>
<div id="attachment_501" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/imagem.JPG"><img class="size-medium wp-image-501" title="Tutorial actionscript - criando MovieClips dinamicamente." src="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/imagem-300x227.jpg" alt="Tutorial actionscript - criando MovieClips dinamicamente." width="300" height="227" /></a><p class="wp-caption-text">Estrutura do exemplo</p></div>
<p>Agora adicione o código Actionscript a seguir na primeira frame do projeto:</p>
<pre class="brush: as3;">
// Indica se o botão do mouse está pressionado.
var desenhando   = false;

// Indica qual ação deve ser realizada de acordo com o botão clicado (desenhar ou apagar).
var modo		 = &quot;&quot;;

// Ouvintes para os eventos do mouse.
stage.addEventListener(MouseEvent.MOUSE_DOWN	, IniciarDesenho);
stage.addEventListener(MouseEvent.MOUSE_UP		, TerminarDesenho);
stage.addEventListener(MouseEvent.MOUSE_MOVE	, Desenhar);

// Ouvintes para os botões.
desenhar_btn.addEventListener(MouseEvent.CLICK	, AlterarModo);
apagar_btn.addEventListener(MouseEvent.CLICK	, AlterarModo);

// Tratador do evento de movimentação do cursor do mouse. Realiza o desenho
// quando o usuário pressiona a tecla do mouse.
function Desenhar(evt: Event)
{
	if (desenhando)
	{
		// Desenha um circulo preto na posição do mouse (lápis).
		if (modo == &quot;desenhar&quot;)
		{
			container_mc.graphics.beginFill(0x000000, 0.5);
			container_mc.graphics.drawCircle(mouseX, mouseY, 2);
		}
		// Desenha um circulo branco na posição do mouse (borracha).
		else
		{
			container_mc.graphics.beginFill(0xFFFFFF, 1);
			container_mc.graphics.drawCircle(mouseX, mouseY, 20);
		}

		// Assegura que o desenho estará atrás dos demais elementos (botões).
		if (getChildAt(0) != container_mc) swapChildren(container_mc, getChildAt(0));
	}
}

// Tratador do evento de clique nos botões &quot;Desenhar&quot; e &quot;Apagar&quot;.
function AlterarModo(evt: Event)
{
	if (evt.target.name == &quot;desenhar_btn&quot;)	modo = &quot;desenhar&quot;;
	else modo = &quot;apagar&quot;;
}

// Tratadores dos eventos de pressionar e soltar tecla do mouse.
function IniciarDesenho(evt: Event)
{
	desenhando = true;
}

function TerminarDesenho(evt: Event)
{
	desenhando = false;
}
</pre>
<p>Nas linhas 7 a 10 criamos os EventListeners para os eventos do mouse, pois desejamos que quando o usuário clique no stage ele desenhe ou apague na posição clicada.</p>
<p>Nas linhas 13 e 14 criamos os EventListeners para os botões &#8220;desenhar_btn&#8221; e &#8220;apagar_btn&#8221;, pois desejamos que quando o usuário clique nesses botões a aplicação mude o a ferramenta selecionada (lápis ou borracha).</p>
<p>Nas linhas 18 a 38 definimos a função que será executada quando o cursor do mouse for movimentado sobre o stage. Nas linhas 23 a 33 executamos a ação apropriada de acordo com o botão clicado pelo usuário. Caso seja &#8220;desenhar&#8221;, desenhamos um círculo preto com transparência 0.5 (na linha 25 definimos a cor e o alpha do circulo) de raio 2 e na posição do cursor do mouse (na linha 26 definimos onde o círculo será desenhado e qual o seu raio).</p>
<p>O mesmo se repete para a ação de apagar (linhas 31 e 32), só que dessa vez usamos um raio maios e a cor branca sem transparência.</p>
<p>Nas linhas 41 a 45 definimos o tratador para o evento de clique nos botões, que define a ação de acordo com o botão clicado pelo usuário. Nas linhas 48 a 56 identificamos se o usuário está com o botão do mouse pressionado ou não, armazenando true ou false na variável desenhando.</p>
<p>Em caso de dúvidas é só perguntar! Até o próximo artigo!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F06%2Fcriando-movieclips-dinamicamente-com-action-script-3-iii%2F&amp;linkname=Criando%20MovieClips%20dinamicamente%20com%20Action%20Script%203%20%26%238211%3B%20III">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/06/criando-movieclips-dinamicamente-com-action-script-3-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando MovieClips dinamicamente com Action Script 3 &#8211; II</title>
		<link>http://www.virtualizeid.com.br/2009/06/criando-movieclips-dinamicamente-com-action-script-3-i/</link>
		<comments>http://www.virtualizeid.com.br/2009/06/criando-movieclips-dinamicamente-com-action-script-3-i/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 21:53:09 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criando movieclips dinamicamente]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=316</guid>
		<description><![CDATA[Criar MovieClips dinamicamente, utilizando Action Script 3, é uma tarefa fundamental para ao desenvolvimento de aplicações dinâmicas e interativas. Neste artigo, veremos como utilizar o Linkage para criar cópias de MovieClips presentes na bibliteca.]]></description>
			<content:encoded><![CDATA[<p>Criar MovieClips dinamicamente, utilizando Action Script 3, é uma tarefa fundamental para ao desenvolvimento de aplicações dinâmicas e interativas.</p>
<p>Quando falamos em criação de MovieClips dinamicamente, temos três finalidades:</p>
<p>1. Utilizar o MovieClip criado como container para outros símbolos.<br />
2. Utilizar o MovieClip criado como um elemento de interface modelo (que se repetirá).<br />
3. Desenhar dinamicamente o conteúdo do MovieClip.</p>
<p>Nesse artigo iremos falar sobre a segunda finalidade.</p>
<p>O Action Script nos permite criar um MovieClip no Flash e adicioná-lo dinamicamente ao Stage durante a execução da aplicação.</p>
<p>Isso é muito útil e fundamental para algumas finalidades. Imagine por exemplo um jogo de tetris. Desejamos que as peças apareçam aleatoriamente, e que o jogo não tenha fim. Evidentemente não iremos posicionar milhões de peças durante a criação do projeto no Flash, a adição das peças será feita dinamicamente via Action Script. Precisamos apenas dizer pro Flash que ele deve disponibilizar os MovieClips para que possamos adicioná-los dinamicamente.</p>
<p>Para exportamos um MovieClip para uso em Action Script basta clicarmos com a tecla direita do mouse sobre o MovieClip desejado na biblioteca e clicar em &#8220;Linkage&#8221; (o código fonte deste artigo está disponível no final):</p>
<div id="attachment_317" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/linkage.JPG"><img class="size-medium wp-image-317" title="Tutorial Actionscript - Criando MovieClips dinamicamente" src="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/linkage-300x232.jpg" alt="Tutorial Actionscript - Criando MovieClips dinamicamente" width="300" height="232" /></a><p class="wp-caption-text">Acessando o Linkage de um item de biblioteca</p></div>
<p>Será exibida uma janela chamada &#8220;Linkage properties&#8221;. Nessa janela devemos marcar &#8220;Export for ActionScript&#8221; e no campo de texto &#8220;Class&#8221; devemos informar o nome que desejamos utilizar para instanciar esse MovieClip (nome da classe). Vou chamar apenas de &#8220;Quadrado&#8221;.</p>
<div id="attachment_318" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/linkage2.JPG"><img class="size-medium wp-image-318" title="Tutorial Actionscript - Utilizando o linkage" src="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/linkage2-300x232.jpg" alt="Tutorial Actionscript 3 - Utilizando o linkage" width="300" height="232" /></a><p class="wp-caption-text">Preenchimento da janela Linkage</p></div>
<p>Após isso será exibida uma janela &#8220;ActionScript Warning&#8221;. Clique em Ok. Agora, para criarmos dinamicamente uma cópia desse MovieClip, precisamos apenas usar &#8220;new Quadrado()&#8221;. Veja o exemplo:</p>
<pre class="brush: as3;">

// Quantidade de quadrados dinâmicos que criaremos.
var QUANTIDADE_QUADRADOS = 10;

// Laço de repetição que cria os quadrados.
for (var i = 0; i &lt; QUANTIDADE_QUADRADOS; i++)
{
	// Instancia o quadrado (usando a classe que exportamos no linkage)
	var quadrado_mc = new Quadrado();

	// Posiciona o quadrado de acordo com o valor de i.
	quadrado_mc.x = i * 30;

	// Cria os ouvintes de evento para os eventos MOUSE_DOWN (pressionar tecla do mouse)
	// e MOUSE_UP (soltar tecla do mouse) sobre o quadrado em criação.
	quadrado_mc.addEventListener(MouseEvent.MOUSE_DOWN    , IniciarDrag);
	quadrado_mc.addEventListener(MouseEvent.MOUSE_UP    , PararDrag);

	// A propriedade buttonMode define se o MovieClip deverá se comportar como um botão.
	// Se buttonMode for true, o cursor do mouse irá virar uma mão quando estiver sobre
	// o MovieClip.
	quadrado_mc.buttonMode = true;

	// Define a transparência do MovieClip de acordo com o valor de i.
	quadrado_mc.alpha = (i+1) * (1 / QUANTIDADE_QUADRADOS);

	// Adiciona o quadrado_mc ao root (timeline principal).
	addChild(quadrado_mc);
}

// Ouvinte do evento MOUSE_DOWN dos quadrados.
function IniciarDrag(evt: Event)
{
	// Recuperamos o MovieClip (quadrado) que foi clicado.
	var alvo_mc = MovieClip(evt.target);

	// O método startDrag() da classe MovieClip faz o
	// movieclip seguir o cursor do mouse.
	alvo_mc.startDrag();
}

// Ouvinte do evento MOUSE_UP dos quadrados.
function PararDrag(evt: Event)
{
	// Recuperamos o MovieClip (quadrado) que foi clicado.
	var alvo_mc = MovieClip(evt.target);

	// O método stopDrag() da classe MovieClip faz o
	// movieclip parar de seguir o cursor do mouse.
	alvo_mc.stopDrag();
}
</pre>
<p>Neste exemplo, introduzimos mais alguns recursos da classe MovieClip. A propriedade &#8220;buttoMode&#8221; permite definirmos se desejamos que o MovieClip se comporte como um botão. Caso seja definida com true, ao posicionarmos o cursor do mouse sobre o MoviveClip, o cursor assumirá a aparência de uma mão (hand cursor). Caso seja false, o cursor permanecerá uma seta.</p>
<p>Os métodos &#8220;startDrag()&#8221; e &#8220;stopDrag()&#8221; iniciam e interrompem o drag do mouse. O drag faz com que o MovieClip siga o cursor do mouse.</p>
<p>No próximo artigo veremos como desenhar dinamicamente utilizando as funções de desenho presentes em MovieClips. Sinta-se a vontade para perguntas!</p>
<p style="text-align: center;"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/linkage.zip" alt="Download do tutorial actionscript">Clique aqui para fazer o download do arquivo-fonte deste tutorial</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F06%2Fcriando-movieclips-dinamicamente-com-action-script-3-i%2F&amp;linkname=Criando%20MovieClips%20dinamicamente%20com%20Action%20Script%203%20%26%238211%3B%20II">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/06/criando-movieclips-dinamicamente-com-action-script-3-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando MovieClips dinamicamente com Action Script 3 &#8211; I</title>
		<link>http://www.virtualizeid.com.br/2009/06/criando-movieclips-com-action-script-3-i/</link>
		<comments>http://www.virtualizeid.com.br/2009/06/criando-movieclips-com-action-script-3-i/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 20:39:03 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criação de sites]]></category>
		<category><![CDATA[criando movieclips dinamicamente]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=304</guid>
		<description><![CDATA[Criar MovieClips dinamicamente, utilizando Action Script 3, é uma tarefa fundamental para ao desenvolvimento de aplicações dinâmicas e interativas. Nesse artigo veremos uma das formas de utilizar a criação dinâmica de MovieClips.]]></description>
			<content:encoded><![CDATA[<p>Criar MovieClips dinamicamente, utilizando Action Script 3, é uma tarefa fundamental para ao desenvolvimento de aplicações dinâmicas e interativas.</p>
<p>Quando falamos em criação de MovieClips dinamicamente, temos três finalidades:</p>
<ol>
<li>Utilizar o MovieClip criado como container para outros símbolos.</li>
<li>Utilizar o MovieClip criado como um elemento de interface modelo (que se repetirá).</li>
<li>Desenhar dinamicamente o conteúdo do MovieClip.</li>
</ol>
<p>Nesse artigo iremos falar sobre a primeira finalidade.</p>
<p>Para criar um MovieClip como container, basta apenas criar um MovieClip vazio e utilizar o metódo &#8220;addChild()&#8221; para adicionar o conteúdo. Posteriormente podemos acessar o conteúdo que adicionamos ulizando variáveis ou alguns recursos da classe MovieClip.</p>
<p>Vejamos o exemplo a seguir:</p>
<pre class="brush: as3;">
// Array (vetor) com os endereços das imagens que iremos
// carregar.
var imagens = new Array(&quot;http://assets3.blogblogs.com.br/avatars/0/131/avatar_131176_50.jpg&quot;,
	&quot;http://assets3.blogblogs.com.br/avatars/0/119/avatar_119276_50.jpg&quot;,
	&quot;http://babado.ig.com.br/images/2/2/2/1702400.babado_mercado_atrizes_1gente___fotos_40_39.jpg&quot;,
	&quot;http://1.gravatar.com/avatar/7b9b4d233fdd7dccfea4aeab695c960b?s=48&amp;d=wavatar&quot;,
	&quot;http://www.minhaserie.com.br/imagens/usuarios/avatar/m/p/19529.jpg&quot;,
	&quot;http://contigo.abril.ig.com.br/imagem/foto/outra/bem-pagas/280708-bem-paga-5.jpg&quot; );

// Criamos um MovieClip vazio (container).
var containerImagens_mc = new MovieClip();

// Adicionamos o MovieClip ao nosso filme.
addChild(containerImagens_mc);

// Ouvinte do evento CLICK no botão Carregar.
function CarregarImagens(evt: Event)
{
	// Percorre o array de imagens carregando-as.
	for (var i = 0; i &lt; imagens.length; i++)
	{
		// Cria um objeto Loader.
		var loader = new Loader();

		// Solicita o load da imagem.
		loader.load(new URLRequest(imagens[i]));

		// Posiciona o objeto a direita do anterior.
		loader.x = i * 60;

		// Adiciona o objeto Loader no MovieClip container.
		// Quando a imagem for carregada ela será exibida.
		containerImagens_mc.addChildAt(loader, i);
	}
}

// Ouvinte do evento CLICK no botão Apagar.
function ApagarImagens(evt: Event)
{
	// Enquanto existirem elementos dentro do MovieClip containerImagens_mc.
	while (containerImagens_mc.numChildren &gt; 0)
	{
		// Removemos o primeiro elemento da lista de elementos.
		containerImagens_mc.removeChildAt(0);
	}
}

// Associamos o evento de click no botão &quot;carregar_btn&quot; à função CarregarImagens.
carregar_btn.addEventListener(MouseEvent.CLICK    , CarregarImagens);

// Associamos o evento de click no botão &quot;apagar_btn&quot; à função ApagarImagens.
apagar_btn.addEventListener(MouseEvent.CLICK    , ApagarImagens);
</pre>
<p>Na linha 11, criamos um MovieClip vazio, utilizando o comando &#8220;new MovieClip()&#8221;. Conforme vimos em artigos anteriores, utilizamos o operador new para criar novos objetos de uma determinada classe.</p>
<p>Na linha 20 utilizamos um laço de repetição &#8220;for&#8221; para percorrer o array de urls que criamos na linha 1. Caso você tenha dificuldades em entender esse trecho, sugiro que você procure pelo tutorial sobre laços de repetição e sobre arrays (vetores) na categoria básico.</p>
<p>A cada iteração do nosso laço &#8220;for&#8221;, uma nova ordem de load de imagem é enviada ao flash. Lembre-se que os comandos são executados independente do load da imagem ter sido concluído ou não, ou seja, a instrução de load de imagem é enviada para o Flash e o load é iniciado em paralelo ao laço &#8220;for&#8221; que avançará para o próximo item do vetor &#8220;imagens&#8221;.</p>
<p>Na linha 29 posicionamos o objeto loader de acordo com o valor da varíavel i. Dessa forma, as imagens não ficarão uma em cima da outra.</p>
<p>Na linha 33 adicionamos o objeto loader ao MovieClip containerImagens_mc. Assim, logo que o load finalizar, o conteúdo correspondente será exibido dentro do MovieClip containerImagens_mc. A função &#8220;addChildAt()&#8221; permite especificarmos a posição Z onde o elemento será adicionado ao MovieClip alvo do método. A posição Z define a ordem dos elementos dentro de um MovieClip, ou seja, qual elemento vem a frente de qual. Dessa forma, estamos adicionando elementos com propriedade Z crescente iniciando 0.</p>
<p>Já na função ApagarItens na linha 41 criamos um laço de repetição que se repete enquanto o MovieClip &#8220;containerImagens_mc&#8221; possuir elementos filhos (elementos dentro dele). Assim, enquanto essa condição for verdadeira, o código presente na linha 44 realiza a remoção do primeiro elemento da lista de filhos dele.</p>
<p>Neste artigo apresentamos alguns recursos que nos permitem, por exemplo, criar uma galeria de imagens. Podemos usar um MovieClip vazio para armazenar, posicionar e remover imagens.</p>
<p>Nos próximos artigos veremos outras finalidades para a criação dinâmica de MovieClips. Em artigos futuros também exploraremos exemplos mais completos. Em caso de dúvidas, fique a vontade para perguntar.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F06%2Fcriando-movieclips-com-action-script-3-i%2F&amp;linkname=Criando%20MovieClips%20dinamicamente%20com%20Action%20Script%203%20%26%238211%3B%20I">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/06/criando-movieclips-com-action-script-3-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Carregando imagens externas</title>
		<link>http://www.virtualizeid.com.br/2009/06/carregando-imagens-externas/</link>
		<comments>http://www.virtualizeid.com.br/2009/06/carregando-imagens-externas/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 20:00:55 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[carregando imagens]]></category>
		<category><![CDATA[load de imagens]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=294</guid>
		<description><![CDATA[No tutorial passado vimos como criar um pré-loader durante o desenvolvimento de um site. Neste artigo criaremos um load um pouquinho diferente e veremos alguns detalhes no load de imagens em Action Script 3.]]></description>
			<content:encoded><![CDATA[<p>No tutorial passado vimos como criar um pré-loader durante o desenvolvimento de um site. O processo de load de imagens é bastante semelhante ao load de arquivos .swf.</p>
<p>Nesse artigo iremos utilizar uma estrutura semelhante ao arquivo &#8220;loading.fla&#8221; do tutorial passado, estrutura essa apresentada a seguir (o arquivo-fonte está disponivel para download no final do texto):</p>
<div id="attachment_301" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/load-imagens.JPG"><img class="size-medium wp-image-301" title="Tutorial Actionscript 3 - Load de imagens externas" src="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/load-imagens-300x227.jpg" alt="Tutorial Actionscript 3 - Load de imagens externas" width="300" height="227" /></a><p class="wp-caption-text">Estrutura do exemplo deste tutorial</p></div>
<p>Vejamos o código:</p>
<pre class="brush: as3;">
// Criamos um objeto Loader. A classe Loader nos permite
// realizar o load de conteúdos externos.
var loader = new Loader();

// Associamos o evento COMPLETE a função ExibirImagem. Assim, quando o load for
// terminado a função ExibirSite será invocada.
loader.contentLoaderInfo.addEventListener(Event.COMPLETE            , ExibirImagem);

// Associamos o evento PROGRESS a função ProgressoLoad. Assim, sempre que o progresso do
// load do conteúdo for atualizado, essa função será invocada.
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS    , ProgressoLoad);

// Solicitamos o load do arquivo de imagem.
loader.load(new URLRequest(&quot;http://www.imotion.com.br/imagens/data/media/41/paisagem1024x768.jpg&quot;));

// Função ouvinte do evento PROGRESS.
function ProgressoLoad(evt: ProgressEvent)
{
	// Calculamos a percentagem de progresso do load.
	// bytesLoaded é uma propriedade do evento que nos fornece a quantidade de bytes que
	// já foram carregados enquanto bytesTotal nos fornece a quantidade total de bytes
	// do arquivo que está sendo carregado.
	var percentagem     = evt.bytesLoaded / evt.bytesTotal;

	// Definimos a largura da cortina de acordo com a percentagem carregada.
	cortina_mc.scaleX     = percentagem;

	// Definimos o texto da percentagem de progresso.
	percentagem_txt.x   = stage.stageWidth * percentagem;
	percentagem_txt.y   = (stage.stageHeight / 2) - (percentagem_txt.textHeight/2);
	percentagem_txt.text= Math.floor(percentagem * 100) + &quot;%&quot;;
}

// Função ouvinte do evento COMPLETE.
function ExibirImagem(evt: Event)
{
	// Armazenamos a imagem em uma variável.
	var imagem = Bitmap(evt.target.content);

	// Suavizamos a imagem (remove pixels).
	imagem.smoothing = true;

	// Adicionamos a imagem ao stage (root).
	addChild(imagem);
}
</pre>
<p>Neste exemplo introduzimos alguns recursos novos do Action Script 3. Nas linhas 29 e 30 utilizamos o objeto &#8220;stage&#8221; para acessar as propriedades &#8220;stageHeight&#8221; e &#8220;stageWidth&#8221;. Esse objeto está disponível em qualquer projeto Flash, e nos fornece uma referência ao stage. Lembre-se que uma referencia ao stage não é uma referencia ao root, ou seja, o stage não é do tipo MovieClip e sim do tipo Stage.</p>
<p>Através das propriedades &#8220;stageWidth&#8221; e &#8220;stageHeight&#8221; temos acesso a largura e altura atual do stage. Isso significa que se redimensionarmos a janela do flash ou do navegador (no caso de um site que ocupe toda a janela do navegador) essa propriedade apresentará o valor atualizado. Nos próximos artigos falaremos mais sobre isso, quando falarmos sobre redimensionamento de janela.</p>
<p>Na linha 38 utilizamos uma nova classe e um recurso da linguagem Action Script chamado &#8220;casting&#8221;. A nova classe utilizada é Bitmap que é utilizada para representar imagens. Casting é um recurso onde informamos ao Flash que temos certeza sobre um tipo de dados que estamos acessando. Quando realizamos o load de um conteúdo externo, esse pode por exemplo ser uma imagem ou um MovieClip (arquivo .swf). Assim, a propriedade &#8220;evt.target.content&#8221; assume um tipo genérico, mesmo quando carrega um arquivo .swf ou uma imagem.</p>
<p>Vamos tentar fazer uma anologia. No mundo real podemos ter caminhões ou carros de passeio, mas ambos são automóveis. Automóveis é então uma definição genérica. O mesmo acontece no Flash. Temos MovieClips, Bitmaps, TextFields, mas todos eles são Objects (objetos). Esse é um conceito de orientação a objetos, chamado herança, mas veremos ele mais a frente.</p>
<p>Voltando a linha 38, o que ela faz é armazenar o valor carregado no formato de um Bitmap. Quando usamos &#8220;Bitmap(evt.target.content)&#8221; estamos dizendo pro flash que temos certeza que &#8220;evt.target.content&#8221; é um Bitmap e que ele pode nos devolver ele como tal.</p>
<p>Na linha 41 utilizamos a propriedade smoothing para suavizar o desenho da imagem. Tente executar esse exemplo sem essa linha, dê zoom na imagem, depois execute com essa linha, dê zoom novamente e compare.</p>
<p>Por fim adicionamos a imagem ao stage. Lembrando que a primeira vez que executarmos o exemplo o load funcionará. A partir da segunda vez não veremos mais o load, pois a imagem estará em cache. Limpe o cache ou utilize outra imagem.</p>
<p>Nos próximos tutoriais veremos como criar MovieClips dinamicamente. Caso tenha dúvidas, não exite me perguntar!</p>
<p style="text-align: center;"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/load-imagens.zip" alt="Tutorial actionscript 3 - Download do tutorial">Clique aqui para baixar o código-fonte desse tutorial</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F06%2Fcarregando-imagens-externas%2F&amp;linkname=Carregando%20imagens%20externas">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/06/carregando-imagens-externas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando um pré-loader (loading)</title>
		<link>http://www.virtualizeid.com.br/2009/06/criando-um-pre-loader-loading/</link>
		<comments>http://www.virtualizeid.com.br/2009/06/criando-um-pre-loader-loading/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 16:03:31 +0000</pubDate>
		<dc:creator>arivanbastos</dc:creator>
				<category><![CDATA[2. Intermediário]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[criação de sites]]></category>
		<category><![CDATA[loading]]></category>
		<category><![CDATA[pré loader]]></category>
		<category><![CDATA[tutorial action script]]></category>
		<category><![CDATA[tutorial actionscript]]></category>

		<guid isPermaLink="false">http://www.virtualizeid.com.br/blog/?p=265</guid>
		<description><![CDATA[Uma das tarefas mais comuns necessárias ao desenvolvimento de um site em flash é a criação de um pré-loader: sessãoonde o visitante aguarda o load do site. Nesse artigo veremos como criar um pré-loader usando Action Script 3.]]></description>
			<content:encoded><![CDATA[<p>Uma das tarefas mais comuns necessárias ao desenvolvimento de um site em flash é a criação de um pré-loader: sessãoonde o visitante aguarda o load do site.</p>
<p>É  fundamental que nessa sessão o visitante tenha um feedback sobre quanto do site já foi carregado, o que pode ser feito através de uma barra de load ou mesmo de uma percentagem textual.</p>
<p>Para criar um pré-loader, devemos dividir o nosso site em dois arquivos. No exemplo chamarei eles de &#8220;loading.fla&#8221; (sessão de load) e &#8220;site.fla&#8221; (o site propriamente dito).</p>
<p>O arquivo &#8220;loading.swf&#8221; deverá ser o mais simples possível, contendo apenas os elementos necessários à apresentação da sessão de load do site. Não queremos que esse arquivo seja grande, pois não haverá um pré-loader para ele. Se o arquivo for grande e demorar para carregar o visitante poderá achar que há algum problema com o site, perder a paciência e sair antes mesmo de visualisá-lo.</p>
<p>No meu exemplo, o arquivo &#8220;loading.fla&#8221; possuirá um MovieClip que será uma cortina em branco com transparência, do tamanho exato do stage, um texto dinamico (Dynamic Text) alinhado no canto inferior direito e um texto estático, conforme a figura a seguir (o código fonte desse artigo encontra-se no final):</p>
<div id="attachment_266" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/pre-loader.JPG"><img class="size-medium wp-image-266" title="Tutorial actionscript 3 - Criando um pré-loader (loading)." src="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/pre-loader-300x227.jpg" alt="Tutorial actionscript 3 - Criando um pré-loader (loading)." width="300" height="227" /></a><p class="wp-caption-text">Estrutura do exemplo deste tutorial.</p></div>
<p>Nomeei o texto dinâmico de percentagem_txt e a cortina de cortina_mc.  No arquivo &#8220;site.fla&#8221; adicionei várias imagens, apenas para que ele ganhasse tamanho, para que possamos testar o load.</p>
<p>Com a estrutura citada pronta, o código para funcionamento do load é apresentado a seguir:</p>
<pre class="brush: as3;">
// Criamos um objeto Loader. A classe Loader nos permite
// realizar o load de conteúdos externos.
var loader = new Loader();

// Associamos o evento COMPLETE a função ExibirSite. Assim, quando o load for
// terminado a função ExibirSite será invocada.
loader.contentLoaderInfo.addEventListener(Event.COMPLETE            , ExibirSite);

// Associamos o evento PROGRESS a função ProgressoLoad. Assim, sempre que o progresso do
// load do conteúdo for atualizado, essa função será invocada.
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS    , ProgressoLoad);

// Solicitamos o load do arquivo site.swf com o conteúdo principal
// do site.
loader.load(new URLRequest(&quot;site.swf&quot;));

// Função ouvinte do evento PROGRESS.
function ProgressoLoad(evt: ProgressEvent)
{
	// Calculamos a percentagem de progresso do load.
	// bytesLoaded é uma propriedade do evento que nos fornece a quantidade de bytes que
	// já foram carregados enquanto bytesTotal nos fornece a quantidade total de bytes
	// do arquivo que está sendo carregado.
	var percentagem     = evt.bytesLoaded / evt.bytesTotal;

	// Definimos a largura da cortina de acordo com a percentagem carregada.
	cortina_mc.scaleX     = percentagem;

	// Definimos o texto da percentagem de progresso.
	percentagem_txt.text= Math.floor(percentagem * 100) + &quot;%&quot;;
}

// Função ouvinte do evento COMPLETE.
function ExibirSite(evt: Event)
{
	// Adiciona ao stage (root) o conteúdo carregado.
	addChild(evt.target.content);
}
</pre>
<p>A propriedade scaleX (e também scaleY) nos permite definir a escala de um MovieClip nos eixos X e Y. O valor dessa propriedade varia entre 0 e 1, com 0 correspondendo a nenhuma largura (no caso do scaleX) e 1 correspondendo a largura original do MovieClip. Como o MovieClip cortina_mc possui a largura do stage, o código AS do exemplo, nos garantirá que quando a percentagem de load atingir 100% a cortina possuirá a largura do stage (tamanho original).</p>
<p>A função &#8220;Math.floor()&#8221; retorna o arredondamento para o inteiro inferior de um número fracionário. Dessa forma o comando &#8220;Math.floor(percentagem * 100)&#8221; nos retorna a percentagem, que originalmente está entre 0 e 1, no formato entre 0 e 100. Após isso, utilizamos o operador &#8216;+&#8217; para concatenar o resultado com o caractere &#8216;%&#8217;.</p>
<p>Por fim, também usamos o método &#8220;addChild()&#8221;. Trata-se de um método da classe MovieClip que nos permite adicionar um elemento dentro do MovieClip (esse elemento pode ser um Bitmap, Shape ou outro MovieClip).</p>
<p>Para testar o loading de um site o Flash nos oferece uma ferramenta bastante útil. Rode o filme com Ctrl + ENTER e utilize o menu &#8220;View&#8221; -&gt; &#8220;Simulate Download&#8221; para testar o download do seu site. Você ainda pode escolher a velocidade de conexão que deseja testar em &#8220;View&#8221; -&gt; &#8220;Download Settings.&#8221;</p>
<p>Lembrem-se que para o exemplo funcionar corretamente, os dois arquivos devem estar na mesma pasta e que o arquivo site.fla deverá ser compilado (ctrl + enter) antes do loading.fla.</p>
<p>Nos próximos artigos continuaremos com exemplos bem práticos e úteis na programação Action Script 3. Caso tenha dúvidas sinta-se a vontade para perguntar!</p>
<p style="text-align: center;"><a href="http://www.virtualizeid.com.br/wp-content/uploads/2009/06/pre_loader.zip" alt="Tutorial Actionscript 3 - Download do tutorial">Clique aqui para baixar os arquivos deste artigo</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.virtualizeid.com.br%2F2009%2F06%2Fcriando-um-pre-loader-loading%2F&amp;linkname=Criando%20um%20pr%C3%A9-loader%20%28loading%29">Compartilhar</a>]]></content:encoded>
			<wfw:commentRss>http://www.virtualizeid.com.br/2009/06/criando-um-pre-loader-loading/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
