Evandro PH 0 Denunciar post Postado Fevereiro 8, 2013 Bom dia, Estou tentando fazer uma rotina usando nomes dinâmicos nos movie clips, pois tenho que criar 300 variações dele, e estou tentando usar um código mais dinâmico possível. Parei neste problema: var qtmc:Number = 4; var mcs:Array = [mc0]; for(var icor:int=1; icor < qtmc; icor++) { mcs[icor] = MovieClip(this["estampa.mc" + icor]); trace(mcs); } O mc0 é um movieclip de fundo, ele sempre será será o primeiro movieclip da minha array, por isso já criei a array com ele na posição inicial. Então, fiz um FOR para colocar meus outros movieclips que tenho na animação dentro deste array, pra facilitar as referências futuras. A variável qtmc diz quantos MCs eu tenho na animação. Mas quando fiz este código, ao mandar um trace em mcs (ultima linha do código) ele está retornando a array só com o primeiro mc, como se eu não tivesse definido os outros na array. [object MovieClip], [object MovieClip],, [object MovieClip],,, [object MovieClip],,,, Obs.: os mcs estão nomeados corretamente e no local certo, tanto que funciona se eu definir inicialmente preenchida a array MCS como: var mcs:Array = [mc0, estampa.mc1, estampa.mc2, estampa.mc3, estampa.mc4]; Compartilhar este post Link para o post Compartilhar em outros sites
DesenvolvedorRoger 50 Denunciar post Postado Fevereiro 8, 2013 Estou tentando fazer uma rotina usando nomes dinâmicos nos movie clips Mude para isso: mcs[icor] = String( "estampa.mc" + icor ); Abs, Compartilhar este post Link para o post Compartilhar em outros sites
Evandro PH 0 Denunciar post Postado Fevereiro 11, 2013 Mude para isso: mcs[icor] = String( "estampa.mc" + icor ); Abs, Não funciona, quando uso o comando: mcs[ind].addEventListener(MouseEvent.CLICK, mudaClipe); o flash informa que não é um termo definido ou uma função válida. E a array teria que retornar: [object MovieClip],[object MovieClip],[object MovieClip],[object MovieClip],[object MovieClip] e com o comando que você me passou ela retorna: [object MovieClip],estampa.mc1,estampa.mc2,estampa.mc3,estampa.mc4 então o flash informa que não é possível converter um tipo string em movieclip quando uso o comando: for (var ind:int = 0; ind < 5; ind++) { mcs[ind].addEventListener(MouseEvent.CLICK, mudaClipe); } Se quiser, posso postar o .FLA aqui pra tentarem ver como corrigir isso... Compartilhar este post Link para o post Compartilhar em outros sites
DesenvolvedorRoger 50 Denunciar post Postado Fevereiro 11, 2013 Segue um exemplo de como você deve fazer: // Crie um MC no palco como o instance name de "estampa" e em seguida duplique ele 3 vezes. Atribua os seguintes nomes a cada um deles: "estampa1, estampa2 e estampa3" var qtmc:Number = 4; var mcs:Array = [estampa]; //agora faça conforme abaixo for(var icor:int=1; icor < qtmc; icor++) { mcs[icor] = MovieClip( this["estampa" + icor] ); trace(mcs); } Basta agora ajustar ao seu caso... Abs, Compartilhar este post Link para o post Compartilhar em outros sites
Evandro PH 0 Denunciar post Postado Fevereiro 11, 2013 Segue um exemplo de como você deve fazer: // Crie um MC no palco como o instance name de "estampa" e em seguida duplique ele 3 vezes. Atribua os seguintes nomes a cada um deles: "estampa1, estampa2 e estampa3" var qtmc:Number = 4; var mcs:Array = [estampa]; //agora faça conforme abaixo for(var icor:int=1; icor < qtmc; icor++) { mcs[icor] = MovieClip( this["estampa" + icor] ); trace(mcs); } Basta agora ajustar ao seu caso... Abs, Continua dando o mesmo erro... Vou postar o .fla pra vc dar uma olhada... Obs.: o arquivo cores.swf deve estar na mesma pasta para funcionar. http://www.phinfo.com.br/main.rar Compartilhar este post Link para o post Compartilhar em outros sites
DesenvolvedorRoger 50 Denunciar post Postado Fevereiro 11, 2013 O erro está no caminho que você está apontando para os objetos [ "mc" + icor ]. Troque isso: mcs[icor] = MovieClip( this["estampa" + icor] ); Por isso: mcs[icor] = estampa["mc" + icor]; Abs, Compartilhar este post Link para o post Compartilhar em outros sites
Evandro PH 0 Denunciar post Postado Fevereiro 11, 2013 O erro está no caminho que você está apontando para os objetos [ "mc" + icor ]. Troque isso: mcs[icor] = MovieClip( this["estampa" + icor] ); Por isso: mcs[icor] = estampa["mc" + icor]; Abs, Roger, valeu mesmo! Estou quebrando a cabeça com este AS3, eu programo há muito tempo no flash, inclusive já fiz alguns joguinhos, mas nunca em AS3, sempre as2. No as3 eu não tinha a mínima ideia de como me referenciar a um MC dentro de outro. To começando a entender e migrar até com certa facilidade, não sem ajuda... Obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites