RKurtz 0 Denunciar post Postado Abril 6, 2009 Olá, Estou montando uma galeria baseada no modelo Polaroid. Acontece que num determinado momento, precisei usar um tooltip para tornar a visulização mais incisiva, mais prática para quem está navegando. Segue o código: import flash.filters.*; import flash.display.BitmapData; import mx.utils.Delegate; var photoHolder = new Array(); var skalerTempo = 3; var thumbStr = 10; var stageHeight = Stage.height; var stageWidth = Stage.width; var fotoSkygge:DropShadowFilter = new DropShadowFilter(0, 45, 0x8E8479, 0.8, 10, 10, 2, 3); var glow:GlowFilter = new GlowFilter(0x333333,0,150,150,1.5,3,true,true); var bakgrunnPattern:BitmapData = BitmapData.loadBitmap("bakgrunn"); var tooltip:MovieClip = this.attachMovie("tooltip", "tooltip", 10000); tooltip._alpha = 0; _root.createEmptyMovieClip("bakgrunsHolder",_root.getNextHighestDepth()); _root.createEmptyMovieClip("sideGlow", _root.getNextHighestDepth()); xmlURL = myURL; var loadet_xml:XML = new XML(); loadet_xml.ignoreWhite = true; loadet_xml.onLoad = function (success){ var loop = loadet_xml.firstChild.childNodes[4].childNodes; var num = 0; if (flickrID) { for (var i = 0;i < loop.length;i++) { if (loop[i].nodeName == "item") { photoHolder[num] = new Array(); num++; } } } else { for (i=0;i < loop.length;i++) { photoHolder[i] = loop[i].attributes; } } delete loadet_xml; byggBilder(); } loadet_xml.load(xmlURL); function byggBilder() { for (i=0;i < photoHolder.length;i++) { mc = _root.attachMovie("plantaCont","plantaCont"+i,_root.getNextHighestDepth(),{_xscale:thumbStr, _yscale:thumbStr}); mc.txt.text = photoHolder[i].legenda; mc.newX = 436+56+(106*i); mc.newY = 280; _root["plantaCont"+4].newY=360; _root["plantaCont"+4].newX=436+56; _root["plantaCont"+5].newY=360; _root["plantaCont"+5].newX=436+56+106; _root["plantaCont"+6].newY=360; _root["plantaCont"+6].newX=436+56+(212); _root["plantaCont"+7].newY=360; _root["plantaCont"+7].newX=436+56+(318); _root["plantaCont"+8].newY=440; _root["plantaCont"+8].newX=436+56; _root["plantaCont"+9].newY=440; _root["plantaCont"+9].newX=436+56+106; _root["plantaCont"+10].newY=440; _root["plantaCont"+10].newX=436+56+(212); _root["plantaCont"+11].newY=440; _root["plantaCont"+11].newX=436+56+(318); mc.oldX = mc.newX; mc.oldY = mc.newY; mc.startX = mc._x; mc.startY = mc._y; mc.oldHeight = mc._yscale; mc.oldWidth = mc._xscale; mc.id = i; mc.onEnterFrame = fotoAnimer; mc.filters = [fotoSkygge]; mc.dragPolplanta.onPress = drag; mc.acima.onRelease = acima; mc.noroeste.onRelease = noroeste; mc.direito.onRelease = direito; mc.sudeste.onRelease = sudeste; mc.abaixo.onRelease = abaixo; mc.sudoeste.onRelease = sudoeste; mc.esquerdo.onRelease = esquerdo; mc.abaixo.onRelease = abaixo; mc.nordeste.onRelease = nordeste; mc.maiszoom.onRelease = maiszoom; mc.menoszoom.onRelease = menoszoom; mc.reset.onRelease = reset; mc.dragPolplanta.onReleaseOutside = mc.dragPolplanta.onRelease = stopdrag; toolText = photoHolder[i].legenda; _root["plantaCont"+i].onRollOver = over; _root["plantaCont"+i].onRollOut = out; photoHolder[i].mc = mc; lastBilde(mc,photoHolder[i].url); delete mc; } antallBilder = i; } function lastBilde(mc, url) { mc.createEmptyMovieClip("tmp",mc.getNextHighestDepth()); lastBildeH.loadClip(url, (flickrID) ? mc.bildeHolder:mc.tmp); } var lastBildeH:MovieClipLoader = new MovieClipLoader(); var lastBildeHL:Object = new Object(); lastBildeHL.onLoadStart = function(mc:MovieClip):Void { mc._parent.attachMovie('preLoader','preloader',mc._parent.getNextHighestDepth()); loaderFarge = new Color(mc._parent.preloader); mc._parent.preloader.loadtxt.text = ""; loaderFarge.setRGB(0xFFFFFF); mc._parent.preloader._y = -10; mc._visible = false; } lastBildeHL.onLoadProgress = function(mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void { var numPercentLoaded:Number = numBytesLoaded / numBytesTotal * 100; mc._parent.preloader.percent._width = numPercentLoaded; } lastBildeHL.onLoadInit = function(mc:MovieClip) { mc._parent.preloader.removeMovieClip(); var mc2 = mc._parent.bildeHolder; if (!flickrID) { var myBitmap = new BitmapData(mc._width, mc._height,true,0xFFFFFF); myBitmap.draw(mc); mc._parent.bildeHolder.attachBitmap(myBitmap, mc._parent.bildeHolder.getNextHighestDepth(), "auto", true); mc.removeMovieClip(); } var wP = 1000/mc2._width; var hP = 450/mc2._height; mc2._width *= (wP < hP) ? hP:wP; mc2._height *= (wP < hP) ? hP:wP; mc2._x += -((mc2._width-468)/2); mc2._y += -((mc2._height-450)/2); mc2._visible = true; } lastBildeH.addListener(lastBildeHL); function rensFilm() { for (i=0;i<antallBilder;i++) { mc = eval("plantaCont"+i); mc.oldY = mc.startY; mc.oldX = mc.startX; mc.onEnterFrame = fotoAnimerTilbake; removeMovieClip(navigering); } } function fotoAnimer() { this._y += (this.newY-this._y)/skalerTempo; this._x += (this.newX-this._x)/skalerTempo; if (Math.round(this._y) == this.newY) delete this.onEnterFrame; } function fotoAnimerTilbake() { this._y += (this.oldY-this._y)/skalerTempo; this._x += (this.oldX-this._x)/skalerTempo; this._xscale += (this.oldWidth-this._xscale)/skalerTempo; this._yscale += (this.oldHeight-this._yscale)/skalerTempo; this.nesteKnapp._alpha += (0-this.nesteKnapp._alpha)/skalerTempo; this.forrigeKnapp._alpha += (0-this.forrigeKnapp._alpha)/skalerTempo; if ((Math.round(this._y) == this.oldY) && (Math.round(this._x) == this.oldX)) { delete this.nesteKnapp.onRelease; delete this.forrigeKnapp.onRelease; delete this.onEnterFrame; } } function fotoSkaler() { this._xscale += (90-this._xscale)/skalerTempo; this._yscale += (90-this._yscale)/skalerTempo; this._rotation += (this.newRotation-this._rotation)/skalerTempo; this._x += ((Stage.width/2.8)-this._x)/skalerTempo; this._y += ((Stage.height/2)-this._y)/skalerTempo; this.nesteKnapp._alpha += (60-this.nesteKnapp._alpha)/skalerTempo; this.forrigeKnapp._alpha += (60-this.forrigeKnapp._alpha)/skalerTempo; if (Math.round(this._width) == this.newWidth) { delete this.onEnterFrame; } } function drag() { if ((fotoSomBlirVist != this._parent) && (!this._parent.onEnterFrame)); if (!this.click) { this.click = true; this.timer = getTimer()/1000; } else { this.timer2 = getTimer()/1000; if ((this.timer2-this.timer)<.25) { visFoto(this._parent); } else { this.timer = getTimer()/1000; this.click = true; } } this._parent.swapDepths(_root.getNextHighestDepth()); if (fotoSomBlirVist) fotoSomBlirVist.swapDepths(_root.getNextHighestDepth()); } function stopdrag() { mc = this._parent; mc.stopDrag(); if ((fotoSomBlirVist != mc) && (!mc.onEnterFrame)) { mc.oldX = Math.round(mc._x); mc.oldY = Math.round(mc._y); } } function visFoto(mc:MovieClip) { if (fotoSomBlirVist == mc) { fotoSomBlirVist.onEnterFrame = fotoAnimerTilbake; delete fotoSomBlirVist; } else { fotoSomBlirVist.onEnterFrame = fotoAnimerTilbake; mc.newRotation = 0; mc.oldRotation = mc._rotation; mc.nesteKnapp.onRelease = function() { visNeste(); } mc.forrigeKnapp.onRelease = function() { visForrige(); } mc.onEnterFrame = fotoSkaler; fotoSomBlirVist = mc; } if (fotoSomBlirVist) fotoSomBlirVist.swapDepths(_root.getNextHighestDepth()); } function visNeste() { var nb = 0; if (fotoSomBlirVist) { nb = fotoSomBlirVist.id +1; if (nb == antallBilder) nb = 0; } visFoto(eval("plantaCont"+nb)); } function visForrige() { var fb = 0; if (fotoSomBlirVist) { fb = fotoSomBlirVist.id -1; if (fb < 0) fb = antallBilder-1; } visFoto(eval("plantaCont"+fb)); } var stageL:Object = new Object(); stageL.onResize = function() { for (i=0;i<antallBilder;i++) { mc = eval("plantaCont"+i); if (mc != fotoSomBlirVist) { mc._x = Math.round(Stage.width * (mc._x/stageWidth)); mc._y = Math.round(Stage.height * (mc._y/stageHeight)); } else { fotoSomBlirVist._x = Stage.width/2; fotoSomBlirVist._y = Stage.height/2; } mc.oldX = Math.round(Stage.width * (mc.oldX/stageWidth)); mc.oldY = Math.round(Stage.height * (mc.oldY/stageHeight)); mc.newX = Math.round(Stage.width * (mc.newX/stageWidth)); mc.newY = Math.round(Stage.height * (mc.newY/stageHeight)); mc.startX = Math.round(Stage.width * (mc.startX/stageWidth)); mc.startY = Math.round(Stage.height * (mc.startY/stageHeight)); } stageWidth = Stage.width; stageHeight = Stage.height; fillBG(); fyllGlow(); } Stage.addListener(stageL); function fillBG() { with (bakgrunsHolder) { clear(); beginBitmapFill(bakgrunnPattern); moveTo(0,0); lineTo(Stage.width,0); lineTo(Stage.width,Stage.height); lineTo(0,Stage.height); lineTo(0,0); endFill(); } } function acima() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento Y logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento Y logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição positiva Y setProperty("mc.bildeHolder", _y, Number(getProperty("mc.bildeHolder", _y))+20); } function noroeste() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento X e Y logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição negativa e positiva X e Y ,ou seja, seu movimento na diagonal setProperty("mc.bildeHolder", _y, Number(getProperty("mc.bildeHolder", _y))+20); setProperty("mc.bildeHolder", _x, getProperty("mc.bildeHolder", _x)-20); } function direito() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento X logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição negativa X setProperty("mc.bildeHolder", _x, getProperty("mc.bildeHolder", _x)-30); } function sudoeste() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento X e Y logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição negativa X e Y ,ou seja, seu movimento na diagonal setProperty("mc.bildeHolder", _x, getProperty("mc.bildeHolder", _x)-20); setProperty("mc.bildeHolder", _y, getProperty("mc.bildeHolder", _y)-20); } function abaixo() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento Y logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição negativa Y setProperty("mc.bildeHolder", _y, getProperty("mc.bildeHolder", _y)-30); } function sudeste() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento X e Y logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição negativa e positiva X e Y ,ou seja, seu movimento na diagonal setProperty("mc.bildeHolder", _x, Number(getProperty("mc.bildeHolder", _x))+20); setProperty("mc.bildeHolder", _y, getProperty("mc.bildeHolder", _y)-20); } function esquerdo() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento X logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição positiva X setProperty("mc.bildeHolder", _x, Number(getProperty("mc.bildeHolder", _x))+30); } function nordeste() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o movimento X logo depois acrescentamos getProperty para determinar o quanto deve se mover na posição positiva X setProperty("mc.bildeHolder", _y, Number(getProperty("mc.bildeHolder", _y))+20); setProperty("mc.bildeHolder", _x, Number(getProperty("mc.bildeHolder", _x))+20); } function maiszoom() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o quanto vai aumentar o seu tamanho na escala X e Y logo depois acrescentamos getProperty para determinar o quanto deve tamanho na escala X e Y setProperty("mc.bildeHolder", _xscale, int(Number(getProperty("mc.bildeHolder", _xscale)*1)+15)); setProperty("mc.bildeHolder", _yscale, int(Number(getProperty("mc.bildeHolder", _yscale)*1)+15)); } function menoszoom() { //Aqui e colocado a ação setProperty para determinar ao alvo (target) o quanto vai diminuir o seu tamanho na escala X e Y logo depois acrescentamos getProperty para determinar o quanto deve diminuirr na escala X e Y setProperty("mc.bildeHolder", _xscale, int(getProperty("mc.bildeHolder", _xscale)*1-15)); setProperty("mc.bildeHolder", _yscale, int(getProperty("mc.bildeHolder", _yscale)*1-15)); } function reset() { //Aqui determinamos todas as configurações de posição e escala X e Y original para que volte ao tamanho e posição que era , ou seja o botão de reset. setProperty("mc.bildeHolder", _x, "400"); setProperty("mc.bildeHolder", _y, "300"); setProperty("mc.bildeHolder", _xscale, "100"); setProperty("mc.bildeHolder", _yscale, "100"); } function fyllGlow() { with (sideGlow) { clear(); filters = [glow]; beginFill(0xFFFFFF); moveTo(0, 0); lineTo(Stage.width, 0); lineTo(Stage.width, Stage.height); lineTo(0, Stage.height); lineTo(0, 0); endFill(); } } fillBG(); fyllGlow(); function over() { tooltip._x = this._x; tooltip._y = this._y - this._height / 2; tooltip.tipText.text = toolText; tooltip.onEnterFrame = Delegate.create(this, moveTip); tooltip._alpha = 100; } function out() { delete tooptip.onEnterFrame; tooltip.tipText.text = ""; tooltip._alpha = 0; } function moveTip(){ tooltip._x = this._x; tooltip._y = this._y - this._height / 2; } O problema é: São criadas as miniaturas, a tooltip aparece, mas quando clico na miniatura para ampliar essas duas linhas _root["plantaCont"+i].onRollOver = over; _root["plantaCont"+i].onRollOut = out; Impossibilitam que a imagem seja ampliada como deveria. Impossibilitam o funcionamento da galeria. E a tooltip também só aparece atrás dos movieclips _root["plantaCont"+i]. Alguém pode me ajudar e me apontar onde estou errando?? Desde já agradeço a atenção! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Abril 6, 2009 Floodar topico não ajuda a receber resposta... E quanto a sua pergunta Não não existe um metodo de sua o texto.scroll para poder fazer com que ele ande na diagonal... O que você pode fazer é o seguinte crie um movie clip coloca o texto dentro desse MC cria uma animação dele subindo em diagonal até o fim dele. Tudo isso dentro de uma mascara :) Ai pronto você "forja" o efeito. Lembre-se para usar texto dinamico ou texto com mascara precisa colocar a font no arquivo FLA Abraços Compartilhar este post Link para o post Compartilhar em outros sites