Ir para conteúdo

POWERED BY:

Arquivado

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

RKurtz

Tooltips + XML = Problema

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.