Ir para conteúdo

POWERED BY:

Arquivado

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

losrs

Problema com array

Recommended Posts

Olá pessoal, o problema é o seguinte tenho esta função que é chamada e abre uma ajuda dentro do palco.Quando está ajuda for aberta os movies tem que ser desabilitados, mas não tá dando certo.Os movies estão no palco estanciados como mc_1 ate mc_6 e tenho uma array arr2=["mc_1"..."mc_6"].

 

 

CODE

function ajuda() {

_root.attachMovie("help", "help", 0);

help._x = Stage.width/2;

help._y = Stage.height/2;

for (var k=0;k<arr2.length+1;k++) {

movie = ["mc"+"_"+k];

_root.movie.enabled = false;

trace(movie);

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre os valores do array:

 

Se estão como string no array:

 

function ajuda() {
	_root.attachMovie("help", "help", 0);
	help._x = Stage.width/2;
	help._y = Stage.height/2;
	for (var k=0;k<arr2.length+1;k++) {
movie = _root[arr2["mc"+"_"+k]];
movie.enabled = false;
		trace(movie);
		}

Se estão com instancias:

 

function ajuda() {
 	_root.attachMovie("help", "help", 0);
 	help._x = Stage.width/2;
 	help._y = Stage.height/2;
 	for (var k=0;k<arr2.length+1;k++) {
 movie = arr2["mc"+"_"+k];
 movie.enabled = false;
 		trace(movie);
 		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensando bem sendo:

 

arr2=["mc_1","mc_2","mc_3","mc_4","mc_5","mc_6"];

Então:

 

function ajuda() {
	_root.attachMovie("help","help",0);
	help._x = Stage.width / 2;
	help._y = Stage.height / 2;
	for (k = 0; k < arr2.length; k++) {
		movie = _root[arr2[k]];
		movie.enabled = false;
		trace(movie);
	};
};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Foxn,

 

Funcionou 100%.Só gostaria de entender qual a diferença quando tu falas em valores da Array como Strings ou instâncias. A diferença está na maneira como eu coloco dentro da Array (com aspas ou sem aspas). Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A diferença é que se for instancia e não string ficaria sem o _root, seria assim:

 

function ajuda() {
	_root.attachMovie("help","help",0);
	help._x = Stage.width / 2;
	help._y = Stage.height / 2;
	for (k = 0; k < arr2.length; k++) {
		movie = arr2[k];
		movie.enabled = false;
		trace(movie);
	};
};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blza, valeu a explicação. Agora to tentando colocar a cereja no bolo http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Tenho um botão dentro da ajuda que fecha a mesma e deveria re-habilitar os movies que ainda não tivessem sido clicados.Dentro do movie tenho um comando

CODE
arr1.push(this._name);
e tenho uma função que compara duas arrays e retorna uma terceira com os movies que não forão clicados.

CODE
function compareArrays(a1,a2){

trace(arr1);

trace(arr2);

var tmpArr=a2.concat();

for(var i=0; i<a1.length; i++){

var tmp1= a1;

for(var j=0; j<a2.length; j++){

if(tmp1===a2[j]){

tmpArr.splice((j-i),1);

 

}

 

}

}

return arr3=tmpArr.concat();}

Usando a mesma lógica que desabilita os movies fiz uma função:

CODE
function liberaMovies() {

for (n=0;n<arr3.length+1;n++) {

movie = _root[arr3[n]];

movie.enabled = true;

trace(arr3);

 

}

}

Dúvida: Tentei chamar as duas funções de dentro do btn que esta no movieclip ajuda mas não está funcionando.

CODE
compareArrays(arr1,arr2);

liberaMovies();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Solução do Problema:

CODE
fecha_ajuda.onPress = function() {

tellTarget ("_root") {

compareArrays(arr1, arr2);

liberaMovies();

_parent.help.removeMovieClip();

}

};

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.