Ir para conteúdo

POWERED BY:

Arquivado

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

venatici

Como aplicar o onRollOver() num MC Duplicado via AS?

Recommended Posts

Fala ae galera!

 

É o seguinte: tenho varios mc's (createEmptyMovieClip) instanciados e criados via AS, e não estou conseguindo aplicar o onRollover sobre eles.

 

 

Olhem o codigo completo:

Obs: o "onRollOver" está no final do codigo.

 

this._lockroot = true;System.useCodepage = true;_global.fotos = new Array();_global.cont = 0;_global.grd_ord = new Array();_global.tm_array = new Array();_global.mcx_array = new Array();function init():Void {	xmlData = new XML();	xmlData.ignoreWhite = true;	xmlData.onLoad = function(loaded) {		if (loaded) {			xmlNode = this.firstChild;			var f = this.firstChild.childNodes;			//listando conteúdo do nó e inserindo no array de fotos			for (var i = 0; i<f.length; i++) {				var novaimg:Object = new Object();				//criando o objeto de cada foto				novaimg = f[i].attributes.ft;				_global.fotos[i] = novaimg;				// Cria o mc, carrega a foto e a posiciona no palco.				carregarFoto("Imagens/"+_global.fotos[i], "alvoFoto"+i, 200+Number(i), f.length);			}		}			};	xmlData.load("Imagens/fotos.xml");}function carregarFoto(url:String, target:String, Nivel:Number, qntd_fotos) {	this.createEmptyMovieClip(target, Nivel);	var mcl:MovieClipLoader = new MovieClipLoader();	var list:Object = new Object();	mcl.addListener(list);	mcl.loadClip(url, target);	list.onLoadComplete = function(mc1:MovieClip) {		list.onLoadInit = function(mc1:MovieClip) {			//Pega a propriedade _width da foto (na verdade: do mc)			tm = mc1._width;			_global.cont += 1;			// enquanto i menor que (quantidade de fotos)			for (var i = 0; i<qntd_fotos; i++) {				if (_global.mcx_ant == null) {					_root[target]._x = 0;				}				if (target == ("alvoFoto"+i) and (target != '')) {					_root[target]._x = _global.mcx_ant+tm_ant+2;					_global.grd_ord[cont] = url;					_global.tm_array[cont] = tm;					_global.mcx_array[cont] = mcx_ant;				}			}			_global.mcx_ant = _root[target]._x;			_global.tm_ant = tm;			if (_global.cont == qntd_fotos) {				for (var i:Number = cont; i<(cont*2); i++) {					duplicateMovieClip(alvoFoto, "newtarget"+i, 300+i);					_root["newtarget"+i].loadMovie(_global.grd_ord[i-(qntd_fotos-1)]);					_root["newtarget"+i]._y = 0;					if (i == cont) {						_root["newtarget"+i]._x = _global.mcx_ant+tm_ant+2;					} else {						_root["newtarget"+i]._x = _root["newtarget"+(i-1)]._x+_global.tm_array[i-qntd_fotos]+2;					}				}			}		}	}}init();MovieClip.prototype.irPara = function() {	this.onRollOver = function() {		trace("teste");	};	}newtarget1.irPara();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos fazer um teste. Troque o seu prototype por:

 

MovieClip.prototype.irPara = function() {	trace(this._width);	trace(this._height);};

Depois conte o resultado. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Antonio... Fiz o q você me orientou, e não foi retornado nada pelo trace. O trace retorna valor somente quando, invés da função irPara() ser chamada no final do codigo, ser chamada dentro da função "list.onLoadInit = function(mc1:MovieClip) {". Mas mesmo chamando a função irPara() dentro da onLoadInit, o onRollOver não funciona.Vcs podem testar este codigo (na verdade um mc de fotos) apenas colocando o codigo completo no primeiro frame, incluindo 2..3..4 - a quantidade não importa - fotos no diretorio "Imagens/", e criando e instanciando um mc vazio com o nome de alvoFoto(instanciada no palco).

Compartilhar este post


Link para o post
Compartilhar em outros sites

duplicateMovieClip(alvoFoto, "newtarget"+i, 300+i);
troque por

var j:MovieClip = duplicateMovieClip(alvoFoto, "newtarget"+i, 300+i);j.onRollOver = function() {...}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... fiz o q você me pediu:

for (var i:Number = cont; i<(cont*2); i++) {					var j:MovieClip = duplicateMovieClip(alvoFoto, "newtarget"+i, 300+i);					trace(i)					j.onRollOver = function() {	   		 			trace("teste");					};						_root["newtarget"+i].loadMovie(_global.grd_ord[i-(qntd_fotos-1)]);					_root["newtarget"+i]._y = 0;					if (i == cont) {						_root["newtarget"+i]._x = _global.mcx_ant+tm_ant+2;					} else {						_root["newtarget"+i]._x = _root["newtarget"+(i-1)]._x+_global.tm_array[i-qntd_fotos]+2;					}				}			}

Mas não funcionou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde tiver newTarget+i troque pelo j, essa eh a nova variavel, ja que declarou ela antes do duplicateMovieClip.:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi... Deve ser meus neurônios que não trabalham bem na segunda feira. :)

 

É para substituir todos os "i" por "j"?

 

Outra coisa: Na parte do codigo onde estou criando varios mc's, com o createEmptyMovieClip(), o onRollOver funciona. Somente não funciona para os mc's duplicados.

 

if (target == ("alvoFoto"+i) and (target != '')) {					_root[target]._x = _global.mcx_ant+tm_ant+2;					_global.grd_ord[cont] = url;					_global.tm_array[cont] = tm;					_global.mcx_array[cont] = mcx_ant;					_root["alvoFoto"+i].onRollOver = function(){						trace(url);					}				}

 

O onRollOver está funcionando nesta parte do codigo, apenas depois do duplicateMC() que não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmm sees...

 

for (var i:Number = cont; i<(cont*2); i++) {	var j:MovieClip = duplicateMovieClip(alvoFoto, "newtarget"+i, 300+i);	j.onRollOver = function() {		trace("teste");	};		j.loadMovie(_global.grd_ord[i-(qntd_fotos-1)]);	j._y = 0;	// esse if dentro do else voce deve procurar um valor estatico para multiplicar por i e no fim somado a outro fixo para nao ficar tao complicado ou dificil de funcionar kk	if (i == cont) {		j._x = _global.mcx_ant+tm_ant+2;	} else {		j._x = _root["newtarget"+(i-1)]._x+_global.tm_array[i-qntd_fotos]+2;	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois do meu ultimo post, eu havia entendido. Fiz exatamente o que você fez acima, mas sequer eles (mc's duplicados) foram posicionados no palco. Outra coisa: dei um trace( j._y) e ele me retornou um "undefined". Estou começando a achar que o onRollOver não funciona sobre mc duplicado. OU não funciona dentro da função onLoadInit() - MovieClipLoader(). Tá f***! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

for (var i:Number = cont; i<(cont*2); i++) {	duplicateMovieClip(alvoFoto, "newtarget"+i, 300+i);	eval("newtarget"+i).createEmptyMovieClip("carrega",(this.i));	_root["newtarget"+i].carrega.loadMovie(_global.grd_ord[i-(qntd_fotos-1)]);

Tenta assim... num tive mt tempo de entender seu codigo, mas a ideia eh a seguinte...

 

Nao lembro onde li que qd você usa o loadMovie o mcAlvo é substituido pelo conteudo chamado. Ou por algum motivo bizarro não pega hit. Entao tente criar um mc dentro do mc que está recebendo o rollOver e nele sim colocar o loadMovie.

 

Posso estar viajando, mas ta ae meu pitaco!

 

Abraços e boa sorte! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.