terça-feira, 20 de setembro de 2011

PHP Catchable fatal error: Object of class __PHP_Incomplete_Class could not be converted to string

Depois de horas, descobri o porque deste erro... então vale uma postagem no blog.

eu estava tentando inicializar uma session aqui num script pós formulário...

<?php
session_start();
session_register("artbit");



O problema é que já existe uma classe instanciada chamada "artbit".

Dedução:

Não se pode criar uma session com o mesmo nome da instância de alguma classe já carregada, pois na hora de recuperar váriáveis, vai dar este lindo erro:



PHP Catchable fatal error: Object of class __PHP_Incomplete_Class could not be converted to string


Aguardem meu novo site www.tbrazil.com.br

sexta-feira, 15 de julho de 2011

jQuery.noConflict()

Hoje eu estava tentando usar o JQuery Nivo Slider junto com VideoBox, tipo um lightbox pra vídeos do youtube, http://videobox-lb.sourceforge.net/ mas o troço nao funcionava de jeito nenhum.

Foi então que o Taturana me apresentou o jQuery.noConflict()

Ocorre que, se vou utilizar dois jquerys na mesma página, preciso definir para um deles, uma variável diferente de $ que é o padrão. Então, resolvi criando o $a . Simples.

No exemplo abaixo, basta definir uma váriavel diferente de $ para o JQuery,

ANTES:
 <script type="text/javascript">
  $(window).load(function() {
                $a('#slider').nivoSlider();
            });
  </script>

DEPOIS:
 <script type="text/javascript">

   var $a = jQuery.noConflict()  // Isto serve pro slider nao dar dar conflito com o videobox
           
   $a(window).load(function() {
                $a('#slider').nivoSlider();
            });
            </script>



Lembrando que também precisei alterar o z-index do videobox lá no css dele.
Coloquei 900 na sombra e 901 na janela e nao deu mais erro.

sexta-feira, 1 de julho de 2011

Mais um Erro com JQuery LightBox (Janela Modal)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 <!-- #OPA! Cuidado, Essa URL aí da tag DOCTYPE impede o funcionamendo do JQuery LightBox -->

Isso leva a crer que o JQuery LightBox não foi feito dentro dos novos padrões do HTML4.
O problema é que se eu retiro essa url da tag, alguns CSS de centralização simplesmente não funcionam.


Resolvido!

Minha versão do Lightbox era 2.04.

Entrei no site oficial e vi uma atualização para a versão 2.05 que tem a correção para este bug.
http://www.huddletogether.com/projects/lightbox2/#download

Atenção para não ter nenhuma div com z-index maior que 90 (que é a z-index da div "overlay" do Lightbox), para não ficar por cima dele.

quinta-feira, 23 de junho de 2011

Técnica da transparência perfeita no Flash usando Fireworks

Muitas vezes queremos uma transparência perfeita nas imagens bitmaps importadas, utilizando o Flash, e não conseguimos, ou fica meio tosco dependendo da maneira utilizada, por exemplo, com gifs transparentes, que fica horrível, com serrilhado, bordas brancas. etc.

Então, depois de milhares de testes com PNGs, GIFs, BMPs, JPGs, etc e control C daqui e control V dali, cheguei a uma conclusão de que a interação Fireworks e Flash, no quesito transparência de imagem, é perfeita! Talvez por isso ele não tenha sido retirado do pacote Adobe Suíte, pois o Photoshop não consegue essa interação.


Para iniciar, abra sua imagem no Fireworks, dê um zoom até ver os pixels, e , com a ferramenta borracha, configurada conforme mostra a imagem abaixo, faça o contorno de toda a imagem a ser recortada.



Depois de suar o sovaco e doer o olho, sua imagem deve ter ficado com este contorno branco, exatamente igual a minha, conforme abaixo:




Agora com a ferramenta Varinha Mágica, vamos dar uma de fada-madrinha e, com as configurações abaixo, vamos selecionar as áreas que ficaram de fora do recorte, e que queremos que desapareçam, ou melhor, sejam transparentes lá no Flash.


 E, estando corretamente selecionadas (Sem vazamentos), apertamos o DELETE para excluir a área indesejada.





Agora, novamente com a ferramenta borracha configurada conforme abaixo, vamos apagar as sobras que restaram após esse delete das áreas indesejadas, dando um acabamento na obra.


Ao final, seu cavalinho, digo, sua imagem , deve estar mais ou menos assim, recortadinha, mas ainda com um pequeno problema, e agora que vem a parte legal da transparência perfeita.



Quando você estava fazendo o contorno, era impossível fazê-lo em volta de pêlos e capim, por exemplo. No braço, fica tosco, essa é a verdade. Então vamos usar agora a ferramenta Borrar (O dedinho), com as configurações conforme da imagem abaixo,


Utilizando a ferramenta Borrar (e o Zoom) podemos puxar "fios" da imagem, e estes "fios" vão se apagando a medida que acabam, produzindo assim, um efeito degradê da tonalidade da cor para a transparência. O que no Flash será interpretado como um Alpha de Bitmap e ficará perfeito.


Depois para acabar com chave de ouro, lá no HTML que chama o .SWF, sua animação poderá ter um parâmetro WMODE="transparent" que vai funcionar sobre qualquer elemento do seu site.
Assim conseguimos uma transparência perfeita.

O resultado ficou assim: O cavalo e o capim estão no flash e são independentes, e o fundo é uma imagem JPG no contexto do HTML, e não no Flash, que está com a transparência.



quarta-feira, 22 de junho de 2011

Problema do JQuery LightBox e Vídeo do Youtube (Z-Index) -[RESOLVIDO]

Problema:
Durante a execução do JQuery LightBox (uma janela modal em que a exibição das fotos escurece a tela com um fundo preto em transparência - http://rtbt.com.br/tcoat1 ) me deparei com o fato do vídeo do Youtube, embutido no layout, ficar sempre por cima do fundo preto, atrapalhando o design.



Pesquisa e testes:
Utilizando o Firebug e a Ferramenta de Desenvolvedor do I.E 9, consegui descobrir o link do css e vasculhar ele atrás do z-index. Para suspresa de todos, achei vários, tudo na faixa do 900, 1000 e um em 3435674827629202.
Tentei de todas as maneiras e não consegui fazer funcionar, mesmo colocando um Z-Index maior no css da DIV "overlay" (que é o fundo preto).

Solução:
Uma pequena "gambiarra" e resolvi o problema de outra maneira:
Lá na inserção do registro, solicitei ao usuário do site o link do youtube, através de um campo de formulário:

Link para seu vídeo: __________________  OK

No script de inserção, precisei prever os 3 tipos de links que posso receber e pegar o código do vídeo apenas, e os parâmetros que existem depois dele.

### pega o código do vídeo para gravar na variável vídeo (somente o código)
 if (eregi("http://youtu.be",$video)){
   $video=substr($video,16,100);
  }
  if (eregi("http://www.youtube.com/watch",$video)){
   $video=substr($video,31,100);
  }
  if (eregi("http://www.youtube.com.br/watch",$video)){
   $video=substr($video,34,100);
  }


Feito isso, na exibição do vídeo, lá onde eu deveria colar o código de embutir ou incorporar, ao invés do código do iframe deles, vou colocar o código em HTML de chamar vídeos do flash:

#peguei antes $video (somente o código do vídeo e os parâmetros) no BD, e:

echo"<div id='video'>
  <object width='425' height='349'>
  <param name='wmode' value='transparent'>
  <param name='movie' value='http://www.youtube.com/v/$video'></param>
  <param name='allowFullScreen' value='true'></param>
  <param name='allowscriptaccess' value='always'></param>
  <embed wmode='transparent' src='http://www.youtube.com/v/$video' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='425' height='349'>
  </embed>
  </object>
  </div>";