Deslizar Mc Nas Posições (x,y)
#1
Posted 19/11/2005, 12:41
Eu tenho um MC que é um quadrado. Ele se encontra na posição (0,0). Como eu faria para que quando eu clicasse num botão ele fosse para a posição (20,0) por exemplo. Quando clicasse em outro fosse para (40,0) e assim por diante?
Lembrando que eu queria que ele fosse deslizando. Teria como? Algum exemplo?
Obrigado,
#2
Posted 21/11/2005, 00:34
seguinte...
// variaveis de velocidade de movimento para eixo X e Y mc.vx = 1; mc.vy = 1; // variaveis que definem a posição desejada para o mc // esta parte voce pode colocar nos botões, para setar o ponto x e y desejado mc.alvox = 100; mc.alvoy = 100; // // loop geral onEnterFrame = function () { // testa se posição atual x for menor que a posição desejada if (mc._x<mc.alvox) { // movimenta na direção da posição desejada mc._x += mc.vx; } else if (mc._x>mc.alvox) { // senão, a posição é maior, então diminui a posiacao x do mc mc._x -= mc.vx; } // mesma coisa, mas para eixo y, testa posição atual com posição desejada if (mc._y<mc.alvoy) { mc._y += mc.vy; } else if (mc._y>mc.alvoy) { mc._y -= mc.vy; } }; //fim :D //agora é só adicionar o action nos botoes setando mc.alvox e mc.alvoy
qqr duvida posta ai
#3
Posted 21/11/2005, 06:32
Valeu meu velho, perfeito!
Brigado!
Edição feita por: O malinha, 21/11/2005, 06:36.
#4
Posted 21/11/2005, 12:59
Oq eu poderia implementar nesse código que foi dado aí emcima para que meu movieclip fosse diminuindo a velocidade gradativamente qndo estivesse indo para o ponto escolhido? Dessa forma aí emcima ele pára bruscamente, eu queria dar uma suavizada, seria possivel?
Valeu mais uma vez!
Edição feita por: O malinha, 21/11/2005, 13:00.
#5
Posted 21/11/2005, 14:18
import mx.effects.Tween; import mx.transitions.easing.*; var oTween:Tween; function moveObj(alvo:MovieClip, pos:Array):Void{ oTween = new Tween(alvo, [alvo._x, alvo._y, alvo._xscale, alvo._yscale], pos, 1000); /* Você pode usar as equações de easing para mudar o movimento do objeto de forma simples e rápida: */ // Modos de uso: // Efeito.easeIn; // Efeito.easeOut; // Efeito.easeInOut; // Descomente um para usar. Apenas uma por vez //oTween.easingEquation = Back.easeInOut; //oTween.easingEquation = Bounce.easeInOut; //oTween.easingEquation = Elastic.easeInOut; //oTween.easingEquation = Strong.easeInOut; alvo.onTweenUpdate = function(vals:Array):Void{ alvo._x = vals[0]; alvo._y = vals[1]; alvo._xscale = vals[2]; alvo._yscale = vals[3]; } } // Botões bt1_btn.vals = [200, 50, 120, 120]; bt2_btn.vals = [500, 200, 70, 70]; bt3_btn.vals = [20, 400, 100, 100]; bt1_btn.onRelease = bt2_btn.onRelease = bt3_btn.onRelease = function():Void{ moveObj(quad_mc, this.vals); }Com a classe Tween fica fácil de criar movimentos, e se tu usar as equações de easing, pode ficar mais interessante ainda.
Abraço
#6
Posted 21/11/2005, 15:16
No ultimo exemplo de Sheepman, mostra que qndo eu clico no bt1_btn o MC quad_mc vai para [200, 50, 120, 120];
Eu tava com a ideia de fazer o seguinte:
Qndo eu clicasse no bt1_btn o quad_mc e o quad_mc2 (um outro MC) fosse para [200, 50, 120, 120].
Entederam?
Um mesmo botão leva dois MCs ao mesmo lugar.
Eu na minha "cabeçudisse" dupliquei o código de quad_mc e colei no quad_mc2 mudando apenas as instancias pra ver se funcionava, e lógico, não funcionou.
Alguem tem alguma idéia?
Valeu
Edição feita por: O malinha, 21/11/2005, 17:02.
#7
Posted 21/11/2005, 17:57
bt1_btn.onRelease = bt2_btn.onRelease = bt3_btn.onRelease = function():Void{ moveObj(quad_mc, this.vals); moveObj(quad2_mc, this.vals); }
Basta executar a função no alvo diferente...
Abraço
#8
Posted 21/11/2005, 18:24
Bem, e se eu quiser colocar esses dois MC's funcionando independentes um do outro.
Ou seja, qndo eu clicar no botão eu mando o MC1 pra um lugar e o MC2 pra outro.
Na verdade era isso que eu queria perguntar no post anterior e acabei trocando as coisas!
Valeuu!
Edição feita por: O malinha, 21/11/2005, 18:27.
#9
Posted 21/11/2005, 20:16
// Botões bt1_btn.vals = [200, 50, 120, 120]; bt1_btn.vals2 = [200, 50, 120, 120]; bt2_btn.vals = [500, 200, 70, 70]; bt2_btn.vals2 = [500, 200, 70, 70]; bt3_btn.vals = [20, 400, 100, 100]; bt3_btn.vals2 = [20, 400, 100, 100]; bt1_btn.onRelease = bt2_btn.onRelease = bt3_btn.onRelease = function():Void{ moveObj(quad_mc, this.vals); moveObj(quad_mc2, this.vals2); }
Usei os mesmos valores pq estou com preguiça, muda aí depois...
#10
Posted 23/11/2005, 06:20
Por exemplo, como faço para quando clicar no botão o MC ir para o ponto desejado só que redimensionando com o tween?
Como?
Edição feita por: O malinha, 23/11/2005, 09:44.
#11
Posted 23/11/2005, 10:54
A classe Tween funciona da seguinte maneira:
// Importamos a classe para o nosso filme import mx.effects.Tween; // Importamos os efeitos de easing caso você deseje utilizar algum deles import mx.transitions.easing.*; /* Que eu lembre de cabeça agora, existem os seguintes efeitos: - Bounce - Back - Strong - Elastic - Regular Tem mais que isso, com certeza, basta dar uma verificada na pasta lá... A pasta de classes, caso tu não saiba, fica em: C:\Arquivo de Programas\Macromedia\Flash 8\en\FirstRun\Classes No caso da Tween, ela vai estar em Classes\mx\effects\, sacou? E os efeitos de easing vão estar em Classes\mx\transitions\easing\. O construtor da classe recebe 4 parâmetros: - O Alvo - Os valores Iniciais - Os valores Finais - O tempo da transição var oTween:Tween = new Tween(alvo, valIni, valFin, tempo); valIni e valFin podem ser uma única propriedade ou um Array com diversas propriedades. Vamos criar a nossa função que movimenta uma bola no palco.*/ // Declarando Objeto Tween var oTween:Tween; function moveObj(alvo:MovieClip, pos:Array):Void{ // Construindo Objeto Tween oTween = new Tween(alvo, // Nosso alvo [alvo._x, alvo._y, alvo._xscale, alvo._yscale], // Nossos valores iniciais pos, // Nossos valores finais 1000 // Tempo ); /* Declarado nosso objeto Tween, caso formos utilizar alguma easing equation, devemos defini-la no objeto. */ oTween.easingEquation = Back.easeInOut; /* No caso acima, usamos a classe Back, e o "efeito" easeInOut, que fará com que nossa bola recue no início da transição e no final também. */ /* Feito isso, o próximo passo é o evento onTweenUpdate, é ele que fará a transição. Ele fornece um parâmetro que contém os valores atuais da transição. Como estamos usando Arrays, o parâmetro também será um Array.*/ alvo.onTweenUpdate = function(vals:Array):Void{ this._x = vals[0]; // Alterando posição X this._y = vals[1]; // Alterando posição Y this._xscale = vals[2]; // Alterando escala X this._yscale = vals[3]; // Alterando escala Y } /* E evento onTweenEnd é executado quando a transição é concluída. */ alvo.onTweenEnd = function(vals:Array):Void{ this.onTweenUpdate(); } } /* Pronto, a função está feita e pronta para funcionar, basta saber como iremos usá-la... Botões? Pode ser. Apenas lembre que conforme o caso, a estrutura da função deve mudar. Existem aplicações que você deve remover a Tween a cada ação para evitar bugs, portanto nem sempre a forma mostrada aqui será a correta. Aqui vamos usar botões mesmo.*/ // Valores Botões // [X, Y, XScale, YScale] // XScale e YScale alteram o tamanho em escala do MovieClip alvo bt1_btn.vals = [200, 50, 100, 100]; bt2_btn.vals = [500, 200, 70, 70]; bt3_btn.vals = [20, 400, 100, 100]; bt1_btn.onRelease = bt2_btn.onRelease = bt3_btn.onRelease = function():Void{ if(oTween != undefined) Tween.RemoveTweenAt(oTween.ID); moveObj(quad_mc, this.vals); }Espero que isso te ajude. Em breve estarei publicando um artigo no FUGPR.com.br falando sobre a classe Tween.
Abraço
#12
Posted 23/11/2005, 13:15
Valeu pela paciência! [ rsrs ]
#13
Posted 02/12/2005, 18:46
Eu gostaria de qndo meu mc chegasse ao seu destino ele executasse um loadMovie
eu tenho os meus botões:
bt1_btn.onRelease = bt2_btn.onRelease = bt3_btn.onRelease = function():Void{ moveObj(quad_mc, this.vals); }
Ai eu adicionei:
bt1_btn.onRelease = bt2_btn.onRelease = bt3_btn.onRelease = function():Void{ moveObj(quad_mc, this.vals); loadMovie("arquivo.swf", _root.area); }
Só que ai no exato momento em que clico no botao o loadMovie carrega o swf e fica feio. Eu gostaria de clicar no botão.. o mc fazer seu movimento e depois carregar o arquivo.
Como faço isso?
Valeu
Edição feita por: O malinha, 02/12/2005, 18:47.
#14
Posted 03/12/2005, 02:46
/* E evento onTweenEnd é executado quando a transição é concluída. */ alvo.onTweenEnd = function(vals:Array):Void{ this.onTweenUpdate(); }Tcharan! Tenta colocar teu loadMovie aí!
E outra coisa, não uso loadMovie não, vai deixar de existir essa coisa... Usa a classe MCL:
http://www.fugpr.com...rtigos&a=v&id=7
Abraço
3 user(s) are reading this topic
0 membro(s), 3 visitante(s) e 0 membros anônimo(s)