<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CUIDQnw-eyp7ImA9WxNUE0g.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451</id><updated>2009-11-04T08:52:53.253-08:00</updated><title>Web-Loot</title><subtitle type="html">Tutoriais ActionScript, Java, Php, Ruby on Rails e MySql. 
Exemplos e dicas sobre desenvolvimento de software.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/Web-loot" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;Dk4HRH87fCp7ImA9WxJTEk4.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-7747486462794229015</id><published>2009-04-20T06:05:00.000-07:00</published><updated>2009-04-20T06:42:15.104-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T06:42:15.104-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBeans" /><title>Attach debugger NetBeans</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/Sex2zmaQOXI/AAAAAAAAATs/W5ELakjIY70/s1600-h/bug.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 139px; height: 113px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/Sex2zmaQOXI/AAAAAAAAATs/W5ELakjIY70/s320/bug.jpg" alt="" id="BLOGGER_PHOTO_ID_5326763088128522610" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan;} @page Section1 	{size:595.3pt 841.9pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabela normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;div style="text-align: justify;"&gt;O NetBeans possui varias formas de debug. Uma opção interessante é Attach debugger que permite depurar programas em execução ( no caso de applets por exemplo) local ou remotamente.
&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;
&lt;br /&gt;
&lt;br /&gt;Para depurar um applet que está sendo executado localmente, devemos anexar esta aplicação pelo número do seu processo ao NetBeans. A visual virtual machine é interessante, pois mostra o id dos processos java sendo executados (download em: https://visualvm.dev.java.net/).
&lt;br /&gt;Antes de anexar o processo no Netbeans é necessário adicionar os parâmetros na virtual machine. Para isso vá em Iniciar &gt; painel de Controle &gt; java. Escolha a aba java e click no view da opção Java applet runtime settings:
&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;-Xdebug -Xnoagent -Djava.compiler=NONE  -Xrunjdwp:transport=dt_shmem,suspend=n,server=y&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SexzoVrRHOI/AAAAAAAAATk/sN7pkgzGXPw/s1600-h/debug2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 110px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SexzoVrRHOI/AAAAAAAAATk/sN7pkgzGXPw/s320/debug2.gif" alt="" id="BLOGGER_PHOTO_ID_5326759596123036898" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Feito isso, execute o applet, olhe na Java Visual JVM e número do processo do seu applet. No NetBeans , na barra de ferramentas escolha Depurar&gt; Attach to debugger. Preencha os campos como a figura abaixo. Lembre-se de colocar o id correto da sua aplicação em execução.
&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SexzoHl-2fI/AAAAAAAAATc/yJ3IVTiKf9E/s1600-h/debug.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 142px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SexzoHl-2fI/AAAAAAAAATc/yJ3IVTiKf9E/s320/debug.gif" alt="" id="BLOGGER_PHOTO_ID_5326759592342772210" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-7747486462794229015?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/7747486462794229015/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=7747486462794229015" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/7747486462794229015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/7747486462794229015?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2009/04/attach-debugger-netbeans.html" title="Attach debugger NetBeans" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/Sex2zmaQOXI/AAAAAAAAATs/W5ELakjIY70/s72-c/bug.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUEMRX86eip7ImA9WxVaEkU.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-5598252400847495210</id><published>2009-04-08T19:22:00.000-07:00</published><updated>2009-04-09T06:28:04.112-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-09T06:28:04.112-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title>CakePHP :Links Ajax helper com efeitos Scriptaculous </title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/Sd1pa8kj3qI/AAAAAAAAATE/mwnCQ_SaADU/s1600-h/ajaxCake.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 175px; height: 274px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/Sd1pa8kj3qI/AAAAAAAAATE/mwnCQ_SaADU/s320/ajaxCake.jpg" alt="" id="BLOGGER_PHOTO_ID_5322526246278782626" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;Nem tudo é Rails no mundo dos CRUDS. O CakePHP é um framework de desenvolvimento ágil assim como o Ruby Rails.
&lt;br /&gt;Segue abaixo os passos para usar Helpers Ajax com efeitos da biblioteca Scriptaculous. Se você não conhece o CakePHP  viste &lt;a href="http://vinicius.biz/cakephp/introducao.php"&gt;http://vinicius.biz/cakephp/introducao.php&lt;/a&gt;  para obter mais informações.
&lt;br /&gt;Tendo o CakePHP funcionando devidamente é necessário instalar a lib Scriptaculous (&lt;a href="http://script.aculo.us/"&gt;http://script.aculo.us/&lt;/a&gt;) . Para isso, basta descompactar os arquivos na pasta /app/webroot/js  .
&lt;br /&gt;O primeiro passo é tornar disponível a biblioteca scriptaculous e prototype. Para isso inclua o código abaixo antes da tag no layout (/app/views/layout/default.thtml) .
&lt;br /&gt;
&lt;br /&gt;	&lt;blockquote&gt;
&lt;br /&gt;&lt; ?php if(isset($javascript)):
&lt;br /&gt;echo $javascript-&gt;link('prototype.js');
&lt;br /&gt;echo $javascript-&gt;link('scriptaculous.js?load=effects');
&lt;br /&gt;endif;
&lt;br /&gt;?&gt; &lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;Na classe Controle é preciso adicionar o helper 'Ajax' no array de helpers.
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;/p&gt;&lt;blockquote&gt;&amp;lt; ?php
&lt;br /&gt;class LoginController extends AppController {&lt;p&gt;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;var $name = 'Login';
&lt;br /&gt;var $helpers = array('Form', 'Html', 'Javascript', 'Time', 'Ajax');&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;     &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;          &lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;function index() {
&lt;br /&gt;$this-&gt;render('index');
&lt;br /&gt;}&lt;/p&gt;       &lt;p class="western" style="margin-bottom: 0cm;"&gt;     &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;    function view($id) {
&lt;br /&gt;// use ajax layout
&lt;br /&gt;$this-&gt;render('index', 'ajax');
&lt;br /&gt;}//view()
&lt;br /&gt;}?&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Na classe View criamos um link Ajax que irá chamar o conteúdo de uma &lt;/p&gt;&lt;div&gt; especifica. No caso abaixo o link Ajax, com o nome de “Ajuda”, vai chamar a url “ /things/view”  ( renderiza ela mesma) e vai aplicar os efeitos Appear e Fade em dois campos (divs) com um conteúdo qualquer identtificado por “divExemplo1” e  “divExemplo2” .
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt;     &lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt;       &lt;p class="western" style="margin-bottom: 0cm;"&gt;                 &lt;/p&gt;&lt;blockquote&gt;&amp;lt; div id="help1"&gt;
&lt;br /&gt;&amp;lt; ?php echo ' | ';
&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;// use an effect
&lt;br /&gt;echo $ajax-&gt;link('Ajuda', '/things/view/1',
&lt;br /&gt;array('loading' =&gt; 'Effect.Appear(\'divExemplo1\'), Effect.Fade(\'divExemplo2\')',FALSE)
&lt;br /&gt;); ?&gt;
&lt;br /&gt;/div&gt;&lt;/p&gt;
&lt;br /&gt;&amp;lt; ?php echo $ajax-&gt;div('divExemplo1'); ?&gt;
&lt;br /&gt;&amp;lt; h2&gt;/*Um conteúdo qualquer:links, imagens, xml, etc */ &amp;lt; /h2&gt;
&lt;br /&gt;&amp;lt;?php echo $ajax-&gt;divEnd('divExemplo1'); ?&gt;&lt;/blockquote&gt;Outros métodos que produzem diferentes efeitos pela Scriptaculous podem ser vistos em :&lt;a href="http://wiki.github.com/madrobby/scriptaculous"&gt;http://wiki.github.com/madrobby/scriptaculous
&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	-&lt;/style&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-5598252400847495210?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/5598252400847495210/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=5598252400847495210" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5598252400847495210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5598252400847495210?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2009/04/cakephp-llinks-ajax-helper-com-efeitos.html" title="CakePHP :Links Ajax helper com efeitos Scriptaculous " /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/Sd1pa8kj3qI/AAAAAAAAATE/mwnCQ_SaADU/s72-c/ajaxCake.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0EMSH06eCp7ImA9WxVbFk4.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-5493681321025622228</id><published>2009-04-01T19:22:00.000-07:00</published><updated>2009-04-01T19:34:49.310-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-01T19:34:49.310-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>Java : Casting Objects</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdQj1xaApII/AAAAAAAAAS8/5GeYGtd-xAk/s1600-h/DukeWakesUp.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 107px; height: 105px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdQj1xaApII/AAAAAAAAAS8/5GeYGtd-xAk/s320/DukeWakesUp.jpg" alt="" id="BLOGGER_PHOTO_ID_5319916466533868674" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;O Cast serve para determinar qual o tipo do objeto está sendo usado.
&lt;br /&gt;Consideramos as seguintes classes JogoDeTabuleiro e Xadrez. A classe Xadrez é filha da Classe JogoDeTabuleiro.
&lt;br /&gt;
&lt;br /&gt;Se for declarado:   &lt;/div&gt;&lt;blockquote&gt;public Xadrez meuJogo = new Xadrez ();&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;O meuJogo é um jogo de Xadrez. Sendo Xadrez uma classe descendente de JogoDeTabuleiro e também da classe Object, o meuJogo é também um JogoDeTabuleiro e um Object.
&lt;br /&gt;A afirmativa contrária não é verdadeira. Um JogoDeTabuleiro não é necessariamente um jogo de Xadrez. Da mesma forma um Object pode ser um JogoDeTabuleiro ou um jogo de Xadrez.
&lt;br /&gt;Veja o código abaixo:
&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;Object obj = new Xadrez();&lt;/blockquote&gt;obj é um Object e um jogo de Xadrez. Cast implícito
&lt;br /&gt;&lt;blockquote&gt;Xadrez meuJogo = (Xadrez)obj;&lt;/blockquote&gt;O cast assegura que obj do tipo Xadrez seja passado ao meuJogo que só é do tipo meuJogo. Cast explicito.
&lt;br /&gt;Uma outa maneira de prevenir erros está no teste lógico:
&lt;br /&gt;&lt;blockquote&gt;if (obj instanceof Xadrez) {
&lt;br /&gt;Xadrez meuJogo = (Xadrez)obj;
&lt;br /&gt;}&lt;/blockquote&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-5493681321025622228?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/5493681321025622228/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=5493681321025622228" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5493681321025622228?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5493681321025622228?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2009/04/java-casting-objects.html" title="Java : Casting Objects" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdQj1xaApII/AAAAAAAAAS8/5GeYGtd-xAk/s72-c/DukeWakesUp.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU4BQXo8fSp7ImA9WxVbFEs.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-4953634764536731366</id><published>2009-03-30T11:08:00.000-07:00</published><updated>2009-03-30T18:45:50.475-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-30T18:45:50.475-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><title>MVC no Eclipse com Visual Editor</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdF0jRUJmKI/AAAAAAAAAS0/_hpxkrcdlPA/s1600-h/Duke3DprogressionSmall.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 102px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdF0jRUJmKI/AAAAAAAAAS0/_hpxkrcdlPA/s320/Duke3DprogressionSmall.jpg" alt="" id="BLOGGER_PHOTO_ID_5319160784193427618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A utilização de um pattern deixa seu código mais organizadoe torna o desenvolvimento mais eficiente. Abaixo um breve exemplo de um aplicativo java seguindo o MVC usando eclipse e sua VE.&lt;br /&gt;&lt;div&gt;Segundo a wikipédia temos :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;View &lt;/span&gt;- "Renderiza" o model em uma forma específica para a interação (GUI).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Controller &lt;/span&gt;- Controle da regra de negócio.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Model &lt;/span&gt;- representação dos elementos do seu domínio e interação com as ferramentas de persistência.&lt;/li&gt;&lt;/ol&gt;Para maiores informações sobre o MVC confira o link: &lt;a href="http://java.sun.com/blueprints/patterns/MVC-detailed.html"&gt;http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;/a&gt; .&lt;br /&gt;Após criar um novo projeto crie todos os pacotes necessários na pasta src: app, control, view e model.&lt;br /&gt;obs: o pacote app, será o lugar onde empacotaremos a Main.java .&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/SdELfvrWsPI/AAAAAAAAASU/ob3bwMLnDvU/s1600-h/mvc1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 139px;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/SdELfvrWsPI/AAAAAAAAASU/ob3bwMLnDvU/s200/mvc1.gif" alt="" id="BLOGGER_PHOTO_ID_5319045274903425266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A classe Main possui um único construtor para a controle.&lt;br /&gt;&lt;blockquote&gt;package app;&lt;br /&gt;import control.Control;&lt;br /&gt;&lt;br /&gt;public class Main {&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt; new Control();&lt;br /&gt;}&lt;br /&gt;}&lt;/blockquote&gt;Dentro do pacote control temos a interface ViewControl e a classe Control que a implementa. A control fará a chamada para construir a View alem disso deve ser capaz de operar mudanças na GUI apartir dos valores da model, ou da interação do usuário. O método buttonFunction é chamado quando pressionamos um botão , atribuindo valor para uma variável dentro da Model.&lt;br /&gt;&lt;blockquote&gt;package control;&lt;br /&gt;&lt;br /&gt;import view.View;&lt;br /&gt;import model.Form;&lt;br /&gt;&lt;br /&gt;public class Control implements ViewInterface{&lt;br /&gt;&lt;br /&gt;View mainView = null;&lt;br /&gt;Form mainForm = null;&lt;br /&gt;&lt;br /&gt;public Control() {&lt;br /&gt; mainView = new View(this);&lt;br /&gt; mainForm = new Form();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void buttonFunction(Form form) {&lt;br /&gt; mainForm.setNumber1(mainView.fieldContent1());&lt;br /&gt; System.out.println(mainForm.getNumber1());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;package control;&lt;br /&gt;&lt;br /&gt;import model.Form;&lt;br /&gt;&lt;br /&gt;public interface ViewInterface {&lt;br /&gt;&lt;br /&gt;void buttonFunction (Form form);&lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;No pacote Model temos a classe Form que guarda os atributos do nosso formulário de exemplo.&lt;br /&gt;&lt;blockquote&gt;package model;&lt;br /&gt;public class Form {&lt;br /&gt;int number1;&lt;br /&gt;&lt;br /&gt;public int getNumber1() {&lt;br /&gt; return number1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setNumber1(int number1) {&lt;br /&gt; this.number1 = number1;&lt;br /&gt;}&lt;br /&gt;}&lt;/blockquote&gt;No pacote View temos uma visual class (Jframe com um JTextField e um JButton). Esta pode ser gerada automaticamente pelo Visual Editor do Eclipse. Apenas alguns cógidos são acrescentados, como o construtor chamado pela Control.&lt;br /&gt;&lt;blockquote&gt;public ViewInterface viewInterface=null;&lt;br /&gt;&lt;br /&gt;public View(ViewInterface viewInterface){&lt;br /&gt; super();&lt;br /&gt; this.viewInterface = viewInterface;&lt;br /&gt; initComponents();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int fieldContent1(){&lt;br /&gt; return Integer.parseInt(jTextField0.getText());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void jButton0ActionActionPerformed(ActionEvent event) {&lt;br /&gt; viewInterface.buttonFunction(null);&lt;br /&gt;}&lt;/blockquote&gt;&lt;/div&gt;O método jButton0ActionActionPerformed é gerado clicando com o botão direto do mouse sobre o JButton no modo Desing &gt; Add/Edit events &gt; action.&lt;br /&gt;&lt;br /&gt;A aplicação criada se resume em: A Main chama um Construtor da classe Control. A Control implementa intreface e chama o construtor da view. Um click no botão da View chama a Controle q pega o valor do textField e chama o método Set da classe Form.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdELgIIqc2I/AAAAAAAAASk/QGpeP0gSzL4/s1600-h/mvc3.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 186px; height: 200px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdELgIIqc2I/AAAAAAAAASk/QGpeP0gSzL4/s200/mvc3.gif" alt="" id="BLOGGER_PHOTO_ID_5319045281468805986" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-4953634764536731366?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/4953634764536731366/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=4953634764536731366" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/4953634764536731366?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/4953634764536731366?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2009/03/mvc-no-eclipse-com-visual-editor.html" title="MVC no Eclipse com Visual Editor" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/SdF0jRUJmKI/AAAAAAAAAS0/_hpxkrcdlPA/s72-c/Duke3DprogressionSmall.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU4MR347cSp7ImA9WxVbFEs.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-1390940283776408960</id><published>2009-03-25T09:00:00.000-07:00</published><updated>2009-03-30T18:46:26.009-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-30T18:46:26.009-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><title>Instalando VE( visual editor ) no Eclipse</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/ScpWIh5CJxI/AAAAAAAAASM/OYVniz73OJo/s1600-h/eclipse.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 114px; height: 163px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/ScpWIh5CJxI/AAAAAAAAASM/OYVniz73OJo/s320/eclipse.jpg" alt="" id="BLOGGER_PHOTO_ID_5317157014600820498" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm &lt;/style&gt;Preguiça de aprender como usar layouts em Java? Use um VE (Visual Editor) e crie uma GUI organizada e bonita. No Eclipse é possível instalar um VE muito estável para facilitar seu trabalho.
&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Os requerimentos básicos são JDK 5.0 , EMF 2.4. O &lt;span style="text-decoration: none;"&gt;&lt;a href="http://www.eclipse.org/downloads/packages/"&gt;Eclipse 3.4 Ganymede&lt;/a&gt; possui os plugins necessários para instalação.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;O próximo passo é fazer download da última versão do  VE no endereço &lt;a href="http://www.ehecht.com/eclipse_ve/ve.html"&gt;ehecht.com&lt;/a&gt; .&lt;/span&gt;&lt;/p&gt;      &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="text-decoration: none;"&gt;Após isso extraia o conteúdo na pasta dropins dentro da pasta eclipse.
&lt;br /&gt;Confira o link para mais informações : &lt;a href="http://wiki.eclipse.org/VE/Installing"&gt;http://wiki.eclipse.org/VE/Installing
&lt;br /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/ScpVvGPF7_I/AAAAAAAAAR0/dRzWqAdCgfQ/s1600-h/java.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 187px; height: 200px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/ScpVvGPF7_I/AAAAAAAAAR0/dRzWqAdCgfQ/s200/java.gif" alt="" id="BLOGGER_PHOTO_ID_5317156577680420850" border="0" /&gt;&lt;/a&gt;&lt;span style="text-decoration: none;"&gt;Uma vez instalado, click com o botão direito sobre seu projeto, escolha a opção New &gt; other.
&lt;br /&gt;Escolha a pasta Java &gt; VisualClass.
&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/ScpV-APhrWI/AAAAAAAAASE/qRlxK1wGUIQ/s1600-h/java2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 190px; height: 200px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/ScpV-APhrWI/AAAAAAAAASE/qRlxK1wGUIQ/s200/java2.gif" alt="" id="BLOGGER_PHOTO_ID_5317156833769663842" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-1390940283776408960?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/1390940283776408960/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=1390940283776408960" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/1390940283776408960?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/1390940283776408960?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2009/03/instalando-ve-visual-editor-no-eclipse.html" title="Instalando VE( visual editor ) no Eclipse" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/ScpWIh5CJxI/AAAAAAAAASM/OYVniz73OJo/s72-c/eclipse.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUUHQHwzcSp7ImA9WxVREEs.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-8140027906992918479</id><published>2009-01-15T16:07:00.000-08:00</published><updated>2009-01-15T16:53:51.289-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-15T16:53:51.289-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Efeito adesivo com Flash CS 3</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_Wt7x194I/AAAAAAAAAQU/sJWj-2xv5VM/s1600-h/flash-sticker.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 113px; height: 108px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_Wt7x194I/AAAAAAAAAQU/sJWj-2xv5VM/s320/flash-sticker.jpg" alt="" id="BLOGGER_PHOTO_ID_5291684171812829058" border="0" /&gt;&lt;/a&gt;Fugindo um pouco dos códigos nesse tutorial o efeito de adesivo se descolando (animação).&lt;br /&gt;Crie um MovieClip para aplicar o efeito.&lt;br /&gt;Dentro do MovieClip crie alguns frames ( no meu caso usei 9) todos repetindo o desenho original. Repita o próximos passos em cada frame quantas vezes forem necessárias para completar o efeito.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SW_XSFof1pI/AAAAAAAAAQk/woYNQOP6Dok/s1600-h/flip1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 180px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SW_XSFof1pI/AAAAAAAAAQk/woYNQOP6Dok/s200/flip1.jpg" alt="" id="BLOGGER_PHOTO_ID_5291684792933275282" border="0" /&gt;&lt;/a&gt;Selecione a parte da figura onde o efeito vai começar. Como na figura abaixo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_Xumsq1RI/AAAAAAAAAQs/agmYP8ek4kY/s1600-h/flip2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 180px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_Xumsq1RI/AAAAAAAAAQs/agmYP8ek4kY/s200/flip2.jpg" alt="" id="BLOGGER_PHOTO_ID_5291685282845480210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na barra de menus escolha &lt;span style="font-weight: bold;"&gt;Modify&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Transform&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt; flip vertical&lt;/span&gt;. Esse comando irá espelhar a parte selecionada.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SW_YBAWHqAI/AAAAAAAAAQ0/p41m7DTCH_M/s1600-h/flip3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 180px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SW_YBAWHqAI/AAAAAAAAAQ0/p41m7DTCH_M/s200/flip3.jpg" alt="" id="BLOGGER_PHOTO_ID_5291685598967867394" border="0" /&gt;&lt;/a&gt;Para criar a idéia de adesivo, pinte a região selecionada de branco ( esse será o verso) Arraste a parte que foi invertida e posicione como na figura abaixo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/SW_YBdg00wI/AAAAAAAAAQ8/Uo3mejy2w9s/s1600-h/flip4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 180px;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/SW_YBdg00wI/AAAAAAAAAQ8/Uo3mejy2w9s/s200/flip4.jpg" alt="" id="BLOGGER_PHOTO_ID_5291685606797398786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Esse é o principio da animação. Para cada frame faça o mesmo , porem sempre aumentando a área a ser invertida. Veja abaixo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_YBuMSpWI/AAAAAAAAARE/i-SnjKJD-c4/s1600-h/flip5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 180px;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_YBuMSpWI/AAAAAAAAARE/i-SnjKJD-c4/s200/flip5.jpg" alt="" id="BLOGGER_PHOTO_ID_5291685611274675554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SW_YBzVgwjI/AAAAAAAAARM/_BfF_QFjcBg/s1600-h/flip6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 180px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SW_YBzVgwjI/AAAAAAAAARM/_BfF_QFjcBg/s200/flip6.jpg" alt="" id="BLOGGER_PHOTO_ID_5291685612655526450" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-8140027906992918479?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/8140027906992918479/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=8140027906992918479" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/8140027906992918479?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/8140027906992918479?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2009/01/efeito-adesivo-com-flash-cs-3.html" title="Efeito adesivo com Flash CS 3" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/SW_Wt7x194I/AAAAAAAAAQU/sJWj-2xv5VM/s72-c/flash-sticker.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DU8NSXk-eCp7ImA9WxRaEk0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-63470165228532899</id><published>2008-12-13T11:09:00.000-08:00</published><updated>2008-12-13T14:38:18.750-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-13T14:38:18.750-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Um listener para todas instâncias governar.</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SUQ3Y7t_5oI/AAAAAAAAAQE/GMjaPnqpS9g/s1600-h/ring.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 121px;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SUQ3Y7t_5oI/AAAAAAAAAQE/GMjaPnqpS9g/s320/ring.jpg" alt="" id="BLOGGER_PHOTO_ID_5279405564672075394" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&lt;/style&gt;Quando temos diversos elementos , com as mesmas funções podemos aplicar sobre eles um único EventListener ao invés de criar vários.             &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;function AddListenerFunc():void {
&lt;br /&gt;
&lt;br /&gt;for (var i=0; i&amp;lt; maxElements; i++) {
&lt;br /&gt;mcArr[i].buttonMode = true;
&lt;br /&gt;mcArr[i].addEventListener(MouseEvent.CLICK, mcEvent);}
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;function mcEvent(E:MouseEvent):void {
&lt;br /&gt;removeChild(MovieClip(E.currentTarget));
&lt;br /&gt;mcFunc(MovieClip(E.currentTarget));
&lt;br /&gt;}  &lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;No código acima temos a função  &lt;span style="font-weight: bold;"&gt;AddListenerFunc&lt;/span&gt;, que aplica a propriedade &lt;span style="font-weight: bold;"&gt;buttonMode&lt;/span&gt; e o evento de mouse para todas as instâncias contidas dentro do Array &lt;span style="font-weight: bold;"&gt;mcArr&lt;/span&gt;.
&lt;br /&gt;Na função &lt;span style="font-weight: bold;"&gt;mcEvent &lt;/span&gt;podemos identificar qual instância é a responsável por ativar a mesma através de  &lt;span style="font-weight: bold;"&gt;E.currentTarget&lt;/span&gt;.
&lt;br /&gt;Dentro da função temos dois exemplos. Em &lt;span style="font-weight: bold;"&gt;removeChild(MovieClip(E.currentTarget))&lt;/span&gt;, removemos o mc que recebeu o click. Note que &lt;span style="font-weight: bold;"&gt;removeChild &lt;/span&gt;precisa de um MovieClip como parâmetro, e por isso fazemos a conversão de tipos.
&lt;br /&gt;Em &lt;span style="font-weight: bold;"&gt;mcFunc(MovieClip(E.currentTarget))&lt;/span&gt;, chamamos uma função,  passamos o mc que recebeu o click e isso mostra as possibilidades com apenas um listener.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-63470165228532899?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/63470165228532899/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=63470165228532899" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/63470165228532899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/63470165228532899?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/12/um-listener-para-todas-instancias.html" title="Um listener para todas instâncias governar." /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/SUQ3Y7t_5oI/AAAAAAAAAQE/GMjaPnqpS9g/s72-c/ring.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CE8DQnw8eip7ImA9WxRUGEQ.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-2155832334849300504</id><published>2008-11-28T09:18:00.000-08:00</published><updated>2008-11-28T09:21:13.272-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-28T09:21:13.272-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Inverter String com ActionScript 3</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/STAoITxg0MI/AAAAAAAAAMU/vBzpNTVkQPk/s1600-h/reverseString.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 169px; height: 134px;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/STAoITxg0MI/AAAAAAAAAMU/vBzpNTVkQPk/s320/reverseString.jpg" alt="" id="BLOGGER_PHOTO_ID_5273759286862860482" border="0" /&gt;&lt;/a&gt;Inverter uma String ou seja deixar a palavra ao contrário não leva mais que uma linha usando ActionScript 3.0 . Segue o código abaixo:&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;var txt:String = new String(“Flash”);&lt;br /&gt;trace(txt.split("").reverse().join(""));&lt;br /&gt;// output “hsalF”&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;O funcionamento é bem simples. O método &lt;span style="font-weight: bold;"&gt;split()&lt;/span&gt;, converte a seqüência de caracteres em um array, o argumento passado dentro dos parenteses é o delimitador (o que não vai ser convertido como elemento de um array.). Usando “” como argumento cada caractere é colocado em uma posição do array ( se nada for passado como parâmetro, a palavra toda se torna o elemento do array).&lt;br /&gt;O método &lt;span style="font-weight: bold;"&gt;reverse()&lt;/span&gt;, inverte a seqüência  e&lt;span style="font-weight: bold;"&gt; join()&lt;/span&gt;, converte novamente para uma String. O argumento passado dentro dos parentes corresponde ao espaçamento entre os caracteres. Usando “”, dizemos que nenhuma separação será necessária. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-2155832334849300504?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/2155832334849300504/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=2155832334849300504" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/2155832334849300504?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/2155832334849300504?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/11/inverter-string-com-actionscript-3.html" title="Inverter String com ActionScript 3" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_sRwSzS2oA2E/STAoITxg0MI/AAAAAAAAAMU/vBzpNTVkQPk/s72-c/reverseString.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU8DRno9cSp7ImA9WxRaEUQ.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-2545689351316620053</id><published>2008-11-17T06:48:00.000-08:00</published><updated>2008-12-13T10:44:37.469-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-13T10:44:37.469-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Converter uma String no nome de uma instância de um objeto com ActionScript 3.0</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/SSGQUgC1Y_I/AAAAAAAAAMM/LoEttx9yBhE/s1600-h/Anything_Machine.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 247px; height: 230px;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/SSGQUgC1Y_I/AAAAAAAAAMM/LoEttx9yBhE/s320/Anything_Machine.jpg" alt="" id="BLOGGER_PHOTO_ID_5269651720873796594" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&lt;/style&gt;Pode ser de grande utilidade converter uma string para o nome de uma instância de um movie clip. Para fazer isso usamos &lt;span style="font-weight: bold;"&gt;[]&lt;/span&gt; “colchetes” que são úteis tanto para indicar posições em um array quanto para fazer associação para o acesso de um objeto.       &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;function myFunc():void {
&lt;br /&gt;for (var i=0; i!=max; i++) {
&lt;br /&gt;myArr[i]=this["movieClip"+i];
&lt;br /&gt;myArr[i].buttonMode = true;
&lt;br /&gt;myArr[i].addEventListener(MouseEvent.CLICK, mcEvent);
&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;O código acima faz essa conversão. A string movieClip é transformada no nome da instância de um movie clip presente no stage (neste caso o nome da instância seria movieClip0, movieClip1, etc).
&lt;br /&gt;O array (myArr) vai armazenando todas as instâncias e qualquer propriedade pode ser acessada.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-2545689351316620053?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/2545689351316620053/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=2545689351316620053" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/2545689351316620053?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/2545689351316620053?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/11/converter-uma-string-no-nome-de-uma.html" title="Converter uma String no nome de uma instância de um objeto com ActionScript 3.0" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sRwSzS2oA2E/SSGQUgC1Y_I/AAAAAAAAAMM/LoEttx9yBhE/s72-c/Anything_Machine.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;C0ENQncyeip7ImA9WxRWFks.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-6929578308512238286</id><published>2008-11-02T13:24:00.000-08:00</published><updated>2008-11-02T13:34:53.992-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-02T13:34:53.992-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>XML e ActionScript 3.0</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/SQ4brKj7OOI/AAAAAAAAAME/f4gU-qS9ObY/s1600-h/flash_barXML.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 30px;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/SQ4brKj7OOI/AAAAAAAAAME/f4gU-qS9ObY/s320/flash_barXML.gif" alt="" id="BLOGGER_PHOTO_ID_5264175442826049762" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;&lt;div style="text-align: justify;"&gt;O XML apresenta muitas vantagens para a manipulação e compartilhamento de dados de forma organizada (tanto para humanos quanto para máquinas). &lt;/div&gt;&lt;p class="western" style="margin-bottom: 0cm; text-align: justify;"&gt;É possível trabalhar com esse formato com  ActionScript 3.0 , seja de forma local ou remota. Os arquivos XML são comumente usados como resposta de web Services e por essa razão segue um breve tutorial de como funciona XML + AS 3.0 .&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;var loader:URLLoader = new URLLoader();
&lt;br /&gt;var xml:XML;
&lt;br /&gt;loader.addEventListener(Event.COMPLETE , onLoaded);&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;function onLoaded (E:Event):void {
&lt;br /&gt;xml = XML(E.target.data);
&lt;br /&gt;trace(xml);
&lt;br /&gt;}&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;loader.load(new URLRequest("teste.xml"));   &lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;      &lt;p class="western" style="margin-bottom: 0cm;"&gt;É declarado um objeto da URLLoader que é capaz de carregar texto e até mesmo dados binários.
&lt;br /&gt;Também é declarado um objeto do tipo XML.
&lt;br /&gt;Um listener ( ouvinte ) é adicionado ao loader. Quando o carregamento estiver completo a função onLoaded é chamada.
&lt;br /&gt;O carregamento se dá pelo método load, passando como parâmetro a URLRequest contendo o endereço do XML. Neste caso, o XML é carregado localmente.
&lt;br /&gt;O objeto xml recebe o conteúdo carregado pelo loader. Como xml é do tipo XML, ocorre uma conversão de tipos no momento dessa atribuição.&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Dicas sobre manipulação de XML:&lt;/li&gt;&lt;/ul&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Para obter um ponto (nó) específico do xml em questão basta seguir a hierarquia dos nós usando um ponto.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;trace(xml.tag1.tag2);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Como dito anteriormente é comum ter XMLs como retorno de web services. Neste caso o XML recebido terá algumas tags “lixo” geradas pelos protocolos dos web service. Essas tags podem causar uma “confusão”, sendo assim para referenciar um nó específico deve-se usar:&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;trace(xml..*::tag[0].text());&lt;/blockquote&gt;Abaixo um link de uma aplicação (AS 3.0) consumindo um web service que retorna um XML.
&lt;br /&gt;&lt;a href="http://www.webloot.blogger.com.br/XML-webservice.swf"&gt;link&lt;/a&gt;
&lt;br /&gt;&lt;p&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-6929578308512238286?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/6929578308512238286/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=6929578308512238286" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/6929578308512238286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/6929578308512238286?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/11/xml-e-actionscript-30.html" title="XML e ActionScript 3.0" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_sRwSzS2oA2E/SQ4brKj7OOI/AAAAAAAAAME/f4gU-qS9ObY/s72-c/flash_barXML.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkQFQHYzfip7ImA9WxRSFE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-9176551322735170989</id><published>2008-09-13T13:00:00.000-07:00</published><updated>2008-09-14T09:05:11.886-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-14T09:05:11.886-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Preloader Simples com ActionScript 3.0</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SM0176pCZUI/AAAAAAAAAL8/ajq7cMspRAI/s1600-h/preloadFlash2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SM0176pCZUI/AAAAAAAAAL8/ajq7cMspRAI/s320/preloadFlash2.jpg" alt="" id="BLOGGER_PHOTO_ID_5245908444426429762" border="0" /&gt;&lt;/a&gt;Esse é um &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;preloader&lt;/span&gt; muito simples, não temos nada no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;stage&lt;/span&gt; ou na biblioteca, tudo é criado por código dinamicamente. Este &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;preloader&lt;/span&gt; é leve e para usá-lo basta colar o código abaixo no primeiro &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;frame&lt;/span&gt; ou cena  e colocar o conteúdo a ser carregado no próximo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;frame&lt;/span&gt; ou cena.&lt;br /&gt;O código abaixo gera dois &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;retângulos&lt;/span&gt; ( &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;movie&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;clips&lt;/span&gt;) usando os métodos da classe &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;graphics&lt;/span&gt;.  O rect chamado bar será a barra de carregamento e o rect barMask será a máscara aplicada sobre a bar. O tamanho de barMask é incrementado a medida que ocorre o carregamento.&lt;br /&gt;Caso queria ver um exemplo mais detalhado de preloader com AS 3 &lt;a href="http://web-loot.blogspot.com/2008/06/preloader-com-actionscript-3.html"&gt;click aqui&lt;/a&gt;.&lt;br /&gt;Caso queria ver o resultado do que é gerado pelo código abaixo, &lt;a href="http://www.webloot.blogger.com.br/preloaderSimples.swf"&gt;click aqui.&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;stop();&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;var&lt;/span&gt; bar:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MovieClip&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt;bar.graphics.beginFill(0xCC0000,1);&lt;br /&gt;bar.graphics.drawRect( 0,0,100,10);&lt;br /&gt;bar.x = stage.stageWidth/2-50;&lt;br /&gt;bar.y = stage.stageHeight/2-10;&lt;br /&gt;bar.graphics.endFill();&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;stage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;addChild&lt;/span&gt;(bar);&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;var&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;barMask&lt;/span&gt;:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;MovieClip&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt;barMask.graphics.beginFill(0xFE6FF7,0.9);&lt;br /&gt;barMask.graphics.drawRect( 0,0,100,10);&lt;br /&gt;barMask.x=bar.x;&lt;br /&gt;barMask.y=bar.y;&lt;br /&gt;barMask.graphics.endFill();&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;stage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;addChild&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;barMask&lt;/span&gt;);&lt;br /&gt;bar.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;mask&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;barMask&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;checkingProgress&lt;/span&gt;);&lt;br /&gt;loaderInfo.addEventListener(Event.COMPLETE,progressComplete);&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;function&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;checkingProgress&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;event&lt;/span&gt;:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;ProgressEvent&lt;/span&gt;):&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;void&lt;/span&gt;{&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;var&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;procentLoaded&lt;/span&gt;:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Number&lt;/span&gt; = event.bytesLoaded/event.bytesTotal*100;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;barMask&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;scaleX&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;procentLoaded&lt;/span&gt;/100;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;function&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;progressComplete&lt;/span&gt; (e:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;Event&lt;/span&gt;):&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;void&lt;/span&gt;{&lt;br /&gt;loaderInfo.removeEventListener(ProgressEvent.PROGRESS,&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;checkingProgress&lt;/span&gt;);&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;stage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;removeChild&lt;/span&gt;(bar);&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;stage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;removeChild&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;barMask&lt;/span&gt;);&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;gotoAndPlay&lt;/span&gt;(2);&lt;br /&gt;}&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-9176551322735170989?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/9176551322735170989/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=9176551322735170989" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/9176551322735170989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/9176551322735170989?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/09/preloader-simples-com-actionscript-30.html" title="Preloader Simples com ActionScript 3.0" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/SM0176pCZUI/AAAAAAAAAL8/ajq7cMspRAI/s72-c/preloadFlash2.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;AkMDQXwyfyp7ImA9WxdbFkU.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-3145554228449822060</id><published>2008-08-13T20:01:00.000-07:00</published><updated>2008-08-13T21:34:30.297-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-13T21:34:30.297-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>ActionScript 3 Flash Dicas</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/SKOgyXO5ZVI/AAAAAAAAALk/81L9CstHaws/s1600-h/TheFlash.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/SKOgyXO5ZVI/AAAAAAAAALk/81L9CstHaws/s320/TheFlash.jpg" alt="" id="BLOGGER_PHOTO_ID_5234203979025048914" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;Cinco dicas rápidas para Flash CS 3 e Actionscript 3.    &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;
&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);font-size:130%;" &gt;1&lt;/span&gt;- &lt;span style="font-weight: bold;"&gt;D&lt;/span&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style=""&gt;epth&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: bold;"&gt; control na Display List &lt;/span&gt;
&lt;br /&gt;&lt;/strong&gt;O sistema para controlar a profundidade ( d&lt;strong style="font-weight: normal;"&gt;&lt;span style=""&gt;epth&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;) em ActionScript 3 se baseia na ordem em que os objetos são adicionados ao stage por conta da Display List. Há um maneira de adicionar MovieClips e controlar o nivel de profundidade dos mesmos:&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Exemplo:
&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;addChildAt(myObject,0);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Quanto menor o valor do parâmetro menor o valor, menor a prioridade de sobre posição deste mc sobre os demais  &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;2&lt;/span&gt; - Declarando uma Matriz em AS 3&lt;/span&gt;
&lt;br /&gt;Arrays multidimensionais(matriz) podem ser uteis em diversas aplicações uma maneira fácil de criar um é usando uma estrutura de repetição onde em cada elemento do vetor é instanciado um outro vetor.
&lt;br /&gt;Exemplo:
&lt;br /&gt;&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;var myArray:Array = new Array(myArrayRows);
&lt;br /&gt;for (var i = 0; i &lt; myArrayRows; i++) {
&lt;br /&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 2.3  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;myArray[i] = new Array(myArrayRows);
&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;}&lt;/p&gt;
&lt;br /&gt;myArray = ([
&lt;br /&gt;[1,0,0],
&lt;br /&gt;[0,1,0],
&lt;br /&gt;[0,0,1]
&lt;br /&gt;] );&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;3&lt;/span&gt;- Classe TextField &lt;/span&gt;
&lt;br /&gt;Para um TextField podemos adicionar uma parte texto no final do conteúdo deste Field. Usando o operador += ou o método appendText() que apresenta um desempenho melhor.
&lt;br /&gt;Exemplo:
&lt;br /&gt;&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;var my_tf = new TextField();
&lt;br /&gt;my_tf.text = "web";
&lt;br /&gt;my_tf.appendText("loot!"); &lt;/blockquote&gt; &lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Para o exemplo acima my_tf = 'web loot!' .&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;4&lt;/span&gt;-&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Free Bitmap fonts&lt;/span&gt;
&lt;br /&gt;Bitmap fonts são ótimas para ser usadas em projetos Flash pois apresentam grandes vantagens em relação a definição independente de escala. Baixe algumas grátis em :  &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;http://www.04.jp.org/&lt;/p&gt;      &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;5&lt;/span&gt;- String to Number &lt;/span&gt;
&lt;br /&gt;Para converter uma String em um número podemos usar:
&lt;br /&gt;Number() ,parseInt() e parseFloat().
&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;var myText:String = new String("666lol");
&lt;br /&gt;var myNumber:Number = new Number();&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;myNumber = parseInt(myText);
&lt;br /&gt;trace (myNumber);  //trace 666&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-3145554228449822060?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/3145554228449822060/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=3145554228449822060" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/3145554228449822060?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/3145554228449822060?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/08/actionscript-3-flash-dicas.html" title="ActionScript 3 Flash Dicas" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_sRwSzS2oA2E/SKOgyXO5ZVI/AAAAAAAAALk/81L9CstHaws/s72-c/TheFlash.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUAMQHgyeip7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-5371867178370271727</id><published>2008-06-25T15:17:00.000-07:00</published><updated>2008-12-08T22:23:01.692-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:01.692-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>ActionScript 3.0 Game Development - Tiles</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/SGLJ7Fc2dkI/AAAAAAAAAKs/7hgStE4O9W4/s1600-h/gameFlashTiles.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/SGLJ7Fc2dkI/AAAAAAAAAKs/7hgStE4O9W4/s320/gameFlashTiles.jpg" alt="" id="BLOGGER_PHOTO_ID_5215953335361107522" border="0" /&gt;&lt;/a&gt;Ainda sobre desenvolvimentos de jogos usando AS 3.0 este post é um exemplo de como carregar um cenário com tiles. Esta técnica  é muito usada em games plataforma ou  RPGs com de visão isométrica, onde vários quadrados (tiles) se unem e formam uma imagem. &lt;p class="western" style="margin-bottom: 0cm;"&gt;O lugar e qual peça deve ser encaixada para formar o cenário é representado por uma matriz de coordenadas. Pensando dessa forma uma fase de Super Mario Bros nada mais é que um enorme vetor multidimensional :P    &lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;  &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt; Antes de codificar no flash é preciso um arquivo png com os tiles que formarão seu cenário.  No Google imagens é possível encontrar esses arquivos rapidamente. Para este exemplo vou usar os tiles de um dos games de Zelda (&lt;a href="http://img523.imageshack.us/img523/372/zeldatilexb6.png"&gt;Zelda tileSet&lt;/a&gt;).&lt;br /&gt;Note as dimensões do bloco de tiles: 256 x 2272 pixels. Esse bloco é formado por tiles de 32 x 32 pixels. Sendo assim podemos mapear esta figura como uma matriz de 7 colunas por 70 linhas onde cada elemento é um tile (tendo a primeira coluna como 0 ).&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;O trabalho seria muito grande para montar um cenário escolhendo os tiles e anotando sua respectiva posição para gerar a matriz de referencia da cena. Por esta razão vamos usar um editor de mapas que alem de facilitar as coisas evita alguns erros.  &lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Atualmente estou usando o Mappy que bem simples e gratuito ( &lt;a href="http://www.tilemap.co.uk/"&gt;http://www.tilemap.co.uk/&lt;/a&gt; ).&lt;/p&gt;                        &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;1-&lt;/span&gt; No editor de mapas, click em “new map” e escolha  32 x 32 pixels para o tamanho de cada tile e 3 x 3 para o tamanho do mapa em si .&lt;br /&gt;Após gerar seu mapa click em File&gt;Import e escolha o tileset do zelda e crie seu mapa.&lt;br /&gt;Escolha “Custom&gt;Export Flash ActionScript”, para o valor de ajuste coloque “-1” pois o Mappy cria sempre um tile vazio no tileset.&lt;br /&gt;O arquivo ActionScript gerado é um vetor multidimensional com os números dos tiles usados no mapa.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;2-&lt;/span&gt; No flash crie um novo arquivo para ActionScript 3.0. E vamos aos códigos.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;var loader:Loader;&lt;br /&gt;var screenBitmapData:BitmapData;&lt;br /&gt;var tilesBitmapData:BitmapData;&lt;br /&gt;var screenBitmap:Bitmap;&lt;br /&gt;var mapRows:int=3;&lt;br /&gt;var mapCols:int=3;&lt;br /&gt;var tileSize:int=32;&lt;br /&gt;var mapWidth:int=mapRows*tileSize;&lt;br /&gt;var mapHeight:int=mapCols*tileSize;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;loader = responsável por carregar o tileset do zelda.&lt;br /&gt;tilesBitmapData = armazena o tileset após ser carregado.&lt;br /&gt;screenBitmapData = armazena os tiles montados.&lt;br /&gt;screenBitmap =  armazena os tiles montados para a exibição na tela.&lt;br /&gt;mapRows e  mapCols = tamanho a matriz .&lt;br /&gt;mapWidth e  mapHeight = tamanho do mapa.&lt;/p&gt;           &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;var mapArray:Array = new Array(mapRows);&lt;br /&gt;for (var i = 0; i &amp;lt; mapRows; i++) {&lt;br /&gt;mapArray[i] = new Array(mapRows);&lt;br /&gt;}&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;mapArray = ([&lt;br /&gt;[416,417,418],&lt;br /&gt;[424,425,426],&lt;br /&gt;[432,433,434]&lt;br /&gt;] );&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Declaração de um array de duas dimensões (matriz 3 x 3). E atribuição da matriz gerada pelo Mappy ao vetor multidimensional.&lt;/p&gt;        &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;tiles();&lt;br /&gt;function tiles() {&lt;br /&gt;loader = new Loader();&lt;br /&gt;loader.contentLoaderInfo.addEventListener&lt;br /&gt;(Event.COMPLETE,loadComplete);&lt;br /&gt;loader.load(new URLRequest("zelda_tile.png"));&lt;br /&gt;}&lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Instanciamos o objeto da classe Loader, e adicionamos um Listener que chamará a função loadComplete quando  zelda_tile.png for carregado. O arquivo  zelda_tile.png deve estar mesma pasta que o arquivo swf.&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;function loadComplete(e:Event):void {&lt;br /&gt;tilesBitmapData=Bitmap(loader.content).bitmapData;&lt;br /&gt;copyTiles();&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Como não podemos manipular pixels pelo objeto loader , copiamos o tileset para um objeto da classe BitmapData. (Para passar o  arquivo png para o objeto BitmapData temos que chamar loader.content como Bitmap e usar a propriedade bitmapData)&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;function copyTiles():void {&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt; screenBitmapData=new BitmapData&lt;br /&gt;(mapWidth,mapHeight,false,0x000000);&lt;br /&gt;for (i=0; i &amp;lt; mapRows; i++) {&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;  &lt;/p&gt;                   &lt;p class="western" style="margin-bottom: 0cm;"&gt;for (var j=0; j&amp;lt; mapCols; j++) {&lt;br /&gt;var tileNum:int=int(mapArray[i][j]);&lt;br /&gt;var destY:int=i*tileSize;&lt;br /&gt;var destX:int=j*tileSize;&lt;br /&gt;var sourceX:int=(tileNum % 8)*tileSize;&lt;br /&gt;var sourceY:int=(int(tileNum/8))*tileSize;&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt; screenBitmapData.copyPixels&lt;br /&gt;(tilesBitmapData,newRectangle&lt;br /&gt;(sourceX,sourceY,tileSize,tileSize),&lt;br /&gt;new Point(destX,destY));&lt;br /&gt;}&lt;/p&gt;      &lt;p class="western" style="margin-bottom: 0cm;"&gt; }&lt;br /&gt;screenBitmap=new Bitmap(screenBitmapData);&lt;br /&gt;addChild(screenBitmap);&lt;br /&gt;screenBitmap.x=32;&lt;br /&gt;screenBitmap.y=32;&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;O objeto screenBitmapData é instanciado nas dimensões de 96 x 96 pixels, sem transparência, e com fundo preto.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;O loop for é usado para varrer o vetor e encontrar o número de cada tile e partir desde a referência de como montar o mapa.  &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;destY e  destX = guardam o ponto X e Y de onde um tile deve ser colocado. Por exemplo: O tile [0] [0] terá sua extremidade esquerda colocada nos pontos 0, 0.  &lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;sourceX e sourceY= guardam o ponto X e Y de um tile a ser usado. Exemplo : O elemento [0][0] é o tile número 416. Para X temos (416 mod 8) que é zero multiplicado pelo tamanho do tile. Desta forma encontramos em que coluna está o tile 416. ( O resto da divisão de 416 por 8 é zero) . Em Y temos 1664 (a parte inteira da divisão de 416 por 8 multiplicado pelo tamanho do tile).&lt;br /&gt;Assim o elemento [0][0] é o tile 416 e esta no pixel 0 em X e o pixel 1664 em Y.&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;Os tiles são copiados um a um para o BitmapData passando para método copyPixels a origem e o destino dos pixels.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;No final apenas instaciamos o Bitmap com o BitmapData já pronto e adicionamos no Display list&lt;br /&gt;O resultado dessa experiencia está abaixo:&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;     &lt;/p&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/SGLKiNfnEyI/AAAAAAAAAK0/TS9n5zDTELo/s1600-h/zelda_tile.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/SGLKiNfnEyI/AAAAAAAAAK0/TS9n5zDTELo/s320/zelda_tile.jpg" alt="" id="BLOGGER_PHOTO_ID_5215954007535063842" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-5371867178370271727?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/5371867178370271727/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=5371867178370271727" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5371867178370271727?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5371867178370271727?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/06/var-loaderloader-var.html" title="ActionScript 3.0 Game Development - Tiles" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sRwSzS2oA2E/SGLJ7Fc2dkI/AAAAAAAAAKs/7hgStE4O9W4/s72-c/gameFlashTiles.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;CUAMQHY8cSp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-300748681391337100</id><published>2008-06-16T14:33:00.000-07:00</published><updated>2008-12-08T22:23:01.879-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:01.879-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>ActionScript 3.0 Game Development</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SFbdqztpO7I/AAAAAAAAAJc/2oaMU9WwVrM/s1600-h/gameFlash.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SFbdqztpO7I/AAAAAAAAAJc/2oaMU9WwVrM/s320/gameFlash.jpg" alt="" id="BLOGGER_PHOTO_ID_5212597346233826226" border="0" /&gt;&lt;/a&gt;Neste post algumas experiencias simples para o desenvolvimento de games com AS 3. Abra um novo arquivo no flash para AS 3.0 , insira duas camadas , chame uma de actions (todos os códigos nesta camada) e a bloqueie.&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Segue o código:&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;var ball:Ball = new Ball();&lt;br /&gt;ball.x = stage.stageWidth/2;&lt;br /&gt;ball.y = stage.stageHeight/2;&lt;br /&gt;addChild(ball)&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;var wall:Wall = new Wall();&lt;br /&gt;wall.x=50;&lt;br /&gt;wall.y=100;&lt;br /&gt;addChild(wall);&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;A primeira coisa a fazer é criar um Movie Clip que será manipulado por ações realizadas no teclado. Em um game, este seria o personagem controlado pelo jogador. Ao criar este Movie Clip, marque a opção “export for actionScript” desta forma podemos chamar o mc direto da biblioteca. Neste caso o objeto é ball da classe Ball. Após a declaração, atribuímos valor para a posição x e y  e adicionamos no stage.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;No meu caso também criei um outro Movie Clip (wall) para testar algumas colisões. &lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;  &lt;/p&gt;       &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;var forca:Number = new Number(0.1)&lt;br /&gt;var velocidadeX:Number = new Number(0);&lt;br /&gt;var velocidadeY:Number = new Number(0);&lt;br /&gt;var atrito:Number = new Number(0.92);&lt;br /&gt;var gravidade:Number = new Number (0.2);&lt;br /&gt;var empuxo:Number = new Number(0.5);&lt;br /&gt;var vento:Number = new Number (0.2);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Agora temos algumas declarações que serão necessárias para simular as forças q atuam sobre o personagem. Resumidamente força (ganho de desolamento), VelocidadeX (velocidade no eixo X), VelocidadeY (velocidade no eixo Y) , atrito (força que vai se opor ao movimento), gravidade (força que vai tender o deslocamento para baixo),  empuxo (força resistiva que vai tornar o movimento para cima mais pesado ou mais leve) e vento (força que inicia o movimento para um lado).&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;stage.addEventListener(Event.ENTER_FRAME, starts);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;Ao adicionar o event listener enter frame no stage, a função starts será chamada sempre que se passar pelo frame. No código em questão criamos uma especie de loop.&lt;br /&gt;Todo o restante do código se resume a função starts que podemos dividir em quatro blocos:&lt;/p&gt;           &lt;p class="western" style="margin-bottom: 0cm;"&gt; &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;function starts (event:Event):void{&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;//-----------Mudança de Escala pela altura------&lt;br /&gt;ball.scaleX=((ball.y*0.5)/stage.stageWidth)+0.5;&lt;br /&gt;ball.scaleY=((ball.y*0.5)/stage.stageWidth)+0.5; &lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt; &lt;/p&gt;                &lt;p class="western" style="margin-bottom: 0cm;"&gt;// ----------------- Colisão----------------------&lt;br /&gt;if(ball.hitTestObject(wall)){&lt;br /&gt;velocidadeX=0;&lt;br /&gt;velocidadeX += 5;&lt;br /&gt;}&lt;br /&gt;if(ball.x&gt;530){&lt;br /&gt;velocidadeX=0;&lt;br /&gt;velocidadeX -= 5;&lt;br /&gt;}&lt;br /&gt;if(ball.x&lt;0){&lt;br /&gt;velocidadex=0;&lt;br /&gt;velocidadeX += 5;&lt;br /&gt;}&lt;br /&gt;if(ball.y&gt;335){&lt;br /&gt;velocidadeY=0;&lt;br /&gt;velocidadeY -= 9;&lt;br /&gt;}&lt;br /&gt;if(ball.y&lt;0){&lt;br /&gt;velocidadey=0;&lt;br /&gt;velocidadey+=1;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;// -----------------Rotina do Teclado----------------&lt;br /&gt;stage.addEventListener(KeyboardEvent.KEY_DOWN,&lt;br /&gt;keyHandler);&lt;br /&gt;function keyHandler (e:KeyboardEvent):void{&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;  // 37 = LEFT&lt;br /&gt;if (e.keyCode==37){&lt;br /&gt;velocidadeX -= forca;&lt;br /&gt;}&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;  //38 = UP&lt;br /&gt;if (e.keyCode==38){&lt;br /&gt;velocidadeY -= forca*empuxo;&lt;br /&gt;}&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;  //39 = RIGHT&lt;br /&gt;if (e.keyCode==39){&lt;br /&gt;velocidadeX += forca;&lt;br /&gt;}&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;  //40 = DOWN&lt;br /&gt;if (e.keyCode==40){&lt;br /&gt;velocidadeY += forca*empuxo;&lt;br /&gt;}&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;  &lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt; }&lt;br /&gt;//------Ação de forças-----------&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt; velocidadeX += vento;&lt;br /&gt;velocidadeX *= atrito;&lt;br /&gt;velocidadeY += gravidade;&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt; ball.x += velocidadeX;&lt;br /&gt;ball.y += velocidadeY;&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Mudança de Escala pela altura:&lt;/span&gt; Nesta parte o tamanho da bola é alterado conforme a altura pelo método scaleX. A equação para alterar as dimensões da bola foram obtidas a partir de uma regra de três simples (no pixel 400 o tamanho de ball é 1, no  pixel  0 o tamanho é 0.5 )&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Colisão:&lt;/span&gt; A colisão no flash pode ser feita de várias formas, sendo que existem classes prontas com efeitos de colisão bem realistas. Implementei dois tipos de colisão. A primeira usando  hitTestObject que verifica a colisão entre dois objetos e retorna True ou false. Pela posição do meu objeto (wall) quando há uma colisão a velocidade no eixo X da bola passa a ser zero e em seqüência recebe um valor contrário ao movimento.&lt;br /&gt;O segundo tipo de colisão ocorre nas bordas do stage onde não é possível usar o  hitTestObject (a não ser que haja um mc para a borda).&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Rotina do Teclado:&lt;/span&gt; Um listener é adicionado para o caso de uma tecla for pressionada. Todo o teclado é mapeado numericamente , e os códigos correspondentes para as direcionais são checados na função do listener. No help do flash estão os códigos das demais teclas.  &lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Quando a tecla LEFT é pressionada por exemplo a velocidade no eixo X recebe o valor dado para força. Fácil notar que quanto maior a força, maior será o deslocamento para cada vez q se pressiona o botão. No caso da tecla UP , vemos que a velocidade no eixo Y recebe o valor da força multiplicado pelo empuxo, o que torna o movimento de subida mais pesado (lembre-se multiplicar por 0.5 é o mesmo que dividir por 2).&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Ação das forças:&lt;/span&gt; Neste bloco a velocidade do eixo  X e Y recebe a ação do vento (que vai somar valores a X constantemente), a ação do atrito (que vai diminuir o movimento , semelhante ao empuxo) e a gravidade ( que inicia o movimento no eixo Y para baixo) e após isso modifica a posição de ball.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Veja meu experimento funcionando. Note a ação do vento e gravidade sobre a bola. E ainda a colisão entre objetos e nas margens do stage (obs: ocorrem alguns bugs devido a maneira como o arquivo foi upado. ^^)&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;a href="http://www.webloot.blogger.com.br/keyListener_hitTest_preloadY.swf"&gt;&lt;span style="font-size:130%;"&gt;Exemplo&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;   &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-300748681391337100?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/300748681391337100/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=300748681391337100" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/300748681391337100?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/300748681391337100?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/06/actionscript-30-game-development.html" title="ActionScript 3.0 Game Development" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/SFbdqztpO7I/AAAAAAAAAJc/2oaMU9WwVrM/s72-c/gameFlash.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUAMQ38yeSp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-5191258364629039844</id><published>2008-06-14T13:34:00.000-07:00</published><updated>2008-12-08T22:23:02.191-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:02.191-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Preloader Com ActionScript 3</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SFQ-a7TAzEI/AAAAAAAAAJQ/c132hoWk9gM/s1600-h/preloadFlash.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SFQ-a7TAzEI/AAAAAAAAAJQ/c132hoWk9gM/s320/preloadFlash.jpg" alt="" id="BLOGGER_PHOTO_ID_5211859301089463362" border="0" /&gt;&lt;/a&gt;Este é um simples preloader para carregar um dado conteúdo. Utilizei um movie clip com uma simples animação e uma máscara que vai revelando o mc conforme o arquivo é carregado. Com essa idéia (máscara + movie clip) é possivel criar preloaders interessantes.&lt;br /&gt;&lt;br /&gt;Veja  um exemplo : &lt;a href="http://www.webloot.blogger.com.br/preloader.swf"&gt;Preloader AS 3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1-Crie um novo documento e adicione duas camadas (actions e objetos). Adicione dois frames.&lt;br /&gt;2-Crie um movie clip para ser sua barra animada e marque a opção export for actionScript como na figura abaixo:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SFQ986fbdmI/AAAAAAAAAJI/suKGuNuy53g/s1600-h/flash-preloader1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SFQ986fbdmI/AAAAAAAAAJI/suKGuNuy53g/s200/flash-preloader1.gif" alt="" id="BLOGGER_PHOTO_ID_5211858785477031522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3-Crie um retangulo para a máscara  a ser aplicada  sobre o movie clip. Faça da mesma forma que no passo anterior, selecione a opção export for actionScript e preencha o campo Class com "Mascara".&lt;br /&gt;4-No primeiro frame adicione o código.&lt;br /&gt;&lt;br /&gt;A idéia é a seguinte: Como no primeiro frame temos um stop, a execução do filme ficará limitada ao frame 1, só sendo liberada quando o carregamento for completo. Note que após o carregamento podemos mandar executar tanto o frame seguinte ou uma outra cena.&lt;br /&gt;Segue o código:&lt;br /&gt;&lt;blockquote&gt;stop();&lt;br /&gt;var bar :BarraListras = new BarraListras();&lt;br /&gt;bar.x = ((stage.stageWidth/2) - bar.width/2);&lt;br /&gt;bar.y = ((stage.stageHeight/2) - bar.height/2);&lt;br /&gt;stage.addChild(bar);&lt;/blockquote&gt;Declaração da barra animada e seu posicionamento no meio do stage.&lt;br /&gt;&lt;blockquote&gt;var maskX :Number = new Number(bar.x);&lt;br /&gt;var maskY :Number = new Number(bar.y-4);&lt;br /&gt;var mascara : Mascara = new Mascara();&lt;br /&gt;mascara.x = maskX;&lt;br /&gt;mascara.y = maskY;&lt;br /&gt;addChild(mascara);&lt;br /&gt;bar.mask = mascara;&lt;/blockquote&gt;Posicionamento da mascara pelo valor de mask. Declaração da mascara e  sua aplicação da sobre a barra.&lt;br /&gt;&lt;blockquote&gt;this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,&lt;br /&gt;checkingProgress);&lt;br /&gt;loaderInfo.addEventListener(Event.COMPLETE,progressComplete);&lt;/blockquote&gt;Listeners que verificam o carregamento e quando o evento está completo.&lt;br /&gt;&lt;blockquote&gt;function checkingProgress(event:ProgressEvent):void{&lt;br /&gt; var procentLoaded:Number = event.bytesLoaded/event.bytesTotal*100;&lt;br /&gt; mascara.scaleX = procentLoaded/100;&lt;br /&gt;}&lt;br /&gt;function progressComplete (e:Event):void{&lt;br /&gt; loaderInfo.removeEventListener(ProgressEvent.PROGRESS,&lt;br /&gt;checkingProgress);&lt;br /&gt; stage.removeChild(bar);&lt;br /&gt; gotoAndPlay(2);&lt;br /&gt;}&lt;/blockquote&gt;Funções dos listeners. Na função progressComplete podemos substiuir o método &lt;span style="font-style: italic;"&gt;gotoAndPlay(2)&lt;/span&gt; por &lt;span style="font-style: italic;"&gt;this.nextScene( )&lt;/span&gt; , se for o caso de um preloader entre duas cenas.&lt;br /&gt;&lt;br /&gt;No segundo frame adcione um &lt;span style="font-style: italic;"&gt;stop()&lt;/span&gt; e o conteúdo que deseja carregar(no meu caso coloquei uma imagem). Para testar exporte o swf, na barra de menus view&gt;simulate download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-5191258364629039844?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/5191258364629039844/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=5191258364629039844" title="12 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5191258364629039844?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5191258364629039844?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/06/preloader-com-actionscript-3.html" title="Preloader Com ActionScript 3" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/SFQ-a7TAzEI/AAAAAAAAAJQ/c132hoWk9gM/s72-c/preloadFlash.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total></entry><entry gd:etag="W/&quot;CUAMQ3w9fCp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-7811863740772583315</id><published>2008-05-31T13:51:00.000-07:00</published><updated>2008-12-08T22:23:02.264-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:02.264-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Drag Drop e Mouse Draw</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/SEG_oLvMaEI/AAAAAAAAAJA/ulMcV42sV-k/s1600-h/flash_bar.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/SEG_oLvMaEI/AAAAAAAAAJA/ulMcV42sV-k/s320/flash_bar.jpg" alt="" id="BLOGGER_PHOTO_ID_5206653341283412034" border="0" /&gt;&lt;/a&gt;Criei um exemplo simples de Drag Drop e Mouse Draw usando AS 3.0  .  Para tornar o exemplo mais divertido usei a foto de um amigo  (devidamente autorizada :P).  Abaixo dois links, o primeiro para testar o resultado e o segundo o código fonte (FLA)  com comentários.&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webloot.blogger.com.br/Draw_1.swf"&gt;&lt;span style="text-decoration: underline;"&gt;Testar DragDrop MouseDraw&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.filefactory.com/file/8fd5dd"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-7811863740772583315?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/7811863740772583315/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=7811863740772583315" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/7811863740772583315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/7811863740772583315?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/05/drag-drop-e-mouse-draw.html" title="Drag Drop e Mouse Draw" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_sRwSzS2oA2E/SEG_oLvMaEI/AAAAAAAAAJA/ulMcV42sV-k/s72-c/flash_bar.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CUAMQ3g6fCp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-4361947355526005570</id><published>2008-05-28T20:33:00.000-07:00</published><updated>2008-12-08T22:23:02.614-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:02.614-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Carregar e controlar som com AS 3.0</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/SD4mZGo6zXI/AAAAAAAAAI4/e8GG_QbwKmQ/s1600-h/flash_bar2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/SD4mZGo6zXI/AAAAAAAAAI4/e8GG_QbwKmQ/s320/flash_bar2.jpg" alt="" id="BLOGGER_PHOTO_ID_5205640432007695730" border="0" /&gt;&lt;/a&gt;Com AS 3.0 é muito simples manipular arquivos de áudio no Flash (MP3 no windows). Resumidamente as classes com métodos e objetos para se trabalhar com som estão no pacote &lt;span style="font-weight: bold;"&gt;flash.media&lt;/span&gt;:  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;flash.media.Sound&lt;/span&gt; : Responsável por carregar arquivos de som e propriedades báscias.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Flash.media.SoundChannel&lt;/span&gt;: Ao reproduzir um objeto do tipo Sound , é criado um objeto SoundChannel. Sua função está no controle da reprodução, como por exemplo manter um dado  volume. Cada objeto Sound tem seu próprio SoundChannel.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Flash.media.SoundTransform&lt;/span&gt;: Contem valores de certas propriedades do som e é aplicado sobre um objeto SoundChannel.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Abaixo um Script que explora funções básicas de controle de som no Flash.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Em um documento AS 3.0 , Crie duas camadas, chame uma de Actions e a bloqueie. Na outra camada crie quatro botões que serão reponsaveis pelo controle do som. Instancie como play_btn, stop_btn , menos_btn e mais_btn (Para instanciar simbolo que esta no palco, basta selecionar o simbolo e na aba “propriedades” existe uma caixa de texto chamda Instance Name ).&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Pressione F9 e vamos ao código:&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;import flash.events.Event;&lt;br /&gt;import flash.media.Sound;&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;var sound:Sound = new Sound();&lt;br /&gt;var soundControl:SoundChannel = new SoundChannel();&lt;br /&gt;var volumeControl:SoundTransform = new SoundTransform();&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Nesse ponto é criado um objeto tipo Sound , um SoundChannel e um SoundTransform. O objeto sound irá conter o som em si, e os outros dois serão para controle e alteração de propriedades do som.&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;sound.addEventListener(Event.COMPLETE, onLoadComplete);&lt;br /&gt;sound.addEventListener(IOErrorEvent.IO_ERROR, onIOError);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Esses listeners estão a espera do carregamento do som ou algum erro no processo.&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;var req:URLRequest = new URLRequest("musica.mp3");&lt;br /&gt;sound.load(req);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;O arquivo música.mp3 é a requisição passada como parâmetro para o método load do objeto do tipo Sound.&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;mais_btn.addEventListener(MouseEvent.CLICK, increaseVolume);&lt;br /&gt;mais_btn.buttonMode = true; //ativa cursor em caso de MC&lt;br /&gt;menos_btn.addEventListener(MouseEvent.CLICK, decreaseVolume);&lt;br /&gt;menos_btn.buttonMode = true;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Listeners para os botões de aumentar e diminuir o volume. Sendo eventos de mouse  ao clicar.&lt;/p&gt;            &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;function onLoadComplete(event:Event):void&lt;br /&gt;{&lt;br /&gt;play_btn.addEventListener(MouseEvent.CLICK, playSound);&lt;br /&gt;}&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;function playSound(event:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;soundControl = sound.play();&lt;br /&gt;play_btn.removeEventListener(MouseEvent.CLICK, playSound);&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Ao carregar o som o evento OnLoad é disparado e então um listener é ativado sobre o botão play. A função do botão play é reproduzir o o som, alterando o objeto soundControl. Em seqüência o listener é removido para evitar sobreposição do som.&lt;/p&gt;          &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;function increaseVolume(event:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;volumeControl.volume += 0.5;&lt;br /&gt;soundControl.soundTransform = volumeControl;&lt;br /&gt;}&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;function decreaseVolume(event:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;volumeControl.volume -= 0.5;&lt;br /&gt;soundControl.soundTransform = volumeControl;&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Essas funções são disparadas pelos eventos de click sobre os botões de volume. O objeto soundControl recebe alterações que são feitas o soundTransform .&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;function onIOError(event:IOErrorEvent)&lt;br /&gt;{&lt;br /&gt;trace("The sound could not be loaded: " + event.text);&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;Função ouvinte para possíveis erros.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Baseado nisso , é bem simples implementar um controle de stop. Basta criar um outro listener e uma função alterando o objeto soundControl com sound.stop().&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-4361947355526005570?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/4361947355526005570/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=4361947355526005570" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/4361947355526005570?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/4361947355526005570?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/05/carregar-e-controlar-som-com-as-30.html" title="Carregar e controlar som com AS 3.0" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sRwSzS2oA2E/SD4mZGo6zXI/AAAAAAAAAI4/e8GG_QbwKmQ/s72-c/flash_bar2.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CUAMQ3k4fip7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-5574691870801725281</id><published>2008-05-13T21:16:00.000-07:00</published><updated>2008-12-08T22:23:02.736-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:02.736-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Rails 2.0 e Oracle XE</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/SCpo5kIMHWI/AAAAAAAAAIw/8Wq3-3bG_-4/s1600-h/rails_oracle.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/SCpo5kIMHWI/AAAAAAAAAIw/8Wq3-3bG_-4/s320/rails_oracle.jpg" alt="" id="BLOGGER_PHOTO_ID_5200084057912515938" border="0" /&gt;&lt;/a&gt;     &lt;p class="western" style="margin-bottom: 0cm; font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Nesse  tutorial o primeiro passo de todo trabalho: Criar uma conexão Rails 2.0 + Oracle XE. O texto abaixo é uma adaptação de vários tutoriais sobre o assunto ou seja a maneira que funcionou no meu sistema.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm; font-weight: bold;"&gt;&lt;br /&gt;Parte 1:&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;O primeiro passo é baixar o &lt;a href="http://www.oracle.com/technology/software/products/database/xe/index.html"&gt;Oracle DataBase XE&lt;/a&gt; .&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Após a instalação, acesse o endereço &lt;a href="http://127.0.0.1:8080/apex"&gt;http://127.0.0.1:8080/apex&lt;/a&gt; crie um usuário ruby com privilégios de DBA.&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Você pode usar o SQL*Plus que acompanha a instalação do Oracle ou mesmo criar pelo modo gráfico via navegador.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;No SQL*Plus:&lt;/p&gt; &lt;p class="western"&gt;&lt;/p&gt;&lt;blockquote&gt;SQL&gt; GRANT dba TO ruby IDENTIFIED BY ruby;&lt;br /&gt;SQL&gt; ALTER USER ruby DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;&lt;br /&gt;SQL&gt; EXIT&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;Parte 2:&lt;/span&gt;&lt;br /&gt;Vá em &lt;span style="color: rgb(255, 0, 0);"&gt;http://rubyinstaller.rubyforge.org/&lt;/span&gt; e baixe o One-Click Ruby Installer.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Após a instalação execute RubyGems Pakage Manager e instale o Rails com o comando abaixo.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;C:\&gt; gem install rails –remote&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;A versão mais atual do Rails será instalada. É possível usar gem install rails -v 1.0.0 –remote para escolher a versão.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Agora baixe a biblioteca para a comunicação entre Oracle e Rails em  &lt;span style="color: rgb(255, 0, 0);"&gt;http://rubyforge.org/projects/ruby-oci8&lt;/span&gt; e instale usando o comando:&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;C:\&gt; ruby ruby-oci8-0.1.13-mswin.rb&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Note que o nome do arquivo vai depender da versão que você estiver usando!&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Você irá precisar do adaptador Oracle que não está incluso no Rails 2.0 . Pegue o seu &lt;a href="http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/"&gt;aqui&lt;/a&gt;! &lt;/p&gt;Coloque o arquivo oracle_adpter.rb na pasta:&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[sua instalação do ruby]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/active_record/connection_adapters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Parte 3:&lt;/span&gt;&lt;br /&gt;Crie uma aplicação rails.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;C:\&gt; rails products_catalog&lt;/blockquote&gt;Configure o arquivo &lt;span style="color: rgb(255, 0, 0);"&gt;database.yml&lt;/span&gt; da sua nova aplicação da seguinte forma:&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; development:&lt;br /&gt;adapter: oracle&lt;br /&gt;database: Endereço do Host:Porta/TNS&lt;br /&gt;username: ruby&lt;br /&gt;password: ruby &lt;/blockquote&gt;No campo database eu preenchi com 127.0.0.1:1521/XE , que é o endereço do host, a porta e o nome. Acredito que funcione assim por default, mas você pode checar isso no arquivo &lt;span style="color: rgb(255, 0, 0);"&gt;TNSNAMES.ora&lt;/span&gt; em: &lt;span style="color: rgb(255, 0, 0);"&gt;C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parte 4:&lt;/span&gt;&lt;br /&gt;Gere uma scafolld, se tudo estiver correto você não terá problemas com isso.&lt;br /&gt;&lt;blockquote&gt;C:\products_catalog&gt; ruby script/generate scaffold product &lt;span style="font-family:courier new;"&gt;name:string description:text&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;No rails 2.0 esse commando irá criar os arquivos da aplicação bem como a migration para o banco. Sendo assim use o comando Rake para criar a tabela no banco.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;C:\products_catalog&gt; rake db:migrate&lt;br /&gt;C:\products_catalog&gt; ruby script/server&lt;/blockquote&gt;No navegador : &lt;a href="http://localhost:3000/products"&gt;http://localhost:3000/products&lt;/a&gt;&lt;a href="http://localhost:3000/products"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-5574691870801725281?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/5574691870801725281/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=5574691870801725281" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5574691870801725281?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5574691870801725281?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/05/rails-20-e-oracle-xe.html" title="Rails 2.0 e Oracle XE" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sRwSzS2oA2E/SCpo5kIMHWI/AAAAAAAAAIw/8Wq3-3bG_-4/s72-c/rails_oracle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;CUAMQ3Y5cSp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-6549955160209536080</id><published>2008-05-09T18:15:00.000-07:00</published><updated>2008-12-08T22:23:02.829-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:02.829-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Carregar arquivos JPG, GIF, PNG ou SWF</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/SCT-ovtw3eI/AAAAAAAAAIo/bJLI2KilI7w/s1600-h/flash-blocos.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/SCT-ovtw3eI/AAAAAAAAAIo/bJLI2KilI7w/s320/flash-blocos.jpg" alt="" id="BLOGGER_PHOTO_ID_5198559845849030114" border="0" /&gt;&lt;/a&gt;Veja como é fácil carregar arquivos de imagem ou SWF externos ao flash. No código abaixo o logo do Google é carregado em uma área do palco ao pressionar o botão.&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Antes de seguir por este tutorial veja como funciona o EventListener no caso dos botões. &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;No palco principal crie um movie clip e instancie de botao_btn. Em uma camada actions adicione o código:&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;import flash.display.*;&lt;br /&gt;import flash.net.URLRequest;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;botao_btn.addEventListener (MouseEvent.CLICK, aoClicar)&lt;br /&gt;botao_btn.buttonMode = true; //ativa cursor sobre o movieClipe&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Adicionando listener no botao_btn&lt;/p&gt;     &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;var area:Shape = new Shape();&lt;br /&gt;area.graphics.beginFill(0xFFFFFF);&lt;br /&gt;area.graphics.drawRect(10, 15, 290, 150);&lt;br /&gt;addChild(area); //adiciona o rect no palco.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;O objeto area do tipo shape é um retângulo criado dinamicamente, este será a máscara ou área de exibição da imagem. Se uma imagem for maior que as medidas em pixels do método drawRect parte dela não será exibida.     &lt;/p&gt;      &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;// cria o carregador para receber a figura&lt;br /&gt;var carregador:Loader = new Loader();&lt;br /&gt;carregador.x = 10;&lt;br /&gt;carregador.y = 15;&lt;br /&gt;carregador.mask = area; // aplica máscara retângulo sobre o carregador&lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;Neste ponto é criado o carregador ou contêiner. Ele ira armazenar a imagem no palco. Como mencionado acima, o carregador está limitado as dimensões da máscara area.&lt;br /&gt;Note que o carregador está posicionado em X =10 e Y =15 no palco ou seja as mesma coordenada de onde começa a máscara area.&lt;/p&gt;    &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;//caminha de onde será chamada a imagem&lt;br /&gt;var url:String = "http://www.google.com.br/intl/pt-BR_br/images/logo.gif";&lt;br /&gt;var urlReq:URLRequest = new URLRequest(url);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Este é apenas o caminho de onde a imagem deve vir. Note que foi criada um objeto do tipo URLRequest e ele foi instanciada com a string url. Este parâmetro poderia variar por exemplo em uma página com múltiplos botões para imagens diferentes, passando strings diferentes para instanciar o URLRequest.    &lt;/p&gt;       &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;//função ouvinte do botão&lt;br /&gt;function aoClicar (e:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;carregador.load(urlReq); // carrega imagem da url com o metodo load&lt;br /&gt;addChild(carregador);&lt;br /&gt;}&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Veja o &lt;a href="http://www.ribossomos.blogger.com.br/loadImg.swf"&gt;resultado&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-6549955160209536080?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/6549955160209536080/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=6549955160209536080" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/6549955160209536080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/6549955160209536080?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/05/carregar-arquivos-jpg-gif-png-ou-swf.html" title="Carregar arquivos JPG, GIF, PNG ou SWF" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/SCT-ovtw3eI/AAAAAAAAAIo/bJLI2KilI7w/s72-c/flash-blocos.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CUAMQn8-fip7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-274201400628898625</id><published>2008-05-06T20:41:00.000-07:00</published><updated>2008-12-08T22:23:03.156-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:03.156-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Event Listener em AS 3.0</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SCEwLNFyRvI/AAAAAAAAAIg/oMUtWJCH3EQ/s1600-h/flash_bar.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SCEwLNFyRvI/AAAAAAAAAIg/oMUtWJCH3EQ/s320/flash_bar.jpg" alt="" id="BLOGGER_PHOTO_ID_5197488414012884722" border="0" /&gt;&lt;/a&gt;Algumas pessoas me perguntaram essa semana como fazer botões no Flash CS. O ActionScript 3.0 possui algumas diferenças das suas versões anteriores, e talvez a maior delas é que não mais aplicamos código sobre os objetos da cena. &lt;p class="western" style="margin-bottom: 0cm;"&gt;No caso dos botões devemos criar Listeners que ficam responsáveis por vigiar as interrupções do usuário com um click por exemplo.&lt;br /&gt;&lt;br /&gt;Em um novo documento Flash (ActionScript 3.0) Crie dois movie clips. Um deles será seu botão, e outro apenas um MC para reagir ao click do mouse.&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;Instancie um MC de botao e o outro de bola, como mostra a figura abaixo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SCEsDNFyRtI/AAAAAAAAAIQ/nSmi-KOa5kU/s1600-h/botao_flash.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SCEsDNFyRtI/AAAAAAAAAIQ/nSmi-KOa5kU/s200/botao_flash.gif" alt="" id="BLOGGER_PHOTO_ID_5197483878527420114" border="0" /&gt;&lt;/a&gt;Crie uma nova camada, pressione F9 e adicione o código:&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;botao.addEventListener(MouseEvent.CLICK, aoClicar);  &lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;botao.buttonMode = true;  &lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;// declaração de variável&lt;br /&gt;var Original_width:Number = new Number();&lt;br /&gt;var Original_height:Number = new Number();&lt;br /&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;// guarda as dimensões originais do mc bola&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Original_width = bola.width;&lt;br /&gt;Original_height = bola.height;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;function aoClicar(e:MouseEvent):void {&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Original_width = bola.width;&lt;br /&gt;Original_height = bola.height;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt; bola.width = Original_width + 100;&lt;br /&gt;bola.height = Original_height +100;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;Em &lt;span style="color: rgb(204, 0, 0);"&gt;botao.addEventListener(MouseEvent.CLICK, aoClicar)&lt;/span&gt; , adicionamos o ouvinte(Listener) a instancia botao, e passamos um evento de mouse “CLICK” bem como a função que será disparada ao clicar o mouse.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;botao.buttonMode = true. &lt;/span&gt;Nesta linha é habilita a propriedade de botão ao MC e isso muda o cursor do mouse.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;function aoClicar(e:MouseEvent):void{} &lt;/span&gt;Está é a função chamada com o click sobre o Listener. Note que passamos como parâmetro um evento de mouse. Dentro dessa função você pode adicionar qualquer ação para ser disparada pelo seu botão. Neste caso, ocorre o incremento das dimensões do mc instanciado como bola.&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-274201400628898625?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/274201400628898625/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=274201400628898625" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/274201400628898625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/274201400628898625?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/05/event-listener-em-as-30.html" title="Event Listener em AS 3.0" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/SCEwLNFyRvI/AAAAAAAAAIg/oMUtWJCH3EQ/s72-c/flash_bar.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUAMQnY8fSp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-5662997618632839342</id><published>2008-04-18T06:23:00.000-07:00</published><updated>2008-12-08T22:23:03.875-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:03.875-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Instant Rails</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSkTKd06I/AAAAAAAAAII/a_hloV2dotc/s1600-h/ruby_bar.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSkTKd06I/AAAAAAAAAII/a_hloV2dotc/s320/ruby_bar.jpg" alt="" id="BLOGGER_PHOTO_ID_5190700460349969314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Comecei meus estudos em Ruby recentemente e com algum tempo no Google pude encontrar uma série de tutoriais sobre o assunto. Fiquei muito surpreso com esse framework, primeiro pela documentação e depois pelo poder de desenvolvimento.&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Com pouco código pode-se criar aplicações interessantes, organizadas e de fácil manutenção. Para saber mais sobre o Ruby on Rails recomendo o site: &lt;a href="http://www.rubyonrails.pro.br/"&gt;http://www.rubyonrails.pro.br&lt;/a&gt;&lt;br /&gt;Esse tutorial tem como objetivo preparar o ambiente de desenvolvimento Rails e deixa-lo pronto para o seu "Hello world!"&lt;br /&gt;Existem vários editores e IDEs que permitem desenvolver aplicações Rails. Como IDE sugiro o NetBeans 6. Neste tutorial vou usar o Instant Ruby que torna a vida de quem está começando muito mais fácil pois ele inclui MySql, Apache e o editor SciTE. Baixe seu Instant Rails em &lt;a href="http://instantrails.rubyforge.org/wiki/wiki.pl"&gt;http://instantrails.rubyforge.org/wiki/wiki.pl&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Execute o InstantRails.exe você iniciará o servidor Apache e o Mysql. O Instant Rails é baseado no EasyPhp , por isso funciona de maneira semelhante. Você pode visualizar o banco de dados de sua aplicação usando o phpMyAdmin por exemplo(&lt;a href="http://web-loot.blogspot.com/2007/10/easyphp-criando-um-banco-via-phpmyadmin.html"&gt;aprenda a fazer isso aqui&lt;/a&gt;).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSjTKd02I/AAAAAAAAAHo/5SGtpEfudaU/s1600-h/instantRails.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSjTKd02I/AAAAAAAAAHo/5SGtpEfudaU/s320/instantRails.jpg" alt="" id="BLOGGER_PHOTO_ID_5190700443170100066" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Clicando com o botão direito no ícone “I” na barra de tarefas escolha Rails Application&gt;Manage Rails Application.&lt;br /&gt;Nesta janela pode-se criar uma aplicação Rails ou “rodar” uma das Rails applications que estão incluídas como exemplo no pacote Instante Rails.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/SAkSjzKd03I/AAAAAAAAAHw/0I7ckh8Mrtk/s1600-h/instantRails1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/SAkSjzKd03I/AAAAAAAAAHw/0I7ckh8Mrtk/s320/instantRails1.jpg" alt="" id="BLOGGER_PHOTO_ID_5190700451760034674" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;Escolha a opção Create New Rails App. No console digite o comando:&lt;/p&gt;&lt;blockquote&gt;rails projeto -database=mysql&lt;br /&gt;&lt;/blockquote&gt;O Rails então irá gerar todos os arquivos e diretórios necessários para a aplicação. Novamente na janela Rails Application, selecione a aplicação que você acabou de criar e escolha Start with Mongrel.  &lt;p&gt;&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSkTKd05I/AAAAAAAAAIA/i80jXhtL1tk/s1600-h/instantRails3.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSkTKd05I/AAAAAAAAAIA/i80jXhtL1tk/s320/instantRails3.gif" alt="" id="BLOGGER_PHOTO_ID_5190700460349969298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Após receber a mensagem no console, abra seu navegador e digite o endereço : &lt;a href="http://localhost:3000/"&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Se tudo correu bem você deverá ver uma tela de boas vindas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-5662997618632839342?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/5662997618632839342/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=5662997618632839342" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5662997618632839342?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/5662997618632839342?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/04/instant-rails.html" title="Instant Rails" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sRwSzS2oA2E/SAkSkTKd06I/AAAAAAAAAII/a_hloV2dotc/s72-c/ruby_bar.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUAMRXo_fSp7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-765611238072251051</id><published>2008-03-02T09:17:00.000-08:00</published><updated>2008-12-08T22:23:04.445-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:04.445-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActionScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Simulando Fumaça</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8r7e37pjoI/AAAAAAAAAHc/aRklKBFwZD0/s1600-h/logoFlash.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8r7e37pjoI/AAAAAAAAAHc/aRklKBFwZD0/s320/logoFlash.jpg" alt="" id="BLOGGER_PHOTO_ID_5173223629817220738" border="0" /&gt;&lt;/a&gt;Estou trabalhando em uma maquete 3D sobre o tratamento do lixo hospitalar. A idéia é usar o 3DStudio para a construção do cenário e algumas tomadas de câmera para mostrar os detalhes da maquete.&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Usando AS no flash vou representar elementos secundários do cenário. Gerei um código muito simples para simular fumaça o qual explico no tutorial que se segue.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;            &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Em um novo documento adicione duas camadas como à figura abaixo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8r4w37pjlI/AAAAAAAAAHE/l70DMRop6ug/s1600-h/flash-smoke1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8r4w37pjlI/AAAAAAAAAHE/l70DMRop6ug/s320/flash-smoke1.gif" alt="" id="BLOGGER_PHOTO_ID_5173220640519982674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;Na camada objetos, crie um circulo e o transforme &lt;st1:personname productid="em um Movie Clip" st="on"&gt;&lt;st1:personname productid="em um Movie" st="on"&gt;em um Movie&lt;/st1:personname&gt; Clip&lt;/st1:personname&gt;, dê um nome significativo.&lt;br /&gt;Clique duas vezes sobre seu novo Movie Clip para editá-lo.&lt;br /&gt;Uma vez dentro da edição do MC, converta a o circulo para um gráfico. Crie então um Motion Tween nesse gráfico. Sendo o primeiro quadro do “Tween” um circulo pequeno e o ultimo quadro um circulo grande com alfa em 100%.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;No ultimo quadro adicione um Stop(); para que o movimento não fique em loop.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/R8r5NH7pjmI/AAAAAAAAAHM/hePx5p0T2FY/s1600-h/flash-smoke2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/R8r5NH7pjmI/AAAAAAAAAHM/hePx5p0T2FY/s320/flash-smoke2.gif" alt="" id="BLOGGER_PHOTO_ID_5173221125851287138" border="0" /&gt;&lt;/a&gt;  &lt;div style="text-align: justify;"&gt;No palco principal selecione o Movie Clipe , e coloque o nome da instancia dele de lol. Isso pode ser feito na janela de propriedades com o MC estando selecionado.&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/R8r52X7pjnI/AAAAAAAAAHU/bODRHxx42Dg/s1600-h/flash-smoke3.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/R8r52X7pjnI/AAAAAAAAAHU/bODRHxx42Dg/s320/flash-smoke3.gif" alt="" id="BLOGGER_PHOTO_ID_5173221834520890994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;No primeiro quadro da camada actions adicione o código abaixo:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="" lang="EN-US"&gt;i = i + 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;duplicateMovieClip("lol", "lol" + i, i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;setProperty("lol" + i, _x,&lt;span style=""&gt;  &lt;/span&gt;random(5)+150);&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;“i = i + 1;”&lt;/span&gt; &lt;span style=""&gt; &lt;/span&gt;incrementa da variável i.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;“duplicateMovieClip("lol", "lol" + i, i);”&lt;/span&gt; essa função duplica um determinado MC alvo que no nosso caso é a o MC instanciado como “lol”e atribui ao novo MC o nome “lol” concatenado com o valor atual de i.&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;“setProperty("lol" + i, _x,  random(5)+150);” &lt;/span&gt;essa função define um propriedade de um da instancia de um MC alvo. Neste caso a instancia é “lol” e a propriedade é a posição no eixo X que será incrementada com um número aleatório de &lt;st1:metricconverter productid="0 a" st="on"&gt;0 a&lt;/st1:metricconverter&gt; 4 somado com a posição de onde desejo que a fonte de fumaça apareça.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;No segundo frame da camada action adicione:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;blockquote&gt;gotoAndPlay(1);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Pronto, agora é só publicar usando o flash player 6 e ver o resultado.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Veja um exemplo do código funcionando : &lt;a href="http://www.video-game.blogger.com.br/fuma%E7a-flash8.swf"&gt;Link&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-765611238072251051?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/765611238072251051/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=765611238072251051" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/765611238072251051?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/765611238072251051?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/03/simulando-fumaa.html" title="Simulando Fumaça" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8r7e37pjoI/AAAAAAAAAHc/aRklKBFwZD0/s72-c/logoFlash.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CUAMRXk7eip7ImA9WxRbGE0.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-1138279885129103019</id><published>2008-02-24T16:47:00.000-08:00</published><updated>2008-12-08T22:23:04.702-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T22:23:04.702-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Flash" /><title>Drag and Drop Usando OO + AS 2.0</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8Ixdy2RDGI/AAAAAAAAAG4/NU91SRq0n0o/s1600-h/logoFlashAS.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8Ixdy2RDGI/AAAAAAAAAG4/NU91SRq0n0o/s320/logoFlashAS.jpg" alt="" id="BLOGGER_PHOTO_ID_5170749710110100578" border="0" /&gt;&lt;/a&gt;Eu estava fazendo alguns testes com OO e AS 2.0, no meio de tudo fiz uma experiência com um sistema simples de Drag/ Drop usando a idéia de orientação a objetos. Com o resultado disso temos esse tópico. O código não é o ideal, não segui as convenções de nomes para MCs por exemplo. Para fim de estudos acredito que seja útil.  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;A idéia é criar uma classe contendo os métodos para iniciar e parar a propriedade de “arrastamento” de um Movie Clip. A classe Arrastavel fica responsável também por verificar se o Movie Clip está em uma determinada região do cenário.&lt;/p&gt;  &lt;p style="text-align: justify;" class="MsoNormal"&gt;Vamos lá:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;        &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Crie um novo Flash Document.com duas camadas: Actions e símbolos.&lt;br /&gt;Na camada símbolos, desenhe um retângulo, que será sua área onde o Movie Clip deve ser arrastado. Com F8 transforme o retângulo &lt;st1:personname productid="em um Movie Clip" st="on"&gt;em um Movie Clip&lt;/st1:personname&gt; chamado area Na aba properties nomeie a instancia de areaSelect.&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/R8IrJi2RDEI/AAAAAAAAAGo/hUg9lsIRwHs/s1600-h/dragDrop.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/R8IrJi2RDEI/AAAAAAAAAGo/hUg9lsIRwHs/s320/dragDrop.gif" alt="" id="BLOGGER_PHOTO_ID_5170742765147982914" border="0" /&gt;&lt;/a&gt;Ainda na camada símbolos, desenhe um quadrado que será o Movie Clip a ser arrastado. Nomeie esse novo MC e na aba properties chame a instancia por mc66.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Na camada Actions use o todo o código abaixo que está dentro das caixas.&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Toda classe criada precisa de ser importada.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;import Arrastavel.as;&lt;/blockquote&gt; &lt;p&gt;&lt;/p&gt;      &lt;p style="font-style: italic;" class="MsoNormal"&gt;Para acessar as funções da classe Arrastavel um objeto dessa classe é criado. Neste casso passei as dimensões da instancia areaSelect como parâmetros para o contrutor da classe.&lt;br /&gt;A variável valor será apenas para receber o retorno do método release.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;blockquote&gt;var objDrag:Arrastavel = new Arrastavel(areaSelect._x, areaSelect._y, areaSelect._width, areaSelect._&lt;span style="" lang="EN-US"&gt;height);&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;var valor:Boolean = true;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;As funções Starter , Stoper e Releaser são chamadas pelos eventos de mouse. Essas funções apenas repassam o nome do Movie Clip em questão na hora em que o objeto chama o método.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;A linha &lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;"&gt;this.swapDepths(this.getNextHighestDepth());&lt;/span&gt;&lt;span style="font-style: italic;"&gt; apenas assegura que o ultimo MC clicado ficaria por cima dos demais caso houvessem outros.&lt;/span&gt; &lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;function Starter():Void {&lt;span style=""&gt;           &lt;/span&gt;//Start Drag &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                        &lt;/span&gt;Movie = this._name;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                        &lt;/span&gt;objDrag.Start(Movie);&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                        &lt;/span&gt;this.swapDepths(this.getNextHighestDepth());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;function Stoper():Void {&lt;span style=""&gt;  &lt;/span&gt;//Stop Drag&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;Movie = this._name;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;objDrag.OutSide(Movie);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;function Releaser():Void { //Release &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;Movie = this._name;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;/span&gt;            valor = objDrag.Release(Movie, this._x, this._y);&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;/span&gt;            this.enabled = (valor);&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Esses eventos irão chamar as funções.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="" lang="EN-US"&gt;mc66.onRelease = Releaser; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;mc66.onPress = Starter;&lt;br /&gt;mc66.onReleaseOutside = Stoper;&lt;/blockquote&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Brevemente explicando Orientação a Objetos, teremos um arquivo que será a classe Arrastavel , nele teremos os métodos ( funções ) que são acionadas pelos objetos da classe. Do Stage principal do flash usando os objetos certos podemos chamar funções de quaisquer classes existentes. De certa forma o flash já funciona assim, o que vamos fazer é criar uma classe personalizada e acessar suas funções.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="text-align: justify;" class="MsoNormal"&gt;Agora basta escrever o código da classe.&lt;br /&gt;Crie um novo arquivo, mas desta vez um Action Script file e use o todo o código abaixo:&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;Declaração da classe.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;blockquote&gt;class Arrastavel {&lt;/blockquote&gt; &lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;Variáveis para a fronteira da caixa.&lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;private var Area_hitLeft_x;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;private var Area_hitTop_y;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;private var Area_hitRight_x;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;private var Area_hitBottom_y;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;public var conter:Number = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;public var valor1:Boolean = true;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-style: italic;"&gt;Construtor da classe que armazena os limites do retângulo do palco principal&lt;/span&gt;.   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;public function Arrastavel(areaSelectX:Number, areaSelectY:Number, areaSelectW:Number, areaSelectH:Number) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                        &lt;/span&gt;this.Area_hitLeft_x = areaSelectX;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                        &lt;/span&gt;this.Area_hitTop_y = areaSelectY;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                        &lt;/span&gt;this.Area_hitRight_x = areaSelectW+areaSelectX;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                        &lt;/span&gt;this.Area_hitBottom_y = areaSelectH+areaSelectY;}&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;Função que compara a posição do Movie Clip e retorna um valor true ou fase se o MC estiver ou não dentro do retângulo área.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;public function Release(Movie:MovieClip, MovieX:Number, MovieY:Number):Boolean {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                        &lt;/span&gt;stopDrag();&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;if (MovieX &gt; Area_hitLeft_x &amp;amp;&amp;amp; MovieY &gt; Area_hitTop_y &amp;amp;&amp;amp; MovieX &lt;&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                                   &lt;/span&gt;&lt;/span&gt;valor1 = false;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;                                   conter++;&lt;br /&gt;&lt;span style=""&gt;                                  &lt;/span&gt;return valor1;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                        &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;} else {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                                 &lt;/span&gt;valor1 = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                                 &lt;/span&gt;return valor1;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&lt;br /&gt;                   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&lt;/span&gt;//Inicia Drag&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;public function Start(Movie:MovieClip):Void {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                    &lt;/span&gt;startDrag(Movie);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&lt;/span&gt;// Libera do Drag&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;public function OutSide(Movie:MovieClip):Void {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;                        &lt;/span&gt;&lt;/span&gt;stopDrag();&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;}&lt;/p&gt;  &lt;p class="MsoNormal"&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="MsoNormal"&gt; &lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;  &lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;O nome da classe deve iniciar com letra maiúscula, alem disso lembre-se de preencher o cabeçalho de descrição da classe. Por se tratar de um componente personalizado é sempre bom documentar o máximo possível o funcionamento e a utilidade. Não deixe por conta da memória.&lt;/span&gt;&lt;/p&gt;Veja um exemplo funcionando : &lt;a href="http://www.ribossomos.blogger.com.br/drag_drop.swf"&gt;Link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-1138279885129103019?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/1138279885129103019/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=1138279885129103019" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/1138279885129103019?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/1138279885129103019?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2008/02/drag-and-drop-usando-oo-as-20.html" title="Drag and Drop Usando OO + AS 2.0" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/R8Ixdy2RDGI/AAAAAAAAAG4/NU91SRq0n0o/s72-c/logoFlashAS.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DE8ESXk_eip7ImA9WxVaEkU.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-8404031120146581417</id><published>2007-12-16T09:45:00.000-08:00</published><updated>2009-04-09T07:20:08.742-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-09T07:20:08.742-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="Dreamweaver" /><title>Sistema de Login no Dreamweaver 8 (Parte 2)</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sRwSzS2oA2E/R2VpEDrP5VI/AAAAAAAAAGI/8Jp9h_fLJFc/s1600-h/logoDW.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_sRwSzS2oA2E/R2VpEDrP5VI/AAAAAAAAAGI/8Jp9h_fLJFc/s320/logoDW.jpg" alt="" id="BLOGGER_PHOTO_ID_5144633667767756114" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;No PHP existem várias maneiras de passar um parâmetro de uma página a&lt;/span&gt;&lt;span style="font-size:100%;"&gt; outra. Para exibir uma mensagem de boas vindas ( Bem vindo “Sr. Fulano”) após&lt;/span&gt;&lt;span style="font-size:100%;"&gt; realizar o login podemos usar o login que o usuário digitou no text field da página anterior.&lt;/span&gt;&lt;br /&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style=""&gt;Para isso utilizaremos uma variável de sessão.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;- Minha página de sucesso no sistema de login se chama index.php e minha página de login&lt;/span&gt;&lt;span style=""&gt; em si se chama login.php. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Digite o código abaixo no topo da&lt;/span&gt;&lt;span style="font-size:100%;"&gt; página de login.php :&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;      &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;if (!isset($_SESSION)) {&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;session_start();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify; color: rgb(51, 51, 51);" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;// a variável login recebe o valor do campo de texto&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(51, 51, 51);"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; color: rgb(51, 51, 51);" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;$login=$_POST['loginText']; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: rgb(51, 51, 51);"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="color: rgb(51, 51, 51);font-size:100%;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;// a variável de sessão login&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; recebe o valor do text field.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span  lang="EN-US" style="font-size:100%;"&gt;$_SESSION['login']=$login;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span  lang="EN-US" style="font-size:100%;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span  lang="EN-US" style="font-size:100%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;  &lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;- Na página index.php crie um recordset no painel Application aba server behaviors. Preencha&lt;/span&gt;&lt;span style="font-size:100%;"&gt; os campos da janela que irá&lt;/span&gt;&lt;span style="font-size:100%;"&gt; aparecer:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;          &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Name&lt;/span&gt;: escolha um nome significativo.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Connection&lt;/span&gt;: A conexão do seu banco (a mesma do login).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Table&lt;/span&gt;: a tabela onde estão&lt;/span&gt;&lt;span style="font-size:100%;"&gt; login e senha no do banco.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Columns&lt;/span&gt;: Fica a sua escolha.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; No exemplo selecionei todas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Filtro&lt;/span&gt; : No filtro você deve&lt;/span&gt;&lt;span style="font-size:100%;"&gt; fazer com que o select sobre o banco seja apenas da pessoa que está logada no sistema.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Para isso basta apenas filtrar&lt;/span&gt;&lt;span style="font-size:100%;"&gt; para que tabela login seja igual a nossa variável de sessão, que corresponde ao digitado pelo&lt;/span&gt;&lt;span style="font-size:100%;"&gt; usuário.&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2VnyjrP5SI/AAAAAAAAAFw/odm04bSi1n0/s1600-h/LoginDW5.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2VnyjrP5SI/AAAAAAAAAFw/odm04bSi1n0/s320/LoginDW5.gif" alt="" id="BLOGGER_PHOTO_ID_5144632267608417570" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2VoXjrP5TI/AAAAAAAAAF4/nfR3H2J_vT4/s1600-h/LoginDW6.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2VoXjrP5TI/AAAAAAAAAF4/nfR3H2J_vT4/s320/LoginDW6.gif" alt="" id="BLOGGER_PHOTO_ID_5144632903263577394" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;3- Com o recordset criado, basta arrastar a legenda “login” listada no painel Application aba server behaviors para um qualquer lugar da página.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2VojjrP5UI/AAAAAAAAAGA/96xmLHEEVok/s1600-h/LoginDW7.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2VojjrP5UI/AAAAAAAAAGA/96xmLHEEVok/s320/LoginDW7.gif" alt="" id="BLOGGER_PHOTO_ID_5144633109422007618" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;No topo desta pagina acrescente o código:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:14;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:14;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:14;"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style="font-size:100%;"&gt;session_start(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;//verifica se existe a varavel session&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;if(isset($_SESSION['login']))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;// passa o valor da variavel session &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;{$login=$_SESSION['login'];}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;else{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;echo("Não foi atribuído valor para a variável de sessão");}?&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;E isso é tudo. Até a próxima.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;span  lang="EN-US" style="font-size:14;"&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span  lang="EN-US" style="font-size:14;"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span  lang="EN-US" style="font-size:14;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span  lang="EN-US" style="font-size:14;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-8404031120146581417?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/8404031120146581417/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=8404031120146581417" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/8404031120146581417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/8404031120146581417?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2007/12/sistema-de-login-no-dreamweaver-8-parte_16.html" title="Sistema de Login no Dreamweaver 8 (Parte 2)" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sRwSzS2oA2E/R2VpEDrP5VI/AAAAAAAAAGI/8Jp9h_fLJFc/s72-c/logoDW.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DE8GRnw5fip7ImA9WxVaEkU.&quot;"><id>tag:blogger.com,1999:blog-3759895629803445451.post-8314792219182976021</id><published>2007-12-12T17:35:00.000-08:00</published><updated>2009-04-09T07:20:27.226-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-09T07:20:27.226-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="Dreamweaver" /><title>Sistema de Login no Dreamweaver 8 (Parte 1)</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CbmpOwPwI/AAAAAAAAAFo/Pe-kieDwZcU/s1600-h/logoDW.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CbmpOwPwI/AAAAAAAAAFo/Pe-kieDwZcU/s320/logoDW.jpg" alt="" id="BLOGGER_PHOTO_ID_5143281862662176514" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;Com as devidas conexões feitas, fica muito fácil criar&lt;/span&gt;&lt;span style="font-size:100%;"&gt; rapidamente um sistema de login e senha&lt;/span&gt;&lt;span style="font-size:100%;"&gt; seguro com o Dreamweaver e PHP. Para esse tutorial de uma olhada em como conectar o Dreamweaver com o servidor MySQL e o PHP.&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Além disso é preciso ter um banco criado com uma tabela usuários com os atributos login e&lt;/span&gt;&lt;span style="font-size:100%;"&gt; senha.&lt;/span&gt;&lt;/p&gt;  &lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;1-&lt;/span&gt; Em um novo documento PHP crie uma tabela e insira dois &lt;span style="font-weight: bold;"&gt;Text Field&lt;/span&gt;. Insira também um &lt;span style="font-weight: bold;"&gt;Button&lt;/span&gt; que será o&lt;/span&gt;&lt;span style=""&gt; responsável por enviar os dados de nossa página.&lt;span style=""&gt;  &lt;/span&gt;Quando você insere um &lt;span style="font-weight: bold;"&gt;Text field&lt;/span&gt; o Dreamweaver irá perguntar se você deseja criar uma Tag &lt;span style="font-weight: bold;"&gt;form&lt;/span&gt;. Devemos ter todos os elementos ( &lt;span style="font-weight: bold;"&gt;Text fields&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;button&lt;/span&gt;) dentro da tag form para que a página funciona corretamente&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sRwSzS2oA2E/R2CX2ZOwPsI/AAAAAAAAAFI/CSKiiFw5SCc/s1600-h/LoginDW.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sRwSzS2oA2E/R2CX2ZOwPsI/AAAAAAAAAFI/CSKiiFw5SCc/s320/LoginDW.gif" alt="" id="BLOGGER_PHOTO_ID_5143277735198604994" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt; – No painel &lt;span style="font-weight: bold;"&gt;Properties&lt;/span&gt; estão as propriedades de cada&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt; elemento adicionado na página&lt;span style=""&gt;  &lt;/span&gt;(faz sentido né !). Click em um text field e vá à janela&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt; Properties. No campo abaixo da legenda &lt;span style="font-weight: bold;"&gt;Textfield&lt;/span&gt; adicione um&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt; nem ao seu campo de texto (loginText para o campo login e&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt; senhaText para o campo senha) .&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Em Type marque a opção &lt;span style="font-weight: bold;"&gt;Single line&lt;/span&gt; e&lt;span style="font-weight: bold;"&gt; password&lt;/span&gt; no caso do campo de password.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sRwSzS2oA2E/R2CYR5OwPtI/AAAAAAAAAFQ/UVnESlOBdc0/s1600-h/LoginDW2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sRwSzS2oA2E/R2CYR5OwPtI/AAAAAAAAAFQ/UVnESlOBdc0/s320/LoginDW2.gif" alt="" id="BLOGGER_PHOTO_ID_5143278207645007570" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;3&lt;/span&gt;- Após a criação do form , vá até o painel &lt;span style="font-weight: bold;"&gt;Application&lt;/span&gt; na aba &lt;span style="font-weight: bold;"&gt;Server Behaviors&lt;/span&gt; opção &lt;span style="font-weight: bold;"&gt;User Authentication&lt;/span&gt; &gt; &lt;span style="font-weight: bold;"&gt;Log in User&lt;/span&gt; .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CYppOwPuI/AAAAAAAAAFY/f9E5DstyXyI/s1600-h/LoginDW3.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CYppOwPuI/AAAAAAAAAFY/f9E5DstyXyI/s320/LoginDW3.gif" alt="" id="BLOGGER_PHOTO_ID_5143278615666900706" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;4- Entre com os dados na tabela:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Get input from form&lt;/span&gt; : Escolha o formulário criado no passo 1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Username Field&lt;/span&gt; : Coloque o nome do seu Text field que será o login.(loginText)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Password Field&lt;/span&gt; : Coloque o nome do seu Text field que será a senha.(senhaText)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Validade using connection&lt;/span&gt; : Aqui você deve indicar com o que será comparado os dados de entrada. Coloque a conexão do seu banco.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Table&lt;/span&gt;: nome da tabela onde estão os dados para comparação.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Username Column&lt;/span&gt; : Coluna da tabela onde está o login.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;Password Column&lt;/span&gt; : Coluna da tabela onde está a senha..&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;If login succeeds, go to&lt;/span&gt; : indique a pagina que será aberta com o sucesso no login.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-weight: bold;"&gt;If login fails, go to&lt;/span&gt;: indique a pagina que será aberta com a falha no login.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Restrict acceess base on&lt;/span&gt; : você pode restringir o acesso de algumas páginas com o login e senha ou ainda baseado em um nível de acesso. Por hora vamos ficar com acesso restrito por login e senha.&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CaApOwPvI/AAAAAAAAAFg/4oITB4O8P7Y/s1600-h/LoginDW4.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CaApOwPvI/AAAAAAAAAFg/4oITB4O8P7Y/s320/LoginDW4.gif" alt="" id="BLOGGER_PHOTO_ID_5143280110315519730" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:14;"&gt;&lt;span style="font-size:100%;"&gt;Com esses passos o sistema de login já deve funcionar. É preciso criar a página de sucesso e uma de falha. Na segunda parte deste tutorial veja como passar um variável de sessão de uma página a outra.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3759895629803445451-8314792219182976021?l=web-loot.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://web-loot.blogspot.com/feeds/8314792219182976021/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3759895629803445451&amp;postID=8314792219182976021" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/8314792219182976021?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3759895629803445451/posts/default/8314792219182976021?v=2" /><link rel="alternate" type="text/html" href="http://web-loot.blogspot.com/2007/12/sistema-de-login-no-dreamweaver-8-parte.html" title="Sistema de Login no Dreamweaver 8 (Parte 1)" /><author><name>4Ndr3 4nD3r1</name><uri>http://www.blogger.com/profile/03973594006822070257</uri><email>andreanderi@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="04185038250400438430" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sRwSzS2oA2E/R2CbmpOwPwI/AAAAAAAAAFo/Pe-kieDwZcU/s72-c/logoDW.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
