..:: MX Studio Fóruns ::..: Array com Propriedades independentes AS3 [RESOLVIDO] - ..:: 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

Array com Propriedades independentes AS3 [RESOLVIDO]

#1 User is offline   edergabriel 

  • Group: Membros
  • Posts: 17
  • Joined: 24-November 09

Posted 15 October 2011 - 12:54 AM

Oi Pessoal!

Consegui criar as taças que estão dentro de um array voando, mas não consegui fazer as taças serem geradas novamente (por infinito) quando elas saem da cena. Por isso, que no final tem um if vazio, por causa do tempo que não está individualizado. O problema em si é o cálculo da gravidade que precisa ser individualizado, consegui fazer com a rotação e nos eixos x e y. Mas no tempo fiquei na dúvida. Como eu posso resolver isso?

menor = -20 + 1 * t / 2;
t++;

gotoAndPlay(2);

// Criando as taças no Stage
if (tacasTotal.length < tacas)
{
	var taca_mc:Taca = new Taca();
	var tacaPosX:int;
	var tacaRotX:int;
	taca_mc.x =0;
	taca_mc.y += (Math.floor(Math.random()* (1+768-370))+370);
	// Controle da Parábola
	tacaPosX = (Math.floor(Math.random()* (1+12-7))+7);
	tacaRotX = (Math.floor(Math.random()* (1+10-5))+5);
	addChild(taca_mc);
	tacasTotal.push(taca_mc);
	tacasTotalPosX.push(tacaPosX);
	tacasTotalRotX.push(tacaRotX);
	tacasTotalTempo.push(t);
}

// ENTER FRAME para as taças
for (var i:int = 0; i < tacasTotal.length; i++)
{// variável para deixar o sistema infinito utilizando uma renomeando os movie clips
var TacaAtualizar:Taca = tacasTotal[i];
var PosicaoVariavelX = tacasTotalPosX[i];
var TacaRotacionar = tacasTotalRotX[i];
atualizador();
}

function atualizador():void {
	TacaAtualizar.y += menor;
	TacaAtualizar.x += PosicaoVariavelX;
	TacaAtualizar.rotation += TacaRotacionar;
	trace(menor);

	}

if(TacaAtualizar.x > stage.stageWidth || TacaAtualizar.x < 0 || TacaAtualizar.y > stage.stageHeight || TacaAtualizar.y < 0 ) {

		}



LINK -> ARQUIVOS

Obrigado a quem responder!
0

#2 User is offline   edergabriel 

  • Group: Membros
  • Posts: 17
  • Joined: 24-November 09

Posted 18 October 2011 - 08:51 PM

Oi Pessoal!

Fiz alguns testes, mas ainda não deu certo. A idéia era que as taças tivessem um tempo individual. O código agora é esse:

menor = -20 + 1 * t / 2;

gotoAndPlay(2);

// Criando as taças no Stage
if (tacasTotal.length < tacas)
{
	var taca_mc:Taca = new Taca();
	var tacaPosX:int;
	var tacaRotX:int;

	taca_mc.x =0;
	taca_mc.y += (Math.floor(Math.random()* (1+768-370))+370);
	// Controle da Parábola
	tacaPosX = (Math.floor(Math.random()* (1+12-7))+7);
	tacaRotX = (Math.floor(Math.random()* (1+10-5))+5);
	addChild(taca_mc);
	tacasTotal.push(taca_mc);
	tacasTotalPosX.push(tacaPosX);
	tacasTotalRotX.push(tacaRotX);
	tacasTotalTempo.push(t);
}

// ENTER FRAME para as taças
for (var i:int = 0; i < tacasTotal.length; i++)
{// variável para deixar o sistema infinito utilizando uma renomeando os movie clips
var TacaAtualizar:Taca = tacasTotal[i];
var PosicaoVariavelX = tacasTotalPosX[i];
var TacaRotacionar = tacasTotalRotX[i];
var TacaTempo = tacasTotalTempo[i];
atualizador();
if(TacaAtualizar.x > stage.stageWidth || TacaAtualizar.x < 0 || TacaAtualizar.y > stage.stageHeight) {
		TacaAtualizar.x = 50;
		TacaAtualizar.y += menor;
		trace("encostou");
		}
}

function atualizador():void {
	TacaAtualizar.y += menor;
	TacaAtualizar.x += PosicaoVariavelX;
	TacaAtualizar.rotation += TacaRotacionar;
	trace(menor);
}




LINK -> NOVOS ARQUIVOS
0

#3 User is offline   IAMDIX 

  • Group: Membros
  • Posts: 39
  • Joined: 20-August 11

Posted 26 October 2011 - 10:53 PM

Faz um AS separado tipo assim:

package 
{
	import flash.display.*;

	public class Tacas extends MovieClip
	{

		public var velocidadeX:Number;
		public var velocidadeY:Number;
		public var gravidade:Number;
		public var friccao:Number;
		public var escalaX:Number;
		public var escalaY:Number;
		public var fade:Number;
		public var rotacao:Boolean;

		public function Tacas()
		{
			velocidadeX = 0;
			velocidadeY = 0;
			gravidade = 0;
			friccao = 1;
			escalaX = 1;
			escalaY = 1;
			fade = 1;
			rotacao = false;
		}

		public function atualizador()
		{
			velocidadeX *=  friccao;
			velocidadeY *=  friccao;

			velocidadeY +=  gravidade;

			this.x +=  velocidadeX;
			this.y +=  velocidadeY;
			this.scaleX *=  escalaX;
			this.scaleY *=  escalaY;
			this.alpha *=  fade;
			if (rotacao)
			{
				this.rotation = Math.atan2(velocidadeY,velocidadeX) * 180 / Math.PI;
			}
		}
	}
}


depois importa no actions (f9) do mc
aqui um exepmlo que eu fiz aqui em casa que depois acabei não usando e voce pode adaptar a teu codigo:
import Tacas;

// Variaveis
var pTotal:int=200;
var aTacas:Array=[];

// Registro de Eventos
stage.addEventListener(Event.ENTER_FRAME, _anima);

// Funções
function _anima(e:Event):void {

	if (aTacas.length<pTotal) {
		var bola_mc:Bola = new Bola();
		addChild(bola_mc);
		bola_mc.velocidadeX=Math.random()*10-3;
		bola_mc.velocidadeY=Math.random()*10-5;
		bola_mc.gravidade=0.50;
		//bola_mc.friccao = 1;
		//bola_mc.escalaX =1.05;
		//bola_mc.escalaY = 1.05;
		//bola_mc.fade = 0.99;
		//bola_mc.rotacao = true;
		bola_mc.x= stage.stageWidth  /9;
		bola_mc.y= stage.stageHeight /9;

		aTacas.push(bola_mc);
	}
	for (var i:int = 0; i < aTacas.length; i++) {
		//aParticulas[i].filters = [new BlurFilter(10,10,1)];
		var tacas:Bola=aTacas[i];
		aTacas[i].atualizador();
/*
		if (tacas.x>stage.stageWidth||tacas.x<0||tacas.y>stage.stageHeight||tacas.y<0 || tacas.alpha < .2) {

			tacas.velocidadeX=Math.random()*10-5;
			tacas.velocidadeY=Math.random()*10-5;
			tacas.x= stage.stageWidth  /9;
			tacas.y= stage.stageHeight /9;
			tacas.scaleX = particulas.scaleY = 1;
			tacas.alpha =5;
		}*/
	}
}

0

#4 User is offline   edergabriel 

  • Group: Membros
  • Posts: 17
  • Joined: 24-November 09

Posted 01 November 2011 - 11:34 PM

View PostIAMDIX, on 26 October 2011 - 10:53 PM, said:

Faz um AS separado tipo assim:

package 
{
	import flash.display.*;

	public class Tacas extends MovieClip
	{

		public var velocidadeX:Number;
		public var velocidadeY:Number;
		public var gravidade:Number;
		public var friccao:Number;
		public var escalaX:Number;
		public var escalaY:Number;
		public var fade:Number;
		public var rotacao:Boolean;

		public function Tacas()
		{
			velocidadeX = 0;
			velocidadeY = 0;
			gravidade = 0;
			friccao = 1;
			escalaX = 1;
			escalaY = 1;
			fade = 1;
			rotacao = false;
		}

		public function atualizador()
		{
			velocidadeX *=  friccao;
			velocidadeY *=  friccao;

			velocidadeY +=  gravidade;

			this.x +=  velocidadeX;
			this.y +=  velocidadeY;
			this.scaleX *=  escalaX;
			this.scaleY *=  escalaY;
			this.alpha *=  fade;
			if (rotacao)
			{
				this.rotation = Math.atan2(velocidadeY,velocidadeX) * 180 / Math.PI;
			}
		}
	}
}


depois importa no actions (f9) do mc
aqui um exepmlo que eu fiz aqui em casa que depois acabei não usando e voce pode adaptar a teu codigo:
import Tacas;

// Variaveis
var pTotal:int=200;
var aTacas:Array=[];

// Registro de Eventos
stage.addEventListener(Event.ENTER_FRAME, _anima);

// Funções
function _anima(e:Event):void {

	if (aTacas.length<pTotal) {
		var bola_mc:Bola = new Bola();
		addChild(bola_mc);
		bola_mc.velocidadeX=Math.random()*10-3;
		bola_mc.velocidadeY=Math.random()*10-5;
		bola_mc.gravidade=0.50;
		//bola_mc.friccao = 1;
		//bola_mc.escalaX =1.05;
		//bola_mc.escalaY = 1.05;
		//bola_mc.fade = 0.99;
		//bola_mc.rotacao = true;
		bola_mc.x= stage.stageWidth  /9;
		bola_mc.y= stage.stageHeight /9;

		aTacas.push(bola_mc);
	}
	for (var i:int = 0; i < aTacas.length; i++) {
		//aParticulas[i].filters = [new BlurFilter(10,10,1)];
		var tacas:Bola=aTacas[i];
		aTacas[i].atualizador();
/*
		if (tacas.x>stage.stageWidth||tacas.x<0||tacas.y>stage.stageHeight||tacas.y<0 || tacas.alpha < .2) {

			tacas.velocidadeX=Math.random()*10-5;
			tacas.velocidadeY=Math.random()*10-5;
			tacas.x= stage.stageWidth  /9;
			tacas.y= stage.stageHeight /9;
			tacas.scaleX = particulas.scaleY = 1;
			tacas.alpha =5;
		}*/
	}
}



Obrigado pela ajuda!

Estava montando com essa estrutura que você me passou e apareceu o erro:

TypeError: Error #1006: atualizador não é uma função.
at _2011_11_01b_jogo_fla::MainTimeline/_anima()

Aconteceu isso com você? Vlw!
0

#5 User is offline   IAMDIX 

  • Group: Membros
  • Posts: 39
  • Joined: 20-August 11

Posted 02 November 2011 - 12:04 AM

Testei agora aqui e funcionou.

Eu uso CS5 E AS3

O arquivo.as tem que estar na mesma pasta do .fla
0

#6 User is offline   edergabriel 

  • Group: Membros
  • Posts: 17
  • Joined: 24-November 09

Posted 06 November 2011 - 12:43 PM

Ok! Consegui fazer funcionar. Estou editando o código e obrigado pela outra função de rotacionar.
0

#7 User is offline   IAMDIX 

  • Group: Membros
  • Posts: 39
  • Joined: 20-August 11

Posted 06 November 2011 - 03:21 PM

View Postedergabriel, on 06 November 2011 - 12:43 PM, said:

Ok! Consegui fazer funcionar. Estou editando o código e obrigado pela outra função de rotacionar.


Que bom que funcionou...posta o codigo completo so para referencia
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)