Ir para conteúdo

POWERED BY:

Arquivado

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

LipeMacedo

Flash + XML

Recommended Posts

Galera, bom dia!!!

 

Bom, vamos a minha dúvida...

 

Tenho um sistema de busca em flash + xml, só que no momento o mesmo varre o XML, acha o que foi buscado, mostra uma parte do texto e logo abaixo do texto ele coloca um link de "leia mais"...

 

O problema que estou tendo é fazer com que esse link, "leia mais", aponte para um frame dentro do Flash e não para uma página em html...

 

Já tentei dentro do XML colocal a URL somente com o número do frame e dentro do onRelease do As coloquei um gotoAndPlay, mas não obtive êxito...

 

 

Gostaria de saber se á algum modo de fazer com que esse link aponte para um frame e não para uma página...

 

segue o meu arquivo as para vcs verem...

 

Desde já agradeço a todos!!

 

// ActionScript Document

String.prototype.contains = function(searchString){
	return (this.indexOf(searchString) != -1);
}
Array.prototype.contains = function(searchValue){
	var i = this.length;
	while(i--) if (this[i] == searchValue) return true;
	return false;
}

SearchXML = function(nodes, query, useChildElements){
	var results = [];
	for (var i=0; i<nodes.length; i++){
		for (var j=0; j<nodes[i].childNodes.length; j++){
			currNode = nodes[i].childNodes[j];
			if (useChildElements.contains(currNode.nodeName)){
				if (currNode.firstChild.nodeValue.contains(query)){
					results.push(nodes[i]);
					break;
				}
			}
		}
	}
	return results;
}

ElementsToSearch = function(){
	var childElementsToSearch = [];
	if (search_fields.title_check.checked){
		childElementsToSearch.push("title");
	}
	if (search_fields.author_check.checked){
		childElementsToSearch.push("author");
	}
	if (search_fields.gt_check.checked){
		childElementsToSearch.push("gt");
	}
	if (search_fields.message_check.checked){
		childElementsToSearch.push("message");
	}
	return childElementsToSearch;
}

DisplayNodes = function(nodes, field_txt){
	field_txt.htmlText = "";
	var entry;
	var separator = "
_______________________

";
	for (var i=0; i<nodes.length; i++){
		entry = "";
		entry += "<b>"+ nodes[i].childNodes[0].firstChild.nodeValue +"</b>";
		entry += " por: "+ nodes[i].childNodes[1].firstChild.nodeValue;
		entry += "
"+ nodes[i].childNodes[2].firstChild.nodeValue;
		if (nodes[i].attributes.url.length){
			entry += "
<a href='" + nodes[i].attributes.url; target="self"
			entry += "'><font color='#0000FF'>Leia mais...</font></a>";
		}
		field_txt.htmlText += entry + separator;

	}
}

search_highlight = new TextFormat();
search_highlight.color = 0xFF0000;
search_highlight.italic = true;

HighlightOccurences = function(str, field_txt, format){
	if (!str.length) return (0);
	var start = field_txt.text.indexOf(str);
	var end = start + str.length;
	while (start != -1){
		field_txt.setTextFormat(start, end, search_highlight);
		start = field_txt.text.indexOf(str, end);
		end = start + str.length;
	}
}


var posts_xml = new XML();
posts_xml.ignoreWhite = true;
posts_xml.onLoad = function(success){
	if (success){
		search_fields._visible = true;
	}else results_txt.text = "Error loading XML";
}
search_fields._visible = false;
posts_xml.load("anped.xml");

search_fields.title_check.title_txt.text = "Título";
search_fields.author_check.title_txt.text = "Autor";
search_fields.gt_check.title_txt.text = "GT";
search_fields.message_check.title_txt.text = "Mensagem";
search_fields.search_btn.onRelease = function(){
	if (search_fields.query_txt.text.length < 1){
		results_txt.text = "Nada foi digitado.";
		return (0);
	}

	var searchElements = ElementsToSearch();
	var nodesWithQuery =	SearchXML(
	posts_xml.firstChild.childNodes,
	search_fields.query_txt.text,
	searchElements
	);
	
	if (nodesWithQuery.length){
		DisplayNodes(
			nodesWithQuery,
			results_txt
		);
	}else{
		results_txt.text = "Sem resultados para "+search_fields.query_txt.text+".";
		return (0);
	}
	
	HighlightOccurences(
		search_fields.query_txt.text,
		results_txt,
		search_highlight
	);
	
	scrollbar.setScroll(0);
}

scrollbar.setTarget(results_txt);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do jeito que foi criado tem como não

 

Link referente a html como <a href= blab > não rola de fazer no flash apontando pra frame... não tem como você fazer um <a href=1 ou frame1> para ele ir para o frame

Você teria que adicionar um botão no flash e fazer o gotoAndStop referente ao frame

 

Ou seja em vez de criar dinamicamente o link você tem que criar um botão dentro do flash que faça essa ação.

Ouuuuu mantenha o link e use SWFAddress e faça a chamada dele no começo do flash para ler onde ele tem que ir... e faz o swfAddress apontar para o frame que você quer :)

 

Ai vai fica mto mais pro :D rs

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!!!

 

Valew berseck, por responder!!

 

Estou tentando fazer umas artimanhas aqui e acho que estou conseguindo algo... Daqui a pouco posto aqui o que eu conseguir fazer!!!

 

Mas gostei da ideia de usar o SWFAdress... Seria uma solução!! =D

 

Valew mesmo!!

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.