Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Ciclo "for"


gimbras

Pergunta

Olá a todos,

Tenho este código AS, mas precisava de usar um ciclo "for" de maneira a evitar que tivesse de escrever o código vezes e vezes sem conta até conseguir que todos os movieclips ficassem "codificados".

Tenho mais de 20 movieclips deste tipo e por isso tinha de mudar o código sempre que me refirisse a outro movieclip. Neste caso refiro-me ao mc_one que chama o cap_one, mas a seguir vem o mc_two com o cap_two e por aí em diante até ao mc_twenty que chama o cap_twenty.

// Um
mc_one.onRollOver = function() {
	this.onEnterFrame = function () {
	cap_one._alpha += (100-cap_one._alpha)/3;
	cap_one._x -= (cap_one._x-_xmouse)/2;
	cap_one._y -= (cap_one._y-_ymouse)/2;
	}
};
mc_one.onRollOut = function() {
	this.onEnterFrame = function() {
  cap_one._alpha += (0-cap_one._alpha)/3;
	};
};
Um colega meu deu-me o seguinte ciclo "for" mas não está a funcionar.
for (var i:Number = 1;i<=20;i++){
  this["mc_"+i].onRollOver = function() {
	this["mc_"+i].onEnterFrame = function () {
	this["cap_"+i]._alpha += (100-this["cap_"+i]._alpha)/3;
	this["cap_"+i]._x -= (this["cap_"+i]._x-_xmouse)/2;
	this["cap_"+i]._y -= (this["cap_"+i]._y-_ymouse)/2;
	}
};


  this["mc_"+i].onRollOut = function() {
   this["mc_"+i].onEnterFrame = function() {
    this["cap_"+i]._alpha += (0-  this["cap_"+i]._alpha)/3;
	};
};

}

Sei que as referências do primeiro código "mc_one" e "cap_one" são os instance name dos movieclips e no segundo código mudei as instance names para "mc_1" e "cap_1" que seriam os instance names que o ciclo "for" iria gerar.

Alguém me pode dar uma ajuda?

Cumps e obg.

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

to sem tempo agora pra ver isso

mas tenta esse aki:

for (var i:Number = 1;i<=20;i++){
 this["mc_"+i].onRollOver = function() {
this.onEnterFrame = function () {
this["cap_"+i]._alpha += (100-this["cap_"+i]._alpha)/3;
this["cap_"+i]._x -= (this["cap_"+i]._x-_xmouse)/2;
this["cap_"+i]._y -= (this["cap_"+i]._y-_ymouse)/2;
}
};


 this["mc_"+i].onRollOut = function() {
  this.onEnterFrame = function() {
   this["cap_"+i]._alpha += (0-  this["cap_"+i]._alpha)/3;
};
};

}

eu não entendi onde fica o MCs e os CAPs.. os caps ficam dentro do MC ?? o.o

Link para o comentário
Compartilhar em outros sites

  • 0

Tanto os mc's e os cap's ficam no Stage separados.

O q acontece (ou devia acontecer) é que ao passarmos o mouse por cima de um mc aparecia o cap (como legenda). Ao tirarmos o mouse de cima do mc o cap desapareceria.

É um sistema de legendas para mapas. É uma tentativa de imitar a tag "ALT" do HTML quando passamos o mouse sobre uma imagem.

Esse código não funciona, obg.

Link para o comentário
Compartilhar em outros sites

  • 0

hum entandi.. então c ta separado não ia dar mesmu!

temq faer referencia certa!

ve c essa funciona

for (var i:Number = 1;i<=20;i++){

this["mc_"+i].onRollOver = function() {

this.onEnterFrame = function () {

_root["cap_"+i]._alpha += (100-_root["cap_"+i]._alpha)/3;

_root["cap_"+i]._x -= (_root["cap_"+i]._x-_xmouse)/2;

_root["cap_"+i]._y -= (_root["cap_"+i]._y-_ymouse)/2;

}

};

this["mc_"+i].onRollOut = function() {

this.onEnterFrame = function() {

_root["cap_"+i]._alpha += (0- _root["cap_"+i]._alpha)/3;

};

};

}

Link para o comentário
Compartilhar em outros sites

  • 0

Não tenho problema em seguir o tutorial. Fica a funcionar muito bem.

Agora imaginem que em vez de uma única imagem que precisa desse efeito (caption) tenho 50? Não vou andar a escrever o mesmo código 50 vezes para conseguir manipular os 50 objectos. Por isso teria de usar o clico 'for' que programaria os 50 objectos por mim.

É que não se trata apenas de .SWF com 50 objectos que precisam de caption. São é 150 mapas cada um com uma média de 20 movieclips que precisam de legenda.

Deixo aqui os ficheiros então:

(efeito pretendido)

http://escape.do.sapo.pt/for.fla

http://escape.do.sapo.pt/for.swf

(com o clico 'for' sugerido)

http://escape.do.sapo.pt/for2.fla

http://escape.do.sapo.pt/for2.swf

Cumps. Obg pela ajuda até agora.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa.. mas assim num ia dar e nunca mesmu! >.<

c você renomear o cap_1 pra cap_21 ai vai dar certinhu! hehe

agora vai ae o esquema q fiz...

toma ae o codigo certinhu:

for (var i:Number = 1;i<=20;i++){
	this["mc_"+i].onRollOver = function() {
  var numero:Number = Number(this._name.split("_").pop());
  _root.onEnterFrame = function () {
  	this["cap_"+numero]._alpha += (100-this["cap_"+numero]._alpha)/3;
  	this["cap_"+numero]._x -= (this["cap_"+numero]._x-_xmouse)/2;
  	this["cap_"+numero]._y -= (this["cap_"+numero]._y-_ymouse)/2;
  }
	}
	this["mc_"+i].onRollOut = function() {
  var numero:Number = Number(this._name.split("_").pop());
  _root.onEnterFrame = function() {
  	this["cap_"+numero]._alpha += (0-  this["cap_"+numero]._alpha)/3;
  }
	}
}

Link para o comentário
Compartilhar em outros sites

  • 0

opa!

nada como posta o codigo fonte do arquivo pra analisar! eheh

queria te dar uma dica cara... ao invez de fazer varios arkivos CAPs,

faz somente um! e cada keyframe dentro dele vai ser um CAP... ^^

concerteza seu arquivo vai ficar masi leve!

o problema e q você temq fazer umas pekana modificação no script.. mas nada muitu complicado! ^^

Link para o comentário
Compartilhar em outros sites

  • 0

Olha, vais me desculpar mas afinal tem um pequeno problema o script.

Pois agora vou colocar sempre aqui o ficheiro original.

http://escape.do.sapo.pt/togo2.swf

http://escape.do.sapo.pt/togo2.fla

Repara que os caps não desaparecem e ficam por cima do mapa, quando deveriam desaparecer.

Desculpa estar a abusar da sua boa vontade.

Cumps e obg.

Vou tentar seguir essa dica para deixar o SWF mais leve. Obg

Link para o comentário
Compartilhar em outros sites

  • 0

Senshi obrigado!

Mudei assim e ficou a funcionar.

for (var i:Number = 1;i<=20;i++){
this["mc_"+i].onRollOver = function() {
 var numero:Number = Number(this._name.split("_").pop());
 this.onEnterFrame = function () {
  _root["cap_"+numero]._alpha += (100-_root["cap_"+numero]._alpha)/3;
  _root["cap_"+numero]._x -= (_root["cap_"+numero]._x-_xmouse)/2;
  _root["cap_"+numero]._y -= (_root["cap_"+numero]._y-_ymouse)/2;
 };
};
this["mc_"+i].onRollOut = function() {
 var numero:Number = Number(this._name.split("_").pop());
 this.onEnterFrame = function() {
  _root["cap_"+numero]._alpha += (0-_root["cap_"+numero]._alpha)/3;
 };
};
};

Cumps.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...