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

[Resolvido] Problema com repetição de código (AS3)


EvandroPH

Pergunta

Olá, estou tendo um pequeno problema com reaproveitamento de código fonte, e tendo que repetir em vários locais, gostaria de ajuda se puderem...

Explicando o problema:

estou desenvolvendo um sisteminha em flash onde o usuário escolhe uma figura em uma lista, e após disso ele pode personalizar as cores dessa figura, através de uma tabela básica de cores. são 24 cores, que criei o botão para elas e defini a cor específica de cada um botão nomeado de b1,b2,b3... usando array:

var btts:Array = [b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24];
var set_colors:Object = {'b1':0x000000, 'b2':0x333333, 'b3':0x666666, 'b4':0x999999, 'b5':0xCCCCCC, 'b6':0xEEEEEE, 'b7':0xFF0000, 'b8':0x663300, 'b9':0x333300, 'b10':0x006600, 'b11':0x006666, 'b12':0x003399, 'b13':0x0033FF, 'b14':0x3366FF, 'b15':0x6633FF, 'b16':0xCC6699, 'b17':0x996666, 'b18':0xFF9966, 'b19':0xFFCC00, 'b20':0xFF99CC, 'b21':0xFF33CC, 'b22':0x990066, 'b23':0xFF0099, 'b24':0x663366};
Após definir os botões e cores de cada um, fiz um loop para adicionar o evento aos botões:
for(var i:int=0; i<btts.length; i++) {
  // set the color to each button
  obj_color.color = set_colors[btts[i].name];
  btts[i].transform.colorTransform = obj_color;

  // register CLICK event for each button
  btts[i].addEventListener(MouseEvent.CLICK, changeColor);
}
Após os botões, coloquei a figura e transformei cada "parte" dela em um MovieClip, ficando: mc1, mc2, mc3... Logo abaixo, a criação das variáveis que serão usadas no AS:
var obj_color:ColorTransform = new ColorTransform();
var item:MovieClip = MovieClip(mc1); //onde mc1 é uma parte da figura que será mudara a cor
E logo após a function que faz a troca da cor da figura:
function changeColor(evt:Event):void
{
  var b_name = evt.target.name;
  obj_color.color = set_colors[b_name];
  item.transform.colorTransform = obj_color;
}
Até aí tudo certo, tudo funciona... Mas a hora de eu selecionar a "outra parte" que quero alterar a cor, não consigo fazer uma function genérica que eu consiga reutilizar para todos os MCs (mc1, mc2...) então tive que fazer assim:
mc1.addEventListener(MouseEvent.CLICK, mudaClipe1);
mc2.addEventListener(MouseEvent.CLICK, mudaClipe2);
mc3.addEventListener(MouseEvent.CLICK, mudaClipe3);
mc4.addEventListener(MouseEvent.CLICK, mudaClipe4);
mc5.addEventListener(MouseEvent.CLICK, mudaClipe5);
mc6.addEventListener(MouseEvent.CLICK, mudaClipe6);
function mudaClipe1(event:MouseEvent):void {    item = MovieClip(mc1); }
function mudaClipe2(event:MouseEvent):void {    item = MovieClip(mc2); }
function mudaClipe3(event:MouseEvent):void {    item = MovieClip(mc3); }
function mudaClipe4(event:MouseEvent):void {    item = MovieClip(mc4); }
function mudaClipe5(event:MouseEvent):void {    item = MovieClip(mc5); }
function mudaClipe6(event:MouseEvent):void {    item = MovieClip(mc6); }

O problema é que tem uma figura com mais de 20 partes, e eu queria um comando genérico que entendesse que o último MC clicado seria o que teria a cor alterada...

Tentei armazenar numa variável, ou alterar o valor da variável 'item' definida lá no início, mas não está funcionando...

Algum help?

Editado por EvandroPH
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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...