Ir para conteúdo

POWERED BY:

Arquivado

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

Pablo Hobus

java e botao

Recommended Posts

Olá pessoal, to com uma dúvida em relação a um código lighbox para ser aberto pelo flash, pois, utilizei um carousel e gostaria que este abra o link em um lightbox, procurando pela internet encontrei este código em javascript:

 

<script type="text/javascript">
function lightwindowDelegate(url,rel,title) {
   var objLink = document.createElement('a');
   objLink.setAttribute('href',url);
   objLink.setAttribute('rel',rel);
   objLink.setAttribute('title',title);
   lightwindow.prototype.start(objLink);
}
</script>

agora o código que vai no flash:

 

javascript:lightwindowDelegate('photo_url[this._parent.tn_no], photo_rel[this._parent.tn_no], photo_title[this._parent.tn_no]')

onde,photo_url[this._parent.tn_no], photo_rel[this._parent.tn_no], photo_title[this._parent.tn_no] são repassados pelo xml do carousel.. o resultado é um erro, sendo este "Objeto esperado"..

alguem teria uma luz no final do túnel? eu acho que a função javascript no flash esta errado, talvez a maneira como digitei esteja errada, acho que não estão sendo passados os dados do xml da maneira que escrevi, porem, se eu tiro desta função e realizo uma função simples ele funciona.. não no lightbox e sim abre uma página nova com a foto..

 

desde já, agradeco a todos..

 

só para complementar: no xml esta assim:

 

<photo thumbnail="01/flashmo_028_design.jpg" url="pg_obra/fotos_obra/01/grande/6.jpg" rel="clearbox[gallery=Fotos da Obra,, autoslideshow,, slideshowtime=5]" title="Residencial Neusa Luzia" />

a principal função é o "rel", pois, este é o que abre o lightbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

raytwo, obigado pela ajuda..

mais tp, eu não gostaria de trocar o lightbox que possou, pois existe no site outros links com o mesmo light, que em um link normal fica assim:

 

<a href="pg_obra/fotos_obra/01/grande/3.jpg" rel="clearbox[gallery=Fotos da Obra,, autoslideshow,, slideshowtime=5]" title="Residencial Neusa Luzia"><img src="pg_obra/fotos_obra/01/3.jpg" border="0" /></a>

por isso, toda aquela função em javascript, pra tentar realizar esta mesma função de um link normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

de um trace

 

nesse seu this._parent.tn_no que tenho quase certeza que teu erro ta ai

 

E para usar variaveis dentro do getURL você faz assim:

getURL("javascript:callLight("+variavel+")");

 

Caso contrario a variavel é passada como string e não o seu valor... no seu caso passaria para a função java isso: this._parent.tn_no... que não é correto.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi... você ja usa no site a função lightbox so que em html e você qr fazer essa mesma função em flash...

 

o que posso te ajudar é você usar a função do shadowbox e mudar o codigo CSS do fundo para branco =) nao sei se vai ter tanta diferença, mas é uma ideia

Compartilhar este post


Link para o post
Compartilhar em outros sites

berseck, nao entendi direito pra que serve a função trace.. vou passar o código mais completo pra ve se ajuda:

 

photo_thumbnail = new Array();
photo_url = new Array();
photo_rel = new Array();
photo_title = new Array();

filepath = "pg_obra/fotos_ilustrativas/";

// Load the photos XML
var flashmo_xml = new XML();
flashmo_xml.ignoreWhite = true;
flashmo_xml.onLoad = function()
{
	var nodes:Array = this.firstChild.childNodes;
	for(var i=0;i<nodes.length;i++)
	{
		photo_thumbnail.push(nodes[i].attributes.thumbnail);
		photo_url.push(nodes[i].attributes.url);
		photo_rel.push(nodes[i].attributes.rel);
		photo_title.push(nodes[i].attributes.title);
	}
	
}
flashmo_xml.load(filepath+"imagens_ilustradas.xml");

este código esta em um action..

 

agora o que faz o link esta em outro action, mais no mesmo swf:

 

x_middle = Stage.width/2;
y_middle = Stage.height/2;

tn_group.tn._visible = false;
tn_group.setMask( tn_area );
tn_alpha_default = 75;
tn_spacing = 6;
p = 0;
info = "";

for( var i = 0; i < photo_thumbnail.length; i++ )
{
	tn_group.tn.duplicateMovieClip("tn"+i, i);
	
	tn_group["tn"+i].tn_pic.loadMovie(filepath+photo_thumbnail[i]);
	tn_group["tn"+i].tn_pic2.loadMovie(filepath+photo_thumbnail[i]);
	tn_group["tn"+i]._x = i * (tn_group.tn._width + tn_spacing);
	tn_group["tn"+i]._y = tn._y;
	tn_group["tn"+i].tn_pic._alpha = tn_alpha_default;
	tn_group["tn"+i].tn_no = i;
	
	tn_group["tn"+i].tn_button.onRollOver = function() 
	{
		this._parent.tn_pic._alpha = 100;
		_root.info = photo_name[this._parent.tn_no];
	}
	tn_group["tn"+i].tn_button.onRollOut = function() 
	{
		this._parent.tn_pic._alpha = tn_alpha_default;
		_root.info = "";
	}
	tn_group["tn"+i].tn_button.onRelease = function(){
    	getURL("javascript:lightwindowDelegate(\"+photo_url+, +photo_rel+, +photo_title\")");
	}
}

getURL("javascript:lightwindowDelegate(\"+photo_url+, +photo_rel+, +photo_title+\")"); esse função já escrevi reescrevi.. mais não funciona, e esse trace nunca usei esta função =/

 

completando a função que vem junto com o carousel de abrir uma página é esta "a correta":

 

getURL( photo_url[this._parent.tn_no] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom para começar trace eh o famoso PRINT ou ECHO do flash soh que em vez dele printar na tela ele printa no output do flash

 

Para que ele serve? para mostrar erros e variaveis.

 

trace("Hello World");

 

Isso vai mostrar no output do flash: Hello World

 

var str:String = new String('Cachorro');

trace('str'); //Output Cachorro

 

Então o trace serve para mostar os valores que você já tem.

 

Imagine quão complicado não fica você ter que todas as vezes que der erro ficar perguntando... e as vezes é apenas uma virgula... então porque não começar a usar o trace e verificar o código na munheca??? fica melhor porque ai você ja vai desvendando todos os problemas antes de perguntar no forum... e ai quando perguntar já é mais especifico.

 

 

Por isso que falei para você fazer um trace(this._parent.tn_no);

Para ver se vem o valor desejado :)

 

Se vem o valor desejado então faça o proximo passo que não é escapando as aspas!!!!!!!!

 

Aqui ta seu erro:

getURL("javascript:lightwindowDelegate("+photo_url+","+photo_rel+","+photo_title+")");

 

Escreve desse jeito que coloquei ai e veja se chama a função javascript.

E para ter certeza que ta chamando a função coloque um alert nela.

<script type="text/javascript">
function lightwindowDelegate(url,rel,title) {
 alert(url);
 alert(rel);
 alert(title);
 var objLink = document.createElement('a');
 objLink.setAttribute('href',url);
 objLink.setAttribute('rel',rel);
 objLink.setAttribute('title',title);
 lightwindow.prototype.start(objLink);
}
</script>
Se todos os valores aparecerem no alert corretamente provavelmente vai aparecer sua janelinha lightbox depois :)

 

Enquanto n aparecer tudo mantenha os alerts para ver se as variaveis estão chegando corretamente.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

beseck, assim que se ajuda, demonstrando como aprender a lidar com os erros, o meu forte nao é o flash e sim php..

e faço isto tbm para ver os erros na programaçao mais nem imaginava como faria isso em flash..

 

valeu mesmo pela dica.. continuando a funçao java nao foi chamada, deu erro > esperado ')'

 

nao sei oq significa =(

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera já era.. acabei de descobri que esse lightbox suporta flash, porem nao suporta galeria.. nao rola assim

mais valeu todo mundo ai obrigadao mesmo =/

abracoss pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha desanime nao porque eu sei que da pra você colocar a cada botao uma chamada...

 

Basta que você tenha os links refletidos no seu HTML você pode fazer a sequencia no lightbox... caso contrario n da.

Eu vi esse exemplo no proprio site do lightbox a um tempo atras.

 

Continua procurando porque que da pra fazer oque você quer da... que eu sei e ja fiz um exemplo desses funcionar.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom consegui fazer aqui um exemplo pra você

Baixe o lightbox++ nesse site:http://www.flashxml.net/free/download/lightbox++v101.zip

 

Depois você vai editar o HTML do seu flash

 

Va no header e coloque isso sem tirar nem por:

<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="js/lightbox++.js" type="text/javascript"></script>

<script language="JavaScript" type="text/javascript">

function callGallery(url,caption) {
 var objLink = document.createElement('a');
 objLink.setAttribute('href',url);
 objLink.setAttribute('rel','lightbox[flowers]');
 objLink.setAttribute('title',caption);
 Lightbox.prototype.start(objLink);
}

Feito isso agora você vai criar uma div invisivel e vai colocar seus links lá

Assim:

<div style="display:none">
<a href="gallery/flowers1.jpg" rel="lightbox[flowers]">flower #1</a>
<a href="gallery/flowers2.jpg" rel="lightbox[flowers]">flower #2</a>
<a href="gallery/flowers3.jpg" rel="lightbox[flowers]">flower #3</a>
<a href="gallery/flowers4.jpg" rel="lightbox[flowers]">flower #4</a>
</div>

Feito isso vai chamar essa função assim no flash em seu botão:

getURL("javascript:callGallery('gallery/flowers1.jpg','flower #1');");

 

E pronto tudo vai funcionar :)

 

Abraços

 

PS: aceito depositos na minha conta :P

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.