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í.
PS2 = Play Station 2 (depende!)
Bom, hoje, com a (normal) evolução da USB, quando eu escuto falar PS2, eu lembro Playstation 2, não mais aquela velha porta do teclado e mouse verde e roxa.
Pois bem, o problema é quando deixam estagiários fazer trabalho sério, como colocar descrições de produtos na internet. Se você tem um mouse USB, ele normalmente vem com um adaptador pra playstation?
Veja lá em descrição e me diga.
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.

