Ir para conteúdo

POWERED BY:

Arquivado

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

rafinhaphp

[Resolvido] Duplicar MC com for()

Recommended Posts

salve galera.. to tentando duplicar um movieClip com um for.... mas nun acontec nada. nun da erro, nun da nada...

óia ai!:

 

for(var valor = 1; valor <= 4; valor++){
	duplicateMovieClip(MC,newname="MC" + valor,valor);
	setProperty("MC" + valor,_x, "MC" + valor._x + "MC" + valor._xscale + 40);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem erro no cód... Tenta assim:

for(var valor = 1; valor <= 4; valor++){
	duplicateMovieClip(MC, "MC"+valor, valor);
	setProperty(MC, _x, this["MC"+valor]._x + this["MC"+valor]._xscale + 40);
}

Ou, simpificando assim:

for(i=1;i<4;i++) {
	mc.duplicateMovieClip("mc"+i, this.getNextHighestDepth(), {_x:mc._x + 140 * i});
}

Agora, aquele "_xscale" faz sentido ali, o correto não seria um "_width" ???

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

intom.... o _xscale é pra fica na posição correta, fiz uma gabiarra ai! rsrsrs

mas o _xscale e o _whidth nun tem a masma "função"??

 

 

mas vamu la... manin... eu testei o script q você posto... os 2 funiono q é uma maravilha! rsrsrs

ma eu tenhu umas duvidas sobra os 2!

porq como eu sempre digo, eu ODEEEEIIIO só copiar e cola!!!!

 

você pode me explica os 2?

 

tipo o primeiro eu entendi assim:

 

 

enquanto(valor é = 1; enquanto valor for menor ou igual a 4; adiciona 1 ao valor){

duplica("MC", novo nome"MC" + valor, o Depth vai ser = o valor)

MudaPropriedade("MC", muda a posição _X, aqui eu jah non intendi mais nada

 

porq tem esse this? e porque tem que estar dentro de []?

 

você percebeu q eu gosto de ESCREVER como se entendo o script... e essa parte ai eu não consegui entender oque o script ta "falando", ou ordenando, seila! rs

 

 

 

o 2°

ENQUANTO(i é = 1; enquanto i for menor que 4; adiciona 1 a i)

DUPLICAMC('MC" mais o valor de i, aqui eu não intendi)

 

oque esse getNextHighestDepth() faz? ele pega o depht??

{_x:mc._x + 140 * i}..... aqui eu sei que esta "setando" o valor de _x, mas porq esse 140 * i (vezes né?)???? e porq tem que estar entre {} e não [] ou ()????

 

desde jah desculpa as perguntas meio sem sentido, mas é que eu sou professor e gosto de saber tudo nos seus MIIIIIIInimos detralhes! rsrsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa ver se consigo clarear as idéias...

 

mas o _xscale e o _whidth nun tem a masma "função"??

Não, o "_xscale" ou "_yscale" trabalham com valores em percentuais e o "_width" e o "_height" com valores em pixels.

 

for(var valor = 1; valor <= 4; valor++){
	duplicateMovieClip(MC, "MC"+valor, valor);
	setProperty(MC, _x, this["MC"+valor]._x + this["MC"+valor]._xscale + 40);
}
Nada mais é do que um laço de repetição (for), ou seja, de acordo com a declaração, vai repetir o bloco de código que é: duplicar o MC e alterar as propriedades de cada, sendo a declaração:

var valor = 1 (Valor Inicial);

valor <= 4 (Condição);

valor++ (Próximo até atingir a condição).

duplicateMovieClip = Como o nome já diz, duplica o MovieClip informado (MC), definindo uma nova instância (MC+valor) a cada nova duplicação. E o próximo argumento é o depth, pode informar o valor desejado, ou solicitar que o AS adquira sempre o depth mais alto, utilizando: this.getNextHighestDepth()

setProperty = define a propriedade "_x" do MC informado, que é, o valor da posição _"x" atual + a largura do objeto em "_xscale" (100) + 40 E como isto está dentro do laço, vai pegar sempre a posição do último objeto para calcular.

 

for(i=1;i<4;i++) {
	mc.duplicateMovieClip("mc"+i, this.getNextHighestDepth(), {_x:mc._x + 140 * i});
}
No segundo exemplo, é a mesma coisa: Um laço de repetição (for), só que reduzido. Setei a posição "_x" direto, e para o cálculo do posicionamento, pego a posição atual do primeiro mc + 140 * o valor de i, que em cada repetição será alterado para 1, 2, 3, 4...

Utilizei o valor de 140, porque calculei os 100% do seu exemplo ("_xscale"), então 100 + 40 = 140

 

Mas como disse antes, no seu cód, acho que o correto seria "_width", então altere os valores e vai testando.

 

Referências:

duplicateMovieClip = http://livedocs.adobe.com/flash/8/main/wwh...e=00002452.html

loop for = http://livedocs.adobe.com/flash/8/main/wwh...e=00001872.html

setProperty = http://livedocs.adobe.com/flash/8/main/wwh...e=00001767.html

 

Abs e bom estudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pow manin, valew... deu pra clarear bastante! ^^

 

mas ainda fico um "apagadinho" rsrsrsrsrsrs

 

a duvida é simples....

 

eu entendi q o

this.getNextHighestDepth

pega o maior depth certo?

 

ó, pode tar errado, e se tiver me fala aê, mas eu aprendi assim:

 

duplicateMovieClip("alvo", novo nome, depth)

 

e no que tu fez, nun ta assim, issu que me imbabano saks....

no seu ta:

....("alvo", depth, aqui eu nun sei o nome que se da, mas ta mudando a propriedd.rsrs)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma que fez também está correta, só que em alguns casos é preciso declarar a instância do mc a ser duplicado no início da função. Não é caso do meu exemplo, onde apenas simplifiquei o código, definindo o posicionamento do novo mc na declaraçao (esta parte é opcional). Repare o funcionamento idêntico dos 2 cód. abaixo:

 

Ex. 01:

mc.duplicateMovieClip("mc_new", this.getNextHighestDepth(), {_x:mc._x+100})

Ex. 02:

duplicateMovieClip(mc, "mc_new", this.getNextHighestDepth())
mc_new._x = mc._x + 100;

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahhhh ta Manin.. agora intendi... sabe porq.. eu tava axando q o 2° parametro estava dando o novo nome... mas é o primeiro!

agora q eu vi... tu coloco assim

mc.duplicateMovieClip()

e não assim

duplicateMovieClip(mc,)

 

então se eu colocar o nome do MC (alvo) a ser duplicado antes do DuplicateMov..... ele jah não vai mais precs dizer o alvo né?, sobrando espaço pra pra definir a posição!

INTENDI! :lol:

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.