Ir para conteúdo

POWERED BY:

Arquivado

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

marcos.cardoso

[Resolvido] algo errado em attachMovie

Recommended Posts

Ae galerinha, bom dia,

 

estou tentando duplicar alguns movieclips através de attachMovie mas não to conseguindo e não sei onde está errado.

 

Tenho cinco mcs no palco, o usuário deve duplicar quantos quiser e de maneira ilimitada. Esses mcs devem ser colocados em alvos. Existem vários alvos para cada um deles.

Por exemplo: tenho os mcs a_mc e b_mc, e tenho os alvos alvo_a1_mc, alvo_a2_mc, .. n, alvo_b1_mc, alvo_b2_mc, .. n, ou vários outros seguindo essa sequencia.

Mas a questão dos alvos nem ta pegando ainda, o que tem de errado é que não to conseguindo duplicar esses mcs. Sei que posso usar duplicateMovieClip, mas preciso fazer com attachMovie

O código que estou usando é esse:

var arr:Array = new Array(a_mc, e_mc, i_mc, o_mc, u_mc);

var i:Number = 0;

while (i < arr.length) {
	arr[i].a = arr[i]._x;
	arr[i].b = arr[i]._y;
	arr[i].onPress = copyLetters;
	//arr[i].onRelease = pararArrasto;
	i++;
}
//var position = {_x:this._x, _y:this._y};
function copyLetters() {
	// criar uma copia para ser arrastada
	var position = {_x:this._x, _y:this._y};
	var copy = this.attachMovie(this._name, this._name, 1, position);
	// segura a copia
	copy.startDrag();
	// define uma ação para quando o mouse soltar a copia
	copy.onRelease = dropLetters;
}

function dropLetters() {
	// solta a copia
	stopDrag();
	if (alvo_a1_mc.hitTest(_root._xmouse, _root._ymouse)) {
		alvo_a1_mc.attachMovie(this._name, "gift1", 1, position);/*+dropareaAttach_mc.depth, dropareaAttach_mc.depth, position*/ 
	}
	this.removeMovieClip();
}

Se alguém puder ajudar...

desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você tem que fazer é colocar um contador junto com o nome do clip... pois se você sempre adicionar o clip com o mesmo nome ele não vai fazer

 

attachMovie(linkage, novo nome, depth)

 

Na parte do novo nome você coloca um nome especifico + i que vai ser uma variavel de contagem... e adiciona +1 ao i toda vez que for fazer a ação

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu falei

 

Tem que colocar um contador...

 

Tente com o seguinte código:

var arr:Array = new Array(mc_a, mc_e, mc_i, mc_o, mc_u);
var i:Number = 0;
var t:Number = 0;

while (i < arr.length) {
        arr[i].a = arr[i]._x;
        arr[i].b = arr[i]._y;
        arr[i].onPress = copyLetters;
        arr[i].onReleaseOutside = arr[i].onRelease = dropLetters;
        
        //arr[i].onRelease = pararArrasto;
        i++;
}
//var position = {_x:this._x, _y:this._y};
function copyLetters() {
    // criar uma copia para ser arrastada
    var copy = this.attachMovie(this._name, this._name, t,{_x:0, _y:0});
    // segura a copia
    copy.startDrag();
    t++;
}

function dropLetters() {
    // solta a copia
    this.stopDrag();
    if (alvo_a1_mc.hitTest(_root._xmouse, _root._ymouse)) {
            alvo_a1_mc.attachMovie(this._name, "gift1", 1,{_x:0, _y:0});/*+dropareaAttach_mc.depth, dropareaAttach_mc.depth, position*/ 
    }
    this.removeMovieClip();
}

Veja também que adicionei um this.stopDrag() que você não havia colocado e um onReleaseOutside alem do onRelease. Pois o usuario pode sem querer sair fora da area de click

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não deu.

Coloquei um fonte com essa parte da aplicação num gerenciador de arquivos, se puder dar uma olhada. Mas num precisa pressa não isso ai tem prioridade baixa.

teste.fla

Pode ser alguma coisa que não esteja relacionada com o código, pq vi outro exemplo como esse e funcionava belezinha.

De qualquer forma vo continua quebrando a cabeca aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom o código que eu refiz acima seu...

 

Eu transformei as letras A E I O U em MC instanciei os mesmos... coloquei um linkage igual ao que ta la em cima... no meu código... e da instancia

 

E simplesmente copiei aquele código que coloquei e colei..... e funcionou perfeitamente bem... ele faz umonte de cópias das letras -.-

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então enrolo. Nem usando o seu código funciona aqui. Não sei o que mais pode ser.

Só tenho as letras, que são movieclips, com os nomes de instância como está no código e, como exemplo, coloquei um alvo só, para testar. Não tem que fazer mais nada? Nenhuma configuração nos simbolos na biblioteca? Nada?

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.