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;
}
Publicidade
|
|
Page 1 of 1
mover mc com um botao, porem ja com drag mc
#2
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:
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.
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 );
}
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.
#3
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?
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?
#5
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.
Agradeço de qualquer maneira
abrx.
#6
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:
Abraços.
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 );
}
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.
#7
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.
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.
#8
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...
Share this topic:
Page 1 of 1
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Versão de testes do sistema Mac OS X 10.5 vaza par
IDG Now! - Computação Pessoal |
Notícias |
TiTi Celestino
|
|
|
|
Me ajundem estou começando agora!
Gostaria de dicas... |
Fireworks |
Renan Azevedo
|
|
|
|
Projeto de papel eletrônico muda cor dos gadgets com botão
|
Notícias |
Notícias
|
|
|
|
Como criar uma apresentação (meio q slides) ?
|
Web Standards |
kadinho256
|
|
|
|
31% dos lares brasileiros têm computador com internet, diz IBGE
|
Notícias |
Notícias
|
|
|
|
Zuinn.com.br
avaliem por favor |
Avaliação |
Bruno Tavares
|
|
|
|
Portifólio
s2paganini.com |
Portfólio |
s2paganini
|
|
|
|
Só para Heavy User 2
problemas com busca |
Dreamweaver |
anoxia
|
|
Publicidade
|
|

Help













