Ir para conteúdo

POWERED BY:

Arquivado

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

marcos.cardoso

[Resolvido] Array de movieclips

Recommended Posts

Olá, boa tarde,

 

pensei ter resolvido esse problema, mas não deu certo. Quando crio um array com os instance names dos movieclips não consigo acesso a eles dentro do laço for, só fora dele.

O código ficou assim:

 

var arr:Array = new Array(a_mc, b_mc);

//arr[0].onPress = funcao; // se usar assim da certo
for (var i:Number = 0; i > arr.lenght; i++) {
	/*arr[i].a = arr[i]._x;
	arr[i].b = arr[i]._y;*/
	arr[i].onPress = funcao; // agora dentro do for, não funciona
	trace(i);						// nem o i eu consigo ver
}

function funcao() {
	trace("Clicou");
}

Alguém saberia porque?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, consegui fazer com while:

 

var i:Number = 0;
while(i < arr.length) {
	arr[i].a = arr[i]._x;
	arr[i].b = arr[i]._y;
	arr[i].onPress = comecar_arrasto;
	arr[i].onRelease = parar_arrasto;
	//trace(i);
	i++;
}

Agora, eu preciso duplicar cada movie do vetor, assim que estes forem clicados. Por exemplo, se eu clicar na letra 'a' e arrastar eu tenho que duplicar essa letra para que o usuário possa pegar outra letra 'a' depois, caso queira. Nesse caso a letra duplicada deve ter as propriedades da original, como a, b e acesso às funções comecar_arrasto e parar_arrasto.

 

Alguma dica?

Pensei em criar outro vetor para os duplicados e fazer o mesmo que fiz com os originais, mas do jeito que estou pensando o laço seria executado novamente a cada vez, talves fique um pouco lento o processamento se a cada mc duplicado o while fizer todas as atribuições novamente.

Mas, vamo lá. Se alguém tiver alguma dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora consegui duplicar. No entanto, quando duplica há um problema com a profundidade. To pegando a próxima maior profundidade, mas mesmo assim quando tento colocar os mcs no alvo eles ficam por baixo, ai se soltar fica preso no mouse.

O código ta assim:

 

while (i<arr.length) {
	arr[i].a = arr[i]._x;
	arr[i].b = arr[i]._y;
	arr[i].onPress = comecarArrasto;
	i++;
}

function comecarArrasto() {
	delete this.onEnterFrame;
	this.startDrag(false);
	this.getNextHighestDepth();		   // setando profundidade
	duplicar(this);							   // chamada da função
}

var j:Number = 0;
function duplicar(_mc:MovieClip) {
	var subs:String = _mc._name;
	_mc = _mc.duplicateMovieClip(subs.substr(0, 1) + j + "_mc", this.getNextHighestDepth());
	trace(subs.substr(0, 1) + j + "_mc");
	
	_mc.a = _mc._x;
	_mc.b = _mc._y;
	_mc.onPress = comecarArrasto;
	j++;
}

Se alguém puder testar, ou souber o que acontece...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure sobre swapDepths()

 

Exemplo:

myMC1_mc.onRelease = function() {
	this.swapDepths(myMC2_mc);
};
myMC2_mc.onRelease = function() {
	this.swapDepths(myMC1_mc);
};

Acho que é isso que você vai precisar para resolver seu problema

 

Abraços

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.