Entre para seguir isso  
aln

flash+php+ligthbox

Posts Recomendados

Pessoal, é o seguinte, estou usando o script

<?php
include "config.php";
$busca = "SELECT * FROM $tb1 ORDER BY id DESC";
$total_reg = "$nnoticias"; // número de registros por página
$pagina = $_GET['pagina'];
if (!$pagina) {
$pc = "1";
} else {
$pc = $pagina;
}
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
$todos = mysql_query("$busca");

$tr = mysql_num_rows($todos); // verifica o número total de registros
$tp = $tr / $total_reg; // verifica o número total de páginas

// vamos criar a visualização
while ($dados = mysql_fetch_array($limite)) {
$titulo = $dados['titulo'];
$data = $dados['data'];
$msg = $dados['msg'];
$resultado .= "$data  - <a href='$msg' rel='lightbox' title='my caption'> $titulo </a><br>";

echo "&var_para_flash=$resultado";
}
?>

ele mostra minhas headlines...

http://www.allanmc.com.br/shaolin/html/up/news2.php (ignorem as repetições e os textos!)

eu queria saber se existe alguma maneira do flash interpretar os comandos rel='lightbox' e title='my caption' - estes são os comandos que ativam o lightbox, do contrario, ele só interpreta o html comun mesmo.. target="_blank" e etc...

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi direito, você quer que quando alguém acesse esse endereço já abra diretamente o lightbox é? explica melhor para a gente puder lhe ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hm.... não exatamente...

o que eu quero, é isso

http://www.lucasferreira.com/experimentos/lightbox_flash/

porém, em vez de ser um botão em flash, seria com os meus links em php lidos no flash, repare que o endereço que eu postei no post anterior, mais em baixo, também tem um flash, e no primeiro headline, 05/07/09 - foto1, ele abre a foto sem usar o lightbox...

eu já achei alguns artigos explicando como fazer isso, mas não com php...

eu não sei mais o que fazer...

$resultado .= "$data - <a href='$msg' rel='lightbox' title='my caption'> $titulo </a><br>";

essa linha é lida no flash, mas o flash não reconhe o rel e o title, e isso faz com que não abra as fotos com lightbox...

Compartilhar este post


Link para o post
Compartilhar em outros sites
$resultado .= "$data - <a href='$msg' rel='lightbox' title='my caption'> $titulo </a><br>";

essa linha é lida no flash, mas o flash não reconhe o rel e o title, e isso faz com que não abra as fotos com lightbox...

Como você está lendo essa linha no Flash ?

Não seria mais fácil você enviar um XML para o Flash ??

[]'s

J. Neto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.. uso o seguinte as para ler no flash:

System.useCodepage = true;
var retorno:LoadVars = new LoadVars();
retorno.onLoad = function(carregou:Boolean){
if (carregou) {
//Aqui vão as ações para quando for tudo carregado, exemplo:
trace(retorno.var_para_flash);
teste_txt.html = true;
teste_txt.htmlText = retorno.var_para_flash;
} else {
//Aqui vão as ações para quando der algo errado, exemplo:
trace("Erro ao carregar");
}
}
retorno.load('http://www.allanmc.com.br/shaolin/html/up/news2.php');

eu já pensei em usar xml, mas não daria na mesma? pois da mesma forma, os links seriam exibidos em uma caixa dinamica, e nela, o flash só le as tags comuns de html, a href, b, img src..

Editado por aln

Compartilhar este post


Link para o post
Compartilhar em outros sites
eu já pensei em usar xml, mas não daria na mesma? pois da mesma forma, os links seriam exibidos em uma caixa dinamica, e nela, o flash só le as tags comuns de html, a href, b, img src..

Bom, de fato o TextField.htmlText irá entender apenas os atributos comuns.

Mas com um XML você conseguiria ter a listagem de todos as tags com todos os atributos, ai com

getCharIndexAtPoint você consegue o caracter pela a posição que o kara clicou, faz a varredura até encontrar o primeiro espaço em branco antes e até encontrar o próximo espaço em branco depois, faz a seleção e compara com os seus links, encontrando o link na lista do XML você dispara a ação.

[]'s

J. Neto

Editado por neto.joaobatista

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado...

pareçe bem complicado, eu fiz uma pesquisa e vi que essa função é de as 3, mas ai não seria possível, teria que mudar meu script pra as 3 também, ou não?... eu vi no help do flash também, mas não intendi ainda o que ela faz, pode me passar alguma coisa ou algum link?

Compartilhar este post


Link para o post
Compartilhar em outros sites
pareçe bem complicado, eu fiz uma pesquisa e vi que essa função é de as 3, mas ai não seria possível, teria que mudar meu script pra as 3 também, ou não?... eu vi no help do flash também, mas não intendi ainda o que ela faz, pode me passar alguma coisa ou algum link?

Bom amigo, fiz um teste aqui e realmente ficou mais complicado que deveria, porém acho que se você fizer:

1. Envie seus dados para o Flash no formato XML:

<dados>
    <texto>um <a href="event:1">texto</a> que está dentro do seu <a href="event:2">campo</a></texto>
    <links>
        <link id="id1" rel="primeiro link" target="self" />
        <link id="id2" rel="segundo link" target="_blank" />
    </links>
</dados>
O primeiro nó do seu XML é o texto, nele você coloca o que irá aparecer no seu TextField. Logo abaixo do seu nó texto você tem um nó chamado links e dentro dele uma referência para cada link do seu nó texto. Ai você irá trocar todos os hrefs dos seus links por:
<a href="event:1">link 1</a>
<a href="event:2">link 2</a>
...
<a href="event:1000">link 1000</a>
E para cada event:1, event:2, ..., event:N você terá um link no nó links que irá conter os dados que você precisa. Para fazer isso no AS 3 você usa o event:X, porém é possível obter o mesmo resultado no AS com asfunction. O exemplo abaixo foi feito utilizando o AS3 por que como não uso Windows não tenho o Flash aqui para testar...
package {
    import flash.events.TextEvent;
    import flash.display.Sprite;
    import flash.text.TextField;

    public class Teste extends Sprite {
        /**
         * O campo que conterá seu texto
         */
        private var seucampo:TextField;
        
        /**
         * Um outro campo só para você ver o resultado
         */
        private var outrocampo:TextField;
        
        /**
         * O XML que você irá carregar, nesse exemplo eu usei um XML aqui dentro mesmo
         */
        private var dados:XML;

        /**
         * Constroi o teste
         */        
        public function Teste(){
            this.seucampo = new TextField();
            this.seucampo.width = 200;
            this.seucampo.height = 200;
            this.seucampo.border = true;
            
            // Adicionamos um listener para que quando alguém clicar em um link chamar o método clicado
            this.seucampo.addEventListener( TextEvent.LINK, clicado );
            
            this.outrocampo = new TextField();
            this.outrocampo.y = 202;
            this.outrocampo.width = 200;
            this.outrocampo.height = 200;
            this.outrocampo.border = true;
            
            this.pegaXML();
            this.escreveCampo();            
            
            this.addChild( this.seucampo );
            this.addChild( this.outrocampo );
        }
        
        /**
         * Pega o XML do servidor, nesse exemplo eu usei um XML escrito aqui mesmo
         */
        public function pegaXML():void {
            this.dados =
                <dados>
                    <texto>um <a href="event:1">texto</a> que está dentro do seu <a href="event:2">campo</a></texto>
                    <links>
                        <link id="id1" rel="primeiro link" target="self" />
                        <link id="id2" rel="segundo link" target="_blank" />
                    </links>
                </dados>
        }
        
        /**
         * Aqui pegamos o XML e jogamos o nó texto para o seucampo
         */
        public function escreveCampo():void {
            this.seucampo.htmlText = this.dados.texto.toXMLString();
        }

        /**
         * Cada vez que alguém clicar em um link um evento é disparado e esse método é chamado
         */        
        public function clicado( e:TextEvent ):void {
            var id:String = "id" + e.text;
            var rel:String = dados.links.link.( @id == id )[email protected]();
            var target:String = dados.links.link.( @id == id )[email protected]();
            
            outrocampo.text = "link: " + e.text + "\nrel: " + rel + "\ntarget: " + target;
        }
    }
}

[]'s

J. Neto

Compartilhar este post


Link para o post
Compartilhar em outros sites
pareçe bem complicado, eu fiz uma pesquisa e vi que essa função é de as 3, mas ai não seria possível, teria que mudar meu script pra as 3 também, ou não?... eu vi no help do flash também, mas não intendi ainda o que ela faz, pode me passar alguma coisa ou algum link?

Bom amigo, fiz um teste aqui e realmente ficou mais complicado que deveria, porém acho que se você fizer:

1. Envie seus dados para o Flash no formato XML:

<dados>
    <texto>um <a href="event:1">texto</a> que está dentro do seu <a href="event:2">campo</a></texto>
    <links>
        <link id="id1" rel="primeiro link" target="self" />
        <link id="id2" rel="segundo link" target="_blank" />
    </links>
</dados>
O primeiro nó do seu XML é o texto, nele você coloca o que irá aparecer no seu TextField. Logo abaixo do seu nó texto você tem um nó chamado links e dentro dele uma referência para cada link do seu nó texto. Ai você irá trocar todos os hrefs dos seus links por:
<a href="event:1">link 1</a>
<a href="event:2">link 2</a>
...
<a href="event:1000">link 1000</a>
E para cada event:1, event:2, ..., event:N você terá um link no nó links que irá conter os dados que você precisa. Para fazer isso no AS 3 você usa o event:X, porém é possível obter o mesmo resultado no AS com asfunction. O exemplo abaixo foi feito utilizando o AS3 por que como não uso Windows não tenho o Flash aqui para testar...
package {
    import flash.events.TextEvent;
    import flash.display.Sprite;
    import flash.text.TextField;

    public class Teste extends Sprite {
        /**
         * O campo que conterá seu texto
         */
        private var seucampo:TextField;
        
        /**
         * Um outro campo só para você ver o resultado
         */
        private var outrocampo:TextField;
        
        /**
         * O XML que você irá carregar, nesse exemplo eu usei um XML aqui dentro mesmo
         */
        private var dados:XML;

        /**
         * Constroi o teste
         */        
        public function Teste(){
            this.seucampo = new TextField();
            this.seucampo.width = 200;
            this.seucampo.height = 200;
            this.seucampo.border = true;
            
            // Adicionamos um listener para que quando alguém clicar em um link chamar o método clicado
            this.seucampo.addEventListener( TextEvent.LINK, clicado );
            
            this.outrocampo = new TextField();
            this.outrocampo.y = 202;
            this.outrocampo.width = 200;
            this.outrocampo.height = 200;
            this.outrocampo.border = true;
            
            this.pegaXML();
            this.escreveCampo();            
            
            this.addChild( this.seucampo );
            this.addChild( this.outrocampo );
        }
        
        /**
         * Pega o XML do servidor, nesse exemplo eu usei um XML escrito aqui mesmo
         */
        public function pegaXML():void {
            this.dados =
                <dados>
                    <texto>um <a href="event:1">texto</a> que está dentro do seu <a href="event:2">campo</a></texto>
                    <links>
                        <link id="id1" rel="primeiro link" target="self" />
                        <link id="id2" rel="segundo link" target="_blank" />
                    </links>
                </dados>
        }
        
        /**
         * Aqui pegamos o XML e jogamos o nó texto para o seucampo
         */
        public function escreveCampo():void {
            this.seucampo.htmlText = this.dados.texto.toXMLString();
        }

        /**
         * Cada vez que alguém clicar em um link um evento é disparado e esse método é chamado
         */        
        public function clicado( e:TextEvent ):void {
            var id:String = "id" + e.text;
            var rel:String = dados.links.link.( @id == id )[email protected]();
            var target:String = dados.links.link.( @id == id )[email protected]();
            
            outrocampo.text = "link: " + e.text + "\nrel: " + rel + "\ntarget: " + target;
        }
    }
}

PS: Já faz bastante tempo que não desenvolvo utilizando AS e nem tenho mais Flash na minha máquina (nem é possível). O pessoal do ActionScript poderá te ajudar melhor quanto ao event:qqrcoisa ou o asfunction:suafuncao,parametro.

[]'s

J. Neto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso