Problemy z długością tekstu we Flashu
2009-12-14 20:39
Pracując nad ostatnim projektem napotkałem bardzo dziwnego buga we Flashu. Problem dotyczy długości tekstu dla pola w którym zmieniono kerning. Napisałem w AS3 taką regułkę, która nie wiadomo czemu nie chciała działać:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ta.addEventListener(Event.CHANGE, taFieldChangeHandler);
private function taFieldChangeHandler(event:Event):void
{
if ('' != event.currentTarget.text )
{
trace("Text is not null")
}
else
{
trace("Text is null")
}
} |
Nie miałem pojęcia dlaczego Flash zawsze wyświetlał mi trace: Text is not null, mimo tego że pole do wprowadzania tekstu było puste. Po niespełna godzinie różnych prób i testów, zirytowany problemem postanowiłem zajrzeć do pliku Flasha, ponieważ instancja pola tekstowego była tworzona z poziomu pliku fla. I eureka. Zauważyłem, że moje pole miało zmieniony kerning (albo inaczej letter spacing) na -0.5. Wartość ta została ustawiona przez innego designera, od którego dostałem pliki źródłowe. Kiedy ustawiłem tą wartość na 0 kod w końcu zaczął poprawnie działać.
Nie wiadomo mi, czy jest jakiś Workaround dla tego buga. Może gdybym miał trochę więcej czasu udało by mi się coś wykombinować, ale ostatecznie ustawiłem kerning na 0 i dałem sobie spokój. Próbowałem też wyciągnąć wartość pola do zmiennej i następnie porównywać tą zmienną, lecz efekt był taki sam, jak w przypadku pola tekstowego. Wydaje mi się to dziwne, bo wychodzi na to, że Flash dokleja jakieś dziwne znaki do zmiennych, kiedy letter spacing jest różny od 0, a przecież tak nie powinno być.
Swoją drogą nie jest to pierwszy i na pewno nie ostatni babol z jakim spotkałem się we Flashu. Jeśli ktoś zajmował się troszkę programowaniem w AS3 na pewno zrozumie o co mi chodzi. Nasuwa mi się na myśl jedno pytanie. Dlaczego Adobe wypuszcza kolejne wersje Flasha z nowymi bugami, zamiast skoncentrować się na wydaniu porządnej platformy dla aplikacji webowych ?