logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Abr 28

Animação com sistema de partículas. Parte I.

Escrito por Flavia Moreira em Animação, Animacão dinamica, Animações, Blend, blog silverlight, blogsilverlight, C#, Expression Blend, Microsoft, Microsoft Blend, Microsoft Silverlight, Particulas, silverlight, Silverlight 2, Silverlight 3, Tutoriais, Visual Studio, Visual Studio 2008 @ 04 28th, 2009 | via http://flamoreira.wordpress.com | Sem comentários
Flavia Moreira
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Neste primeiro artigo, eu vou mostrar o inicio de uma animação dinâmica com sistema de partículas básica. A Figura 1.0 mostra o resultado final da animação, porém não é possível ter uma noção ideal com uma Imagem. Sem duvidas é um bom começo para quem quer aplicar mais conhecimentos em animações em Silverlight.

image

Figura 1.0 – Sistemas de partículas básica

1- Inicie um projeto Silverlight, forneça o nome de SistemaParticulas

2- No arquivo Page.xaml ou MainPage.xaml, adicione o código Xaml, conforme Listagem 1 . O MainPage, caso já esteja utilizando a versão Silverlight 3.

<UserControl x:Class=”SistemaParticulas.MainPage”

xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”

Width=”1024″ Height=”768″>

<UserControl.Resources>

<Storyboard x:Name=”Move” Duration=”00:00:00″/>

</UserControl.Resources>

<Canvas x:Name=”LayoutRoot” Width=”800″ Height=”600″ Background=”#FF000000″ RenderTransformOrigin=”0.5,0.5″>

</Canvas>

</UserControl

Listagem 01 – Usando um Storyboard

3- Inclua dentro do projeto Silverlight outro UserControl, e forneça o nome de Particulas.xaml

4- No arquivo Particulas.xaml, adicione o código conforme mostrado na Listagem 02.

<UserControl x:Class=”SistemaParticulas.Particulas”

xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”

Width=”70″ Height=”70″>

<Canvas x:Name=”LayoutRoot” RenderTransformOrigin=”0.5,0.5″>

<Canvas.RenderTransform>

<TransformGroup>

<ScaleTransform x:Name=”Escala” ScaleY=”1″ ScaleX=”1″/>

<SkewTransform/>

<RotateTransform/>

<TranslateTransform X=”0″/>

</TransformGroup>

</Canvas.RenderTransform>

<Ellipse x:Name=”eParticula” Fill=”#FF29A526″ Stroke=”#FF000000″ Height=”70″ Width=”70″/>

</Canvas>

</UserControl>

Listagem 02 – Objeto do tipo Ellipse com suas transformações

Na Listagem 02, você pode visualizar que foi adicionado um objeto do tipo ellipse, e cujo nome é eParticula, e para ela adicionada as transformações.

5- No codeBehind Particula.xaml.cs, adicione as propriedades, como mostra a Listagem 03.

namespace SistemaParticulas

{

public partial class Particulas : UserControl

{

public int TempoVida { get; set; }

public int Idade { get; set; }

public Point Velocidade;

public Particulas()

{

InitializeComponent();

}

}

}

Listagem 03 – Propriedades para a Partícula

As partículas devem possuir uma idade, um tempo de vida e uma velocidade. Note que a velocidade é do tipo Point.

6- Abra o Page.xaml.cs ou MainPage.xaml.cs. Adicione uma variável do tipo inteiro, uma lista do Tipo Particulas e um objeto do tipo Random. A Listagem 04 traz a codificação.

private List<Particulas> Particulas;

private int _qtParticulas = 150;

private Random rand = new Random()

Listagem 04 – Lista e Objetos

7- Agora, será criado um método para criar as partículas, forneça o nome do método, tal como, CriarParticulas. Na Listagem 05, você pode observar a codificação sem grandes novidades.

private void CriarParticulas(int _qtParticulas){

for (int i = 0; i < _qtParticulas; i++) {

Particulas particulas = new Particulas();

Canvas.SetLeft(particulas, rand.Next((int)LayoutRoot.Width));

Canvas.SetTop(particulas, rand.Next((int)LayoutRoot.Width));

LayoutRoot.Children.Add(particulas);

}

Listagem 05 – Adicionando as partículas dentro do LayoutRoot

Analisando o código da Listagem 05, é possível observar, que apenas foi feito a Instancia da classe Particulas e adicionada dentro do LayoutRoot, que nada mais é do que um Container Canvas, Neste momento, observe seu Arquivo Page.xaml ou MainPage.Xaml que o container é Canvas. Os métodos SetLeft e SetTop apenas delimitam o espaço das particulas dentro do LayoutRoot, lembre-se que a ellipse é atachada dentro do Canvas, ela depende da propriedade Left e Top. A variavel _qtParticulas, apenas limita a quantidade de particulas dentro do LayoutRoot.

8- Dentro do Construtor da página Page ou MainPage, chame o método CriarParticulas, conforme a Listagem 06.

public MainPage()

{

InitializeComponent();

CriarParticulas(numParticulas);

}

Listagem 06 – Chamando método

9- A Figura 02, mostra como deve estar o desenvolvimento do sistema de partículas.

clip_image002

Figura 02 – Aplicação executada no navegador

10- Agora vamos adicionar para as partículas, algumas novas propriedades, tal como, a cor, a opacidade e o tamanho. E também, adicionar valores para as propriedades, velocidade e tempo de vida. A Listagem 07 traz a codificação para o método CriarParticulas.

private void CriarParticulas(int _quantidade)

{

for (int i = 0; i < _quantidade; i++)

{

Particulas particulas = new Particulas();

Canvas.SetLeft(particulas, rand.Next((int)LayoutRoot.Width));

Canvas.SetTop(particulas, rand.Next((int)LayoutRoot.Width));

byte[] color = new byte[3];

rand.NextBytes(color);

Color c = Color.FromArgb(255, color[0], color[1], color[2]);

particulas.eParticula.Fill = new SolidColorBrush(c);

particulas.Opacity = rand.NextDouble();

particulas.Escala.ScaleX = particulas.Escala.ScaleY = rand.NextDouble();

if (particulas.Escala.ScaleX < .25)

particulas.Escala.ScaleX = particulas.Escala.ScaleY = .25;

particulas.Velocidade.X = rand.Next(-5, (int)5);

particulas.Velocidade.Y = rand.Next(-5, (int)5);

if (particulas.Velocidade.X == 0) particulas.Velocidade.X = 2;

if (particulas.Velocidade.Y == 0) particulas.Velocidade.Y = 2;

particulas.TempoVida = rand.Next(120);

//Particulas.Add(particulas);

LayoutRoot.Children.Add(particulas);

}

}

Listagem 07 – Adicionando propriedades e valores

Analisando o código da Listagem 07, para a cor utilizamos o tipo Byte, pois a struct do tipo Color recebe valores do tipo Byte. Evidentemente, quem irá receber o valor do tipo Color, é a eParticula, a qual adicionada no arquivo Particulas.xml.

11- A Figura 03 mostra como deve estar à aplicação.

clip_image004

Figura 03 – Aplicação executada no navegador

Bem, eu vou parando por aqui.

Até o segundo artigo.

Abraços

Flávia Moreira

Abr 28

Tutorial – Parte I – MTBRanking – Definindo a estrutura de dados

Escrito por Ricardo Cerqueira em Flex, Tutorial @ 04 28th, 2009 | via http://www.rcerqueira.com | Sem comentários
Ricardo Cerqueira
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá, pessoal, finalmente comecei o tutorial, neste primeiro artigo da série iremos criar a base de dados que irá guardar as informações do sistema, primeiro defini o nome do sistema como MTBRanking, estarei utilizando o banco de dados MySQL 5, então comecem a criar a base conforme imagem abaixo.

Create table ciclista (
id_ciclista Int NOT NULL [...]

Abr 28

Palestra FloripaFlex – Integrando Flex e PHP

Escrito por Eduardo Kraus em Palestra, Palestra Flex @ 04 28th, 2009 | via http://blog.mxml.com.br | Sem comentários
Eduardo Kraus
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

É com grande satisfação que venho ao Blog hoje a noite para informar que irei ministrar uma palestra de integração Flex com PHP.

Para aqueles que estão na área do PHP e desejam aprender mais esta tecnologia, é uma boa oportunidade para mais conhecimento. Para aqueles programadores Flex que desejam aprender esta integração usando remoteObject do AMFPHP é uma boa oportunidade de aprendizado.

A palestra tem por objetivo apresentar o Flex aos programadores PHP e a facilidade em trabalhar com RemoteObject. Demonstar a integração do Flex com PHP e PHP+MySql utilizando AMFPHP e uma comparação com as três formas de integração. Uma breve abordagem do AMFPHP e suas configurações. E finalizando falar sobre segurança do Flex com PHP via AMFPHP.

Para mais informações,

http://groups.adobe.com/posts/efe18347a2

PS: se tudo der certo, a palestra será transmitida Via Web e depois disponibilizada no blog para aqueles que não conseguiram assistir no dia.

Após a palestra, estarei publicando alguns exemplos no Blog da integração via RemoteObject com AMFPHP e FluorineFX e quem sabe BlazeDS.

Também esta sendo preparado alguns exemplo de Flex com FMS e Red5 (Chat, Vídeo e sincronização de ambientes). também esta sendo desenvolvido alguns exemplos de RTMP com FluorineFX.

Abr 27

Flex/AS3 – Singleton+EventDispatcher = Application Auto-Refresh

Escrito por Mário Santos em Ria's Geral @ 04 27th, 2009 | via http://msdevstudio.com/blog | Sem comentários
Mário Santos
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Bem, este post vai ser um bocado extenso, mas tenho a certeza que vai ser muito util como me foi a mim. Um dos problemas que tinha na minha aplicação (CRM) que usa apenas PopUp Windows (TitleWindow) era fazer um refresh à listagem de clientes sempre que um cliente novo fosse adicionado. Isto também se aplicava aos produtos, fornecedores e mais…

Coloquem o seguinte caso:

Um utilizador do CRM têm que fazer um orçamento a um cliente, logo abre o menu “Orçamentos” e escolhe “Novo”. Cria o seu orçamento e só depois é que vai inserir o cliente atravez do seu código, ou atravez de uma caixa de procura ( “Procura Clientes” ) que vai listar todos os clientes, então vê nessa janela “Procura Clientes” que o cliente não existe na base de dados. Decide então ir ao menu “Clientes” e selecionar “Novo”, preenche as devidas informações e clica em guardar… o cliente é adicionado, ele fecha a janela e percorre a janela aberta “Procura Clientes” e o cliente que ele acaba de inserir não se encontra na lista. Este era o problema.

1. O Problema – Porquê que isto acontece?
Simples, como a janela que lista os clientes estava aberta antes do novo cliente ser adicionado, ela apenas listou os clientes existentes na altura da sua abertura.

2. Soluções:
2.1. Criar um timer para refrescar a chamada ao backend, altamente desaconselhavel, visto que ciclicamente seriam feitas chamadas remotas o que aumentaria em muito os gastos de memória e mesmo assim o timer teria sempre um intervalo que poderia não coincidir com o adicionar do novo cliente.
2.2. Ao adicionar um novo cliente, verificar se a janela de clientes está aberta e se estiver criar uma função para fazer o refesh e buscar os dados mais recentes do backend, mais lógica mas no entanto confusa porque teriamos andar a verificar e controlar todos os estados do popup, e se for neecssário informar mais de que uma janela desta actualização teriamos o dobro do trabalho.

Mas então como solucionar? Também pensei bastante nisso e até pedi uma dica ao Fabio Vedovelli e ele também me propos a mesma dica do 2.2. mas eu queria uma solução mais prática e então lembrei-me das classes singleton. Se pensar-mos bem um class singleton como usa sempre a mesma instancia ela é sempre a mesma onde quer que seja usada certo? Comentei com o Ved que talvez fosse possivel propagar um evento interno pela class singleton e escutar esse evento em qualquer lado da aplicação desde que escutasse esse evento… e nada como testar… decidi começar a fazer uma implementação de uma classe singleton que fizesse isto… eis a solução:

2.3. Usar uma class singleton para propagar um evento para varios “alvos” informado esses alvos de determinada acção. Neste caso informando que foi adicionado um novo cliente.

(…)
Leia o resto de Flex/AS3 – Singleton+EventDispatcher = Application Auto-Refresh (359 palavras)


© Mário Santos em TSW – That Should Work, 2009. |
Link Permanente |
4 comentarios |
Adicionar ao
del.icio.us -
Stumble it -
Google Bookmark -
technorati


Mais artigos relacionados nas categorias: actualizar, auto, dispatch, event, Flex, refresh, singleton, update



Abr 27

Flex/AS3 – Truques E Dicas #10 – DP filterFunction

Escrito por Mário Santos em Ria's Geral @ 04 27th, 2009 | via http://msdevstudio.com/blog | Sem comentários
Mário Santos
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Este é mais um dos exemplos que já muita gente usa mas que outros tantos não conhecem… Trata-se da propriedade filterFunction presente na class ArrayCollection.

Num dos meus projectos tinha a necessidade de procurar entre 2500 entradas da base de dados alguns elementos e queria faze-lo em “real-time” ou seja, assim que o utilizador começar a escrever num campo de procura, a minha DataGrid começa a ser filtrada pelas letras/palavras inseridas na caixa de procura… a cada novo caracter introduzido a tabela seria filtrada por determinada ordem…

Claro que não é a tabela que vou filtrar, mas sim o seu DataProvider. Para já definidos alguns pontos como:
Caixa de procura e o listener às mudanças:

<mx:TextInput x="10" y="33" width="254" change="iniciaProcura()" id="procura"/>

o nosso dataProvider que é “imaginariamente” composto pelos campos “nome”, “prenome”, “endereco” e “telefone”:

[Bindable]
private var meuDP:ArrayCollection;

que está previamente preenchido com 2500 resultados e atribuido a uma datagrid.
(…)
Leia o resto de Flex/AS3 – Truques E Dicas #10 – DP filterFunction (207 palavras)


© Mário Santos em TSW – That Should Work, 2009. |
Link Permanente |
3 comentarios |
Adicionar ao
del.icio.us -
Stumble it -
Google Bookmark -
technorati


Mais artigos relacionados nas categorias: array collection, as3, dataGrid, exemplo, filter, filtra, Flash, Flex, function, procura



Abr 25

Conheça o DreamSpark!

Escrito por Robson Fernandes em SilverLight - Estudantes @ 04 25th, 2009 | via http://www.riasoftware.com.br/blog/ | Sem comentários
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

dream

Informação valiosa para todos os estudantes de nível técnico ou universitário. Todos já conhecemos programas de licenciamento da Microsoft direcionados para a comunidade acadêmica como o MSDNAA, IT Academy, School Agreement e Campus Agreement. Todos esses programas representam um grande incentivo para as instituições de ensino. Através deles, as universidades e escolas podem oferecer aos seus alunos acesso aos softwares Microsoft gratuitamente. Contudo, muitas instituições ainda não conhecem esses programas, outras não conseguem operacionalizar o acesso aos softwares para todos os seus alunos.

Pensando nisso, a Microsoft criou o programa DreamSpark. Através deste programa, qualquer estudante pode ter acesso gratuito aos softwares Microsoft. E não estamos falando de versões limitadas ou aquelas que já são distribuídas gratuitamente como as Express Editions, nós estamos falando aqui das versões completas de edições profissionais das ferramentas Microsoft. Por exemplo, os estudantes podem fazer download do Visual Studio 2008 Professional Edition sem nenhum custo ou limitação. Basta cadastrar-se no programa e comprovar seu vínculo com uma instituição de ensino reconhecida pelo MEC. A cada 12 (doze) meses a Microsoft solicitará a comprovação deste vínculo estudantil. Esta é a única exigência!

Veja os softwares que estão disponíveis neste programa:

  • Visual Studio 2008 Professional Edition
  • Visual Studio 2005 Professional Edition
  • Expression Studio 2 (includes Web, Blend, Media e Design)
  • SQL Server 2008 Developer Edition
  • Windows Server 2008 Standard Edition
  • IT Academy Student Pass
  • Robotics Developers Studio 2008

Para maiores informações acesse o website do programa. Divulgue para seus amigos.

Texto retirado do blog do MVP Carlos Mattos:
http://msmvps.com/blogs/cmattos/archive/2008/11/23/conhe-231-a-o-dreamspark.aspx

Abr 25

Várias técnicas de melhores práticas e otimização em ActionScript 3.0 e Flex.

Escrito por Jose Carlos Fiel em Adobe Flex, Melhores Práticas, Otimização @ 04 25th, 2009 | via http://blog.josecarlosfiel.com.br | Sem comentários
Jose Carlos Fiel
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Bom a pedido de muitos para que eu lançasse logo meu primeiro post foram muitas e aqui está. Gostaria de agradecer meu colega Ricardo por me enviar um belo post do Sean Moore, publicado no InsideRIA, sobre o trabalho de otimizar e descobrir melhores práticas em ActionScript 3.0 e Flex, usando o Flex Profiler. Achei bastante interessante e resolvi brevemente divulgar essas técnicas e traduzi-las.

Antes de mostrar as técnicas, gostaria de falar rapidamente sobre  a perspectiva Flex Profiler (imagem a seguir) dentro do Flex Builder 3, usada pelo Moore,  ajuda a você ter uma noção de uso de memória, consumo de cada propriedade, chamada de método e instanciação de objetos dentro de sua aplicação.

 

Imagem da perspectiva Flex Profiler

Imagem da perspectiva Flex Profiler

Bom pode ter certeza que estarei dedicando um post sobre o Flex Profiler, mas por enquanto vamos ao que interessa neste post, que são as técnicas de melhores práticas e otimização.

Seguem elas:

1. Evite usar o operador new quando for criar Arrays [...]

Abr 24

Simulado do Exame Adobe Flex 3 Developer

Escrito por Ricardo Cerqueira em Flex @ 04 24th, 2009 | via http://www.rcerqueira.com | Sem comentários
Ricardo Cerqueira
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Quer saber como está o seu conhecimento no Flex 3? quer tentar fazer o exame de certificação da Adobe ? então baixe esse programinha em AIR e faça o simulado (em inglês).
Boa sorte!

Abr 24

Poster Silverlight 2.

Escrito por Robson Fernandes em SilverLight - Resources @ 04 24th, 2009 | via http://www.riasoftware.com.br/blog/ | Sem comentários
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Para aqueles que quiserem conhecer mais sobre a tecnologia Silverlight 2.
O Brad Abrams disponibilizou um poster em seu Blog com todos os detalhes para download.

silverlight-mix08

Abr 23

Belo mini-site: o mapa mundi de como a Microsoft faz diferença

Escrito por rene em Microsoft, responsabilidade social, silverlight, UAU, user experience, visualizacao @ 04 23rd, 2009 | via http://blogs.msdn.com/renedepaula/ | Sem comentários
rene
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

  muito bacana: você pode navegar pelo mapa e descobrir histórias, pode filtrar por assuntos, programas, ver informações econômicas… bela maneira de mostrar informação, estimulando a exploração e descoberta: Microsoft® Local Impact Map…(read more)

« Entradas anteriores | Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2790 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com