PESQUISA: 

 

Fórum de Flash
Fórum de discussão sobre Flash moderados por especialistas.

tutoriais
Os melhores tutoriais de Flash escritos em Português.

open sources
Milhares de "open sources" devidamente catalogadas e classificadas.

jogos
Centenas de viciantes jogos desenvolvidos em Flash.

websites
Selecção dos melhores websites em Flash.

bibliotecas
Bibliotecas de software, componentes, fontes e sons para Flash.

artigos
Artigos técnicos indispensáveis para profissionais em Flash.

Newsletter
Receba todos os dias a newsletter do Flash Web Training com as principais notícias sobre tecnologia e informática.
 
Curso Online
Curso de Flash 5 e MX com acompanhamento de formadores especializados.
 
flash shopping
Online Store com os melhores produtos dedicados ao Flash.
 
conferências
Principais conferências e eventos sobre Internet e Novas Tecnologias.
 
job opportunities
Anúncios de emprego para empresas que procuram profissionais de Flash.
 
suporte técnico
Caso tenha alguma dificuldade, contacte o nosso suporte técnico.

 

 
Homepage Tutoriais Avançados

Ficha Técnica
Autor: Flash Web Training
Versão: Flash 5 e Flash Mx
Dificuldade: Avançado
Data de Publicação: 27/08/2002


Introdução

Para detectar a colisão entre duas formas circulares, usamos o teorema de Pitágoras (r2 = x2 + y2). Este tutorial indica como criar, passo a passo, uma detecção de colisão em Flash.

Ficheiro Swf

Downloads:

Flash Player icon Ficheiro Fla Tutorial em PDF
 

Passos para criar uma detecção de colisões:
Os passos seguintes vão ajudar-nos a criar uma detecção de colisões em Flash:

1. Verificar a posição

Primeiro, é necessário detectar as coordenadas x e y das duas formas circulares (circle1 e circle2); os pontos centrais.
O código para esta verificação é:

	xpos1 = getProperty ("/circle1",_x)
	ypos1 = getProperty ("/circle1",_y)
	xpos2 = getProperty ("/circle2",_x)
	ypos2 = getProperty ("/circle2",_y)

2. Obter o raio

Depois de obtermos a posição, é necessário obter também o raio das duas formas. Como tal, é necessária a largura de ambas as formas. Use o seguinte código para obter o raio.

	rad1 = getProperty ("/circle1"),_width) /2
	rad2 = getProperty ("/circle2"),_width) /2

3. Teorema de Pitágoras

Agora já temos as variáveis para usar no teorema de Pitágoras r2 = x2 + y2. Para determinar o comprimento do lado y, subtrai-se a ypos1 da ypos2 (ypos1 - ypos2). Para o comprimento do lado x: xpos1 - xpos2. Chamamos às variáveis formy e formx respectivamente.
Depois, usamos o teorema de Pitágoras para calcular o comprimento do lado mais longo, a hipotenusa(?):

	(formx * formx + formy * formy) = ?

A seguinte porção de código é a base para a detecção de colisões.
A soma dos quadrados dos dois lados (hipotenusa ao quadrado) é menor ou igual que o quadrado da soma dos raios das duas formas (que no fundo, é como se fosse o quadrado de um dos lados), mais o quadrado da soma dos raios das duas formas (que no fundo, é como se fosse o quadrado do lado restante. Esta "grande" soma, é como se fosse uma segunda hipotenusa ao quadrado.). Básicamente, quando a distância entre as duas formas (ao quadrado) for igual ou menor que a soma dos dois raios (ao quadrado), dá-se a colisão. o código é este:

	If ((formx*formx + formy*formy) <= ((rad1 + rad2)*(rad1 + rad2)) + ((rad1 + rad2)*(rad1 + rad2)))
	"/:collission" = "Sim" 
	Else 
	"/:collission" = "Não"
	End If

4. Já está!

Este não é o código exacto, apenas uma explicação da lógica usada na detecção de colisões. Depois da leitura deste tutorial, de certeza que a criação de detecções de colisões no Flash será muito mais fácil. Faz o download do .FLA para analizares o código mais detalhadamente.

 
 
Espero que este tutorial te tenha ajudado. Se tiveres alguma dúvida ou questão, não hesites em utilizar os nossos Fóruns de Discussão.
 
Bons Flashes
Bruno Gomes
bruno.gomes@flashwebtraining.com
 
« Anterior   
 
Copyright ©2002-2008 Desenvolvimento de Sites , Serviços de Web Design Todos os direitos reservados