..:: MX Studio Fóruns ::..: mover mc com um botao, porem ja com drag mc - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

mover mc com um botao, porem ja com drag mc

#1 User is offline   norige 

  • Group: Membros
  • Posts: 13
  • Joined: 10-February 09

Posted 10 February 2009 - 10:00 AM

Olá, eu estou fazendo um site em que eu coloquei uma função para mover um mc com drag. Agora eu preciso q um botão que eu fiz leve o MC até um determinado ponto, e funciona, ta beleza, porém quando eu arrasto o mc com o drag uma vez, o botão já não funciona mais. Deve estar havendo um conflito entre as duas actions. Vou postar elas aqui, se alguém souber o q tem q mudar no action do botão eu agradeço muitíssimo.

action para drag o MC:

clip.onRelease = clip.onReleaseOutside = function () {
this.ox_final = _root._xmouse;
this.oy_final = _root._ymouse;
terminaDrag(this);
};
function comecaDrag(mc) {
mc.onEnterFrame = function() {
mc.ox += ((_root._xmouse - this.difx) - mc.ox) / 8;
mc.oy += ((_root._ymouse - this.dify) - mc.oy) / 8;
mc._x = mc.ox;
mc._y = mc.oy;
};
}
function terminaDrag(mc) {
mc.onEnterFrame = function() {
mc.ox += ((mc.ox_final - this.difx) - mc.ox) / 8;
mc.oy += ((mc.oy_final - this.dify) - mc.oy) / 8;
mc._x = mc.ox;
mc._y = mc.oy;
cursor_move_mc.gotoAndStop(1);
};
}

Action para mover o MC para um ponto com o botão:

onClipEvent (enterFrame) {
_root.btn.onRelease = function() {
posx = -1890;
//posx é a posição _x futura e o posy é a posição _y futura
posy = -200;
};
//quanto maior for o numero q eh multiplica no final (.1) mais rapido sera o movimento!
_x = _x+(posx - _x)*.1;
_y = _y+(posy - _y)*.1;
}

0

#2 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 10 February 2009 - 11:26 AM

blz?

Bem vindo ao fórum!

Fiz uma outra idéia de código baseando no seu exemplo. Vê se isso ajuda.

Pra esse exemplo tem apenas 2 MCs no stage com instâncias:
clipMc
btnMc


No 1º frame da timeline, insira o código:
CÓDIGO
//importa classe de animação
import mx.transitions.Tween;
import mx.transitions.easing.*;

/*******************************
* VARIAVEIS
*******************************/
//variaveis que terão valor de posição de destino do clipMc
var posX:Number = 0;
var posY:Number = 0;


/*******************************
* EVENTOS
*******************************/

//quando clicar e quando clicar e soltar fora do mc, faça...
clipMc.onRelease = clipMc.onReleaseOutside = function () {
    terminaDrag( clipMc ); //executa função que começa arrastar o mc
}

//quando pressionar
clipMc.onPress = function(){
    comecaDrag( clipMc ); //executa função que para de arrastar o mc
}

//quando clica no botão btnMc faça,...
_root.btnMc.onRelease = function() {
    animaClip( clipMc ); //executa função pra animar o MC
}




/*******************************
* FUNÇÕES
*******************************/

//função que começa arrastar o mc
//solicita um parametro que é um MC
function comecaDrag( _mc:MovieClip ):Void {
    //evento de movimento do mouse,
    //enquanto estiver movimentando no stage, faça...
    _root.onMouseMove = function(){
        //verifica constantemente...
        _mc.onEnterFrame = function(){
            _mc._x += ((_xmouse - _mc._width/2) - _mc._x)*0.4;
            _mc._y += ((_ymouse - _mc._height/2) - _mc._y)*0.4;
        }
    }
    updateAfterEvent(); //atualiza depois do evento para melhorar a animação do objeto
}

//função que para de arrastar o mc
//solicita um parametro que é um MC
function terminaDrag( _mc:MovieClip ):Void {
    delete _root.onMouseMove; //apago o evento de movimento de mouse
    delete _mc.onEnterFrame; //apago o evento enterFrame
}


//Action para mover o MC para um ponto com o botão:
//solicita um parametro que é um MC
function animaClip( _mc:MovieClip ):Void{
    new Tween( _mc, "_x", Strong.easeInOut, _mc._x, posX, 1, true );
    new Tween( _mc, "_y", Strong.easeInOut, _mc._y, posY, 1, true );
}


Ex:
http://rapidshare.com/files/196356864/mouse_as2.fla.html

Usei a classe Tween pra fazer movimento por código:
http://blog.ericksouza.com/30/
http://www.mxstudio.com.br/flash/estudo_de...__classe_tween/


Abraços.
0

#3 User is offline   norige 

  • Group: Membros
  • Posts: 13
  • Joined: 10-February 09

Posted 10 February 2009 - 12:08 PM

Obrigado Rodrigo,

blza, é bem isso que eu queria. O único problema é que quando começo a arrastar o clipMc ele primeiro vai a um mesmo ponto fixo e só depois começa a arrastar, ao invés de começar a arrastar do ponto onde estava. No mais tá perfeito. O arq de exemplo eu não consegui abrir no meu flash cs3, está em CS4?
0

#4 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 10 February 2009 - 12:16 PM

Salvei o exemplo na versão CS3:
http://rapidshare.com/files/196373505/mouse_as2.fla.html

Abraços.
0

#5 User is offline   norige 

  • Group: Membros
  • Posts: 13
  • Joined: 10-February 09

Posted 10 February 2009 - 01:34 PM

OK Rodrigo, agora eu abri. Mas o problema continua. O q rola é q quando vc clica no mc pra começar a arrastar, o mc é centralizado com o mouse. No meu caso o mc é todo o stage do site, bem grande, então ele sai da posição onde estava e centraliza com a posição do mouse. O certo seria ele começar a ser arrastado exatamente do ponto onde estava. Bem parecido com este site aqui http://www.conceptm.nl/

Agradeço de qualquer maneira

abrx.
0

#6 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 10 February 2009 - 02:39 PM

Ahh entendi.

Só estou com dificuldades pra fazer efeitos de desaceleração como no exemplo do site.

Por enquanto, usei o startDrag e stopDrag mesmo. Não é igual, mas acho que ajuda em algo.


Atualiza o AS daquele exemplo que te passei:
CÓDIGO
//importa classe de animação
import mx.transitions.Tween;
import mx.transitions.easing.*;

/*******************************
* VARIAVEIS
*******************************/
//variaveis que terão valor de posição de destino do clipMc
var posX:Number = 0;
var posY:Number = 0;


/*******************************
* EVENTOS
*******************************/

//quando clicar e quando clicar e soltar fora do mc, faça...
clipMc.onRelease = clipMc.onReleaseOutside = function () {
    terminaDrag( clipMc ); //executa função que começa arrastar o mc
}

//quando pressionar
clipMc.onPress = function(){
    comecaDrag( clipMc ); //executa função que para de arrastar o mc
}

//quando clica no botão btnMc faça,...
_root.btnMc.onRelease = function() {
    animaClip( clipMc ); //executa função pra animar o MC
}




/*******************************
* FUNÇÕES
*******************************/

//função que começa arrastar o mc
//solicita um parametro que é um MC
function comecaDrag( _mc:MovieClip ):Void {
    _mc.startDrag(false);
}

//função que para de arrastar o mc
//solicita um parametro que é um MC
function terminaDrag( _mc:MovieClip ):Void {
    _mc.stopDrag();
}


//Action para mover o MC para um ponto com o botão:
//solicita um parametro que é um MC
function animaClip( _mc:MovieClip ):Void{
    new Tween( _mc, "_x", Strong.easeInOut, _mc._x, posX, 1, true );
    new Tween( _mc, "_y", Strong.easeInOut, _mc._y, posY, 1, true );
}


Abraços.
0

#7 User is offline   norige 

  • Group: Membros
  • Posts: 13
  • Joined: 10-February 09

Posted 10 February 2009 - 02:57 PM

Valew Rodrigo,

agora ta ok, eu nem falei da desaceleração pq achei q ia abusar jah. Cara, na verdade acabei de ver q tem um problema sério pra mim. Eu tenho uns botoes dentro do meu clipMc, e eles nao funcionam dessa maneira. Nao sei se vai dar certo assim. Encrenca.

abx.
0

#8 User is offline   norige 

  • Group: Membros
  • Posts: 13
  • Joined: 10-February 09

Posted 10 February 2009 - 04:17 PM

Bom, se alguém souber como fazer um botao funcionar dentro desse clipMc seria ótimo, pq meu conhecimento em AS já ficou pelo caminho...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)