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

<channel>
	<title>MXStudio &#187; leonardofranca</title>
	<atom:link href="http://www.mxstudio.com.br/author/leonardofranca/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mxstudio.com.br</link>
	<description>Macromedia e Adobe - Artigos, colunas, tutorias e muito mais...</description>
	<lastBuildDate>Sun, 29 Jan 2012 11:31:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Adobe Apollo &#8211; A revolução</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/ria/adobe_apollo___a_revolucao/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/ria/adobe_apollo___a_revolucao/#comments</comments>
		<pubDate>Sun, 10 Dec 2006 00:00:00 +0000</pubDate>
		<dc:creator>leonardofranca</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[A Adobe est&#225; preparando uma verdadeira revolu&#231;&#227;o nessa &#225;rea, imagine que est&#225; perto o dia em que voc&#234; n&#227;o precisar&#225; abrir um navegador para acessar um site, ali&#225;s o pr&#243;prio conceito de s]]></description>
			<content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" /><script src="http://www.mxstudio.com.br/js/ColorCode.js"></script><br />
<table border="0" width="100%" cellPadding="0" cellSpacing="0">
<tr>
<td height="41" colSpan="2" vAlign="top" id="colunaTexto">
<h1>Adobe Apollo &#8211; A revolução</h1>
</td>
</tr>
<tr>
<td width="13%" vAlign="top" id="colunaTexto">
<p align="center"><img vAlign="top" width="180" src="http://www.mxstudio.com.br/imagens_artigos/leonardoFranca_dez06_Apollo_imagens/logo.gif" height="&gt;&lt;/div&gt;  &lt;p&gt;&lt;/TD&gt;&lt;br&gt;      &lt;TD width=" id="colunaTexto" />A cada tempo a web vem evoluindo de maneira que os serviços que utilizamos tendem a se tornarem cada vez mais práticos, dando total liberdade para que o usuário possa tornar o aplicativo com sua cara.<br />
A Adobe está preparando uma verdadeira revolução nessa área, imagine que está perto o dia em que você não precisará abrir um navegador para acessar um site, aliás o próprio conceito de site precisará ser revisto, serviços funcionarão tanto offline quanto online, podendo carregar sites ou serviços, misturando o conceito de aplicação desktop com aplicação web.<br />
Apollo é o codinome dessa plataforma que unirá o que temos hoje como aplicações separadas tanto para desktop quanto para web, o objetivo principal é desenvolver aplicativos RIA para desktop.<br />
Os aplicativos podem ser desenvolvidos da seguinte maneira:</td>
</tr>
<tr>
<td colSpan="2" vAlign="top" id="colunaTexto">
<p align="center"><img width="553" src="http://www.mxstudio.com.br/imagens_artigos/leonardoFranca_dez06_Apollo_imagens/arquitetura.gif" alt="Arquitetura do Apollo" height="272" /></p>
<ul>
<li>Usando Flash/Flex/ActionScript</li>
<li>HTML/Java Script/CSS/Ajax</li>
<li>Combinação dessas tecnologias</li>
<li>E você pode tambem usar PDF em seus aplicativos.</li>
</ul>
<p align="center"><img width="550" src="http://www.mxstudio.com.br/imagens_artigos/leonardoFranca_dez06_Apollo_imagens/arquitetura2.gif" alt="Arquitetura do Adobe Apollo" height="352" /></p>
<p>O Apollo possui um player como ocorre com o Flash Player, para rodar uma aplicação feita com Apollo, você precisa ter instalado na sua máquina esse runtime, como por exemplo ocorre com o Adobe Reader ou mesmo o PHP-GTK onde você precisa ter a biblioteca GTK para rodar uma aplicação feita com PHP-GTK ou mesmo com algum programa feito em java, você precisa ter a Java Virtual Machine. Mas por que a Adobe escolheu esse tipo de distribuição? Simples, para evitar que as aplicações feitas com Apollo ganhem em peso, sendo mais facil sua distribuição tanto para Windows, Mac e Linux.</p>
<p>O runtime do Apollo pode ser distribuído de duas maneiras:</p>
<ul>
<li>Junto com a aplicação feita com o Apollo.</li>
<li>Download pelo site da adobe, pela API do Apollo você poderá verificar se o usuário já possui o runtime, caso contrário, a aplicação faz o download no site da Adobe. É como já fazemos com o Flash Player.</li>
</ul>
<p>Algumas funcionalidades da API do Apollo incluem:</p>
<ul>
<li>Aplicativos que rodarão tanto offline quanto online.</li>
<li>Aplicativos que podem rodar como background.</li>
<li>Suporte a HTTP, XML-RCP/SOAP/Web Services.</li>
<li>Suporte a protocolo Binário e XML Sockets.</li>
<li>FILE I/O.</li>
<li>Local storage/Settings API.</li>
<li>Custom Chrome(Shape,alpha), estilos das janelas.</li>
</ul>
<p>As aplicações feitas com Apollo permitem total integração com o ambiente Desktop como:</p>
<ul>
<li>Criação de instaladores</li>
<li>Atalhos</li>
<li>Drag and Drop</li>
<li>Clipboard</li>
<li>Executar aplicativos nativos dos sistemas operacionais.</li>
<li>Cross Application communication</li>
<li>Notificações</li>
</ul>
<p>Apollo também pode suportar algumas linguagens de script:</p>
<ul>
<li>ActionScript 3 &#8211; Flash/Flex</li>
<li>Java Script &#8211; HTML/CSS/AJAX</li>
<li>Acesso completo ao Flash Player, HTML DOMs e APIs.</li>
</ul>
<p>Quanto aos componentes de desenvolvimento:</p>
<ul>
<li>O Apollo Framework é desenvolvido baseado no Flex Framework.</li>
<li>Os componentes do Apollo são os mesmos do Flex, com a diferença que eles possuem acesso a API do Apollo.</li>
<li>Você pode criar HTML/Java Script baseado nos componentes do Apollo.</li>
</ul>
<p>Será disponibilizado uma versão do Flex Builder para o desenvolvimento das aplicações, tendo opção de gerar o pacote de instalação.<br />
O engine HTML do Apollo é o Webkit, o mesmo usado pelo Safari, navegador usado no Mac e para celulares, sendo leve e de código fonte aberto.</p>
<p>Apollo não é uma continuação do Macromedia Central, seu código fonte é totalmente novo, mas o time de desenvolvedores do Apollo aprendeu com as lições do Macromedia Central.<br />
A Adobe aposta tanto no Apollo que irá disponibilizar 100 milhoes de dolares nos proximos 5 anos para icentivar o desenvonvilmento com o Apollo. O beta deve ser disponibilizado no labs da Adobe a partir de janeiro.</p>
<p><strong>Autor: Leonardo França &#8211; Colunista R.I.A do Portal MXSTUDIO<br />
</strong>Manager AUGDF – <a href="http://www.augdf.com.br/">www.augdf.com.br</a><br />
<a href="http://www.leonardofranca.com.br/">http://www.leonardofranca.com.br</a></p>
<p>Qualquer dúvida envie um email para <a target="new" href="maito:leo@osfederais.com">leo@osfederais.com</a> ou acesse o nosso <a target="forum" href="http://www.mxstudio.com.br/forum">fórum</a> e visitem meu <a href="http://www.leonardofranca.com.br">BLOG</a></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/ria/adobe_apollo___a_revolucao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stream de Video com Flash Communication Server/Flash Media Server</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/ria/stream_de_video_com_flash_communication_server_flash_media_server/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/ria/stream_de_video_com_flash_communication_server_flash_media_server/#comments</comments>
		<pubDate>Tue, 04 Jul 2006 00:00:00 +0000</pubDate>
		<dc:creator>leonardofranca</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Como implementar um sistema para stream de video usando o Flash Communication Server/Flash Media Server.]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" /> <script src="http://www.mxstudio.com.br/js/ColorCode.js"></script><br />
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td id="colunaTexto" valign="top">
<h1 align="justify">Stream de Video com  Flash Communication Server/Flash Media Server.</h1>
<h3 align="justify">Introdução</h3>
<p align="justify">Neste artigo veremos como implementar um sistema para  streaming de video usando o Flash Communication Server/Flash Media Server.</p>
<h3 align="justify">Pré-Requisitos</h3>
<p align="justify">Macromedia Flash 8, Flash Communication Server ou Flash Media Server.</p>
<h3 align="justify"><strong>Objetivo</strong></h3>
<p align="justify">Criar streaming de video usando o servidor  Flash Communication Server ou Flash Media Server(Ainda não foi testado no Red5).</p>
<h3 align="justify"><strong>Conteúdo</strong></h3>
<p align="justify">Vamos salvar nossos videos em flv no servidor do FlashCom/Flash Media Server, para isso você terá que salvar os videos no diretorio streams ficaria da sua aplicação(caso não esteja criado, crie-o), no exemplo foi utilizado o nome de &#8220;video_stream&#8221;.</p>
<p align="justify">No filme do Flash usaremos um componente  “Tree”, um “TextArea” so para acompanhar o status do stream. criados  dinamicamente (os componentes devem estar na biblioteca do filme).<br />
Usaremos um arquivo em xml para  guardar o nome e o caminho das musicas, no entanto, você pode usar SharedObject  Remote, Flash Remontig, bando de dados etc.</p>
<p align="justify">Primeiramente para exibir os videos precisaremos ou de um componente ou de um &#8220;embed Video&#8221;, vamos utilizar a segunda opção. Para criar um novo movie clip de video aperte F11 para abrir a biblioteca, depois insira um novo item na biblioteca (New Video) como na imagem abaixo, colocamos no stage e damos um nome de estância de &#8220;clip&#8221;:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/http://www.osfederais.com/img/new_video.gif" alt="video embed" /></p>
<p>Nosso arquivo playlist.xml está  assim:</p>
<p id="codigo" title="codigo1">&lt;node&gt;<br />
&lt;node label=&#8221;Playlist&#8221;&gt;<br />
&lt;node label=&#8221;Lindomar &#8211; O Sub-zero Brasileiro&#8221; isBranch=&#8221;true&#8221; link=&#8221;lindomar&#8221;  /&gt;<br />
&lt;node label=&#8221;Romantismo Masculino&#8221; isBranch=&#8221;true&#8221; link=&#8221;Romantismo_Masculino&#8221;  /&gt;<br />
&lt;node label=&#8221;Para sua Empresa&#8221; isBranch=&#8221;true&#8221; link=&#8221;TerryTate_Port_384Kbps&#8221;  /&gt;<br />
&lt;/node&gt;<br />
&lt;/node&gt;</p>
<p align="justify">Bem simples, no atributo link deverá ficar o nome do  arquivo, não é necessário colocar a extensão flv.<br />
Faremos o Flash carregar o xml e alimentar o componente  “Tree”, quando a musica for selecionada tocara automaticamente, colocaremos  mais dois botões no palco, um para “stop” e outro apenas para pausar a musica.  Tudo via Action Script, só precisaremos que os componentes que utilizaremos estejam  na biblioteca do filme.<br />
Criando os componentes dinamicamente:</p>
<p id="codigo" title="codigo2">var tree = _root.createClassObject(mx.controls.Tree,  &#8220;tree&#8221;, 1, {_x:7, _y:18});<br />
tree.setSize(173, 342);<br />
var status = _root.createClassObject(mx.controls.TextArea,  &#8220;status&#8221;, 2, {_x:7, _y:381});<br />
status.setSize(524, 110);</p>
<p align="justify">Agora verificamos como anda a conexão com  servidor FlashCom/Flash Media Server:</p>
<p id="codigo" title="codigo3">var client_nc = new NetConnection();<br />
client_nc.onStatus = function(info) {<br />
trace(&#8220;Level:  &#8220;+info.level+&#8221;   Code:  &#8220;+info.code);<br />
status.text  += &#8220;Level: &#8220;+info.level+&#8221;    Code: &#8220;+info.code+&#8221;\n&#8221;;<br />
};</p>
<p align="justify">Vamos carregar o arquivo xml para o Flash e  alimentar o componente “Tree”:</p>
<p id="codigo" title="codigo2">var myTreeDP:XML = new XML();<br />
myTreeDP.ignoreWhite = true;<br />
myTreeDP.load(&#8220;playlist.xml&#8221;);<br />
myTreeDP.onLoad = function() {<br />
tree.dataProvider  = this.firstChild;<br />
};</p>
<p align="justify">Criando um objeto ouvinte para atuar quando o  componente for clicado selecionando a musica e enviando-a para a função doPlay.</p>
<p id="codigo" title="codigo3">var treeListener:Object = new Object();<br />
treeListener.change = function(evt:Object) {<br />
var  sel:Object = evt.target.selectedItem.attributes;<br />
doPlay(sel.link);<br />
};<br />
tree.addEventListener(&#8220;change&#8221;,  treeListener);</p>
<p>A função doPlay será responsável pela execução  do video escolhida via stream. A variavel &#8220;url&#8221; sera o endereço do servidor FlashCom/Flash Media Server.</p>
<p id="codigo" title="codigo4">var url:String = &#8220;rtmp:/video_stream&#8221;;//usado localmente<br />
function doPlay(playFileName) {<br />
//trace(playFileName);<br />
_root.client_nc.connect(url);<br />
//_root.client_nc.connect(playFileName);<br />
in_ns = new NetStream(_root.client_nc);<br />
_root.clip.attachVideo(_root.in_ns);<br />
_root.in_ns.onStatus = function(info) {<br />
status.text += info.level+&#8221;\n&#8221;+info.code+&#8221;\n&#8221;;<br />
status.vPosition = status.maxVPosition;<br />
};<br />
_root.in_ns.play(playFileName);<br />
_root.in_ns.connect();<br />
}</p>
<p align="justify">Segue o código completo:</p>
<p id="codigo" title="codigo5">var tree = _root.createClassObject(mx.controls.Tree,  &#8220;tree&#8221;, 1, {_x:7, _y:18});<br />
tree.setSize(173, 342);<br />
var status = _root.createClassObject(mx.controls.TextArea,  &#8220;status&#8221;, 2, {_x:7, _y:381});<br />
status.setSize(524, 110);<br />
var client_nc = new NetConnection();<br />
client_nc.onStatus = function(info) {<br />
trace(&#8220;Level:  &#8220;+info.level+&#8221;   Code:  &#8220;+info.code);<br />
status.text  += &#8220;Level: &#8220;+info.level+&#8221;    Code: &#8220;+info.code+&#8221;\n&#8221;;<br />
};<br />
var myTreeDP:XML = new XML();<br />
myTreeDP.ignoreWhite = true;<br />
myTreeDP.load(&#8220;playlist.xml&#8221;);<br />
myTreeDP.onLoad = function() {<br />
tree.dataProvider  = this.firstChild;<br />
};<br />
var treeListener:Object = new Object();<br />
treeListener.change = function(evt:Object) {<br />
var  sel:Object = evt.target.selectedItem.attributes;<br />
doPlay(sel.link);<br />
};<br />
tree.addEventListener(&#8220;change&#8221;, treeListener);<br />
function doPlay(playFileName) {<br />
//trace(playFileName);<br />
_root.client_nc.connect(url);<br />
//_root.client_nc.connect(playFileName);<br />
in_ns = new NetStream(_root.client_nc);<br />
_root.clip.attachVideo(_root.in_ns);<br />
_root.in_ns.onStatus = function(info) {<br />
status.text += info.level+&#8221;\n&#8221;+info.code+&#8221;\n&#8221;;<br />
status.vPosition = status.maxVPosition;<br />
};<br />
_root.in_ns.play(playFileName);<br />
_root.in_ns.connect();<br />
}</p>
<p align="justify">&nbsp;</p>
<p align="justify">Dê ctrl+enter para testar a aplicação<br />
<a href="http://www.osfederais.com/fms/video_stream/video_stream.html">Veja a aplicaçao em funcionamento</a></p>
<h3 align="justify">Considerações	Finais</h3>
<p align="justify">Desafio para você implementarem um player, com botões de play, stop, pause e se quiser uma barrinha de progresso.</p>
<p align="justify">Para saber mais:</p>
<p align="justify">Meu Blog FCS/FMS<br />
<a href="http://www.leonardofranca.com.br/?cat=11">http://www.leonardofranca.com.br/?cat=11 </a></p>
<p align="justify">Flash Media Server Developer Center<br />
<a href="http://www.adobe.com/devnet/flashmediaserver/">http://www.adobe.com/devnet/flashmediaserver/</a></p>
<p align="justify">FlashComGuru<br />
<a href="http://www.flashcomguru.com/">http://www.flashcomguru.com/</a></p>
<p align="justify">FlashCom.com.br<br />
<a href="http://www.flashcom.com.br/">http://www.flashcom.com.br/</a></p>
<p align="justify"> Flash Media Server Fun<br />
<a href="http://www.fczone.com/">http://www.fczone.com/</a></p>
<p align="justify">&nbsp;</p>
<p align="justify">		  <strong>Autor: Leonardo França &#8211; Colunista R.I.A do Portal MXSTUDIO</strong></p>
<p>      Qualquer dúvida envie um email para <a href="maito:leo@osfederais.com" target="new">leo@osfederais.com</a> ou acesse o nosso <a href="http://forum.mxstudio.com.br" target="forum">fórum</a> e visitem meu <a href="http://www.leonardofranca.com.br">BLOG</a><a href="http://forum.mxstudio.com.br" target="forum"> </a></td>
</tr>
</table>
<p><script> FormatAS(new Array(\'codigo\',\'codigo1\',\'codigo2\',\'codigo3\',\'codigo4\',\'codigo5\')); </script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/ria/stream_de_video_com_flash_communication_server_flash_media_server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stream de Áudio com Flash Communication Server/Flash Media Server.</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/stream_de_audio_com_flash_communication_server_flash_media_server_/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/stream_de_audio_com_flash_communication_server_flash_media_server_/#comments</comments>
		<pubDate>Sat, 18 Mar 2006 00:00:00 +0000</pubDate>
		<dc:creator>leonardofranca</dc:creator>
				<category><![CDATA[Flash Media Server]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Que tal criar uma radio online usando Flash? sim &#233; poss&#237;vel e simples, com o Flash Communication Server/Flash Media Server. Neste artigo veremos como implementar um sistema para streaming de &#225;udio usando o Flash Communication Server/F]]></description>
			<content:encoded><![CDATA[<p><script src="http://www.mxstudio.com.br/js/ColorCode.js"></script></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td id="colunaTexto" valign="top">
<h1>Stream de Áudio com  Flash Communication Server/Flash Media Server.</h1>
<h3>Introdução</h3>
<p align="justify">Que tal criar uma radio online usando  Flash?  sim é possível e simples, com o  Flash Communication Server/Flash Media Server.        Neste artigo veremos como implementar um sistema para  streaming de áudio usando o Flash Communication Server/Flash Media Server.</p>
<h3>Pré-Requisitos</h3>
<p align="justify">Macromedia Flash 8, Flash Communication Server ou Flash Media Server.</p>
<h3><strong>Objetivo</strong></h3>
<p align="justify">Criar streaming de áudio usando o servidor  Flash Communication Server ou Flash Media Server(Ainda não foi testado no Red5).</p>
<h3><strong>Conceitos</strong></h3>
<p align="justify">Alguns motivos para usar o FlashCom/Flash Media Server para  streaming de musicas:</p>
<div id="destaque">
<ul type="disc">
<li><strong>Controle de banda:</strong> Os desenvolvedores tem ferramentas para controlar e desenvolver de acordo       com o limite de banda e a velocidade de conexão do usuario.</li>
<li><strong>Acesso a ID3       text-based data:</strong> O Flash Communication Server da ao desenvolverdor       as ferramentas para acessar, reescrever e publicar dados de um stream       baseados nas tags ID3.</li>
<li><strong>Maior controle       sobre streaming de dados:</strong> Desenvolvedores podem deixar ao       ususario a opção de stop, pause, localizar e mover para áreas de interesse       do streaming.</li>
<li><strong>Controle de Script sobre       dados de streaming:</strong> Os       desenvolvedores podem criar um play contínuo baseado em tempo (como em uma       estação de rádio), sincronizar movie clips e outros dados para tocar, ou       ativar eventos em tempo de streaming de MP3s.</li>
<li><strong>Streaming para usuário       múltiplos:</strong> O Flash       Communication Server/Flash Media Server pode gravar stream ou em real-time       dos usuarios conectados.  Os       usuários podem escolher se querem receber todos os dados compartilhados ou       customizado individualmente em suas seleções.</li>
<li><strong>Criação de diretórios       virtuais</strong>:  Os desenvolvedores       podem criar diretórios virtuais com as Tag &lt;Stream&gt; e traçá-los       através da configuração do vHost.        Isto permite criar rotas traçadas às arquivos de música fora do       servidor. Os desenvolvedores podem também dar aos aplicativos acesso às       arquivos MP3 dentro de um diretório virtual específico.</li>
<li><strong>Níveis de acesso:</strong> O framework do  Flash       Communication Server/Flash Media Server fornece também ao desenvolvedor as       ferramentas para fixar as posições dos arquivos MP3 atribuindo aos       usuários níveis da acesso.  Os       desenvolvedores podem bloquear ou reduzir o acesso para usuários.</li>
<li><strong>Delete em tempo de       execução:</strong> O desenvolvedor tem a possibilidade de administrar os       arquivos deletando em tempo de execução</li>
</ul>
</div>
<p align="justify">
<h3><strong>Conteúdo</strong></h3>
<p align="justify">Há duas opções para você salvar as musicas, a primeira seria  configurar o arquivo “vhost.xml” por exemplo, se seu diretório de musicas for “C:\musicas” na tag streams ficaria o seguinte:</p>
<div id="codigo" title="codigo">
<p>&lt;Streams&gt;music;C:\musicas&lt;/Streams&gt;</p>
</div>
<p align="justify">Outra opção é a que usaremos aqui é  fazer uploads no diretório padrão do Flashcom “stream/musicas”</p>
<p align="justify">No filme do Flash usaremos um componente  “Tree”, um “TextArea” so para acompanhar o status do stream. criados  dinamicamente (os componentes devem estar na biblioteca do filme).<br />
Usaremos um arquivo em xml para  guardar o nome e o caminho das musicas, no entanto, você pode usar SharedObject  Remote, Flash Remontig, bando de dados etc.</p>
<p>Nosso arquivo playlist.xml está  assim:</p>
<div id="codigo" title="codigo1">
<p>&lt;node&gt;<br />
&lt;node  label=&#8221;Playlist&#8221;&gt;<br />
&lt;node  label=&#8221;Belinda&#8221;&gt;<br />
&lt;node label=&#8221;Angel&#8221;  isBranch=&#8221;true&#8221; link=&#8221;Belinda_Angel&#8221; /&gt;<br />
&lt;node label=&#8221;Be Free&#8221;  isBranch=&#8221;true&#8221; link=&#8221;Belinda_Befree&#8221;  /&gt;<br />
&lt;node label=&#8221;Vivir&#8221;  isBranch=&#8221;true&#8221; link=&#8221;Belinda_Vivir&#8221;  /&gt;<br />
&lt;node label=&#8221;Boba Nina  Nice&#8221; isBranch=&#8221;true&#8221;  link=&#8221;Belinda_Boba_Nina_Nice&#8221;   /&gt;<br />
&lt;node label=&#8221;Voy a  conquistarte&#8221; isBranch=&#8221;true&#8221;  link=&#8221;Belinda_Voy_a_Conquistarte&#8221; /&gt;<br />
&lt;node  label=&#8221;Muriendo Lento&#8221; isBranch=&#8221;true&#8221;  link=&#8221;Moderato_y_Belinda_muriendo lento&#8221; /&gt;<br />
&lt;/node&gt;<br />
&lt;/node&gt;<br />
&lt;/node&gt;</p>
</div>
<p align="justify">Bem simples, no atributo link deverá ficar o nome do  arquivo, não é necessário colocar a extensão mp3.<br />
Faremos o Flash carregar o xml e alimentar o componente  “Tree”, quando a musica for selecionada tocara automaticamente, colocaremos  mais dois botões no palco, um para “stop” e outro apenas para pausar a musica.  Tudo via Action Script, só precisaremos que os componentes que utilizaremos estejam  na biblioteca do filme.<br />
Criando os componentes dinamicamente:</p>
<div id="codigo" title="codigo2">
<p>var tree = _root.createClassObject(mx.controls.Tree,  &#8220;tree&#8221;, 1, {_x:7, _y:18});<br />
tree.setSize(173, 342);<br />
var status = _root.createClassObject(mx.controls.TextArea,  &#8220;status&#8221;, 2, {_x:7, _y:381});<br />
status.setSize(524, 110);<br />
var bot_stop = _root.createClassObject(mx.controls.Button,  &#8220;bot_stop&#8221;, 3, {_x:270, _y:18, label:&#8221;Stop&#8221;});</p>
<p>var bot_pause =  _root.createClassObject(mx.controls.Button, &#8220;bot_pause&#8221;, 4, {_x:380,  _y:18, label:&#8221;Pause&#8221;});</p>
</div>
<p align="justify">Agora verificamos como anda a conexão com  servidor FlashCom/Flash Media Server:</p>
<div id="codigo" title="codigo3">
<p>var client_nc = new NetConnection();<br />
client_nc.onStatus = function(info) {<br />
trace(&#8220;Level:  &#8220;+info.level+&#8221;   Code:  &#8220;+info.code);<br />
status.text  += &#8220;Level: &#8220;+info.level+&#8221;    Code: &#8220;+info.code+&#8221;\n&#8221;;<br />
};</p>
</div>
<p align="justify">Vamos carregar o arquivo xml para o Flash e  alimentar o componente “Tree”:</p>
<div id="codigo" title="codigo2">
<p>var myTreeDP:XML = new XML();<br />
myTreeDP.ignoreWhite = true;<br />
myTreeDP.load(&#8220;playlist.xml&#8221;);<br />
myTreeDP.onLoad = function() {<br />
tree.dataProvider  = this.firstChild;<br />
};</p>
</div>
<p align="justify">Criando um objeto ouvinte para atuar quando o  componente for clicado selecionando a musica e enviando-a para a função doPlay.</p>
<div id="codigo" title="codigo3">
<p>var treeListener:Object = new Object();<br />
treeListener.change = function(evt:Object) {<br />
var  sel:Object = evt.target.selectedItem.attributes;<br />
doPlay(sel.link);<br />
};<br />
tree.addEventListener(&#8220;change&#8221;,  treeListener);</p>
</div>
<p>A função doPlay será responsável pela execução  da musica escolhida via stream .</p>
<div id="codigo" title="codigo4">
<p>function doPlay(playFileName) {<br />
_root.client_nc.connect(&#8220;rtmp:/som_stream&#8221;);//considerando  localhost<br />
in_ns = new  NetStream(_root.client_nc);<br />
_root.in_ns.play(&#8220;mp3:&#8221;+playFileName);<br />
_root.in_ns.onStatus  = function(info) {<br />
trace(info.level);<br />
trace(info.code);<br />
status.text +=  info.level+&#8221;\n&#8221;+info.code;<br />
status.vPosition =  status.maxVPosition;<br />
};<br />
}</p>
</div>
<p align="justify">
<p align="justify">No método “play” colocaremos o atributo fixo (“mp3:”) para  assegurar que o servidor toque somente a musica no formato mp3.Agora colocaremos os eventos no botões para pausar,  continuar e dar um stop na musica</p>
<div id="codigo" title="codigo6">
<p>bot_stop.onRelease = function() {<br />
_root.in_ns.play(false);<br />
};<br />
bot_pause.onRelease = function() {<br />
if  (bot_pause.label == &#8220;Pause&#8221;) {<br />
bot_pause.label = &#8220;Play&#8221;;<br />
_root.in_ns.pause();<br />
} else if  (bot_pause.label == &#8220;Play&#8221;) {<br />
bot_pause.label = &#8220;Pause&#8221;;<br />
_root.in_ns.pause();<br />
}<br />
};</p>
</div>
<p align="justify">Segue o código completo:</p>
<div id="codigo" title="codigo5">
<p>var tree = _root.createClassObject(mx.controls.Tree,  &#8220;tree&#8221;, 1, {_x:7, _y:18});<br />
tree.setSize(173, 342);<br />
var status = _root.createClassObject(mx.controls.TextArea,  &#8220;status&#8221;, 2, {_x:7, _y:381});<br />
status.setSize(524, 110);<br />
var bot_stop = _root.createClassObject(mx.controls.Button,  &#8220;bot_stop&#8221;, 3, {_x:270, _y:18, label:&#8221;Stop&#8221;});<br />
var bot_pause = _root.createClassObject(mx.controls.Button,  &#8220;bot_pause&#8221;, 4, {_x:380, _y:18, label:&#8221;Pause&#8221;});<br />
var client_nc = new NetConnection();<br />
client_nc.onStatus = function(info) {<br />
trace(&#8220;Level:  &#8220;+info.level+&#8221;   Code:  &#8220;+info.code);<br />
status.text  += &#8220;Level: &#8220;+info.level+&#8221;    Code: &#8220;+info.code+&#8221;\n&#8221;;<br />
};<br />
var myTreeDP:XML = new XML();<br />
myTreeDP.ignoreWhite = true;<br />
myTreeDP.load(&#8220;playlist.xml&#8221;);<br />
myTreeDP.onLoad = function() {<br />
tree.dataProvider  = this.firstChild;<br />
};<br />
var treeListener:Object = new Object();<br />
treeListener.change = function(evt:Object) {<br />
var  sel:Object = evt.target.selectedItem.attributes;<br />
doPlay(sel.link);<br />
};<br />
tree.addEventListener(&#8220;change&#8221;, treeListener);<br />
function doPlay(playFileName) {<br />
_root.client_nc.connect(&#8220;rtmp:/som_stream&#8221;);//considerando  localhost<br />
in_ns = new  NetStream(_root.client_nc);<br />
_root.in_ns.play(&#8220;mp3:&#8221;+playFileName);<br />
_root.in_ns.onStatus  = function(info) {<br />
trace(info.level);<br />
trace(info.code);<br />
status.text +=  info.level+&#8221;\n&#8221;+info.code;<br />
status.vPosition =  status.maxVPosition;<br />
};<br />
}<br />
bot_stop.onRelease = function() {<br />
_root.in_ns.play(false);<br />
};<br />
bot_pause.onRelease = function() {<br />
if  (bot_pause.label == &#8220;Pause&#8221;) {<br />
bot_pause.label = &#8220;Play&#8221;;<br />
_root.in_ns.pause();<br />
} else if  (bot_pause.label == &#8220;Play&#8221;) {<br />
bot_pause.label = &#8220;Pause&#8221;;<br />
_root.in_ns.pause();<br />
}<br />
};</p>
</div>
<p align="justify">
<p align="justify">Dê ctrl+enter para testar a aplicação<br />
<a href="http://www.osfederais.com/fms/som_stream/som_stream.html">Veja a aplicaçao em funcionamento</a></p>
<h3>Considerações	Finais</h3>
<p align="justify">Simples e fácil criar stream de áudio usando o Flash Communication Server/Flash Media Server, agora a imaginação é o limite para possivel aplicações.</p>
<p align="justify">Para saber mais:</p>
<p align="justify">Meu Blog FCS/FMS<br />
<a href="http://www.dotpix.com.br/~leo/?cat=11">http://www.dotpix.com.br/~leo/?cat=11 </a></p>
<p align="justify">Flash Media Server Developer Center<br />
<a href="http://www.macromedia.com/devnet/flashmediaserver/">http://www.macromedia.com/devnet/flashmediaserver/</a></p>
<p align="justify">FlashComGuru<br />
<a href="http://www.flashcomguru.com/">http://www.flashcomguru.com/</a></p>
<p align="justify">FlashCom.com.br<br />
<a href="http://www.flashcom.com.br/">http://www.flashcom.com.br/</a></p>
<p align="justify">Flash Media Server Fun<br />
<a href="http://www.fczone.com/">http://www.fczone.com/</a></p>
<p align="justify">
<p align="justify"><strong>Autor: Leonardo França &#8211; Colunista R.I.A do Portal MXSTUDIO</strong></p>
<p>Qualquer dúvida envie um email para <a href="http://mce_host/mx_novo/wp-admin/maito:leo@dotpix.com.br" target="new">leo@dotpix.com.br</a> ou acesse o nosso <a href="http://forum.mxstudio.com.br" target="forum">fórum</a> e visitem meu <a href="http://www.dotpix.com.br/~leo">BLOG</a><a href="http://forum.mxstudio.com.br" target="forum"> </a></td>
</tr>
</tbody>
</table>
<p><script type="text/javascript"><!--
FormatAS(new Array('codigo','codigo1','codigo2','codigo3','codigo4','codigo5'));
// --></script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/stream_de_audio_com_flash_communication_server_flash_media_server_/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Criando uma playlist com Flash Communication Server/Flash Media Server</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/criando_uma_playlist_com_flash_communication_server_flash_media_server/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/criando_uma_playlist_com_flash_communication_server_flash_media_server/#comments</comments>
		<pubDate>Sat, 04 Mar 2006 00:00:00 +0000</pubDate>
		<dc:creator>leonardofranca</dc:creator>
				<category><![CDATA[Flash Media Server]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Criando uma playlist usando o servidor Flash Communication Server ou Flash Media Server]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" />
<script src="http://www.mxstudio.com.br/js/ColorCode.js"></script></p>
<table cellSpacing=0 cellPadding=0 width=100% border=0>
<tbody>
<tr>
<td id="colunaTexto" valign="top">
<h1>Criando  uma playlist com Flash Communication Server/Flash Media Server.</h1>
<h3>Introdução</h3>
<p>Vimos no <a href="http://www.mxstudio.com.br/views.tutorial.php?act=view&#038;cid=11&#038;aid=784">artigo anterior</a> como gravar stream usando o Flash  Communication Server/Flash Media Server, agora vamos implementar uma playlist  para esse recurso. Cada vídeo que gravarmos será adicionado a playlist para  posterior disponibização. </p>
<h3>Pré-Requisitos</h3>
<p align="justify">Macromedia Flash 8, Flash Communication Server ou Flash Media Server.</p>
<h3><strong>Objetivo</strong></h3>
<p align="justify">Criar uma playlist usando o servidor  Flash Communication Server ou Flash Media Server(Ainda não foi testado no Red5).</p>
<h3><strong>Conceitos</strong></h3>
<p align="justify">Para isto usaremos o SharedObject Remote para  guardar as informações dos vídeos gravados. SharedObjects oferece  compartilhamento de informação em tempo real entre multiplos clientes SWF’s  podendo ser persistentes na maquina local ou no servidor remoto. O local Shared  object seria como “Cookies” e o SharedObject Remote como transferência de dados  em tempo-real. </p>
<h3><strong>Conteúdo</strong></h3>
<p>Abra um documeno novo no Flash, vamos criar dois movies clips do tipo video, para adicionar um objeto video na sua library, abra o painel library (windom Video object to your library, open the Library panel (Window &gt; Library ou Ctrl+L ou F11) a adicione um embedded Video object selecionando New Video nas opções da library.</p>
<p>Primeiro conectanto ao servidor Flashcom/Flash  Media Server:</p>
<div id="codigo" title="codigo">
		    client_nc = new NetConnection();<br />
	          client_nc.onStatus = function(info) {<br />
            trace(&#8220;Level:  &#8220;+info.level+&#8221;   Code:  &#8220;+info.code);<br />
	          };<br />
	    client_nc.connect(&#8220;rtmp:/playlist&#8221;);//considerando  localhost</div>
<p>Recuperando os dados do Shared Object Remote, e  preenchendo o component “List” usando o método onSync, esse método é o responsável  pela sincronização de dados com o servidor.</p>
<div id="codigo" title="codigo1">rec_so = SharedObject.getRemote(&#8220;videos&#8221;,  client_nc.uri, true);<br />
rec_so.onSync = function(list) {<br />
            _root.Play_list.removeAll();<br />
            for (var i  in _root.rec_so.data) {<br />
                        _root.Play_list.addItem(i);<br />
            }<br />
};<br />
rec_so.connect(client_nc);</div>
<p>Na primeira linha note que damos o nome de “vídeo” ao objeto  criado, o terceiro parâmetro “true” garantirá que os dados permaneçam no  servidor, caso fosse passado o paramêtro false, os dados so permaneceriam enquanto  o usuário estivesse conectado ao aplicativo.</p>
<p>No palco teremos dois campos de textos, um com o nome de  instância de “ListItem” do tipo “input” e outro com o o nome de instância de  “Status_msg” do tipo “dynamic”, também terá dois movie clips do tipo vídeo, um  para receber a webcam com o nome de instância de “live” e outro para mostrar os  vídeos selecionado da list com o nome de instância de “publicado”.</p>
<p>Criamos uma função para gravar o stream:</p>
<div id="codigo" title="codigo2">function doRecord() {<br />
              if  (ListItem.text == undefined || ListItem.text == &#8220;&#8221;) {<br />
                          Status_msg.text = &#8220;Necessario  um titulo.&#8221;;<br />
                          ListItem.setFocus();<br />
              } else if  (Record_btn.label == &#8220;Record&#8221;) {<br />
                          Status_msg.text =  &#8220;Recording&#8230;&#8221;;<br />
                          if (Play_btn.label ==  &#8220;Stop&#8221;) {<br />
                                      doPlay();<br />
                          }<br />
                          Play_btn.enabled = false;<br />
                          out_ns = new  NetStream(_root.client_nc);<br />
                          out_ns.attachAudio(Microphone.get());<br />
                          var teste_cam:Camera = Camera.get();<br />
                          live.attachVideo(teste_cam);<br />
                          out_ns.attachVideo(teste_cam);<br />
                          out_ns.publish(ListItem.text,  &#8220;record&#8221;);<br />
                          _root.rec_so.data[ListItem.text] =  ListItem.text;<br />
                          _root.rec_so.flush();<br />
                          Record_btn.label = &#8220;Stop&#8221;;<br />
              } else if  (Record_btn.label == &#8220;Stop&#8221;) {<br />
                          out_ns.close();<br />
                          Play_btn.enabled = true;<br />
                          Record_btn.label =  &#8220;Record&#8221;;<br />
                          ListItem.text = &#8220;&#8221;;<br />
                          Status_msg.text = &#8220;&#8230;&#8221;;<br />
              }<br />
		    }</div>
<p>Detalhe interessante no método “publish” da classe  NetStream, que pode ter três argumentos, sua sintaxe é a seguinte:</p>
<div id="codigo" title="codigo3">out_ns.publish(nome_do_flv, jeito de salvar);</div>
<p>o primeiro parâmetro sendo o nome do arquivo, no caso o nome  do nosso vídeo, e o segundo parâmetro o jeito de publicação que pode ser entre:</p>
<div id="destaque" title="codigo2">record = salva o arquivo como flv no servidor, se o arquivo  já existir será sobrescrito.<br />
		    append = salva o arquivo como flv no servidor, acrescentando  a partir do arquivo salvo anteriormente.<br />
	    live = transmite ao vivo sem salvar, se o arquivo existir  será deletado.</div>
<p>Criando o método para rodar o vídeo da list</p>
<div id="codigo" title="codigo3">function doPlay() {<br />
              if  (Play_btn.label == &#8220;Play&#8221;) {<br />
                          Status_msg.text =  &#8220;Playing&#8230;&#8221;;<br />
                          Play_btn.label = &#8220;Stop&#8221;;<br />
                          var  playFileName = Play_list.selectedItem.label;<br />
                        _root.in_ns  = new NetStream(_root.client_nc);<br />
                        publicado.attachVideo(_root.in_ns);<br />
                        _root.in_ns.play(playFileName);<br />
                        in_ns.onStatus = function(info) {<br />
                                      if (info.level == &#8220;error&#8221;  || info.code == &#8220;NetStream.Play.Stop&#8221;) {<br />
                                                  Status_msg.text  = &#8220;Stopped sending data&#8230;&#8221;;<br />
                                                  Play_btn.label  = &#8220;Play&#8221;;<br />
                                      }<br />
                          };<br />
              } else if  (Play_btn.label == &#8220;Stop&#8221;) {<br />
                          Status_msg.text =  &#8220;Stop&#8230;&#8221;;<br />
                          in_ns.onStatus = null;<br />
                          in_ns.close();<br />
                          Play_btn.label = &#8220;Play&#8221;;<br />
              }<br />
		    }</div>
<p>Finalizando com a criação dinamicamente dos botões, da list  e associando os métodos doRecord e doPlay aos eventos dos botões.</p>
<div id="codigo" title="codigo4">Play_list.addEventListener(&#8220;change&#8221;,  listListener);<br />
		    var Play_list = _root.createClassObject(mx.controls.List,  &#8220;Play_list&#8221;, 1, {_x:357, _y:214});<br />
		    Play_list.setSize(148, 177);<br />
		    var Play_btn = _root.createClassObject(mx.controls.Button,  &#8220;Play_btn&#8221;, 2, {_x:170, _y:216, label:&#8221;Play&#8221;});<br />
		    var Record_btn = _root.createClassObject(mx.controls.Button,  &#8220;Record_btn&#8221;, 3, {_x:47, _y:216, label:&#8221;Record&#8221;});<br />
		    Record_btn.onRelease = function() {<br />
              doRecord();<br />
		    };<br />
		    Play_btn.onRelease = function() {<br />
              doPlay();<br />
		    };<br />
		    var listListener:Object = new Object();<br />
		    listListener.change = function(evt_obj:Object) {<br />
              var  playFileName = evt_obj.target.selectedItem.label;<br />
              trace(playFileName);<br />
              in_ns.pause();<br />
              in_ns = new  NetStream(_root.client_nc);<br />
              publicado.attachVideo(in_ns);<br />
              in_ns.play(playFileName);<br />
		    };</div>
</p>
<p>O código completo:</p>
<div id="codigo" title="codigo5">
<p>client_nc =  new NetConnection();<br />
	        client_nc.onStatus  = function(info) {<br />
              trace(&#8220;Level:  &#8220;+info.level+&#8221;   Code:  &#8220;+info.code);<br />
	        };<br />
	        client_nc.connect(&#8220;rtmp://200.219.239.68/osfederais/playlist&#8221;);<br />
	        rec_so =  SharedObject.getRemote(&#8220;recordings&#8221;, client_nc.uri, true);<br />
	        rec_so.onSync  = function(list) {<br />
              _root.Play_list.removeAll();<br />
              for (var i in _root.rec_so.data) {<br />
                          _root.Play_list.addItem(i);<br />
              }<br />
	        };<br />
	        rec_so.connect(client_nc);<br />
	        function  doRecord() {<br />
              if (ListItem.text == undefined ||  ListItem.text == &#8220;&#8221;) {<br />
                          Status_msg.text  = &#8220;Necessario um titulo.&#8221;;<br />
                          ListItem.setFocus();<br />
              } else if (Record_btn.label ==  &#8220;Record&#8221;) {<br />
                          Status_msg.text  = &#8220;Recording&#8230;&#8221;;<br />
                          if  (Play_btn.label == &#8220;Stop&#8221;) {<br />
                                      doPlay();<br />
                          }<br />
                          Play_btn.enabled  = false;<br />
                          _root.out_ns  = new NetStream(_root.client_nc);<br />
                          _root.out_ns.attachAudio(Microphone.get());<br />
                          _root.teste_cam  = Camera.get();<br />
                          _root.live.attachVideo(teste_cam);<br />
                          _root.out_ns.attachVideo(_root.teste_cam);<br />
                          _root.out_ns.publish(ListItem.text,  &#8220;record&#8221;);<br />
                          _root.rec_so.data[ListItem.text]  = ListItem.text;<br />
                          _root.rec_so.flush();<br />
                          Record_btn.label  = &#8220;Stop&#8221;;<br />
              } else if (Record_btn.label ==  &#8220;Stop&#8221;) {<br />
                          _root.out_ns.close();<br />
                          Play_btn.enabled  = true;<br />
                          Record_btn.label  = &#8220;Record&#8221;;<br />
                          ListItem.text  = &#8220;&#8221;;<br />
                          Status_msg.text  = &#8220;&#8230;&#8221;;<br />
              }<br />
	        }<br />
	        function  doPlay() {<br />
              if (Play_btn.label ==  &#8220;Play&#8221;) {<br />
                          Status_msg.text  = &#8220;Playing&#8230;&#8221;;<br />
                          Play_btn.label  = &#8220;Stop&#8221;;<br />
                          var  playFileName = Play_list.selectedItem.label;<br />
                          _root.in_ns  = new NetStream(_root.client_nc);<br />
                          publicado.attachVideo(_root.in_ns);<br />
                          _root.in_ns.play(playFileName);<br />
                          _root.in_ns.onStatus  = function(info) {<br />
                                      if (info.level == &#8220;error&#8221;  || info.code == &#8220;NetStream.Play.Stop&#8221;) {<br />
                                                  Status_msg.text  = &#8220;parado&#8230;&#8221;;<br />
                                                  Play_btn.label  = &#8220;Play&#8221;;<br />
                                      }<br />
                          };<br />
              } else if (Play_btn.label ==  &#8220;Stop&#8221;) {<br />
                          Status_msg.text  = &#8220;Stop&#8230;&#8221;;<br />
                          _root.in_ns.onStatus  = null;<br />
                          _root.in_ns.close();<br />
                          Play_btn.label  = &#8220;Play&#8221;;<br />
              }<br />
	        }<br />
	        Play_list.addEventListener(&#8220;change&#8221;,  cbListener);<br />
	        var Play_list  = _root.createClassObject(mx.controls.List, &#8220;Play_list&#8221;, 1, {_x:357,  _y:214});<br />
	        Play_list.setSize(148,  177);<br />
	        var Play_btn =  _root.createClassObject(mx.controls.Button, &#8220;Play_btn&#8221;, 2, {_x:170,  _y:216, label:&#8221;Play&#8221;});<br />
	        var Record_btn  = _root.createClassObject(mx.controls.Button, &#8220;Record_btn&#8221;, 3,  {_x:47, _y:216, label:&#8221;Record&#8221;});<br />
	        Record_btn.onRelease  = function() {<br />
              doRecord();<br />
	        };<br />
	        Play_btn.onRelease  = function() {<br />
              doPlay();<br />
	        };<br />
	        var  cbListener:Object = new Object();<br />
	        cbListener.change  = function(evt_obj:Object) {<br />
              var playFileName = evt_obj.target.selectedItem.label;<br />
              trace(playFileName);<br />
              in_ns.pause();<br />
              in_ns = new  NetStream(_root.client_nc);<br />
              publicado.attachVideo(in_ns);<br />
              in_ns.play(playFileName);</p>
<p>        };</p>
</div>
<p align="justify">
<p align="justify">Para definir sua aplicação no servidor, crie um diretorio chamado &#8220;playlist&#8221; no seu servidor do Flash Communication Server/Flash Media Server.</p>
<p>Dê ctrl+enter para testar a aplicação<br />
        <a href="http://www.osfederais.com/fms/playlist/playlist.html">Veja a aplicaçao em funcionamento</a></p>
<h3 align="justify">Considerações	Finais	  </h3>
<p align="justify">Simples e fácil criar uma playlist usando o Flash Communication Server/Flash Media Server, pode servir como um livro de visitas.</p>
<p align="justify">Para saber mais:</p>
<p align="justify">Meu Blog FCS/FMS<br />
        <a href="http://www.dotpix.com.br/~leo/?cat=11">http://www.dotpix.com.br/~leo/?cat=11 </a></p>
<p>Flash Media Server Developer Center<br />
            <a href="http://www.macromedia.com/devnet/flashmediaserver/">http://www.macromedia.com/devnet/flashmediaserver/</a></p>
<p>FlashComGuru<br />
            <a href="http://www.flashcomguru.com/">http://www.flashcomguru.com/</a></p>
<p>FlashCom.com.br<br />
            <a href="http://www.flashcom.com.br/">http://www.flashcom.com.br/</a></p>
<p> Flash Media Server Fun<br />
            <a href="http://www.fczone.com/">http://www.fczone.com/</a> </p>
<p align="justify">
<p align="justify">		  <strong>Autor: Leonardo França &#8211; Colunista R.I.A do Portal MXSTUDIO</strong></p>
<p>      Qualquer dúvida envie um email para <a href="maito:leo@dotpix.com.br" target="new">leo@dotpix.com.br</a> ou acesse o nosso <a href="http://forum.mxstudio.com.br" target="forum">fórum</a> e visitem meu <a href="http://www.dotpix.com.br/~leo">BLOG</a><a href="http://forum.mxstudio.com.br" target="forum"> </a></p>
</td>
</tr>
</tbody>
</table>
<p><script>
FormatAS(new Array('codigo','codigo1','codigo2','codigo3','codigo4','codigo5'));
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/criando_uma_playlist_com_flash_communication_server_flash_media_server/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Gravando Streaming com Flash Communication Server/Flash Media Server</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/gravando_streaming_com_flash_communication_server_flash_media_server/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/gravando_streaming_com_flash_communication_server_flash_media_server/#comments</comments>
		<pubDate>Tue, 24 Jan 2006 00:00:00 +0000</pubDate>
		<dc:creator>leonardofranca</dc:creator>
				<category><![CDATA[Flash Media Server]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Mostrar como gravar streaming usando o Flash Communication Server ou Flash Media Server]]></description>
			<content:encoded><![CDATA[<p><script src="http://www.mxstudio.com.br/js/ColorCode.js"></script></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td id="colunaTexto" valign="top">
<h1>Gravando Streaming com Flash Communication Server/Flash Media Server.</h1>
<h3>Introdução</h3>
<p align="justify">Algumas vezes é frustrante para o usuário ter que baixar o arquivo todo para depois assistir seu conteúdo ainda mais tratando-se de conexões discadas.  E como evolução natural desta situação, o conteúdo via streaming. Afinal, uma série de serviços, como notícias e transmissões ao vivo, rádios online, não seriam viaveis sem esta tecnologia. E somente agora que os provedores de hospedagem brasileiros começam a apostar no Flash Communication Server/ Flash Media Server.</p>
<h3>Pré-Requisitos</h3>
<p align="justify">Macromedia Flash 8, Flash Communication Server ou Flash Media Server.</p>
<h3><strong>Objetivo</strong></h3>
<p align="justify">Mostrar como gravar streaming usando o servidor  Flash Communication Server ou Flash Media Server(Ainda não foi testado no Red5).</p>
<h3><strong>Conceitos</strong></h3>
<p align="justify">Streaming é basicamente uma tecnologia que permite ao usuário ter acesso ao conteúdo multimídia sem a obrigação de baixar o arquivo. Funciona da seguinte forma: Quando o usuário clica em um link solicitando a reprodução de um arquivo streaming, inicia-se o download das informações. Antes de começar a executar o streaming, o player armazena um certo volume de dados em um buffer, para que a transmissão ocorra sem interrupções. Quando o buffer é preenchido, o player reproduz o conteúdo.</p>
<h3><strong>Conteúdo</strong></h3>
<p>Gravar streaming usando o FlashCom/Flash Media Server é bastante facil, não precisaremos escrever o codigo em asc(ActionScript Communication File) ainda, so usaremos o action script do lado do cliente.</p>
<p>Abra um documeno novo no Flash, vamos criar dois movies clips do tipo video, para adicionar um objeto video na sua library, abra o painel library (windomVideo object to your library, open the Library panel (Window &gt; Library ou Ctrl+L ou F11) a adicione um embedded Video object selecionando New Video nas opções da library.</p>
<p><img src="http://www.mxstudio.com.br/imagens_artigos/http://www.osfederais.com/img/new_video.gif" alt="Criando New Video Object" /></p>
<p align="justify">Criaremos um botao para quando clicando mandara a gravação para o Flash Communication Server/Flash Media Server e outro botão para parar a gravação. Um botão Play servirá para mostrar o video gravado.</p>
<p align="justify">Usaremos o ActionScript para capturar a camera e atachar ao video objeto, criar uma conexão com o servidor, gravar os dados da camera e mandar como streaming ao servidor e tocar a gravação no segundo video object. Quando você grava um streaming no Flash, o servidor cria arquivos com as extensões .flv para video e .idx para audio.</p>
<p align="justify">Arraste dois embedded Video objects da library para o palco e de os nomes de instância de Live_video e Replay_video.</p>
<p align="justify">O botões que encadearão as ações serão criados dinâmicamentes, certifique que os botoes estejam na library do filme. No primeiro frame da timeline, abra o painel Actions(F9).</p>
<p align="justify">
<div id="codigo" title="codigo">
<ol>
<li>var Play_btn = _root.createClassObject(mx.controls.Button,&#8221;Play_btn&#8221;,_root.getNextHighestDepth(),{_x:120,_y:375,label:&#8221;Play&#8221;});<br />
var Record_btn = _root.createClassObject(mx.controls.Button,&#8221;Record_btn&#8221;,_root.getNextHighestDepth(),{_x:15,_y:375,label:&#8221;Record&#8221;});</li>
</ol>
</div>
<p align="justify">Para definir sua aplicação no servidor, crie um diretorio chamado &#8220;gravando_stream&#8221; no seu servidor do Flash Communication Server/Flash Media Server.</p>
<p>Vamos chamar os metodos que ligam a camera e o microfone</p>
<div id="codigo" title="codigo1">
<ol>
<li>client_cam = Camera.get();<br />
client_mic = Microphone.get();<br />
Live_video.attachVideo(client_cam);</li>
</ol>
</div>
<p align="justify">Agora criaremos uma função para conectar ao servidor Flash Communication Server/Flash Media Server, além de mandar o video ao servidor e pegar o video novamente via streaming</p>
<div id="codigo" title="codigo2">
<ol>
<li>function initStreams() {<br />
client_nc = new NetConnection();<br />
/*quando for usar um servidor que não seja localhost use rtmp://*/</p>
<p>client_nc.connect(&#8220;rtmp:/gravando_stream&#8221;);<br />
client_nc.onStatus = function(info) {<br />
trace(&#8220;Level: &#8221; + info.level + &#8221; Code: &#8221; +  info.code);<br />
}<br />
out_ns = new NetStream(client_nc);<br />
in_ns = new NetStream(client_nc);<br />
Replay_video.attachVideo(in_ns);<br />
}<br />
initStreams();</li>
</ol>
</div>
<p align="justify">Outra função será criada para gravar o video no servidor. Note que é adicionado o parametro &#8220;record&#8221; ao metodo publish, isso dira ao servidor Flash Communication Server/Flash Media Server que é para gravar o stream no servidor.</p>
<div id="codigo" title="codigo3">
<ol>
<li>function doRecord(){<br />
if (Record_btn.label == &#8220;Record&#8221;){<br />
out_ns.attachVideo(client_cam);<br />
out_ns.attachAudio(client_mic);<br />
out_ns.publish(&#8220;my_recorded_stream&#8221;, &#8220;record&#8221;);<br />
Play_btn.enabled = false;<br />
Record_btn.label = &#8220;Stop&#8221;;<br />
} else if (Record_btn.label == &#8220;Stop&#8221;){<br />
out_ns.close();<br />
Play_btn.enabled = true;<br />
Record_btn.label = &#8220;Record&#8221;;<br />
}<br />
}</li>
</ol>
</div>
<p align="justify">Função para o botao Play, tocará o video gravado via stream</p>
<div id="codigo" title="codigo4">
<ol>
<li>function doPlay() {<br />
in_ns.play(&#8220;my_recorded_stream&#8221;);<br />
}</li>
</ol>
</div>
<p align="justify">Dê ctrl+enter para testar a aplicação<br />
Clique no botão Record para começar a gravar o stream depois Stop, click no botão Play para ver o video.<br />
Apos a gravação, no seu servidor deve ser formar algo parecido com esta imagem, criada a pasta stream e dentro dela a pasta gravando_stream e dentro desta os nosso arquivos .flv e .idx.</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/http://www.dotpix.com.br/~leo/wp-content/gravando_stream.jpg" alt="Gravando Stream" width="293" height="339" /></p>
<p align="justify">Segue o codigo completo:</p>
<div id="codigo" title="codigo5">
<ol>
<li>client_cam = Camera.get();<br />
client_mic = Microphone.get();<br />
Live_video.attachVideo(client_cam);<br />
function initStreams() {<br />
client_nc = new NetConnection();<br />
client_nc.connect(&#8220;rtmp:/gravando_stream&#8221;);<br />
client_nc.onStatus = function(info) {<br />
trace(&#8220;Level: &#8220;+info.level+&#8221; Code: &#8220;+info.code);<br />
};<br />
out_ns = new NetStream(client_nc);<br />
in_ns = new NetStream(client_nc);<br />
Replay_video.attachVideo(in_ns);<br />
}<br />
initStreams();<br />
function doRecord() {<br />
if (Record_btn.label == &#8220;Record&#8221;) {<br />
out_ns.attachVideo(client_cam);<br />
out_ns.attachAudio(client_mic);<br />
out_ns.publish(&#8220;my_recorded_stream&#8221;, &#8220;record&#8221;);<br />
Play_btn.enabled = false;<br />
Record_btn.label = &#8220;Stop&#8221;;<br />
} else if (Record_btn.label == &#8220;Stop&#8221;) {<br />
out_ns.close();<br />
Play_btn.enabled = true;<br />
Record_btn.label = &#8220;Record&#8221;;<br />
}<br />
}<br />
function doPlay() {<br />
in_ns.play(&#8220;my_recorded_stream&#8221;);<br />
}<br />
var Play_btn = _root.createClassObject(mx.controls.Button, &#8220;Play_btn&#8221;, _root.getNextHighestDepth(), {_x:120, _y:375, label:&#8221;Play&#8221;});<br />
var Record_btn = _root.createClassObject(mx.controls.Button, &#8220;Record_btn&#8221;, _root.getNextHighestDepth(), {_x:15, _y:375, label:&#8221;Record&#8221;});<br />
Record_btn.onRelease = function():Void  {<br />
doRecord();<br />
};<br />
Play_btn.onRelease = function():Void  {<br />
doPlay();<br />
};</li>
</ol>
</div>
<p align="justify"><a href="http://www.osfederais.com/fms/gravando_stream/gravando_stream.html">Veja a aplicaçao em funcionamento</a></p>
<h3>Considerações	Finais</h3>
<p align="justify">Simples e fácil gravar streaming usando o Flash Communication Server/Flash Media Server.</p>
<p align="justify">Para saber mais:</p>
<p align="justify">Meu Blog FCS/FMS<br />
<a href="http://www.dotpix.com.br/~leo/?cat=11">http://www.dotpix.com.br/~leo/?cat=11 </a></p>
<p>Flash Media Server Developer Center<br />
<a href="http://www.macromedia.com/devnet/flashmediaserver/">http://www.macromedia.com/devnet/flashmediaserver/</a></p>
<p>FlashComGuru<br />
<a href="http://www.flashcomguru.com/">http://www.flashcomguru.com/</a></p>
<p>FlashCom.com.br<br />
<a href="http://www.flashcom.com.br/">http://www.flashcom.com.br/</a></p>
<p>Flash Media Server Fun<br />
<a href="http://www.fczone.com/">http://www.fczone.com/</a></p>
<p align="justify">
<p align="justify"><strong>Autor: Leonardo França &#8211; Colunista R.I.A do Portal MXSTUDIO</strong></p>
<p>Qualquer dúvida envie um email para <a href="http://mce_host/mx_novo/wp-admin/maito:leo@dotpix.com.br" target="new">leo@dotpix.com.br</a> ou acesse o nosso <a href="http://forum.mxstudio.com.br" target="forum">fórum</a> e visitem meu <a href="http://www.dotpix.com.br/~leo">BLOG</a><a href="http://forum.mxstudio.com.br" target="forum"> </a></td>
</tr>
</tbody>
</table>
<p><script type="text/javascript"><!--
FormatAS(new Array('codigo','codigo1','codigo2','codigo3','codigo4','codigo5'));
// --></script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flash-media-server/gravando_streaming_com_flash_communication_server_flash_media_server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Míltiplas Faces de RIA.</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/ria/miltiplas_faces_de_ria_/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/ria/miltiplas_faces_de_ria_/#comments</comments>
		<pubDate>Mon, 16 Jan 2006 00:00:00 +0000</pubDate>
		<dc:creator>leonardofranca</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Conhecendo as v&#225;rias formas de se fazer um aplicativo RIA]]></description>
			<content:encoded><![CDATA[<p><script src="http://www.mxstudio.com.br/js/ColorCode.js"></script></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td id="colunaTexto" valign="top">
<h1>Coluna R.I.A &#8211; Míltiplas Faces de RIA.</h1>
<h3>Conhecendo as várias formas de se fazer um aplicativo RIA</h3>
<p align="justify">Ano começando e estou aqui estreiando na comunidade MXStudio. Espero poder contribuir bastante transferindo meu conhecimento para quem puder aproveitar.</p>
<p align="justify">Nos últimos anos a Macromedia lançou o conceito de RIA (Rich Internet  Application) no qual tem-se o objetivo de melhorar a usabilidade e  experiência do usuário, a principal ferramenta para sua produção até  então era o Macromedia Flash e recentemente o  Macromedia Flex. Logo depois veio a galera do AJAX para provar que o  Flash não é o único meio de fazer RIA. Uma briga boa  começou para  desenvolvimento de aplicativos RIA. Entretando não existem somente  Flash e AJAX para criação de aplicativos RIA, há também o MXML(FLEX),  Laszlo, XUL e XAML veremos uma introdução de cada tecnologia.</p>
<h3>AJAX</h3>
<p align="justify">Asynchronous JavaScript and XML – é um termo que descreve uma técnica  de desenvolvimento web para criar softwares de interação. A tecnologia  usa combinações do HTML( ou XHTML) e CSS para apresentação da  informação, DOM(Document Object Model) para manipulação com javascript  para dinamizar a exposição e interagindo com a apresentação da  informação e XMLHttpRequest, para trocar e manipular dados  assincronamente com um servidor web.</p>
<p><a href="http://www.dotpix.com.br/%7Ewendel/?page_id=14">Veja um exemplo</a><br />
<a href="http://www.dotpix.com.br/http://www.adaptivepath.com/publications/essays/archives/000385.php/">http://www.adaptivepath.com/publications/essays/archives/000385.php</a><br />
<a href="http://en.wikipedia.org/wiki/AJAX">http://en.wikipedia.org/wiki/AJAX</a><br />
<a href="http://www.ajaxmatters.com/r/welcome">http://www.ajaxmatters.com/r/welcome</a></p>
<h3><strong>FLASH</strong></h3>
<p align="justify">É o software da Macromedia(Agora Adobe) mais usado no mundo para  criação de gráficos vetoriais, animações etc. O plugin Flash Player  está presente em 99% dos computadores no mundo. È possível criar  aplicativos web com o maximo de interação com o usuário, dando-lhe a  experiência de usar o melhor do desktop e o melhor da internet em um só  aplicativo. É possível interagir com xml, web services etc, além de  possibilidade de usar recursos de multimídia como vídeo e som.</p>
<p><a href="http://www.dotpix.com.br/%7Eleo/?p=22">http://www.dotpix.com.br/~leo/?p=22</a><br />
<a href="http://www.dotpix.com.br/%7Eleo/?p=11">http://www.dotpix.com.br/~leo/?p=11</a><br />
<a href="http://www.dotpix.com.br/%7Eleo/?p=12">http://www.dotpix.com.br/~leo/?p=12</a><br />
<a href="http://www.amfphp.org/">http://www.amfphp.org/</a><br />
<a href="http://www.flash-db.com/">http://www.flash-db.com/</a></p>
<h3><strong>LASZLO</strong></h3>
<p align="justify">Laszlo Systems é originalmente desenvolvindo do OpenLaszlo. Esta  plataforma permite que desenvolvedores criem aplicativos ricos. Baseado  em XML, roda em servidor java (Tomcat). OpenLaszlo é distribuido sob a  lincença <a href="http://www.eclipse.org/legal/cpl-v10.html">CPL</a>.</p>
<p><a href="http://pt.wikipedia.org/wiki/Laszlo">http://pt.wikipedia.org/wiki/Laszlo</a><br />
<a href="http://www.openlaszlo.org/">http://www.openlaszlo.org/</a></p>
<div id="codigo" title="Função teste">/*ola.lzx*/<br />
&lt;canvas width=&#8221;500&#8243; height=&#8221;350&#8243; &gt;<br />
&lt;window x=&#8221;20&#8243; y=&#8221;20&#8243; width=&#8221;200&#8243; height=&#8221;250&#8243;<br />
title=&#8221;Simple Window&#8221; resizable=&#8221;true&#8221;&gt;<br />
&lt;text&gt;Here is some text.&lt;/text&gt;<br />
&lt;/window&gt;<br />
&lt;/canvas&gt;</div>
<h3><strong>MXML</strong></h3>
<p align="justify">Linguagem introduzida junto ao Macromedia FLEX, é baseando em XML,  serve para desenvolver aplicativos RIA usando o servidor FLEX, tornando  o desenvolvimento muito mais rápido do que usando o Flash, tem suporte  a css, conexão com webservices e o Flash Remoting através do  RemotObject. Até a versão 1.5, era necessário ter um servidor para  rodar uma aplicação em FLEX, agora com o lançamento da versão 2.0,  somente será necessário ter o Flex Builder e pode-se distribuir o swf  gerado. Acredito que isso ajudará a aumentar a popularidade do FLEX  junto aos desenvolvedores.</p>
<p><a href="http://labs.macromedia.com/">http://labs.macromedia.com/</a><br />
<a href="http://www.macromedia.com/devnet/flex/">http://www.macromedia.com/devnet/flex/</a><br />
<a href="http://en.wikipedia.org/wiki/MXML">http://en.wikipedia.org/wiki/MXML</a></p>
<div id="codigo" title="Função teste">/*teste.mxml*/<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.macromedia.com/2005/mxml&#8221; xmlns=&#8221;*&#8221;&gt;<br />
&lt;mx:TextInput id=&#8221;source&#8221; width=&#8221;100&#8243;/&gt;<br />
&lt;mx:Button label=&#8221;Copy&#8221; click=&#8221;destination.text=source.text&#8221;/&gt;<br />
&lt;mx:TextInput id=&#8221;destination&#8221; width=&#8221;100&#8243;/&gt;<br />
&lt;/mx:Application&gt;</div>
<h3><strong>XUL</strong></h3>
<p align="justify">XML User Interface Language, pronuciado como “zool”, é um padrão  aberto criado pelo grupo de desenvolvedores do navegador Mozilla,  implementado pela Mozilla Framework, que define janelas, botões, menus  e uma grande coleção de objetos de interface de usuário para aplicações  desktop em notação XML e usa JavaScript para definir roteiros e  automação. Roda somente em navegadores baseados no Gecko engine, tem um  componente para interagir com o Flash (Zulu) e para Java (Thinlets).</p>
<p><a href="http://twiki.im.ufba.br/bin/view/XUL">http://twiki.im.ufba.br/bin/view/XUL</a><br />
<a href="http://www.mozilla.org/projects/xul/xul.html">http://www.mozilla.org/projects/xul/xul.html</a><br />
<a href="http://pt.wikipedia.org/wiki/XUL">http://pt.wikipedia.org/wiki/XUL</a></p>
<div id="codigo" title="Função teste">/*hello.xul*/<br />
&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;window xmlns=&#8221;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&#8221; title=&#8221;Hello&#8221;&gt;<br />
&lt;description value=&#8221;Hello World&#8221;/&gt;<br />
&lt;/window&gt;</div>
<h3><strong>XAML</strong></h3>
<p align="justify">Extensible Application Markup Language(pronuncia-se “zemel”) &#8211; Possui  muitas das potencialidades das tecnologias anteriores. O XAML também é  a forma marcação para acessar o modelo de objetos do novo Windows  Presentation Foundation e você pode ainda criar seus próprios objetos e  acessá-los através do XAML. O Microsoft Vista, WinFX e muitas outras  tecnologias já usam o XAML. Requer o <a href="http://www.microsoft.com/downloads/details.aspx?familyid=BD3BA2D5-6ADB-4FB2-A3AA-E16A9EA5603F&amp;displaylang=en">WinFX SDK</a>.</p>
<p><a href="http://www.xaml.net/">http://www.xaml.net/</a><br />
<a href="http://www.linhadecodigo.com.br/artigos.asp?id_ac=843&amp;pag=1">http://www.linhadecodigo.com.br/artigos.asp?id_ac=843&amp;pag=1</a><br />
<a href="http://pt.wikipedia.org/wiki/XAML">http://pt.wikipedia.org/wiki/XAML</a><br />
<a href="http://msdn.microsoft.com/windowsvista/about/">http://msdn.microsoft.com/windowsvista/about/</a></p>
<div id="codigo" title="Função teste">/*ola_mundo.xaml*/<br />
&lt;canvas xmlns=&#8221;http://schemas.microsoft.com/winfx/avalon/2005&#8243; Background=&#8221;LightGray&#8221;&gt;<br />
&lt;textblock FontSize=&#8221;24&#8243;&gt;<br />
Alô Mundo!<br />
&lt;/textblock&gt;<br />
&lt;/canvas&gt;</div>
<p>Algumas aplicações e sites:</p>
<div id="destaque">
<p><a href="http://www.dotpix.com.br">Dotpix</a> (AJAX)<br />
<a href="http://maps.google.com/">Google Maps</a> (AJAX)<br />
<a href="http://maps.google.com/">Yahoo Maps</a> (FLEX) &#8211; há opção para desenvolver em AJAX<br />
<a href="http://www.netvibes.com/">Netvibes</a> (AJAX)<br />
<a href="https://gtalkr.com/">Gtalkr</a> (FLASH)<br />
<a href="http://zulu.netspedition.com/zulu/main/overview.shtml">Zulu</a> (Flash e XUL)<br />
<a href="http://www.gmail.com">Gmail</a> (AJAX)<br />
<a href="http://www.laszlomail.com/lzmail/">LaszloMail</a> (Laszlo)<br />
<a href="http://novo.dotpix.com.br/ria/flexstore/flexstore.swf">Flex Store (sem comentarios)</a><br />
<a href="http://reservations.ihotelier.com/onescreen.cfm?hotelID=2054">Broadmoor Hotel (Flash)</a></p>
<p><a href="http://www.osfederais.com/players/"><strong>Para visualizar alguns exemplos é necessário o Flash Player 8.5</strong></a></p>
</div>
<p align="justify">Vimos algumas maneiras existentes de desenvolver em R.I.A, cada maneira tem sua linguagem ou SDK para produção,  ao longo do tempo procurarei mostrar como utilizar o Flash e  Flex para criação de RIA&#8217;s.</p>
<p align="justify"><strong>Autor: Leonardo França &#8211; Colunista R.I.A do Portal MXSTUDIO</strong></p>
<p>Qualquer dúvida envie um email para <a href="http://mce_host/mx_novo/wp-admin/maito:leo@dotpix.com.br" target="new">leo@dotpix.com.br</a> ou acesse o nosso <a href="http://forum.mxstudio.com.br" target="forum">fórum</a> e visitem meu <a href="http://www.dotpix.com.br">BLOG</a><a href="http://forum.mxstudio.com.br" target="forum"> </a></td>
</tr>
</tbody>
</table>
<p><script type="text/javascript"><!--
FormatAS();
// --></script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/ria/miltiplas_faces_de_ria_/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

