Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flasher12

Colisão de objeto + Movie Clip

Recommended Posts

Olá, eu estou com um problema no action script 3.0 do Flash cs4, sabendo que :

 

Mouse.hide();
addEventListener(Event.ENTER_FRAME,movecursor);
function movecursor(event:Event){
cursor.x=mouseX;
cursor.y=mouseY;
}
é para personalizar o mouse e :
addEventListener(Event.ENTER_FRAME, checacolisao);
function checacolisao(event:Event) {
if (cursor.hitTestObject(colisao)) {
var meutexto:TextField = new TextField();
meutexto.text = "GOOOL";
meutexto.x=250;
meutexto.y=350;
addChild(meutexto);
}
}
para detectar a colisão e aparecer a mensagem "GOOOL", eu queria saber como ficaria para quando detectar a colisão ir para outro frame de outra camada ou qualquer coisa do tipo...
Aguardo respostas de alguém :D obg.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá flasher, vou por um código pra ficar mais fácil de entender

 

 

if (pecaatual.sensor.hitTestPoint(pecaatual.x,pecaatual.y,true)) {
pecaatual.mouseEnabled = false;
TweenLite.to(pecaatual, 0.3, {x: pecaatual.sensor.x, y: pecaatual.sensor.y});

nesse meu caso é um quebra cabeça, mas a comparação é a mesma, esse sensor é um filho que esta dentro dos meus MC, é ele quem eu comparo com o encaixe ou no seu caso com a posição da rede, se o meu sensor colidir com o pecaatual(que não precisa ser dinâmico no seu caso, pode ser a sua rede) então ele não vai mais deixar eu clicar na peça, e vai encaixa-la em cima da peça atual.

 

o que interessa pra você no caso é só o if, dai você pode partir pra um gotoAndStop, ou o que seja.

Espero ter ajudado

 

embaixo esta o código todo, comentado para servir de pesquisa

Abraço

import flash.events.MouseEvent;
import flash.display.MovieClip;
import com.greensock.TweenLite;
import com.greensock.*; 
import com.greensock.easing.*;
import flash.media.Sound;

//Tocar musica de fundo, repetindo do segundo 1 por 100 vezes
var musicadefundo:Sound = Sound (new musicafundo());
musicadefundo.play(1000, 10);
var musicamola:Sound = Sound(new mola());


//Declaração das variaveis
var cont:uint = 0;
var qtdpecas:uint = 3;
var pecaatual:MovieClip;


//chamada da função de configuração
inicio()

//função de configuração
function inicio():void{
//laço para fazer as 3 peças com apenas 1 função
for (var i:uint=0; i<qtdpecas; i++){

this["peca" + i].alpha = 0.5;
//armazena a posição original da peça
this["peca" + i].posX = this["peca" + i].x;
this["peca" + i].posY = this["peca" + i].y;

//dar valor ao sensor
this["peca" + i].sensor = this["sensor" + i];

//tratar peca como botão (aparecer a mãozinha no lugar do cursos)
this["peca" + i].buttonMode = true;

//ignora os filhos da peca
this["peca" + i].mouseChildren = false;

//adicionando ouvintes
this["peca" + i].addEventListener(MouseEvent.MOUSE_DOWN, onPecaMouseDown,false, 0, true);

}

}

//tratamento do mouse

function onPecaMouseDown(e:MouseEvent):void{
//armazenar peca atual
pecaatual = MovieClip(e.currentTarget);
//adiciona o ouvinte
pecaatual.addEventListener(MouseEvent.MOUSE_UP, onPecaMouseUp, false, 0, true);
//começa a dragar(arrastar)
pecaatual.startDrag(true);
}

function onPecaMouseUp(e:MouseEvent):void{
//para de dragar
pecaatual.stopDrag();
// Removo o ouvinte do stage
stage.removeEventListener(MouseEvent.MOUSE_UP, onPecaMouseUp);
//testa a colisão
if (pecaatual.sensor.hitTestPoint(pecaatual.x,pecaatual.y,true)) {
pecaatual.mouseEnabled = false;
TweenLite.to(pecaatual, 0.3, {x: pecaatual.sensor.x, y: pecaatual.sensor.y});


// Aumento o contador para saber o final da atividade
cont++;
if (cont == qtdpecas) {
finalizaatividade();
}


} else {
TweenLite.to(pecaatual, 0.7, {x: pecaatual.posX, y: pecaatual.posY, ease:Elastic.easeOut});
musicamola.play();
}
}

function finalizaatividade():void{

peca0.alpha = 1;
peca1.alpha = 1;
peca2.alpha = 1;


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.