Ir para conteúdo

Arquivado

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

Cassio Pires

Arrastar e soltar em um local especifico AS3.0

Recommended Posts

se alguem poder me ajudar eu queria que o objeto que eu estou arrastando que é o "quadrado_mc" depois que eu o arrasta-se com o mouse ele só soltasse e soltasse automaticamente quando ele ficasse em um outro "quadrado_base" um do memso tamanho dele é que so solte automaticamente quando ele estivesse totalmente em cima do "quadrado_base" cobrinduo totalmente. agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquise por hitTest.

 

Seu quadrado_mc, ao ser arrastado, precisa colidir com o "quadrado base".

eu ja tentei mas assim que ele colide com o "quadrado base" ele para , assim que encosta, se for no hitTestObject, e no hitTestPoin fica muito complicado achar os pontos especificos para que ele se encaixe, talvez nem dê pq eu ja tentei com varios pontos mas não coonsegui,

Compartilhar este post


Link para o post
Compartilhar em outros sites

//segue um exemplo simples. basta ajustar ao seu caso mudando o evento 'down' por move

 

meu_mc.addEventListener( MouseEvent.MOUSE_DOWN,

    function( e:Event ){

    e.currentTarget.startDrag();

    }

);

meu_mc.addEventListener( MouseEvent.MOUSE_UP,
                        
function( e:MouseEvent ) {

    e.currentTarget.stopDrag();

    if ( e.currentTarget.hitTestObject( alvo_mc ) ) {
        
        e.currentTarget.x = alvo_mc.x;
        e.currentTarget.y = alvo_mc.y;
   
    }
    
}

);

 

 

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

//segue um exemplo simples. basta ajustar ao seu caso mudando o evento 'down' por move

 

meu_mc.addEventListener( MouseEvent.MOUSE_DOWN,

    function( e:Event ){

    e.currentTarget.startDrag();

    }

);

meu_mc.addEventListener( MouseEvent.MOUSE_UP,
                        
function( e:MouseEvent ) {

    e.currentTarget.stopDrag();

    if ( e.currentTarget.hitTestObject( alvo_mc ) ) {
        
        e.currentTarget.x = alvo_mc.x;
        e.currentTarget.y = alvo_mc.y;
   
    }
    
}

);

 

 

 

[]'s

valeu deu certo, BRIGADÃO MESMO CARA ,mas não precisei modificar o DOWN por MOVE, no meu caso ficou melhor com o DOWN.

e dei uma ampliada para mais de um objeto. caso alguém se interesse.

 

meu_mc.addEventListener( MouseEvent.MOUSE_DOWN,

 

function( e:Event ){

 

e.currentTarget.startDrag();

 

}

 

);

 

meu_mc1.addEventListener( MouseEvent.MOUSE_DOWN,

 

function( e:Event ){

 

e.currentTarget.startDrag();

 

}

 

);

 

meu_mc.addEventListener( MouseEvent.MOUSE_UP,

 

function( e:MouseEvent ) {

 

e.currentTarget.stopDrag();

 

if ( e.currentTarget.hitTestObject( alvo_mc ) ) {

 

e.currentTarget.x = alvo_mc.x;

e.currentTarget.y = alvo_mc.y;

}

if ( e.currentTarget.hitTestObject( alvo_mc1 ) ) {

 

e.currentTarget.x = alvo_mc1.x;

e.currentTarget.y = alvo_mc1.y;

 

}

if ( e.currentTarget.hitTestObject( alvo_mc2 ) ) {

 

e.currentTarget.x = alvo_mc2.x;

e.currentTarget.y = alvo_mc2.y;

}

}

 

);

 

meu_mc1.addEventListener( MouseEvent.MOUSE_UP,

 

function( e:MouseEvent ) {

 

e.currentTarget.stopDrag();

 

if ( e.currentTarget.hitTestObject( alvo_mc ) ) {

 

e.currentTarget.x = alvo_mc.x;

e.currentTarget.y = alvo_mc.y;

}

if ( e.currentTarget.hitTestObject( alvo_mc1 ) ) {

 

e.currentTarget.x = alvo_mc1.x;

e.currentTarget.y = alvo_mc1.y;

 

}

if ( e.currentTarget.hitTestObject( alvo_mc2 ) ) {

 

e.currentTarget.x = alvo_mc2.x;

e.currentTarget.y = alvo_mc2.y;

}

}

 

);

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.