Ir para conteúdo

POWERED BY:

Arquivado

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

Renan A. Mendonça

[Resolvido]Animação dinamica e randomica de um MC por

Recommended Posts

Preciso que alguns movie clips meus se movam randomicamente pelo palco quando o mouse e colocado em cima de um certo botão, e quando o mouse saísse de cima do botão, o mc deveria movimentar de volta para o local original da posição que estava durante a animação no evento MOUSE_OVER.

 

Explicando melhor, os mc's são borboletas, quando o mouse passar em cima delas elas tem que sair voando em direções randômicas em volta da arvore que fica ao centro do site.

 

Também gostaria de saber se tem como fazer o seguinte:

 

MC.x = 150;

MC.y = 150;

 

se Math.Random() for menor que x ou y, ele use o rotation para deixar o objeto virado para o destino final, mas em vez de ir em linha reta ele descreve um arco, quando chegar no destino final ele continua fazendo a mesma coisa, a não ser que o mouse saia de cima do botão.

 

Já criei parte do código, ele faz o seguinte: http://www.mestresdasartes.com.br/zoneas3/layout_liquid.html (Só funciona 1 botão)

 

import fl.transitions.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
import flash.filters.BitmapFilterQuality;
import flash.filters.BlurFilter;

var targetFX:Number = new Number();
var targetFY:Number = new Number();
var rotateFX:Number = new Number();
var preX:Number = new Number();
var preY:Number = new Number();
var teste:Number = new Number();
preX = mc_conteudo.mc_borboleta5.x;
preY = mc_conteudo.mc_borboleta5.y;

mc_conteudo.mainBtn01.addEventListener(MouseEvent.MOUSE_OVER, btnBaropen);
//mc_conteudo.mainBtn01.addEventListener(Event.INIT, btnBaropenINICIA);
//Sets tween object, moves bar across screen
var btnTween:Tween;
//Method to slide out button bar and half circles, based on Mouse event

/*function btnBaropenINICIA(event:MouseEvent):void{
	mc_conteudo.mainBtn01.addEventListener(MouseEvent.MOUSE_OVER, btnBaropen);
}*/

this.addEventListener(Event.ENTER_FRAME, update);
function update(e:Event):void{
	targetFX = mc_conteudo.mc_borboleta5.x;
	targetFY = mc_conteudo.mc_borboleta5.y;
}

function btnBaropen(event:MouseEvent):void {
	var rotateX:Number = Math.random() * 360;
	var targetX:Number = (Math.random() * 700)-rotateX;
	var targetY:Number = (Math.random() * 500)-rotateX;
	
	rotateFX = rotateX;	

	btnTween = new Tween(mc_conteudo.mc_borboleta5, "x", Strong.easeOut, mc_conteudo.mc_borboleta5.x, targetX, 3, true);
	btnTween = new Tween(mc_conteudo.mc_borboleta5, "y", Strong.easeOut, mc_conteudo.mc_borboleta5.y, targetY, 3, true);
	btnTween = new Tween(mc_conteudo.mc_borboleta5, "rotation", Strong.easeOut, 0, rotateX, 1, true);
}



mc_conteudo.mainBtn01.addEventListener(MouseEvent.MOUSE_OUT, btnBarclose);
var btnTween2:Tween;

function btnBarclose(event:MouseEvent):void {
	btnTween2 = new Tween(mc_conteudo.mc_borboleta5, "x", Strong.easeOut, targetFX, preX, 3, true);
	btnTween2 = new Tween(mc_conteudo.mc_borboleta5, "y", Strong.easeOut, targetFY, preY, 3, true);
	btnTween2 = new Tween(mc_conteudo.mc_borboleta5, "rotation", Strong.easeOut, rotateFX, 0, 1, true);
}

Se alguém puder me ajudar ficarei realmente muito grato.

Obrigado pela atenção e abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido por Natan em outro fórum.

Ai está a solução dada por ele

Para você adaptar o seu código para uma Classe, não há muito segredo. Na Classe, você pensa que tem um código que funciona para determinados objetos, mas quer que ele funcione para outros, então, você cria uma função que receba os itens que deseja movimentar usando o seu código. Um exemplo bem simple para seu arquivo eu fiz e ficou assim:

 

CÓDIGO

package {
	import fl.transitions.Tween;
	import fl.transitions.easing.*;
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	public class menu {
		public function menu() {
		}
		public function addItem(principal:MovieClip, alvo:MovieClip):void {
			principal.addEventListener(MouseEvent.MOUSE_OVER, alvoOver);
			principal.addEventListener(MouseEvent.MOUSE_OUT, alvoOut);
			principal.alvo = alvo;
			principal.posAnteriorX = alvo.x;
			principal.posAnteriorY = alvo.y;
		}
		private function alvoOver(event:MouseEvent):void {
			var rotateX:Number = Math.random()*360;
			var targetX:Number = (Math.random()*600)-rotateX;
			var targetY:Number = (Math.random()*400)-rotateX;
			var twx:Tween = new Tween(event.target.alvo, "x", Strong.easeOut, event.target.alvo.x, targetX, 3, true);
			var twy:Tween = new Tween(event.target.alvo, "y", Strong.easeOut, event.target.alvo.y, targetY, 3, true);
			var twr:Tween = new Tween(event.target.alvo, "rotation", Strong.easeOut, 0, rotateX, 1, true);
		}
		private function alvoOut(event:MouseEvent):void {
			event.target.gotoAndStop(1);
			var twx:Tween = new Tween(event.target.alvo, "x", Strong.easeOut, event.target.alvo.x, event.target.posAnteriorX, 3, true);
			var twy:Tween = new Tween(event.target.alvo, "y", Strong.easeOut, event.target.alvo.y, event.target.posAnteriorY, 3, true);
			var twr:Tween = new Tween(event.target.alvo, "rotation", Strong.easeOut, event.target.alvo.rotation, 0, 1, true);
		}
	}
}

Salve esse arquivo com o nome de menu.as. No seu arquivo, você remove todas as ações que você postou, pois elas estão na Classe. Se olhar na Classe vai ver que criei uma função chamada addItem, ela recebe dois parametros, que são os MovieClips que vão receber o evento do Mouse e o MovieClip que vai ser animado. Se olhar o resto vai ver que é seu código adaptado para que funcionasse numa Classe.

 

No seu arquivo, você usa as seguintes ações para importar a Classe e para passar os itens que a Classe irá comandar.

 

CÓDIGO

import menu;
var item:menu = new menu();
item.addItem(bt1, mc1);
item.addItem(bt2, mc2);
item.addItem(bt3, mc3);

Onde bt1, bt2, bt3 são as instancias dos MovieClips ou botões que vão receber os eventos de mouse e mc1, mc2, mc3 as instancias dos MovieClips que vão ser animados randomicamente.

 

Teste e veja se funciona e se era isso que queria. Depois é só estudar as ações e tentar modificar ou acrescentar novas coisas.

 

[]s

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.