Archive for the 'flex' Category

Niełamiąca spacja we Flashu, czyli tęsknota za   

Tu uśmiechną się wszyscy, którzy flasha uważają głównie za przyczynę buszujących po stronach www reklam. Nie wiem jak tam nowe narzędzia w FP10, ale dotąd rzeczywiście o obsłudze   (non-breaking space) w polu tekstowym deweloper Flash mógł pomarzyć. Nadal może, ale okazało się (Marcin okazał), że ów deweloper może skorzystać z fantastycznej możliwości wstawienia   zamiast niezłomnej spacji. Co to jest  ? Ano też spacja i też niezłomna. Tylko taka z czcionki – wystarczy otworzyć w windowsie Tablicę Znaków, piąty znak za małym “z”. Jeden kruczek, o którym trzeba pamiętać przy zaszywaniu podzestawu znaków, to że ten znak trzeba dołączyć. Kopiuj-wklej z Tablicy Znaków zadziała tu doskonale, bo z klawiatury ten akurat glif nie jest łatwy do wywołania.

Potem, żeby oszczędzić ręcznej redakcji tekstów, przyda się wyrażenie regularne do automatycznej podmiany zawieszek. O tym, w jakim języku zawieszki są błędem, a w jakim nie, nie będę tu pisał. Brzydkie są i z puchy im wali. A oto lekarstwo:

// zakładam, że oryginalny tekst do wstawienia mamy w zmiennej tekst1
var tekst1:String = 'wąska kolumna przeniesie o do następnej linii';
// ewentualna eksterminacja htmlowych marzeń, czyli zamiana   na spacje
var tekst2:String = tekst1.replace(' ', " ");	
// do rzeczy, czyli zamiana spacji po pojedynczych znakach otoczonych odstępami na niezłomną spację 
var tekst3:String = tekst2.replace(/\s+(\S)\s+(\S)/g, " $1 $2");			
// w tekst3 pojawi się: 'wąska kolumna przeniesie o do następnej linii'
// a na ekranie, zamiast   — niełamiąca spacja.

pierwszy kamień milowy za nami

Uff, przekładana kilka razy pierwsza odsłona portalu za nami. Dużo mniejszy zakres niż planowaliśmy, ale też dużo mniejsze koszty po drodze. Dziś udało się puścić galerię z mapą i prostą wyszukiwarką. Przed chwilą jeszcze drobiazgi do serwera obrazków: można zadać jakość JPGa i, co ważniejsze, jest on generowany tylko w przypadku braku gotowego pliku, a jeśli przeglądarka pyta o konieczność odświeżenia, bo ma obrazek w cache, to wysyłany jest nagłówek 304 – not modified. Od razu ruch na łączu mniejszy, a i galeria szybciej się pokazuje.

set selectedItem w ComboBox Flexa

Kiedy z bazy danych pobieramy hm, dane, a któraś z kolumn przybiera wartości z pewnego niewielkiego zbioru (jak np. dla typu ENUM w MySQL), to w formularzu edycji rekordu chcielibyśmy zwykle użyć komponentu ComboBox do edycji tej kolumny. Problem polega na tym, że ComboBox nie ma prostej metody do ustawiania zadanej wartości. Można owszem ustawić selectedItem, ale tylko przekazując jeden z obiektów z dataProvidera Combo. Nie taki sam obiekt, ale ten sam. Tyle że wygodniej jest przekazać wartość, np. pobraną ze wspomnianej bazy. No i niech etykieta (label) Combo ustawi się sama. Oto rozszerzenie ComboBoksa, które robi co trzeba:

<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <!--
    komponent SmartComboBox z automatycznym ustawianiem selectedIndex
    na podaną wartość
    licencja: do swobodnego wykorzystania
    -->
    <mx:Script>
        <![CDATA[
            protected var _myDP:Object;
            [Bindable]
            public function set value(v:*):void
            {
                var found:Boolean = false;
                for(var i:int = 0; (i < dataProvider.length) && !found; i++) {
                    if(v == _myDP[i].data) {
                        selectedIndex = i;
                        found = true;
                    }
                }
                if(!found) throw(new Error("invalid value " + v + " for SmartComboBox.",99));
            }
            [Bindable]
            override public function set dataProvider(v:Object):void
            {
                _myDP = v;
                super.dataProvider = v;
            }
        ]]>
    </mx:Script>
</mx:ComboBox>

« Previous PageNext Page »