Carlos Gustavo (The Froskie) Internet, web, www…

28abr/090

Crop ou Substring em Textfield

Quando descobri que poderia fazer isto, realmente senti muita falta da possibilidade no HTML (pra falar bem a verdade, eu é que não sei com 100% de certeza se é possível): eu tenho um textfield ou uma caixa de texto, como queiram. Lá vou exibir um texto que na verdade é parte de um texto, ou resumo. Eu gostaria que no final desta caixa, na última linha, eu pudesse dar um crop ou substring e ficasse uma reticências indicando que há mais texto.

Mas como saber qual a última linha da caixa e inserir a reticências no lugar correto? Não é tão complicado, veja o código:

var texto:String = "Lorem ipsum dolor...";
textField.htmlText = texto;
 
var bottomLine:Number = textField.bottomScrollV-1;
 
var endText:String = textField.getLineText(bottomLine);
var iniText:String = texto.substring(0, texto.indexOf(endText));
 
var novoTexto:String = endText.substr(0, endText.length-11)+"[...]";
 
textField.htmlText = novoTexto;

Vamos analisar o código:

Linhas 1 e 2: Aqui declaramos a variável do texto a ser inserido no textfield.
Linha 4: Pegamos o número da última linha visível do textfield (aqui está o fundamental)
Linha 6: Pegamos o texto da última linha existente no textfield
Linha 7: Separamos o texto antes da última linha, para concatená-lo depois.
Linha 9: Declaramos o novo texto como a concatenção do texto inicial com a última linha tratado com as reticências.
Linha 11: Inserimos novamente o texto no textfield

Voilá! Temos o texto reduzido ao tamanho da caixa. O melhor deste método é que se alterarmos o tamanho da caixa não precisamos mexer neste código, visto que ele trabalha com o tamanho da caixa, não variáveis de tamanho definidas. É isso aí.

8abr/090

Flash e a Webcam

Caso você não saiba, o que é pouco provável, o Flash pode e faz muitas coisas com a webcam. Não só para vídeo conferências, mas para também interação com o usuário.

Exemplos clássicos, vindo do Flash 8, são estes:

Flash on Fire
Snow storm

Mas uns dos últimos lançamentos, produzidos no site da General Eletrics (GE, tapado), realmente é muito interessante. Não bastasse interatividade ao máximo, utiliza o reconhecimento de imagem para implantar um ambiente 3D na tela. Vale MUITO a pena imprimir e se divertir:

GE - Augmented Reality

6fev/090

Pixel Fonts e Acentos

Numa espécie de bug meio esquisito, descobri uma situação com fontes pixel, neste caso em particular com a famosa Standard.

Como todos sabemos, para transformar uma Arial em fonte pixel no Flash, basta trocar o antialias para bitmaptext. O caso foi este: escrevi "São Paulo" num textfield estático, usando a fonte standard 07 65, e bem, era fonte pixel, deixei em bitmaptext mesmo. O problema é que o "ã" não aparecia de maneira nenhuma. Perguntei pro meu atual companheiro de design e meu ex (ui), nenhum dos dois soube do que se tratava

Caso resolvido da seguinte maneira: a fonte não aparecia o acento APENAS quando estava no bitmaptext, nos outros casos sem crise. Testei tanto no Flash CS3 como no CS4, o mesmo problema. Vejam nestas imagens exclusivas (nossa, que exagero):

Flash CS3 e as Pixels fonts

Flash CS3 e as Pixels fonts

Flash CS4 e as Pixels fonts

Flash CS4 e as Pixels fonts

Ah! Vale lembrar que estou no Mac OS.

30jan/090

Custom Event – Flash AS3

Os eventos no AS3 são de grande ajuda, mas por uma questão de lógica e workflow, as vezes precisamos utilizar de eventos customizados, que expressem melhor o que componentes ou classes estão fazendo.

Para criar os eventos customizados, faça em 3 passos:

1. Crie a classe do evento que extende a class Event do Flash, declarando como costante os tipos dos eventos:

Arquivo CustomEvent.as

package {
 
        import flash.events.Event;
 
        public class CustomEvent extends Event{
 
                public static const THING_DONE:String = "thing_done";
                public static const ANOTHER_STUFF:String = "another_stuff";
 
                public function SlideshowEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false){
                        super(type, bubbles, cancelable);
            }
        }
 
}

Com isso você criou o evento "CustomEvent" com os tipos "THING_DONE" e "ANOTHER_STUFF".

2. Na classe que dispara o evento customizado, insira o seguinte:

dispatchEvent(new CustomEvent(CustomEvent.THING_DONE));

Com isso, a classe "dispara" o evento customizado do tipo "THING_DONE"

3. Para capturar o evento, basta adicionar o listener referenciando a classe

MinhaClasse.addEventListener(CustomEvent.THING_DONE, this.doSomething);
 
private function doSomething(ce:CustomEvent):void{
 
   // ...
 
}

É isso. Muito bom pra interação com eventos customizados, como slideshow, menu, etc.

16jan/090

Preloaders!!! Preloaders!!!

Só isso: preloaders!