venatici 0 Denunciar post Postado Outubro 1, 2006 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
Antoniosp 2 Denunciar post Postado Outubro 1, 2006 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
venatici 0 Denunciar post Postado Outubro 2, 2006 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
p.d 0 Denunciar post Postado Outubro 2, 2006 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
venatici 0 Denunciar post Postado Outubro 2, 2006 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
p.d 0 Denunciar post Postado Outubro 2, 2006 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
venatici 0 Denunciar post Postado Outubro 2, 2006 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
p.d 0 Denunciar post Postado Outubro 2, 2006 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
venatici 0 Denunciar post Postado Outubro 2, 2006 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
« Léo » 0 Denunciar post Postado Outubro 2, 2006 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
venatici 0 Denunciar post Postado Outubro 2, 2006 Opa! Vou tentar sim... Abraços Compartilhar este post Link para o post Compartilhar em outros sites