Ir para conteúdo

POWERED BY:

Arquivado

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

marcos.cardoso

[Resolvido] duplicateMovieClip

Recommended Posts

Bom dia a todos,

 

seguinte, em um aplicativo que estou desenvolvendo tenho que duplicar algumas peças.

Isso tá normal, consigo duplicar sem problemas. Criei uma variável do tipo MovieClip que recebe o mc duplicado. Aí atribuo uma função a esse mc que recebeu o mc duplicado. Quando dou um trace para esse mc na outra função são apresentados todos os duplicados. Por que isso acontece?

 

O código é esse:

function copy() {
	_mc = this.duplicateMovieClip("_mc" + t, t);
	_mc.a = this.a;
	_mc.b = this.b;
	_mc.c = this.c;
	_mc.getNextHighestDepth();
	_mc.startDrag(false);
	_mc.onMouseUp = dropCopy;
	t++;
}

// função responsável pelo soltar do mouse
function dropCopy() {
	this.stopDrag();
	if (superior_mc.hitTest(_root._xmouse, _root._ymouse)) {
		_mc._x = superior_mc._x;
		_mc._y = superior_mc._y;
		cont = cont + _mc.c;
	} else if (medio_mc.hitTest(_root._xmouse, _root._ymouse)) {
		_mc._x = medio_mc._x;
		_mc._y = medio_mc._y;
		cont = cont + _mc.c;
	} else if (inferior_mc.hitTest(_root._xmouse, _root._ymouse)) {
		_mc._x = inferior_mc._x;
		_mc._y = inferior_mc._y;
		cont = cont + _mc.c;
	} else {
		voltar(_mc);
	}
	trace(_mc.c);                // aqui são apresentados todos os que ja foram duplicados
}

desde ja agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois a propriedade c

Mostra o resultado de uma matrix

 

Se você ta colocando diversos clips dentro de um mesmo clip...

 

Logo ele vai retornar uma matrix com diversos valores dentro dele...

 

Mesmo vale para o a e para o b

Exemplo:

import flash.geom.Matrix;  
var myMatrix:Matrix = new Matrix();
trace(myMatrix.c); // 0  
var degrees:Number = 30; 
var radians:Number = (degrees/180) * Math.PI;
myMatrix.c = Math.tan(radians); 
trace(myMatrix.c); // 0.577350269189626 

;)

 

Mas no seu caso você usou um MC como uma matrix então faz o mesmo efeito

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai pra pega o ultimo tu vai ter que usar uma robada :P

 

assim:

 trace(this[_mc+(i-1)]); 
onde i é seu contador ok?

Ou você pega o numero total e subtrai 1

 

Ai você vai ter o ultimo xD

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.

valew berseck pela ajuda e desculpe pela demora em responder.

Consegui resolver o problema. Não do jeito que você sugeriu, mas consegui.

Foi o seguinte. Todo mc que duplicava atribuia a função ao onMouseUp. Assim, toda vez que esse evento acontecia no palco esses mcs respondiam a essa função. Então notei que mesmo não estando manipulando os mcs que ja foram manipulados eles reajem como se estivesse sendo. Ai percebi que era exatamente o onMouseUp deles, então refiz a atribuição do evento quando ele acontecia. Acho que minha explicação ficou meio complexa. Atribui null para o evento quando ele acontecer.

 

// atribuindo null para o evento onMouseUp
this.onMouseUp = null;

Assim toda vez que soltava o mc ele ficava sem nada, sem função nenhum, a não ser que fosse arrastado novamente.

 

vlw

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.