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

Duplicate Mc


konras

Pergunta

então continuando o attachmovie (valeu de novo :D ), preciso fazer o seguinte.

pegar um mc da biblioteca, instanciar, e criar 10 copias usando um so attach movie, no caso estou usando for, porem preciso colocar as bolas uma ao lado da outra, isso não consegui fazer... :(

está assim oh:

_root.createEmptyMovieClip("alvo", 2);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);

criei um MC vazio para fazer o attach movie, ate ai tudo, a bolinha aparece legal na posicao (0,0). não consegui faer as copias e colocar uma do lado da outra...

valeu...... ;)

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

aqui você cria o primeiro MC que será copiado

_root.createEmptyMovieClip("alvo", 2);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
fazendo 10 copias e posicionando em linha uma ao lado da outra (x) , usando 23px de intervalo entre as cópias
for(n=1;n<=10;n++){
      alvo.duplicateMovieClip("alvo" + n, this.getNextHighestDepth());
      this["alvo" + n]._x = n*25
}

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

cara, n funfou de novo, está assim oh.

_root.createEmptyMovieClip("alvo", 2);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
for(n=1;n<=10;n++){
      alvo.duplicateMovieClip("alvo" + n, this.getNextHighestDepth());
      this["alvo" + n]._x = n*25
}

me parece que esta duplicando mas não esta mudando a posição. você chegou a testar isso, não é duvidando de você n, é porque n sei fazer mesmo, to aprendo aqui com você e a galera que sempre ajuda...

Link para o comentário
Compartilhar em outros sites

  • 0

Tente fazer o seguinte então:


myMC = _root.createEmptyMovieClip("alvo", this.getNextHighestDepth());
_root.alvo.attachMovie("bolinha", "mcBola", this.getNextHighestDepth() ,{_x:100,_y:100});

for(n=1;n<=10;n++){
      alvo.duplicateMovieClip("alvo" + n, this.getNextHighestDepth());
      this["alvo" + n]._x = n*25
      this["alvo" + n].attachMovie("bolinha", "mcBola", this.getNextHighestDepth(),{_x:100,_y:100})
}

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

:( também não, cara num sei o que está acontecendo, to igualzinho o que você esta me ensinando... :blink:

pelo fato de estar trabalhando com MCs será que devemos usar onEnterFrame? tipo, tirar o mc da biblioteca e jogar no palco, normal, mas duplicar usando onenterframe. o que você acha???

Link para o comentário
Compartilhar em outros sites

  • 0

Salve!!.... Não sei o que pode estar acontecendo, pois o exemplo que enviei esta funcionando corretamente aqui. Vou colocar para download e você analiza se há algo de diferente... do que realmente você precisa... se você puder colocar para download o seu exemplo seria bom também..

Eu uso uma versão do Flash Professional 8.0 com Flash Player 9.0

Download do Arquivo

Caso o problema persista, tente realmente jogar o MC da para acena, mas usando for ou while para duplicar.

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

será que tem diferença no AS? porque eu uso o mx, to desatualizado, inclusive se você souber onde posso pegar o 8, me avise, por email.

eu não consegui abrir o seu arquivo, tem como você salvar como flash 6.0???

vou colocar o meu arquivo p você ver... valeu...

tai

bolinha

Link para o comentário
Compartilhar em outros sites

  • 0

No flash MX (versão 6) não há "getNextHighestDepth"

e o problema no seu script é que você esta usando o depth 2 para todos as copias anulando as mesmas

veja se isso vai funcionar:

_root.createEmptyMovieClip("alvo", 1);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
for (n=1; n<=10; n++) {
    alvo.duplicateMovieClip("alvo"+n, 2+n);
    this["alvo"+n]._x = n*25;
    this["alvo"+n].attachMovie("bolinha", "mcBola", 20+n);
}

o exemplo os depths são definidos pelas cópias, pois não se pode repitir o mesmo numero.

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

é isso aew, vivendo e aprendendo. obrigado mais uma vez.

E podemos subir mais um nível? :unsure:

agora preciso de um botão no palco que remova uma copia da bolinha por clique. sacou?

tenho de usar removeMovieClip? ou alvo.removeMovieClip?

valeu ...............

Link para o comentário
Compartilhar em outros sites

  • 0

não é assim miguin, queria tirar uma por clique. fiz assim, vê o que está errado:

on (press) {
    contador = 11;
    while (contador>=0) {
        alvo.removeMovieClip("alvo"+n, n+1);
        n+=1;
        contador-=1;
    }
}

isso remove só a primeira... o que está errado?

Link para o comentário
Compartilhar em outros sites

  • 0

Novamente acho que é um conflito de versões, e tinhamos nos esquecido do valor n:

testei aqui no modo de comptibilidade com flash MX e funcionou:


on (press) {
    contador = 11;
    n = 1;
    alvo.removeMovieClip()
    while (contador>=0) {
        _root["alvo"+n].removeMovieClip();
        n+=1;
        contador-=1;
    }
}

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

isso mesmo, eu queria uma por clique... :(

tipo, tou estudando p desenvolver jogos, e isso é tipo um dos exercícios... :unsure:

será que se p cada bolinha eu criar um emptyMC, da certo? ai na hora de apagar pode ser que funciona...

Link para o comentário
Compartilhar em outros sites

  • 0

o exercicio que to fazendo é assim oh:

1) Instanciar dinamicamente o movieclip “mcBola” no palco (com attachMovie) na posição 0,0 e fazer com que ela vá andando para a direita. Dica: pesquise e aprenda como usar a função onEnterFrame.

2) Instanciar dinamicamente 10 cópias do movieclip “mcBola”, usando apenas um comando attachMovie, dentro de um loop for. As bolas instanciadas deverão ser colocadas uma do lado do outro.

3) Adicionar um botão que a cada vez que for clicado remova uma bola por vez.
a bola está na bilbioteca assim: mcBola o nº 1 ficou assim:
_root.createEmptyMovieClip("alvo", 2);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
alvo.onEnterFrame = function (){ 
this._x += 10; 
if(this._x >= 300){ 
delete this.onEnterFrame; 
} 
} 
o n°2 assim:
_root.createEmptyMovieClip("alvo", 1);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
for (n=1; n<=10; n++) {
    alvo.duplicateMovieClip("alvo"+n, 2+n);
    this["alvo"+n]._x = n*50;
    this["alvo"+n].attachMovie("bolinha", "mcBola", 20+n);
}
e o nº 3 :
_root.createEmptyMovieClip("alvo", 1);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
for (n=1; n<=10; n++) {
    alvo.duplicateMovieClip("alvo"+n, 2+n);
    this["alvo"+n]._x = n*50;
    this["alvo"+n].attachMovie("bolinha", "mcBola", 20+n);
}
com este codigo no botao, para apagar uma por cada clique, mas apagua só a primeira...
on (press) {
    contador = 11;
    while (contador>=0) {
        n = 2;
        alvo.removeMovieClip("alvo"+n, 2+n);
        n += 1;
        contador -= 1;
    }
}

talvez assim vocês entendam melhor o raciocínio e possam me ajudar... valeu...

Link para o comentário
Compartilhar em outros sites

  • 0

No primeiro frame da cena:


_root.createEmptyMovieClip("alvo", 1);
alvo._x = 0;
alvo._y = 0;
alvo.attachMovie("bolinha", "mcBola", 2);
for (n=1; n<=10; n++) {
    alvo.duplicateMovieClip("alvo"+n, 2+n);
    this["alvo"+n]._x = n*25;
    this["alvo"+n].attachMovie("bolinha", "mcBola", 20+n);
}


contador = 11;
n = 1;
Note o valor de n e do contador aqui Já no action do botão:

on (press) {
    if(contador > 1){
         _root["alvo"+n].removeMovieClip();
        n+=1;
        contador-=1;
    } else {
        alvo.removeMovieClip()
    }

}

:blink:

Link para o comentário
Compartilhar em outros sites

  • 0

bom, continuando então, lembrando que agora estou usando o MX2004...

o código está assim...

myMC = _root.createEmptyMovieClip("alvo", this.getNextHighestDepth());
_root.alvo.attachMovie("bolinha", "mcBola", this.getNextHighestDepth(), {_x:100, _y:100});
for (n=1; n<=10; n++) {
    alvo.duplicateMovieClip("alvo"+n, this.getNextHighestDepth());
    this["alvo"+n]._x = n*25;
    this["alvo"+n].attachMovie("bolinha", "mcBola", this.getNextHighestDepth(), {_x:100, _y:100});
    this["alvo"+n].onEnterFrame = function() {
        this._x -= 10;
        if (this._x<=-70) {
            this.removeMovieClip();
            [b]alvo.duplicateMovieClip("alvo"+n, this.getNextHighestDepth());[/b]        }
    };
}

tá funfando legal antti-puff, valeu mesmo..

Seguinte ali onde esta negrito eu que inseri, na verdade eu quero que, assim que a primeira cópia for apagada, uma outra seja criada em seu lugar, entrando atras das que ainda estao no palco... entendeu???

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...