istarlin 0 Denunciar post Postado Maio 2, 2007 Olá, Estou com um pequeno problema que venho tentando resolver a um tempo mas n consigo. Resolvi apostar nos fóruns para conseguir uma ajuda. Deem uma olhada nesse site e escolham um projeto para visualizar: http://www.cultivatorads.com/ Percebam q voce pode navegar arrastando as imagens, com um efeito suave de tween (o que nesse caso eu acredito que seja apenas uma atualizacao da posicao do movieclip, pois desconheco pelo menos ate agora uma forma de inserir tween numa acao de drag). Tentei bolar mil formas para que meu efeito se igualasse a esse mas os problemas são: - Percebam que ao comecar a arrastar, o ponto que o usuario clicou fica fixo, a imagem comeca a se mover a partir dali. - Ao soltar, o movimento e muito suave e acompanha o mouse. voce pode inclusive "lançar" a imagem para um dos lados e obter um efeito suave. Cheguei a conseguir construir uma acao em que ao soltar ele largava com um tween, mas as vezes ele travava no mouse e voltava a posicao inicial. Caso alguém saiba algo a respeito, por favor me dá uma luz ;) o> Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Maio 2, 2007 Bom, montei um esboço aqui: clip.onPress = function() { this.ox = this._x; this.oy = this._y; comecaDrag(this);};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 - mc.ox) / 8; mc.oy += (_root._ymouse - mc.oy) / 8; mc._x = mc.ox; mc._y = mc.oy; };}function terminaDrag(mc) { mc.onEnterFrame = function() { mc.ox += (mc.ox_final - mc.ox) / 8; mc.oy += (mc.oy_final - mc.oy) / 8; mc._x = mc.ox; mc._y = mc.oy; };} Ao clicar em um clip, guardamos suas posições atuais e chamamos o comecaDrag(). Quando soltarmos, as posições gravadas são a do próprio mouse. As funções aplicam uma fórmula de easing básica, que consiste em: pos_atual += (pos_final - pos_atual)/easing Quanto maior o easing, mais lenta a animação. Já dá pra brincar com isso. :P Abraço Compartilhar este post Link para o post Compartilhar em outros sites
istarlin 0 Denunciar post Postado Maio 2, 2007 Bom, montei um esboço aqui: clip.onPress = function() { this.ox = this._x; this.oy = this._y; comecaDrag(this);};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 - mc.ox) / 8; mc.oy += (_root._ymouse - mc.oy) / 8; mc._x = mc.ox; mc._y = mc.oy; };}function terminaDrag(mc) { mc.onEnterFrame = function() { mc.ox += (mc.ox_final - mc.ox) / 8; mc.oy += (mc.oy_final - mc.oy) / 8; mc._x = mc.ox; mc._y = mc.oy; };}Ao clicar em um clip, guardamos suas posições atuais e chamamos o comecaDrag(). Quando soltarmos, as posições gravadas são a do próprio mouse. As funções aplicam uma fórmula de easing básica, que consiste em: pos_atual += (pos_final - pos_atual)/easing Quanto maior o easing, mais lenta a animação.Já dá pra brincar com isso. :PAbraçoopa cara,o movimento apos pressionar e ao soltar esta PERFEITO. muito obrigado.mas ainda temos um problema. Ao dar o clique na imagem, o ponto zero do movieclip nao pode se igualar ao do mouse. No site que eu postei se voce reparar, ao comecar a arrastar o ponto zero continua onde esta, apenas e modificado quando eu comeco a arrastar (mas nao se iguala ao ponto do mouse).aí mora o problema o.Omas obrigado pela rapidez o movimento ficou otimo Compartilhar este post Link para o post Compartilhar em outros sites
istarlin 0 Denunciar post Postado Maio 3, 2007 desulpa esse reply mas e so para subir o post q estava quase desaparecendo :/de repente alguem q possa me ajudar nao veria ele |o| Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Maio 3, 2007 Então cara, se quiser deixar o ponto zero no mesmo lugar, grave onde está e chame depois. clip.onPress = function() { this.ox = this._x; this.oy = this._y; this.difx = _root._xmouse - this._x; this.dify = _root._ymouse - this._y; comecaDrag(this);};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; };} Se quiser, dê uma lida nesse tutorial. Ele tem uma simplificação do código, e traz outras funções. Abraço Compartilhar este post Link para o post Compartilhar em outros sites
istarlin 0 Denunciar post Postado Maio 8, 2007 opa antonio valeu.desculpe pela demora de responder, mas estava ausente.o seu codigo esta ate melhor do que o do tutorial ( mas o tutorial e mto legal ) o unico lance que falta para ficar 100% no caso do seu codigo, e ele largar o meu mouse |o|Ele tem o easing tanto ao pressionar quanto ao soltar o objeto. Esse é o correto (no tutorial quando eu solto ele para de vez o objeto, sem easing), mas tentei bolar uma logica colocando um if na funcao terminaDrag mas nao funfou.Alguma ideia q possa me ajudar?: ) Compartilhar este post Link para o post Compartilhar em outros sites
istarlin 0 Denunciar post Postado Maio 8, 2007 opa, conseguiu funfar agora : )obrigado pela forca!!!!!!!!!!!!!!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
( ((phabyo)) ) 0 Denunciar post Postado Maio 8, 2007 opa, conseguiu funfar agora : )obrigado pela forca!!!!!!!!!!!!!!!!!!!Dr. fiquei curioso, posta a action ai pro pessoal tentar tbm ?Valeuuu. Compartilhar este post Link para o post Compartilhar em outros sites