Mostrando postagens com marcador lab. Mostrar todas as postagens
Mostrando postagens com marcador lab. Mostrar todas as postagens

domingo, 29 de março de 2009

Trigonometria com Actionscript

"Trigonometria (do grego trigōnon "triângulo" + metron "medida") é um ramo da matemática que estuda os triângulos, particularmente triângulos em um plano onde um dos ângulos do triângulo mede 90 graus (triângulo retângulo). Também estuda especificamente as relações entre os lados e os ângulos dos triângulos; as funções trigonométricas, e os cálculos baseados nelas. A abordagem da trigonometria penetra outros campos da geometria, como o estudo de esferas usando a trigonometria esférica".
Fonte: Wikipédia - 29/03/2009 - http://pt.wikipedia.org/wiki/Trigonometria

Olá, hoje irei explicar alguns conceitos básicos de como usar a trigonometria com actionscript. Vou levar em conta que você já tem algum conhecimento em actionscript 3, ok?! Então vamos lá...

No final desse post, você vai entender facilmente como se faz:

Radianos
"O ângulo definido no centro de um círculo por um arco de circunferência com o mesmo comprimento que o raio do círculo é 1 radiano".
Fonte: Wikipédia - 29/03/2009 - http://pt.wikipedia.org/wiki/Radianos


Um radiano equivale a 57,29º, ou seja, uma círcuferência tem
6,28 radianos (360º).

No actionscript, o 0º (grau zero) começa no ponto (raio, 0) e cresce em sentido horário até (-raio, 0) formando 180º, após esse ponto, torna-se negativo (-180º) e vai diminuindo em sentido horário até o ponto (raio, 0) que é 0º (grau zero).



Tanto que se você fizer:
meuMc.rotation = 270;
trace(meuMc.rotation);
//Retorna: -90
Não tenho certeza, mas acho que os grausº no actionscript são dessa forma para facilitar a conversão para radianos. Sendo o positivo e negativo os controladores de hemisfério, o positivo +y e negativo -y.
Círculo Trigonométrico


Depois dos radiano, fica mais fácil entender a imagem acima assim...

O ponto em que a hipotenusa cruza com o perímetro da circunferência, vamos chamá-lo de P. Para calculá-lo, usamos as formulás:
Px = cosseno(radiano) * raio;
Py = seno(radiano) * raio;
Programando...
Para podermos desenhar uma simples circunferência no palco, podemos fazer assim:
var radius:Number = 100;

var circle:Shape = new Shape();
circle.graphics.lineStyle(1);
circle.graphics.moveTo(radius, 0);

for (var i:int = 0; i <= 360; i++)
{
var radian:Number = i * (Math.PI / 180);
var xPoint:Number = Math.cos(radian) * radius;
var yPoint:Number = Math.sin(radian) * radius;
circle.graphics.lineTo(xPoint, yPoint);
}
circle.graphics.endFill();
circle.x = stage.stageWidth / 2;
circle.y = stage.stageHeight / 2;
addChild(circle);
Pronto! Agora é só usar a imaginação...
Abaixo o link para o download dos fontes:
clique aqui

terça-feira, 10 de fevereiro de 2009

Binding no Flash e no Flex

Olá, vou mostrar algumas diferenças do Flash para Flex.
Como primeiro exemplo, vou ligar dois TextFields, o que você digita no de cima, é copiado para o de baixo em tempo real.

No Flash:
package
{
import fl.controls.Label;
import fl.controls.TextInput;
import flash.display.Sprite;
import flash.events.Event;

public class Flash extends Sprite
{
private var textInput1:TextInput;
private var textInput2:TextInput;
private var labell:Label;
private var label2:Label;

public function Flash()
{
criaLabels();
criarTextInputs();
criaBindable();
}

private function criarTextInputs():void
{
textInput1 = new TextInput();
textInput2 = new TextInput();
textInput1.move(70, 10);
textInput2.move(70, 40);
addChild(textInput1);
addChild(textInput2);
}

private function criaLabels():void
{
labell = new Label();
label2 = new Label();
labell.move(10, 10);
label2.move(10, 40);
labell.text = "Campo 1:";
label2.text = "Campo 2:";
addChild(labell);
addChild(label2);
}

private function criaBindable():void
{
textInput1.addEventListener(Event.CHANGE, binding);
}

private function binding(e:Event):void
{
textInput2.text = textInput1.text;
}

}

}
No Flash tive que criar uma classe para meu SWF, usei o Sprite pois no Flex também não existe "timeline". Importei as classes necessárias para eu trabalhar com TextFields e Labels. Criei, configurei e adicionei no palco os componentes que queria usar.
Depois tive que fazer o "binding", criei um "listener" para ouvir quando o valor do campo de cima fosse alterado e um "callBack" para pegar o valor do campo de cima e atribuir ao de baixo.
Pronto, só isso... UFA!

Agora vamos ao Flex:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">
<mx:TextInput id="campo1" x="79" y="10"/>
<mx:TextInput x="79" y="40" text="{campo1.text}"/>
<mx:Label x="10" y="12" text="Campo 1:"/>
<mx:Label x="10" y="42" text="Campo 2:"/>
</mx:Application>
Fiz tudo denovo, com excessão dos "imports" e que no Flash eu tive que arrastar os componetes na mão para a biblioteca. No Flex, por se tratar de um framework, ele já entende o que você está fazendo e importa os componentes e classes que serão necessários.
O "binding" são os "{" e "}", isso diz ao framework que quando o valor do "campo1" for atualizado, o valor do "campo2" será atualizado também.

Outra forma de fazer é programar actionscript 3 direto Flex, mas isso é assunto para outro post...

Download do arquivos:

quinta-feira, 29 de janeiro de 2009

Fire Developers



Teste de chamas baseadas na imagem vinda da webcam em flash.

Estrelando: Eu de preto, o braço do Luciano e o Mateus Pádua de branco.