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í.
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:
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:
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):
Ah! Vale lembrar que estou no Mac OS.
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.

