Ir para conteúdo
Fórum Script Brasil
  • 0

flash+php+ligthbox


aln

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

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...

Link para o comentário
Compartilhar em outros sites

  • 0
$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

Link para o comentário
Compartilhar em outros sites

  • 0

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
Link para o comentário
Compartilhar em outros sites

  • 0
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
Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0
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 ).@rel.toXMLString();
            var target:String = dados.links.link.( @id == id ).@target.toXMLString();
            
            outrocampo.text = "link: " + e.text + "\nrel: " + rel + "\ntarget: " + target;
        }
    }
}

[]'s

J. Neto

Link para o comentário
Compartilhar em outros sites

  • 0
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 ).@rel.toXMLString();
            var target:String = dados.links.link.( @id == id ).@target.toXMLString();
            
            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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...