<?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>UNIVERSOS ideias</title>
	<atom:link href="http://blog.grupouniversos.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.grupouniversos.com</link>
	<description>Blog de Tecnologia, discussão, informações e troca de experiência</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:39:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Gravar dados de qualquer formulário em PHP [ Parte I ]</title>
		<link>http://blog.grupouniversos.com/2012/01/25/gravar-dados-de-qualquer-formulario-em-php-parte-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gravar-dados-de-qualquer-formulario-em-php-parte-i</link>
		<comments>http://blog.grupouniversos.com/2012/01/25/gravar-dados-de-qualquer-formulario-em-php-parte-i/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 21:56:20 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[formulário]]></category>
		<category><![CDATA[gravar no banco]]></category>
		<category><![CDATA[matriz de dados]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=419</guid>
		<description><![CDATA[Vêm amigos do Blog Grupo Universos (é não ficou “bão” esse inicio da postagem, então leia assim: Olá pessoal), iniciarei novamente uma seqüência de postagens sobre como recuperar dados de um formulário e gravar no banco de dados utilizando o ...]]></description>
			<content:encoded><![CDATA[<p>Vêm amigos do Blog Grupo Universos (é não ficou “bão” esse inicio da postagem, então leia assim: Olá pessoal), iniciarei novamente uma seqüência de postagens sobre como recuperar dados de um formulário e gravar no banco de dados utilizando o <em>php </em>como linguagem de programação. Nesta minha primeira postagem irei mostrar como recuperar todos os dados de um formulário, independente da quantidade de campos e gravá-las no banco passando como parâmetro somente o nome da tabela do banco de dados.<a href="http://blog.grupouniversos.com/wp-content/uploads/2012/01/php.jpg"><img class="alignright size-full wp-image-432" title="php" src="http://blog.grupouniversos.com/wp-content/uploads/2012/01/php.jpg" alt="php" width="238" height="283" /></a></p>
<p>O detalhe dessa postagem é que eu irei diferenciar dos inúmeros Blogs ao qual sempre vejo postagens da mesma forma (alguns até são cópias de outros) o método de executar uma gravação no banco.</p>
<p>Você já pensou ou ao menos deve ter passado por sua cabeça: “<em>Porque não criar uma função que recupere todos os dados de um formulário independente da quantidade de campos?</em>”, se não pensou, pense agora, todos os formulários, seja para cadastro ou envio de itens por email são particularmente comuns em qualquer desenvolvimento web. Para desenvolver um é necessário criar um formulário, anotarem os nomes de todos os campos, recuperarem todas as variáveis, pegar o nome da tabela, pegar o nome das colunas e então fazer toda essa ligação. Além desse trabalho todo é preciso lembrar um ponto importante: E quando um formulário ou tabela no banco de dados sofre uma atualização? Nem preciso responder a essa pergunta sobre o que é preciso fazer quando isso acontece, não é mesmo?</p>
<p><strong>BANCO DE DADOS:</strong></p>
<p>Para iniciar, será preciso criar um banco de dados, lembrando que nesse exemplo será utilizado o mysql como plataforma de gerenciamento de banco de dados.</p>
<p><span id="more-419"></span></p>
<p><strong>EM SQL:</strong></p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>CREATE database banco1;</pre>
</div>
<p>Se tiver o <em>phpmyadmin</em> instalado poderá ser utilizada no modo visual a criação do banco de dados.</p>
<p><strong>TABELA:</strong></p>
<p>Também é necessário criar uma tabela nesse banco de dados e será dado o nome de cadastro a ela, com os campos:</p>
<p>id, nome, email, assunto e telefone.</p>
<p><strong>EM SQL:</strong></p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>CREATE TABLE cadastro (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(60) NOT NULL, email VARCHAR(60) NOT NULL, assunto VARCHAR(100) NOT NULL, telefone VARCHAR(14) NOT NULL) ENGINE = InnoDB;</pre>
</div>
<p>O próximo passo é criar a página que contém o formulário:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</pre>
<pre>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Gravar dados de qualquer formulário em PHP [ Parte I ]&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form id=&quot;texte&quot; method=&quot;post&quot; action=&quot;gravar.php&quot;&gt;
	&lt;ul&gt;
    	&lt;li&gt;
        	&lt;label for=&quot;nome&quot;&gt;Nome:&lt;/label&gt;
        	&lt;input type=&quot;text&quot; id=&quot;nome&quot; name=&quot;nome&quot; /&gt;
        &lt;/li&gt;
    	&lt;li&gt;
        	&lt;label for=&quot;email&quot;&gt;Email:&lt;/label&gt;
        	&lt;input type=&quot;text&quot; id=&quot;email&quot; name=&quot;email&quot; /&gt;
        &lt;/li&gt;
    	&lt;li&gt;
        	&lt;label for=&quot;assunto&quot;&gt;Assunto:&lt;/label&gt;
        	&lt;input type=&quot;text&quot; id=&quot;assunto&quot; name=&quot;assunto&quot; /&gt;
        &lt;/li&gt;
    	&lt;li&gt;
        	&lt;label for=&quot;telefone&quot;&gt;Telefone:&lt;/label&gt;
        	&lt;input type=&quot;text&quot; id=&quot;telefone&quot; name=&quot;telefone&quot; /&gt;
        &lt;/li&gt;
        &lt;li&gt;
        	&lt;input type=&quot;submit&quot; id=&quot;enviar&quot; name=&quot;enviar&quot; /&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p><strong>IMPORTANTE:</strong><br />
Os nomes dos campos do formulário devem ser os mesmos da coluna da tabela para esse primeiro exemplo.</p>
<p><strong>GRAVAR.PHP</strong></p>
<p>O arquivo <em>gravar.php</em> ficará responsável por pegar essas variáveis se conectar ao banco e fazer a inserção no banco de dados:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
</pre>
<pre>&lt;?php

mysql_connect(&#039;localhost&#039;,&#039;root&#039;,&#039;&#039;); // Realizo a conexão com o banco de dados
mysql_select_db(&#039;banco1&#039;); // Seleciono o banco de dados

&nbsp;

/* Crio uma função ao qual irá esperar o parâmetro tabela */

function gravar($tabela) {

/* Recebo todos os campos do formulário e elimino o último, pois normalmente em um formulário o último input é o submit  e gravo na variável $val */
$val = end($_POST);

/* Procuro pela posição em que o elemento está para excluí-lo da matriz de dados */
$pos = array_search($val, $_POST);

/* Removo o item submit da matriz de dados */
unset($_POST[$pos]);

/* Através do foreach eu percorro todos os campos e todos os conteúdos desses campos */
foreach ($_POST as $campo =&gt; $val) {

/* Separo os campos e gravo em uma variável( na verdade uma nova matriz de dados) chamado de $campos[] */
$campos[]   = $campo;

/* Faço o mesmo com o conteúdo, porém utilizo as funções: mysql_real_espace_string para evitar que seja realizado uma tentativa de burlar o banco de dados utilizando injeção de SQL e strip_tags eliminar as tags HTML */

$conteudo[] = mysql_real_escape_string(strip_tags($val));

}

/* Crio a SQL que irá ser inserida no banco de dados   */
$insert = &quot;INSERT INTO $tabela(&quot;.implode(&#039;,&#039;,$campos).&quot;) VALUES(&#039;&quot;.str_replace(&quot;,&quot;,&quot;&#039;,&#039;&quot;,implode(&#039;,&#039;,$conteudo)).&quot;&#039;)&quot;;

/* Faço a inserção no banco de dados e caso haja algum erro na inserção, será retornado através da função mysql_error() */
mysql_query($insert) or die (&#039;ERRO: &#039;.mysql_error());

/* Caso não haja erros exibi a mensagem de sucesso.  */
echo &#039;Dados gravados com sucesso&#039;;

}

/* Chamo a função gravar passando o parâmetro que é o nome da tabela */
echo gravar(&#039;cadastro&#039;);

?&gt;</pre>
</div>
<p>Caso queira fazer download dos arquivos. <a href="http://blog.grupouniversos.com/arquivos/gravar-dados-de-qualquer-formulario-em-php-parte-i.zip" title="Clique Aqui">Clique Aqui</a>, porém os arquivos estão sem os comentários.</p>
<p>Essa é a primeira de uma série de quatro postagens que irei realizar sobre gravar dados no banco de dados utilizando o PHP. Na próxima postagem irei mostrar como deixar essa função mais completa, com outros recursos. Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2012/01/25/gravar-dados-de-qualquer-formulario-em-php-parte-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Você sabe denunciar spam?</title>
		<link>http://blog.grupouniversos.com/2012/01/11/voce-sabe-denunciar-spam/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=voce-sabe-denunciar-spam</link>
		<comments>http://blog.grupouniversos.com/2012/01/11/voce-sabe-denunciar-spam/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 11:15:53 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Email Marketing]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Web Marketing]]></category>
		<category><![CDATA[anti-spam]]></category>
		<category><![CDATA[não]]></category>
		<category><![CDATA[spammer]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=411</guid>
		<description><![CDATA[Que spam é um grande problema, todas as pessoas que diariamente recebem emails com inúmeras propagandas sabemos, mas e denunciar um spam, você sabe fazer? Sabe por onde começar? O que deve fazer? Primeiro passo é responder a pergunta: Porque ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-412" title="Não ao SPAM" src="http://blog.grupouniversos.com/wp-content/uploads/2012/01/spam-300x300.png" alt="" width="300" height="300" />Que spam é um grande problema, todas as pessoas que diariamente recebem emails com inúmeras propagandas sabemos, mas e denunciar um spam, você sabe fazer? Sabe por onde começar? O que deve fazer?</p>
<p><strong>Primeiro passo é responder a pergunta: Porque devo denunciar um spam?</strong></p>
<p>A resposta é tão simples quanto à pergunta, normalmente estamos acostumados a apagar o email ou (pior, explicarei o “por que” no decorrer da postagem) clicar para “deixar” de receber aquele tipo de conteúdo, entretanto fazendo somente essa ação, você está ignorando um problema que é mundial e o que é preciso fazer é mudar essa visão e buscar melhorar esse trafego de email.</p>
<p><strong>Continuando, como então deve ser denunciado um spam?</strong></p>
<p>Para denunciar um spam, não é tão simples, mas também não é algo que dificulte ou atrapalhe o seu dia, levará menos de 10 minutos e você já terá ajudado em muito ao denunciar, primeiro você deve verificar de onde partiu essa mensagem, normalmente são servidores de empresas (às vezes clandestinos) que disparam os emails em massa, o que leva a duas analises diferentes:</p>
<p><strong>1 –</strong> Para identificar o servidor de email que está disparando o email é necessário olhar o remetente e pausar (nunca clicar) o mouse sobre os famosos links de remoção, onde será possível identificar o endereço de onde está partindo a mensagem, se aparentar ser um site confiável, você deve entrar em contato avisando que nunca solicitou nenhum tipo de mensagem com o conteúdo, sempre enviando com cópia para o email: <strong><em>mail-abuse@cert.br,  </em></strong>dessa forma o <strong>cert.br</strong> poderá tomar notificar os provedores de disparo de email e criar estatísticas para o mesmo, portanto se houve reincidências, o servidor poderá ser bloqueado.</p>
<p><strong>Porque não devo clicar em um link de remoção?</strong></p>
<p><span id="more-411"></span></p>
<p><em>1.1 </em><em>Motivo 1:</em></p>
<p>O link do email pode ser um caso de<em> phising*, </em>dessa forma redirecionar a endereços que podem inserir vírus, dentre outros problemas.</p>
<p><em> * phising </em>É uma fraude eletrônica quando um site ou email tenta se “passar” por um site ou email verdadeiro de alguma outra empresa, produto ou serviço.</p>
<p><em>1.2  </em><em> Motivo 2:</em></p>
<p>Ao clicar nesses links você está confirmando que esse email é verdadeiro, válido e utilizado por alguém, ou seja, será mesmo que seu email foi removido ou adicionado a uma lista de emails segura que posteriormente será vendida para quem tiver interesse?</p>
<p><strong>2 –</strong> Caso seja constado que é uma prática de <em>phising</em>, a empresa ao qual o conteúdo do email está tentando forjar precisa ser avisada, onde será necessário procurar um email de contato no site oficial da empresa e encaminhar uma cópia do email (novamente sempre enviando com cópia para o email <strong><em>mail-abuse@cert.br) </em></strong>falso para um representante da empresa, pois normalmente são emails com conteúdo de <em>phising</em> são de grandes empresas ou marcas, dessa forma eles terão maior poder para contra-atacar ações como essa.</p>
<p><strong>E se o servidor for americano?</strong></p>
<p>Use o <em>Google Tradutor</em> e não deixe de denunciar.</p>
<p>Esse é o fim dessa postagem que apesar de curta visou alertar e de certa forma tentar reduzir essa prática de spam que é um grande problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2012/01/11/voce-sabe-denunciar-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Envio de email marketing e mensuração</title>
		<link>http://blog.grupouniversos.com/2011/11/17/envio-de-email-marketing-e-mensuracao/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=envio-de-email-marketing-e-mensuracao</link>
		<comments>http://blog.grupouniversos.com/2011/11/17/envio-de-email-marketing-e-mensuracao/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 12:24:34 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Email Marketing]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Web Marketing]]></category>
		<category><![CDATA[avaliar]]></category>
		<category><![CDATA[campanha de email]]></category>
		<category><![CDATA[disparo]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email marketing]]></category>
		<category><![CDATA[mensuração]]></category>
		<category><![CDATA[receber]]></category>
		<category><![CDATA[sucesso no envio de email]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=399</guid>
		<description><![CDATA[1 Definindo tema e publico alvo (acessar a postagem anterior) 2 Criação e desenvolvimento (acessar a postagem anterior) 3 Envio e mensuração (essa postagem aqui) Última postagem da “serie” criar uma campanha de email marketing de sucesso e como prometido ...]]></description>
			<content:encoded><![CDATA[<p>1 Definindo tema e publico alvo (<a title="acessar a postagem anterior" href="http://blog.grupouniversos.com/2011/11/05/projetando-uma-campanha-de-email-marketing-de-sucesso/" target="_blank">acessar a postagem anterior</a>)<br />
2 Criação e desenvolvimento (<a href="http://blog.grupouniversos.com/2011/11/10/criacao-e-desenvolvimento-de-um-email-marketing-correto-6-dicas-de-como-desenvolver-um/" target="_blank">acessar a postagem anterior</a>)<br />
3 Envio e mensuração (essa postagem aqui)</p>
<p><img class="alignleft size-medium wp-image-400" title="email-marketing" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/email-marketing1-300x268.jpg" alt="" width="300" height="268" />Última postagem da “serie” criar uma campanha de email marketing de sucesso e como prometido eu trago algumas outras informações que vão dos testes que precisam ser realizados antes do envio e sua mensuração.</p>
<p>O primeiro passo é não tentar fazer tudo sozinho como já mencionado na primeira postagem sobre campanha de email marketing, ou seja, não tente pegar um programa da Internet de envio de email, “crackeá-lo” e ficar com o computador ligado durante toda a madrugada enviando email. Uma campanha de email marketing vai além do envio, é preciso avaliar, entender e persuadir.</p>
<p><strong>TESTES:</strong></p>
<p>Primeiramente é necessário contratar uma empresa especializada em envio de email marketing e ela sendo especializada terá um software que possibilitará os testes de envio, faça o envio de sua campanha para seu email diversas vezes até verificar que o email marketing está correto, envie para emails de gmail, Hotmail e Yahoo, teste nos programas de email Microsoft Outlook, Windows Live Mail, Thunderbird e corrija as falhas caso existam.</p>
<p>Ainda como forma de teste, envie email a amigos, amigas ou empresas que tenha maiores afinidades, mas sem avisá-lo (a) e que conheça o seu o seu negócio ou a sua empresa e pergunte a ele (a) qual foi à reação ao receber o email, se ele chegou à caixa de entrada, dessa forma poderá colher informações que melhor vão direcionar sua campanha de email, mesmo que ela tenha que ser refeita.</p>
<p><strong>Dica:</strong> Colete o maior número de opiniões possíveis, mensure-a e somente após avaliar, verifique se a campanha pode ser disparada dessa forma ou se ela precisa ser refeita.</p>
<p><strong>Refazer a campanha?</strong></p>
<p><span id="more-399"></span></p>
<p>É preferível refazer ou gastar dinheiro tempo e não obter nenhum resultado? Faça essa pergunta a vocês mesmo e qual seria a melhor resposta que você se daria?</p>
<p>Muitos erros que observo é que as pessoas tendem a “se verem” utilizando ou recebendo um email marketing, mas o que importa é como o seu publico irá reagir, o que é mais importante o que você acha ou o que o seu publico espera? Então é muito importante que você colha informações de fora, de pessoas neutras e se necessário refaça a campanha, é melhor refazer agora do que não ter um resultado insatisfatório ou não ter resultado nenhum.</p>
<p><strong>ENVIO E MENSURAÇÂO:</strong></p>
<p>Ao enviar a campanha, faça a sua mensuração, avalie quantos abriram os emails, se foram até o site, quanto tempo estão gastando na página, compraram? Não compraram? Adicionaram aos favoritos? Etc&#8230; Eu posso até brincar dizendo: “Descubra qual é a cor da calcinha ou da cueca” de quem está recebendo a campanha.</p>
<p>Escolher um bom horário para envio e enviar a campanha particionada pode ajudar:  entre 10:00 e 12:00 e entre 14:00 e 16:00 horas são bons horários para envio, entretanto isso precisa ser analisado caso a caso, pois varia de publico alvo da campanha.</p>
<p><strong>Evasão do email marketing:<img class="alignright size-medium wp-image-401" title="3d postman with envelope and bag" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/VPS-email-marketing-300x300.jpg" alt="" width="300" height="300" /></strong></p>
<p>Não entenda as evasões de publico como um erro da campanha, mas aprenda a entender o porquê isso aconteceu e procure “resgatar” a simpatia com essa pessoa. O primeiro passo é criar uma página mais agradável de saída, onde ao clicar em “sair” da lista, ele seja direcionado a uma página que irá agradecer ao usuário por participar por todo esse tempo e que sente infelizmente ao vê-lo deixar de participar, ou seja, dessa forma fica mais “suave” e simpática a forma como fazê-lo deixar a campanha e não as aquelas páginas: “removido com sucesso”, dessa forma a campanha está demonstrando que você é só mais um pra ela e que sua saída não é importante.</p>
<p>Nota: A saída de uma pessoa é tão importante quanto uma compra, pois o que motivou uma pessoa a comprar não precisa ser necessariamente o oposto para que uma pessoa tenha se evadido de receber essa propaganda, ou seja, é importante entender o que aconteceu e saber o porquê dessa saída.</p>
<p><strong>Não a perca, resgate-a de volta:</strong></p>
<p>Ainda nesse principio, não perca essa pessoa que evadiu da campanha, prepare um email questionando o motivo e o que pode ser feito para tê-la de volta a receber emails de suas campanhas, mas não faça um envio automático ao final do descadastramento, envie dentro de dois ou três dias e avalie, colha essas informações.</p>
<p><strong>Custos:</strong></p>
<p>Vejo que muitas pessoas preferem reduzir o maior número de custos possíveis com email marketing, mas sinceramente se a sua campanha não está preparada para gastar entre R$ 1.000,00 e R$ 1.500,00 reais, o objetivo (explicado na primeira postagem) de sua campanha está errado e nunca será alcançado.</p>
<p>Finalizo a última postagem sobre campanha de email marketing e espero que tenham aproveitado e principalmente ajudado a criar uma campanha com maiores probabilidades de sucesso. Dúvidas ou modelos de páginas mais agradáveis bem como ajuda com elaboração de textos é só deixar um comentário.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2011/11/17/envio-de-email-marketing-e-mensuracao/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Criação e desenvolvimento de um email marketing correto + 6 dicas de como desenvolver um</title>
		<link>http://blog.grupouniversos.com/2011/11/10/criacao-e-desenvolvimento-de-um-email-marketing-correto-6-dicas-de-como-desenvolver-um/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=criacao-e-desenvolvimento-de-um-email-marketing-correto-6-dicas-de-como-desenvolver-um</link>
		<comments>http://blog.grupouniversos.com/2011/11/10/criacao-e-desenvolvimento-de-um-email-marketing-correto-6-dicas-de-como-desenvolver-um/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 13:13:16 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Criação Web]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Email Marketing]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Web Marketing]]></category>
		<category><![CDATA[campanha de email]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email marketing]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=376</guid>
		<description><![CDATA[Esse é a segunda das três postagens prometidas sobre email marketing. 1 Definindo tema e publico alvo (acessar a postagem anterior) 2 Criação e desenvolvimento (essa postagem aqui) 3 Envio e mensuração (acesse a postagem) A criação é muito importante ...]]></description>
			<content:encoded><![CDATA[<p>Esse é a segunda das três postagens prometidas sobre email marketing.<br />
1 Definindo tema e publico alvo (<a title="acessar a postagem anterior" href="http://blog.grupouniversos.com/2011/11/05/projetando-uma-campanha-de-email-marketing-de-sucesso/" target="_blank">acessar a postagem anterior</a>)<br />
2 Criação e desenvolvimento (essa postagem aqui)<br />
3 Envio e mensuração (<a href="http://blog.grupouniversos.com/2011/11/17/envio-de-email-marketing-e-mensuracao/" target="_blank">acesse a postagem</a>)</p>
<p><img class="alignleft size-full wp-image-378" title="construindo um email marketing" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/banner-emailmarketing22.jpg" alt="" width="300" height="300" />A criação é muito importante em uma campanha de email, onde deve observar principalmente o layout. Como alguns leitores de email (principalmente o Microsoft Outlook) são bastante limitados, portando a criação do layout deve ser sempre simples e ao mesmo tempo em que elegante e atraente e esse é o ponto mais difícil, pois como conseguir esse equilíbrio? Essa postagem visa responder a essa pergunta de forma bem clara, bem como dar dicas de uma boa estrutura (o que pode e o que não pode ser utilizado em um email marketing para que seja exibido nos principais programas de email como também nos provedores de email gmail e Hotmail), sem deixar de atrativo o email marketing.</p>
<p>O primeiro passo após definido o tema do email marketing conforme mencionado na postagem anterior deve observar três principais características que um layout de email marketing deve ter para a sua concepção, pois um dos maiores erros que tenho visualizado é a questão de algumas pessoas acreditarem que email marketing é a mesma coisa que uma página sendo aberta em um navegador, entretanto são elementos totalmente distintos e como elementos distintos, devem ser observados de formas diferentes:</p>
<p><strong>1 – Plano de fundo:</strong> O primeiro quesito é o plano de fundo de um email marketing, esse deve ser em sua grande maioria sempre na cor branca dado que imagens de fundo não funcionam nos leitores de email e principalmente porque isso acaba agredindo visualmente a pessoa que recebe por mais bonito que seja a imagem. Se for utilizar um fundo com cor, de preferência a cores solidas e claras, existem muitas maneiras de chamar a atenção da pessoa e não é colocando um titulo com “tamanho 42” na cor vermelha em um fundo preto que irá ser.</p>
<p>Uso de degrade em plano de fundo podem até ser utilizado, desde que observado os locais onde melhor serão possíveis de utilizar e o degrade deve sempre ir para o branco. Por exemplo: O topo inicia em cinza claro indo para o branco e o rodapé vem do branco indo para a cor cinza, deixando o centro na cor branca. Para visualizar um exemplo. <a href="http://blog.grupouniversos.com/wp-content/uploads/2011/11/emailmarketing1.jpg" target="_blank">Clique Aqui</a>.</p>
<p><strong> 2 – Conteúdo: </strong>Não conte uma história do seu produto ou serviço enviando um email marketing com conteúdo extremamente longo dizendo que você faz isso há 10 anos, esse é outro erro grave que vejo, quantas pessoas irão parar para ler toda a história que contou no email? Seja breve, direto, chame a atenção em uma frase e destaque-a, por exemplo, se quero divulgar um produto de informática (um Tablet PC), é possível descrever o produto em uma frase e ainda torná-lo objeto de desejo, veja o exemplo : “Novas formas de curtir a Internet sem mouse e teclado ao alcance de seus dedos” ou também: “Curta mais a Internet usando somente os dedos”, ou seja, em uma frase simples eu simplesmente descrevi a principal característica de um Tablet PC.</p>
<p>Seguindo essa mesma linha, outro detalhe no conteúdo é não tente transformar um email marketing em uma loja virtual colocando muitos produtos, saiba quem é o seu publico e foque nos principais produtos.</p>
<p><strong>Porque foque em seu publico? Existe diferença entre um publico e outro?</strong></p>
<p>Com certeza existe diferença, por exemplo, caso o alvo é um publico feminino significa que precisa de um pouco mais de variedade de produtos, visto que mulheres normalmente tendem a procurar mais, entretanto como afirmado anteriormente não adianta mandar uma lista com 10 produtos, isso na verdade irá deixar a pessoa mais confusa e acabar não escolhendo nenhum produto, dessa forma uma melhor maneira de mostrar variedade chamando a atenção e sem deixar a pessoa confusa é demonstra uma variedade de uma mesma linha e alertar para que também tenha outras linhas, por exemplo:</p>
<p>Um email marketing de cosméticos, trás seis produtos no centro sendo um batom, uma sombra, um rímel, um lápis para olhos, um lápis par lábios e um blush, veja que todos os produtos no exemplo são para o rosto (onde um poderá complementar o outro), mas se a empresa também tem cosméticos para o corpo, poderá colocar ao fim desses seis produtos a chamada: “Não deixe de conferir também nossa linha de cosméticos para o corpo. Clique Aqui”, ou seja, dessa forma é chamada a atenção para duas linhas diferentes dentro de um email marketing sem contar uma história, sem agredir visualmente e sobrecarregar o email marketing.</p>
<p><strong>Mas e se o publico for masculino?<img class="alignright size-medium wp-image-379" title="email-marketing" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/email-marketing-300x150.jpg" alt="" width="300" height="150" /></strong></p>
<p>Quando o alvo é um publico masculino, o email marketing deverá ser totalmente diferente, normalmente nós (homens) gostamos de menos variedade e mais informação e detalhes (características) do produto, portanto o email marketing deverá ter foco em um ou no máximo dois produtos.</p>
<p><strong>Como seria então esse email marketing?</strong></p>
<p>Ele tem que ter mais fotos do produto (quatro é um bom número), onde a disposição no centro do email marketing é o de colocar uma foto de um ângulo do produto e uma descrição curta, mais abaixo outra foto e uma descrição que complemente a anterior.</p>
<p>Por exemplo, suponhamos que saiu um notebook exclusivo para “gamers”, ele deveria vir uma foto do produto e algumas descrições como processador, memória, tela e duração da bateria, abaixo viria uma segunda foto (de cor diferente da primeira) que descreveria: “esse notebook tem nas cores vermelha, preta e branca”, em uma terceira foto pode ter algumas chamadas como: “preparado para agüentar todo tipo de jogo com placa gráfica de 1gb de memória” e na ultima foto viriam o preço e algo como: “somente por esse email frete grátis, vai perder essa?”, sendo acrescidos ou não de algo como: “Leve também: mochila para carregar seu notebook”, que seria uma chamada para um produto adicional.</p>
<p>Veja que a construção do email marketing é totalmente diferente da anterior (que tem o foco em publico feminino).</p>
<p>Ao construir um email marketing com essas características é possível que ele tenha maior sucesso.</p>
<p><strong>3 – Itens obrigatórios: </strong>Ao criar um email marketing nunca deve se esquecer alguns itens obrigatórios e que devem constar em todo email marketing que é a opção de visualizar o email marketing corretamente caso aconteça do email marketing por quaisquer motivos não puder ser visualizado no email da pessoa e a opção para que o usuário deixe de receber o email marketing de forma fácil e simples (e não aquelas famosas mensagens: “Responda esse email com assunto remover&#8221; e que nunca resolvem efetivamente, essa opção tem que ser resolvida em um clique e sem o usuário precisar digitar seu email.</p>
<p><strong>Desenvolvimento do email marketing:</strong></p>
<p><span id="more-376"></span></p>
<p><img class="alignleft size-full wp-image-383" title="HTML" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/html1.png" alt="" width="256" height="256" />O desenvolvimento efetivo do email marketing deve-se tomar cuidado com alguns detalhes:</p>
<p><strong>1 –</strong> O tamanho da largura não deve passar de 600pixel, a altura poderá ser usado maior, porém, nada de abusos (1200 pixels de altura, por exemplo).</p>
<p><strong>2 –</strong> O desenvolvimento do email marketing deve ser feito em HTML simples e utilizando tabelas para diagramar o conteúdo, pois os leitores de emails são bastante limitados e o tradicional uso do <em>Tableless </em>não irá ajudar nesse caso, na verdade irá atrapalhar e algumas <em>tags </em>que são utilizadas para dar relevância em um site, não devem (precisam) sem utilizadas em um email marketing como, por exemplo, tags de titulo (h1, h2, etc..), para sua construção pode se utilizar somente as tags span, p, strong, em, a, e img.</p>
<p><strong>3 –</strong> Uso de alt e title em todas as imagens, tanto os leitores de emails quanto os webmails bloqueiam as imagens sendo necessária a aceitação por parte do usuário e caso ele não aceite, ficará uma tela em branca no lugar que deveriam ficar as imagens, portanto as imagens deverão sempre estar acompanhadas da sua descrição dentro dos parâmetros de alt e title.</p>
<p><strong>4 –</strong> Todas as células da tabela devem ter os parâmetros: align=&#8221;left&#8221; valign=&#8221;top&#8221;, para que o conteúdo seja carregado sempre da esquerda para direita e de cima para baixo. Algumas células poderão incluir o alinhamento no centro ou à direita, porém o valign deverá ser sempre no top (até porque ele não funciona corretamente no webmail da Hotmail nas demais opções).</p>
<p><strong>5 –</strong> Alinhamento de imagens, não é sempre, mas em vários casos é necessário que as imagens também tenham um align left (sendo esse utilizado em praticamente todo tipo de newsletter como forma de tentar garantir que as imagens não se desloquem dentro da célula) ou right.</p>
<p><strong>6 –</strong> Toda a formatação do email marketing deverá ser realizada pelo CSS <em>inline</em>, portanto no próprio elemento, apenas muita atenção à utilização dessa formatação que deve ser muito simples (cores, tamanho e estilo de fonte), margens tanto internas quanto externas devem ser evitadas, pois não funcionam corretamente.</p>
<p>Bom, essa é a finalização da segunda postagem sobre como construir uma campanha de email marketing de sucesso, na próxima postagem irei abortar os testes antes do envio (correções se necessário), a mensuração e como trabalhar as pessoas que desistiram de receber esse conteúdo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2011/11/10/criacao-e-desenvolvimento-de-um-email-marketing-correto-6-dicas-de-como-desenvolver-um/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Projetando uma campanha de email marketing de sucesso</title>
		<link>http://blog.grupouniversos.com/2011/11/05/projetando-uma-campanha-de-email-marketing-de-sucesso/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=projetando-uma-campanha-de-email-marketing-de-sucesso</link>
		<comments>http://blog.grupouniversos.com/2011/11/05/projetando-uma-campanha-de-email-marketing-de-sucesso/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 00:14:39 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Email Marketing]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Web Marketing]]></category>
		<category><![CDATA[campanha]]></category>
		<category><![CDATA[campanha de email]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email marketing]]></category>
		<category><![CDATA[sucesso]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=358</guid>
		<description><![CDATA[Tenho visto diversos erros em campanhas de e-mail marketing e então resolvi escrever sobre o assunto para melhor direcionar pessoas que querem fazer campanhas de e-mail marketing.  Essa será uma seqüência de três postagens, onde abordarei: 1 Definindo tema e ...]]></description>
			<content:encoded><![CDATA[<p>Tenho visto diversos erros em campanhas de e-mail marketing e então resolvi escrever sobre o assunto para melhor direcionar pessoas que querem fazer campanhas de e-mail marketing.  Essa será uma seqüência de três postagens, onde abordarei:</p>
<p><strong>1 Definindo tema e publico alvo (essa postagem aqui)<br />
2 Criação e desenvolvimento<a href="http://blog.grupouniversos.com/wp-content/uploads/2011/11/emailmarketing.jpg"><img class="alignright size-medium wp-image-360" title="emailmarketing" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/emailmarketing-300x242.jpg" alt="" width="300" height="242" /></a> (<a href="http://blog.grupouniversos.com/2011/11/10/criacao-e-desenvolvimento-de-um-email-marketing-correto-6-dicas-de-como-desenvolver-um/" target="_blank">acesse a postagem</a>)<br />
3 Envio e mensuração (<a href="http://blog.grupouniversos.com/2011/11/17/envio-de-email-marketing-e-mensuracao/" target="_blank">acesse a postagem</a>)</strong></p>
<p>O ponto de partida é um alerta as pessoas que fazem a tradicional conta do um milhão: “compro um milhão de emails, se 1% retornar, estou rico”, entretanto se formos analisar a fundo é possível que não retorne nem mesmo 1%, pois desse um milhão, quantos são válidos? Quantos efetivamente irão receber, já que muitos provedores de email tem se atualizado e melhorado seus sistemas de filtragens de spam, além disso, você tem a sua campanha vista por várias pessoas dessa lista como um ato desesperado e totalmente errado de divulgação, sem mencionar que sua campanha poderá ser denunciada por práticas de spam. E então, será que compensou?<br />
<strong> </strong></p>
<p><strong>Então como planejar melhor a campanha?</strong></p>
<p><span id="more-358"></span></p>
<p>O primeiro passo é entender melhor seu produto e seu publico, e se nesse ponto existir dificuldades, nada melhor do que procurar um especialista (um profissional na área), pois outro erro que enxergo é: “consigo fazer tudo sozinho ou quero fazer tudo sozinho para reduzir o custo”, porém qual o problema em procurar um profissional? O custo gasto com uma consultoria bem realizada é o menor dos problemas e esse custo retornará com um melhor direcionamento da campanha e com certeza a campanha terá maior sucesso.</p>
<p><strong>O que deve ter um bom planejamento?</strong></p>
<p>Um bom planejamento antes de tudo deve ter um objetivo. Qual é o objetivo da campanha? É divulgar? Atrair novos clientes? Cuidar dos clientes que já tem? Informar? Bom, seja qual for o objetivo, ele deverá estar muito bem especificado e toda a campanha deverá se voltar a ele.</p>
<p>Envolvimento dos elementos da campanha, se a campanha tem um objetivo que também pode ser explorados através do site ou através das redes sociais, então nada melhor do que explorar esses elementos em conjunto, por exemplo: Se o objetivo é realizar uma promoção relâmpago em algum produto no site, então deve-se preparar o site voltado a esse produto, onde ao disparar o email marketing e as pessoas comecem a receber e acessar o site, poderá conferir que é uma promoção que está acontecendo naquele momento dessa forma a pessoa se sentirá beneficiada por receber esse aviso, dando a entender uma certa vantagem ao ter assinado esse canal de comunicação.</p>
<p>Encerro a primeira das três postagens que farei em relação a uma boa campanha de email marketing. Comentários sempre são bem vindos, mesmo com críticas.</p>
<p>Até a próxima postagem.</p>
<p style="display: none;">A6FZZHWA64SW</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2011/11/05/projetando-uma-campanha-de-email-marketing-de-sucesso/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hacks para Internet Explorer, Firefox, Chrome</title>
		<link>http://blog.grupouniversos.com/2011/11/01/hacks-para-internet-explorer-firefox-chrome/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hacks-para-internet-explorer-firefox-chrome</link>
		<comments>http://blog.grupouniversos.com/2011/11/01/hacks-para-internet-explorer-firefox-chrome/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 12:43:10 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[comentários condicionais]]></category>
		<category><![CDATA[conditional comments]]></category>
		<category><![CDATA[ff]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[ie9]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=331</guid>
		<description><![CDATA[Como comentei no post anterior (anteriormente em&#8230;) Hacks, em uma tradução mais coloquial podemos dizer que são as nossas tradicionais “gambiarras” (tenta explicar o que é essa palavra para um americano ou japonês). Portanto utilizar de gambiarras para fazer algo ...]]></description>
			<content:encoded><![CDATA[<p>Como comentei no post anterior (anteriormente em&#8230;)</p>
<p><img style="float: left; margin: 0 10px 10px 0;" title="CSS direcionado" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/browsers-css-300x300.jpg" alt="Hacks para navegadores" width="300" height="300" /></p>
<p>Hacks, em uma tradução mais coloquial podemos dizer que são as nossas tradicionais “gambiarras” (tenta explicar o que é essa palavra para um americano ou japonês). Portanto utilizar de gambiarras para fazer algo funcionar não é algo muito bom, entretanto alguns navegadores (leia Internet Explorer) “teimam” em renderizar os elementos em posições ou estruturas diferentes das que foram formatadas, devido à construção dos pixels e entendimento dos espaçamentos e posicionamento (principalmente).</p>
<p>Eu sou totalmente contra o uso de Hackes, pois acredito que possa ser possível criar formatações que funcione em todos os navegadores de forma uniforme, entretanto às vezes acontecem formatações inesperadas como “quebra” de um elemento ou em alguns casos (como já aconteceu comigo) o desaparecimento do elemento.</p>
<p>A primeira maneira de hack e talvez seja a melhor dentre os piores é o uso dos “Comentários condicionais”, onde é possível atribuir uma folha de estilos secundaria ao qual somente será incorporada caso o navegador seja da versão em que o comentário foi condicionado.</p>
<p>Como o navegador que costuma gerar mais problemas é o Internet Explorer, irei começar com ele:</p>
<p>Comentário condicional para IE6 e IE7:</p>
<p><strong>IE 6:       </strong></p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
</pre>
<pre>&lt;!--[if &lt;strong&gt;lt&lt;/strong&gt; IE 7]&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie/ie6.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;![endif]--&gt;</pre>
</div>
<p><strong>IE 7:</strong></p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
</pre>
<pre>&lt;!--[if IE 7]&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie/ie7.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;![endif]--&gt;</pre>
</div>
<p>Dica: <strong>lt</strong> = menor que(less than), <strong>lte</strong> = menor ou igual a(less than or equal too)</p>
<p>&nbsp;</p>
<p>Ao adicionar essas linhas dentro da sua tag HEAD, os arquivos  ie6.css e ie7.css somente serão incorporados à sua página, caso o usuário esteja utilizando o Internet Explorer 6 ou Internet Explorer 7 (respectivamente aos arquivos).</p>
<p>Dentro desses arquivos é possível subscrever a formatação de um elemento, fazendo com que esse elemento no navegador X tenha um comportamento diferente.</p>
<p>Exemplos:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
</pre>
<pre>div#teste {
     width: 50px;
     height: 50px;
     background: #999999;
     margin-top: 5px;
}</pre>
</div>
<p>Na demonstração acima tem um elemento de divisão (uma div) com as dimensões de 50 pixels de altura e 50 pixels de largura uma cor de fundo cinza e uma margem de 5 pixels no topo e supostamente essa margem no topo não corresponde de forma igual nos navegador IE 6 e IE 7, dessa forma basta ir nesse arquivos e adicionar o mesmo elemento:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>div#teste { magin-top: 10px !important;  }</pre>
</div>
<p>E adicionar uma nova margem ao mesmo elemento. O uso do “!important” ao contrário do que muitos afirmam que é um Hack, o “!important” não é um Hack, é dar aquela formatação uma importância maior do que qualquer outra formatação (inclusive formatação “inline” do elemento).</p>
<p>É necessário sempre o uso do “!important” nos arquivos de CSS direcionados para os navegadores?</p>
<p>Na verdade não, irá depender de como está à ordem de incorporação dos seus CSS. Por exemplo:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre>
<pre>&lt;link rel=&quot;stylesheet&quot; href=&quot;css/reset.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;!--[if IE 7]&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie/ie7.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;![endif]--&gt;

&lt;!--[if lt IE 7]&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie/ie6.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;![endif]--&gt;</pre>
</div>
<p>Nesse exemplo acima não será necessário o uso do “!important”, devido ao CSS padrão ser incorporado primeiro aos CSS de “Hack”, portanto, tudo que estiver no CSS de “Hack” irá sobrescrever os elementos.</p>
<p>Mas se fosse o contrário:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre>
<pre>&lt;!--[if IE 7]&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie/ie7.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;![endif]--&gt;

&lt;!--[if lt IE 7]&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie/ie6.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
&lt;![endif]--&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;css/reset.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;</pre>
</div>
<p>Nesse segundo caso já seria necessário o uso do “!important”, pois o que estiver no CSS de “Hack” será sobrescrito pelo CSS padrão.<br />
Também é possível adicionar um comentário condicional para incorporar um css para navegadores diferentes do Internet Explorer:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
</pre>
<pre>&lt;![if !IE]&gt;

&lt;link href=”css/diferentes-ie.css” rel=”stylesheet” type=”text/css” /&gt;

&lt;![endif]&gt;</pre>
</div>
<p>Dessa forma o css somente será incorporado se o navegador não for o Internet Explorer.</p>
<p><strong>Outras formas de Hack:</strong></p>
<p><span id="more-331"></span></p>
<p>Existem também formas de Hack que podem ser utilizado no seu CSS padrão que será lido apenas pelos navegadores XYZ:</p>
<p>Uso de formatação somente para Internet Explorer:<img class="alignright size-full wp-image-336" title="Uso de Hacks" src="http://blog.grupouniversos.com/wp-content/uploads/2011/11/conditional-comments.jpg" alt="" width="184" height="184" /></p>
<p><strong>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>#elemento { atributos: valor\9 }</pre>
</div>
<p></strong></p>
<p>Exemplo:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>#bloco { padding-top: 25px\9;  }</pre>
</div>
<p>A formatação acima será lida somente pelo navegador Internet Explorer (todas as versões).</p>
<p>Uso de formatação somente para o Internet Explorer 9 (é, acreditem, até mesmo essa “nova” versão do IE dá problemas “as vezes”):</p>
<p><strong>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>:root #elemento { atributos:valor \0/IE9; }</pre>
</div>
<p></strong></p>
<p>Exemplo:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>:root #bloco { margin-left: 50px \0/IE9;  }</pre>
</div>
<p>A formatação acima será lida somente pelo Internet Explorer 9</p>
<p>Hack para Google Chrome:</p>
<p>É difícil acontecer, mas não impossível, o navegador da Google também “apronta” as vezes e é necessário fazer algumas correções através de Hack:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
</pre>
<pre>@media screen and (-webkit-min-device-pixel-ratio:0){

#elemento { atributos: valor; }

}</pre>
</div>
<p>Exemplo:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
</pre>
<pre>@media screen and (-webkit-min-device-pixel-ratio:0){

#bloco { margin: 5px 20px 10 0; }

}</pre>
</div>
<p>Essa formatação somente será lida pelo Google Chrome.</p>
<p>E para finalizar o post, é claro que também existem Hack para o Firefox, mas sinceramente se você leu o post até aqui para usar Hack para o Firefox, acredito que seja preciso rever seu CSS:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
</pre>
<pre>@-moz-document url-prefix() { #elemento { atributos: valor; } }</pre>
</div>
<p>Exemplo:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
</pre>
<pre>@-moz-document url-prefix() {

#bloco  { display: none; }

}</pre>
</div>
<p>A linha acima apesar de estranha será lida somente pelo Firefox</p>
<p>&nbsp;</p>
<p>Algumas leituras recomendadas:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx</a> (em inglês, informações sobre comentários condicionais).</p>
<p><a href="http://hacks.mozilla.org/">http://hacks.mozilla.org/</a> (Não você não vai aprender Hacks para o Firefox nesse site e sim descobrir o que está sendo realizado para o Firefox e o que poderá utilizar tanto de HTML quanto de CSS).</p>
<p>Até a próxima postagem. Dúvidas ou sugestões, bem como complementos para o post, me envie um comentário.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2011/11/01/hacks-para-internet-explorer-firefox-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suporte ao Internet Explorer 6, ainda é necessário?</title>
		<link>http://blog.grupouniversos.com/2011/10/12/suporte-ao-internet-explorer-6-ainda-e-necessario/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=suporte-ao-internet-explorer-6-ainda-e-necessario</link>
		<comments>http://blog.grupouniversos.com/2011/10/12/suporte-ao-internet-explorer-6-ainda-e-necessario/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 00:21:20 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[ajude a web]]></category>
		<category><![CDATA[countdown]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[internet explorer 6]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=322</guid>
		<description><![CDATA[ie6 Após algum tempo sem escrever por falta de tempo, estou retornando e começo com um artigo polêmico: “IE6 nunca morre?”. Infelizmente para nossa infelicidade é verdade, o IE6 ainda está presente em quase 2% dos computadores de todo o ...]]></description>
			<content:encoded><![CDATA[<div class="mceTemp" style="text-align: left;">
<dl id="attachment_323" class="wp-caption  alignnone" style="width: 247px; float: left; margin: 0 15px 0 0;">
<dt class="wp-caption-dt"><a href="http://blog.grupouniversos.com/wp-content/uploads/2011/10/timthumb.php_.jpg"><img class="size-full wp-image-323" title="ie6" src="http://blog.grupouniversos.com/wp-content/uploads/2011/10/timthumb.php_.jpg" alt="ie6" width="237" height="167" align="left" /></a></dt>
<dd class="wp-caption-dd">ie6</dd>
</dl>
</div>
<p style="text-align: justify;">Após algum tempo sem escrever por falta de tempo, estou retornando e começo com um artigo polêmico: “IE6 nunca morre?”. Infelizmente para nossa infelicidade é verdade, o IE6 ainda está presente em quase 2% dos computadores de todo o Brasil com acesso a internet, esses são dados da própria Microsoft no site: <a href="http://www.ie6countdown.com/">http://www.ie6countdown.com/</a>, que para quem não conhece, é um site que demonstra o quanto o ie6 ainda é utilizado no mundo, sendo que o ie6 já tem 10 anos (isso, você não leu errado, 10 anos) e ainda é “uma pedra no sapato” para nós desenvolvedores web.</p>
<p style="text-align: justify;">                 E meus projetos ainda devem dar suporte ao ie6? Sinceramente preferiria dizer que não, entretanto haverá “casos e casos”, por exemplo, se o seu projeto ou o projeto de seu cliente não terá uma visibilidade (divulgação) nacional ou internacional, esse tipo de suporte se fará desnecessário, uma vez que a probabilidade de diversas pessoas utilizando o ie6 acessarem o projeto é pequena, mas se for o contrario, o projeto poderá precisar de maiores cuidados, inclusive eu já vi alguns projetos com mais de 60 mil visitas apenas por usuários de ie6.</p>
<p>E como dar esse tipo de manutenção? Vamos recorrer (sinceramente não gosto desse termo) as famosas “gambiarras” e tudo que nós (principalmente) brasileiros sabemos muito bem fazer (entenda isso como saber sobreviver as mais diversas condições, ou seja, desenvolver e criar sobre condições inimagináveis).</p>
<p><span id="more-322"></span></p>
<p>Para quem desenvolve em HTML, poderá pegar um framework que funciona muito bem no ie6, eu indico o <a href="http://52framework.com/">http://52framework.com/</a>, ele é um pouco complicado de entender no começo (inclusive em um próximo post poderei dizer melhor como utilizá-lo), mas extremamente útil para resolver alguns problemas que o projeto possa ter ao ser exibido em um navegador tão antigo, podendo causar uma péssima impressão ao usuário (que por inocência, comodismo ou por falta interesse mesmo) não atualizou seu navegador “só” nesses últimos dez anos.</p>
<p>E para quem não desenvolve em html5? (senta no chão e chora?): Na verdade basta aguardar os próximos posts que irei fazer demostrando algumas técnicas (ódeio escrever, mas são hacks) que podem ser utilizadas para quem desenvolve em xhtml (como eu) e não utiliza html5 ainda.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2011/10/12/suporte-ao-internet-explorer-6-ainda-e-necessario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tableless &#8211; Uso, Prática e Validação</title>
		<link>http://blog.grupouniversos.com/2009/07/20/tableless-uso-pratica-e-validacao/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tableless-uso-pratica-e-validacao</link>
		<comments>http://blog.grupouniversos.com/2009/07/20/tableless-uso-pratica-e-validacao/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 01:01:13 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[Tableless]]></category>
		<category><![CDATA[CSS 2]]></category>
		<category><![CDATA[CSS 3]]></category>
		<category><![CDATA[Divs]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=308</guid>
		<description><![CDATA[Tableless é uma forma de desenvolvimento de sites que não utiliza tabelas. Uma vez que tabelas foram criadas para exibir dados tabulares e o código HTML (xhtml) para disposição de conteúdo na página, esse é propósito do código HTML. Existem ...]]></description>
			<content:encoded><![CDATA[<p>Tableless é uma forma de desenvolvimento de sites que não utiliza tabelas. Uma vez que tabelas foram criadas para exibir dados tabulares e o código HTML (xhtml) para disposição de conteúdo na página, esse é propósito do código HTML. Existem as práticas de desenvolvimento recomendas pela W3C, dentre elas práticas do uso CSS.</p>
<p>O termo ganhou bastante força no Brasil, não sendo tão bem acompanhado pelo restante do mundo.<br />
As vantagens do uso das práticas de desenvolvimento em Tableless estão dentre elas a diminuição do tempo no carregamento da página e consequentemente o seu conteúdo é mostrado mais rapidamente. Outra boa vantagem para citar é a melhora da acessibilidade e também podendo ser vistos em dispositivos moveis, sem a necessidade da instalação de novos recursos ou uso de uma versão em especifico.<br />
Embora a W3C tenha uma gama de recomendações em desenvolvimento e até mesmo o uso e pratica do Tableless, seu validador deixa por passar uma validação de um site com tabelas, aparentando até mesmo uma falha, já que a W3C não recomenda o uso de tabelas, entretanto ganhamos um novo aliado para recomendações e validações, o site é esse aqui: <a title="Verify tableless layouts" href="http://w3tableless.com/" target="_blank">http://w3tableless.com</a>, ainda na versão experimental, mas já se consegue validar e testar se o seu site é Tabless e uma novidade é que ele valida também o grau de Tabless no seu site, se ele não usar nenhuma tabela do inicio ao fim é validado como 100% Tableless, se você usa uma ou outra tabela, ele acusa e diz que seu site ainda não é 100% Tableless. Bem, claro que não posso deixar de fazer a minha propaganda, testei e validei o site da grupouniversos.com e vejam o resultado:</p>
<p><img class="aligncenter size-full wp-image-309" title="w3tableless" src="http://blog.grupouniversos.com/wp-content/uploads/2009/07/w3tableless.jpg" alt="w3tableless" width="300" height="292" /></p>
<p>Bem é isso, práticas de Tableless e sua importância para o mercado! Não deixe de práticar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2009/07/20/tableless-uso-pratica-e-validacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Flash e não &#8220;Flesh&#8221;</title>
		<link>http://blog.grupouniversos.com/2009/05/29/adobe-flash-e-nao-flesh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-flash-e-nao-flesh</link>
		<comments>http://blog.grupouniversos.com/2009/05/29/adobe-flash-e-nao-flesh/#comments</comments>
		<pubDate>Fri, 29 May 2009 03:01:16 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Adobe Flash CS4]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=289</guid>
		<description><![CDATA[Bem pessoal sempre levantaram uma questão da pronuncia correta do software da Adobe, o Adobe Flash, muitas pessoas sempre me questionaram eu pronunciar Flash e não “Flesh”. Bem para sanar esse problema, encontrei um vídeo no youtube de uma das ...]]></description>
			<content:encoded><![CDATA[<p>Bem pessoal sempre levantaram uma questão da pronuncia correta do software da Adobe, o Adobe Flash, muitas pessoas sempre me questionaram eu pronunciar Flash e não “Flesh”. Bem para sanar esse problema, encontrei um vídeo no youtube de uma das pessoas que trabalham com Flash de dentro da própria Adobe em uma conferencia em San Francisco, no qual ele pronuncia claramente: Flash(com a) e não “Flesh”, vocês podem conferir o vídeo abaixo. Recomendo ligar o som bem alto para escutar a pronuncia correta: Adobe FLASH.</p>
<p><object width="425" height="350" data="http://www.youtube.com/v/7NS7cUBjEKs" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/7NS7cUBjEKs" /></object></p>
<p>Explicando: Adobe Flash é nome próprio e por isso é diferente do &#8220;Flash&#8221; da câmera fotográfica, por exemplo, no qual pronunciamos &#8220;Flesh&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2009/05/29/adobe-flash-e-nao-flesh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Criando um jogo Adobe Flash + Actionscript 3.0 (Prog) Part IV</title>
		<link>http://blog.grupouniversos.com/2009/05/28/criando-um-jogo-adobe-flash-actionscript-30-prog-part-iv/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=criando-um-jogo-adobe-flash-actionscript-30-prog-part-iv</link>
		<comments>http://blog.grupouniversos.com/2009/05/28/criando-um-jogo-adobe-flash-actionscript-30-prog-part-iv/#comments</comments>
		<pubDate>Fri, 29 May 2009 01:22:59 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Adobe Flash CS4]]></category>
		<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Jogos em Flash]]></category>
		<category><![CDATA[Puzzle]]></category>
		<category><![CDATA[Quebra-Cabeças]]></category>

		<guid isPermaLink="false">http://blog.grupouniversos.com/?p=244</guid>
		<description><![CDATA[Bem esse é o último post do jogo Quebra-Cabeça. Espero que esse seja o primeiro de muitos jogos a serem desenvolvidos e postados aqui no blog. Conforme comentado anteriormente, nesse post falaremos mais de Actionscriot, mas antes de iniciarmos os ...]]></description>
			<content:encoded><![CDATA[<p>Bem esse é o último post do jogo Quebra-Cabeça. Espero que esse seja o primeiro de muitos jogos a serem desenvolvidos e postados aqui no blog.</p>
<p>Conforme comentado anteriormente, nesse post falaremos mais de Actionscriot, mas antes de iniciarmos os códigos vamos criar o último item de Design do jogo que será as telas de &#8220;Start Game&#8221;, &#8220;Venceu&#8221; e &#8220;Perdeu&#8221;.</p>
<p>Então primeiro eu vou criar uma nova camada acima da Camada de Informações chamada de “Tela de Informações”.</p>
<p><img class="aligncenter size-full wp-image-249" title="Nova camada Tela de Inicio" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/telainicio.jpg" alt="Nova camada Tela de Inicio" width="300" height="200" /></p>
<p>Na sequência também já crio um novo keyframe no quadro  2 da camada Tela de Inicio, afinal não iremos precisar colocar nenhum conteúdo no quadro 1.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-250" title="Crio um novo keyframe na camada Tela de Inicio" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/quadro2teladeinicio.jpg" alt="Crio um novo keyframe na camda" width="300" height="200" /></p>
<p style="text-align: left;">Depois com a ferramenta retângulo (Rectangle Tool) vou desenhar um retangulo de forma que ele cubra todos os demais objetos(a cor do retângulo é irrelevante, podendo usar quaisquer cores):</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-251" title="Desenho um retângulo" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/drawretctangle.jpg" alt="Desenho um retângulo" width="300" height="200" /></p>
<p style="text-align: left;">
<p style="text-align: left;">Converto o retângulo em símbolo do tipo MovieClip, para converter o retângulo, com o objeto selecionado:<br />
Menu Modify, Convert to Symbol&#8230; ou uso o atalho F8.</p>
<p style="text-align: left;">
<p style="text-align: left;"><img class="aligncenter size-full wp-image-253" title="Converto em simbolo do tipo MovieClip" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/simbolo_movieclip.jpg" alt="Converto em simbolo do tipo MovieClip" width="300" height="200" /></p>
<p style="text-align: left;">Name: telainicio<br />
Registration: Canto superior esquerdo</p>
<p style="text-align: left;">Vou dar um nome para o retângulo na instance name para que possa encontrá-lo através de Actionscript. Então seleciono o retângulo e coloco como nome na instance name.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-254" title="Instance name inicio" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/inicio_instancename.jpg" alt="Instance name inicio" width="300" height="200" /></p>
<p style="text-align: left;">Por último com a ferramenta de texto, vou criar uma caixa de texto vazia.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-255" title="Ferramenta de texto(Text Tool)" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/toottext.jpg" alt="Ferramenta de texto(Text Tool)" width="300" height="200" /></p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-269" title="Caixa de texto vazia" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/caixadetexto_vazia.jpg" alt="Caixa de texto vazia" width="300" height="200" /></p>
<p style="text-align: left;">Com as seguintes configurações:</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-263" title="Dynamic Text" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/dynamic-text.jpg" alt="Dynamic Text" width="300" height="200" /></p>
<p style="text-align: left;">Dynamic Text</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-264" title="Character" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/character.jpg" alt="Character" width="300" height="200" /></p>
<p style="text-align: left;">
<p style="text-align: left;">Character<br />
Family: _typewriter<br />
Size: 25.0 pt<br />
Cor: cinza (#CCCCCC)<br />
Essas configurações de fonte, tamanho e cor são apenas uma sugestão, podendo se trabalhar com quaisquer outras fontes, tamanhos ou cores.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-265" title="Paragraph" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/paragraph.jpg" alt="Paragraph" width="300" height="200" /></p>
<p style="text-align: left;">Centralizo o texto. E por ultimo coloco o seguinte nome da instance name da caixa de texto:</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-267" title="Instance name texto_inicio" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/instancenametexto.jpg" alt="Instance name texto_inicio" width="300" height="200" /></p>
<p>Agora sim vamos para a parte de Actionscript, clico no quadro 2 da Layer Actionscript e em seguida abro o painel de Action:</p>
<p>Menu Windows, Action ou uso o atalho F9.</p>
<p><img class="aligncenter size-full wp-image-268" title="Quadro 2 da Layer Actionscript" src="http://blog.grupouniversos.com/wp-content/uploads/2009/05/asquadro2.jpg" alt="Quadro 2 da Layer Actionscript" width="300" height="200" /></p>
<p>Agora vamos começar a digitar o Actionscript de todo o jogo. Como o código final agora é bastante grande já vou colocá-lo comentado(ao copiar o código tome cuidado com as aspas, pois ele as inverte).</p>
<p>stop(); // para o script no quadro atual<br />
import flash.utils.*; // importo uma galeria de utilidades do flash</p>
<p>texto_inicio.text=&#8221;Como jogar?\n\n\nMonte o quebra-cabeça encaixando as peças antes que o tempo acabe!\n\nPara começar apenas clique na tela.\n\nIniciar Jogo&#8221;; // adiciono o texto no texto_inicio;</p>
<p>var soma:Number = new Number(); // crio uma variável chamado soma e tipo ela como número(só pode receber números)</p>
<p>addEventListener(MouseEvent.MOUSE_DOWN, iniciar); //crio um ouvinte de evento quando houver o clique, inicia a função iniciar<br />
function iniciar(Event:MouseEvent):void { //crio a função iniciar, com parâmetro de mouse com retorno nenhum (void)</p>
<p>tempo.text=&#8221;2:0&#8243;; // gravo dentro do tempo o valor de 2:0, lembrando que esse valor é apenas uma string<br />
soma=0; // seto o valor inicial de soma para 0<br />
pontos.text=&#8221;0&#8243;; // gravo dentro de pontos o valor de 0, lembrando que esse valor é apenas uma string</p>
<p>inicio.visible=false; //coloco o quadro do inicio como invisível<br />
texto_inicio.visible=false; // faço o mesmo com o texto que está no inicio<br />
inicio.mouseEnabled=false; //Essa função desabilita o mouse sobre o quadro inicio, para que não atrapalhe enquanto trabalho no quebra cabeças<br />
texto_inicio.mouseEnabled=false; //faço o mesmo com o texto, pois se clicar no texto também ocorre o mesmo problema</p>
<p>for (var i = 1; i &lt; 17; i++) { // crio uma repetição, dizendo que i deve iniciar em 1 e enquanto ele for menor que 17 (temos 16 peças),  ele aumenta 1<br />
var Totalpecas=getChildByName(&#8220;peca&#8221;+i); /* crio uma nova variável com o nome de Totalpecas e pego o nome da peça, lembra que demos os nomes de peca1, peca2 e assim por diante, então ele vai pegar o nome &#8220;peca&#8221; + i(valor de i que vai se repetir 1, 2,3, até 16 */<br />
Totalpecas.x = Math.floor( Math.random() * (stage.stageWidth-100) ); /* coloco cada peça em uma posição x randômica, para que as peças não fiquem sempre na mesma posição dentro do tamanho máximo do meu stage e subtraio o valor de 100, para que as peças não fiquem muito nos cantos, senão assim seria muito fácil  */<br />
Totalpecas.y = Math.floor( Math.random() * (stage.stageHeight-100) ); //faço o mesmo com a posição y<br />
Totalpecas.mouseEnabled=true; /* &#8220;ligo&#8221; a opção do mouse, agora vem a pergunta, porque fiz isso se o padrão é ser true? Simples, mais abaixo no script  eu desligo(seto como false) essa opção em determinado ponto e explicarei mais abaixo */<br />
}</p>
<p>var segundos:Number=0;  // crio a variável segundos para criar o cronometro e coloco o valor de 0<br />
var minuto:Number=2; // faço o mesmo para minutos, mais com o valor de 2, ou seja tem 2 minutos para montar o quebra-cabeças</p>
<p>var contador:Timer=new Timer(1000); /*crio uma variável chamada contador e tipo como sendo do tipo Timer e coloco o valor padrão de 1000 milisegundos, ou seja, 1 segundo. A cada um segundo ele volta a função para verificar como está o tempo atual */<br />
contador.addEventListener(&#8220;timer&#8221;, funcTempo); // crio o ouvinte de evento do contator e chamo a função funcTempo<br />
contador.start(); //inicio o Timer, quando se cria uma função do tipo Timer, é necessário que se inicie ela<br />
function funcTempo(ObjTempo:TimerEvent) { /* crio a função funcTempo, passando o parâmetro como sendo do tipo TimerEvent, ou seja evento de tempo */<br />
if (segundos&gt;0) { // executo uma condição onde pergunto se segundos é maior que 0<br />
segundos&#8211;; // se for, ele regride 1<br />
} else { // senão<br />
minuto&#8211;; //quem regride são os minutos<br />
segundos+=59; //ao regredir um minuto, os segundos volta a valer 59<br />
}<br />
if (soma==80) { //executo uma segunda condição, se a soma for igual a 80(os pontos do jogador), caso o jogador ganhe!<br />
texto_inicio.text=&#8221;Você Venceu, Parabéns\n\n\nVocê fez: &#8220;+soma+&#8221;pontos\n\n\n\nJogar Novamente?&#8221;; /* mudo o texto de texto_inicio, \n significa linha de baixo ou pular linha */<br />
inicio.visible=true; //volto a visibilidade do quadro inicio<br />
texto_inicio.visible=true; //também volto a visibilidade do texto<br />
inicio.mouseEnabled=true; //também devolvo a função do mouse de clicar no quadro inicio<br />
texto_inicio.mouseEnabled=true; // faço o mesmo com o texto<br />
removeEventListener(MouseEvent.MOUSE_OVER, pecas); //removo o ouvinte pecas(veja mais abaixo)<br />
removeEventListener(MouseEvent.MOUSE_DOWN, pegar); //também removo o ouvinte pegar<br />
removeEventListener(MouseEvent.MOUSE_UP, soltar); //e o soltar (veja a explicação abaixo)<br />
inicio.addEventListener(MouseEvent.MOUSE_DOWN, iniciar); // volto a adicionar o ouvinte de texto para o quadro inicio<br />
texto_inicio.addEventListener(MouseEvent.MOUSE_DOWN, iniciar); //faço o mesmo com o texto<br />
contador.stop(); //se o jogador ganhou, paro o contator<br />
contador.removeEventListener(&#8220;timer&#8221;, funcTempo); /* e removo o ouvinte de evento, isso é necessário por dois motivos, 1 &#8211; descarrega da memoria, liberando espaço, 2 &#8211; irá zerar o contador, caso o jogador queira jogar novamente. */<br />
}<br />
if (minuto==0&amp;&amp;segundos==0) { // crio uma outra condição, caso o jogador não consiga montar as peças a tempo, ou seja, perdeu<br />
texto_inicio.text=&#8221;Você perdeu, tente novamente\n\n\nVocê fez: &#8220;+soma+&#8221;pontos\n\n\n\nTentar Novamente?&#8221;; // adiciono o seguinte texto<br />
inicio.visible=true; // devolvo a visibilidade do inicio<br />
texto_inicio.visible=true; //faço o mesmo com o texto<br />
inicio.mouseEnabled=true; // e também devolto a função de clicar no quadro inicio<br />
texto_inicio.mouseEnabled=true; //faço o mesmo com o texto<br />
removeEventListener(MouseEvent.MOUSE_OVER, pecas); //removo o ouvinte de evento pecas<br />
removeEventListener(MouseEvent.MOUSE_DOWN, pegar); //também removo o ouvinte pegar<br />
removeEventListener(MouseEvent.MOUSE_UP, soltar); // e o ouvinte soltar<br />
contador.stop(); // paro o contator<br />
contador.removeEventListener(&#8220;timer&#8221;, funcTempo); /* e removo o ouvinte de evento, isso é necessário por dois motivos, 1 &#8211; descarrega da memoria, liberando espaço, 2 &#8211; irá zerar o contaro, caso o jogador queira jogar novamente. */<br />
inicio.addEventListener(MouseEvent.MOUSE_DOWN, iniciar); //volto a adicionar o ouvinte de texto para o quadro inicio<br />
texto_inicio.addEventListener(MouseEvent.MOUSE_DOWN, iniciar); //também faço o mesmo com o texto_inicio<br />
}<br />
tempo.text=minuto+&#8221;:&#8221;+segundos; //retorno o valor para a caixa de tempo dos minutos e segundos restantes<br />
}<br />
removeEventListener(MouseEvent.MOUSE_DOWN, iniciar); /*enquanto não acontece nenhuma das condições acima, eu removo o ouvinte de evento iniciar */<br />
addEventListener(MouseEvent.MOUSE_OVER, pecas); /*crio um novo ouvinte de evento, dessa vez com a propriedade MOUSE_OVER, ou seja quando o usuário passar o mouse sobre o(s) objeto(s) ele irá chamar a função pecas*/<br />
}<br />
function pecas(evt:Event):void { //crio a função pecas e passo o parâmetro evt do tipo Event<br />
switch (evt.target.name) { // recupero o nome do objeto em qual o usuário está no momento passando o mouse por cima e pergunto:<br />
case &#8220;tempo&#8221; : /* caso seja o tempo(campo dynamic de texto), ele não faz nada, imagina você puder ficar arrastanto a contagem de tempo, sem contar que isso poderia prejudicar o script, além de ocasionar erro. */<br />
break; // pare aqui<br />
case &#8220;pontos&#8221; : // caso seja pontos(campo dynamic de texto), ele também não irá fazer nada<br />
break; //pare aqui<br />
case &#8220;espaco1&#8243; : //lembra das nossas peças invisiveis, não é porque elas estão invisiveis que não podem ser selecionadas, fiz isso para as 16.<br />
break;<br />
case &#8220;espaco2&#8243; :<br />
break;<br />
case &#8220;espaco3&#8243; :<br />
break;<br />
case &#8220;espaco4&#8243; :<br />
break;<br />
case &#8220;espaco5&#8243; :<br />
break;<br />
case &#8220;espaco6&#8243; :<br />
break;<br />
case &#8220;espaco7&#8243; :<br />
break;<br />
case &#8220;espaco8&#8243; :<br />
break;<br />
case &#8220;espaco9&#8243; :<br />
break;<br />
case &#8220;espaco10&#8243; :<br />
break;<br />
case &#8220;espaco11&#8243; :<br />
break;<br />
case &#8220;espaco12&#8243; :<br />
break;<br />
case &#8220;espaco13&#8243; :<br />
break;<br />
case &#8220;espaco14&#8243; :<br />
break;<br />
case &#8220;espaco15&#8243; :<br />
break;<br />
case &#8220;espaco16&#8243; :<br />
break;<br />
default : //bem caso não seja nenhuma dessas opções, será o que precisamos<br />
evt.target.addEventListener(MouseEvent.MOUSE_DOWN, pegar); /*não me importa qual peça ele pegou, o importante é que ele selecionou e ao selecionar, ele dispara a função pegar */<br />
evt.target.addEventListener(MouseEvent.MOUSE_UP, soltar); // o mesmo irá ocorrer quando ele soltar a peça<br />
break; //pare aqui<br />
}<br />
}</p>
<p>function pegar(Obj:Event):void { // crio a função pegar<br />
Obj.target.startDrag(); // inicio a opção de poder arrastar a peça enquanto segura o botão do mouse apertado<br />
Obj.target.alpha = 0.6; //também digo que a minha transparência é de 60%<br />
}</p>
<p>function soltar(Obj:Event):void { //crio a função soltar<br />
Obj.target.stopDrag(); //faço o objeto parar aonde o jogador soltou o botão do mouse<br />
var espaco=&#8221;espaco&#8221;+Obj.target.name.substring(4,6); /*recupero os dois ultimos digitos do nome da peça(exemplo: seleciono a peca1, ele retorna 1, seleciono a peca15, ele retorna apenas 15, isso foi possivel graças ao substring, onde o valor 4, significa que eu quero que ignore os 4 primeiros caracteres pegue apenas a partir do quinto e o número 6 significa que eu quero que pare no máximo até o caracter 6 */<br />
Obj.target.alpha = 1; //volto a transparencia da peça para 100%<br />
var alvo = getChildByName(espaco); /* De posse da informação dos dois ultimos caracteres, eu crio uma variável que vai pegar a string acima &#8220;espaco&#8221; e vai adicionar os dois ultimos caracteres recuperados, formando assim o então espaco1, espaco2&#8230;. até o espaco16 */<br />
if (Obj.target.hitTestPoint(alvo.x+50,alvo.y+50,true)) { /* Depois eu executo uma condição se a peça que o jogador está tentando encaixar está realmente sobre o espaço correto com uma margem de erro de 50, afinal acertar a posição exata de x e y poderia ser algo extremamente complicado */<br />
soma+=5; //caso ele acerte soma +5 pontos<br />
pontos.text = soma+&#8221;pts&#8221;; // retorno essa informação dentro do dynamic text pontos<br />
Obj.target.mouseEnabled=false; /*a peça já foi encaixada, então desativo a opção de movimenta-la, para não ter um espertinho querendo fazer milhões de pontos */<br />
Obj.target.x=getChildByName(espaco).x; //travo a peça na posição do espaço certo em x<br />
Obj.target.y=getChildByName(espaco).y; //e no y<br />
removeEventListener(MouseEvent.MOUSE_DOWN, pegar); // removo o ouvinte de evento pegar, descarregando da memoria<br />
removeEventListener(MouseEvent.MOUSE_UP, soltar); //faço o mesmo com o ouvinte soltar<br />
} else {<br />
removeEventListener(MouseEvent.MOUSE_DOWN, pegar);  /* se ainda não conseguiu encaixar no espaço correto, eu também descarrego o ouvinte da memoria para tornar o jogo mais rápido */<br />
removeEventListener(MouseEvent.MOUSE_UP, soltar); //faço o mesmo com o soltar<br />
}<br />
}</p>
<p>Assim finalizo a última parte do Jogo: Quebra-Cabeças, algumas outras informações:</p>
<p>O meu aquivo .fla ficou com 320Kb</p>
<p>O swf ficou com apenas: 17,9Kb</p>
<p>Ele consome entre 6352Kb e 6380Kb de memóra, ou seja é possivel rodar até mesmo em computadores muito lentos e com pouca memória ram.</p>
<p><object width="550" height="400" data="http://blog.grupouniversos.com/quebra-cabecas.swf" type="application/x-shockwave-flash"><param name="src" value="http://blog.grupouniversos.com/quebra-cabecas.swf" /></object></p>
<p>Por último o size report do jogo:</p>
<p>quebra-cabecas.swf Movie Report<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Metadata<br />
&#8212;&#8212;&#8211;<br />
Bytes    Value<br />
&#8212;&#8211;    &#8212;&#8211;<br />
1049    &lt;rdf:RDF xmlns:rdf=&#8221;http://www.w3.org/1999/02/22-rdf-syntax-ns#&#8221;&gt; &lt;rdf:Description rdf:about=&#8221;" xmlns:xmp=&#8221;http://ns.adobe.com/xap/1.0/&#8221;&gt; &lt;xmp:CreatorTool&gt;Adobe Flash CS4 Professional&lt;/xmp:CreatorTool&gt; &lt;xmp:CreateDate&gt;2009-05-21T19:25:16-03:00&lt;/xmp:CreateDate&gt; &lt;xmp:MetadataDate&gt;2009-05-28T22:12:13-03:00&lt;/xmp:MetadataDate&gt; &lt;xmp:ModifyDate&gt;2009-05-28T22:12:13-03:00&lt;/xmp:ModifyDate&gt; &lt;/rdf:Description&gt; &lt;rdf:Description rdf:about=&#8221;" xmlns:xmpMM=&#8221;http://ns.adobe.com/xap/1.0/mm/&#8221; xmlns:stRef=&#8221;http://ns.adobe.com/xap/1.0/sType/ResourceRef#&#8221;&gt; &lt;xmpMM:InstanceID&gt;xmp.iid:E4D60591DE4BDE11B4A1AD2E7C4A877D&lt;/xmpMM:InstanceID&gt; &lt;xmpMM:DocumentID&gt;xmp.did:E4D60591DE4BDE11B4A1AD2E7C4A877D&lt;/xmpMM:DocumentID&gt; &lt;xmpMM:OriginalDocumentID&gt;xmp.did:6823CA215546DE11A3988B60EAE2E33E&lt;/xmpMM:OriginalDocumentID&gt; &lt;xmpMM:DerivedFrom rdf:parseType=&#8221;Resource&#8221;&gt; &lt;stRef:instanceID&gt;xmp.iid:31407BC75F4ADE119D74E069E2B7B7C0&lt;/stRef:instanceID&gt; &lt;stRef:documentID&gt;xmp.did:31407BC75F4ADE119D74E069E2B7B7C0&lt;/stRef:documentID&gt; &lt;stRef:originalDocumentID&gt;xmp.did:6823CA215546DE11A3988B60EAE2E33E&lt;/stRef:originalDocumentID&gt; &lt;/xmpMM:DerivedFrom&gt; &lt;/rdf:Description&gt; &lt;rdf:Description rdf:about=&#8221;" xmlns:dc=&#8221;http://purl.org/dc/elements/1.1/&#8221;&gt; &lt;dc:format&gt;application/x-shockwave-flash&lt;/dc:format&gt; &lt;/rdf:Description&gt; &lt;/rdf:RDF&gt;</p>
<p>Frame #    Frame Bytes    Total Bytes    Scene<br />
&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8211;    &#8212;&#8212;&#8212;&#8211;    &#8212;&#8212;&#8212;&#8212;&#8212;-<br />
1          15165          15165    Scene 1 (AS 3.0 Classes Export Frame)<br />
2           3261          18426</p>
<p>Scene                        Shape Bytes    Text Bytes    ActionScript Bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8211;    &#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Scene 1                              604           249                  3214</p>
<p>Symbol                       Shape Bytes    Text Bytes    ActionScript Bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8211;    &#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
telainicio                            34             0                     0<br />
peca16                                72             0                     0<br />
peca15                                88             0                     0<br />
peca14                                88             0                     0<br />
peca13                                69             0                     0<br />
peca12                                98             0                     0<br />
peca11                               109             0                     0<br />
peca10                               104             0                     0<br />
peca9                                 88             0                     0<br />
peca8                                 87             0                     0<br />
peca7                                103             0                     0<br />
peca6                                 99             0                     0<br />
peca5                                 83             0                     0<br />
peca4                                 64             0                     0<br />
peca3                                 82             0                     0<br />
peca2                                 81             0                     0<br />
peca1                                 65             0                     0<br />
espaco16                               0             0                     0<br />
espaco15                               0             0                     0<br />
espaco14                               0             0                     0<br />
espaco13                               0             0                     0<br />
espaco12                               0             0                     0<br />
espaco11                               0             0                     0<br />
espaco10                               0             0                     0<br />
espaco9                                0             0                     0<br />
espaco8                                0             0                     0<br />
espaco7                                0             0                     0<br />
espaco6                                0             0                     0<br />
espaco5                                0             0                     0<br />
espaco4                                0             0                     0<br />
espaco3                                0             0                     0<br />
espaco2                                0             0                     0<br />
espaco1                                0             0                     0<br />
Mascara_quadrado                      32             0                     0<br />
img_fundo                             37             0                     0</p>
<p>Font Name                 Bytes        Characters<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;    &#8212;&#8212;&#8212;&#8212;&#8211;<br />
_typewriter                      35</p>
<p>ActionScript Bytes    Location<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;    &#8212;&#8212;&#8211;<br />
3214    Scene 1:Frame 1</p>
<p>Bitmap                     Compressed    Compression<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;    &#8212;&#8212;&#8212;-  &#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8211;<br />
quebra-cabecas.jpg             10004      230400   JPEG Quality=80<br />
Abraços e até o próximo jogo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.grupouniversos.com/2009/05/28/criando-um-jogo-adobe-flash-actionscript-30-prog-part-iv/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

