wyrażenia regularne w AS3 i HTML

Przy okazji obsługi tekstu wielokolumnowego ze stylami CSS i automatycznym dzieleniem na strony i ramki tekstowe pojawił się problem HTMLa. Kiedy tekst przelewa się z jednej ramki (TextField) do drugiej, trzeba obsłużyć zamykanie tagów na końcu pierwszej ramki i otwieranie ich na początku drugiej. Ponieważ praca jest w trakcie, to na razie tylko tyle, że znalazłem stronę do testowania wyrażeń w AS3, zrobioną we fleksie.

A wyrażenia, jakimi zbieram z tekstu otwierające i zamykające tagi:

openTag     = /<\s*(\w+)([^>]*[^/])?>/gi;
closeTag    = /</(\w+)\s*>/gi;

nodeName nie działa w AS3

Znowu bug chyba. Na elementach wybranych z dokumentu XML nie chcą zadziałać własności nodeName i nodeType, za to działa metoda name(), podając nazwę taga, czyli to, czego spodziewałem się po nodeName.

<?xml version='1.0' encoding='utf-8'?>
<layout>
<title x="137" y="0" color="">tekst tekst</title>
<gallery src="./dane/PL/galeria_glowna.json" x="137" y="0"/>
</layout>

var layout:XML;
// ... pobranie powyższego XML

for each(var itemx:XML in layout.*) {
trace(itemx.nodeName); //nie działa!!!
trace(itemx.name()); //działa :)
}

flash player cache, czyli bufor którego nie było

Przy testowaniu aplikacji we Flashu często napotykamy na problem zapamiętywania przez Playera raz pobranych danych. Za diabła nie da się go przekonać do odświeżenia pamięci. Powstały różne obejścia problemu, np. przez dodawanie losowych parametrów do URLa, np.:

zamiast: http://domena.net/plik.xml
pobieramy: http://domena.net/plik.xml?antycache=asd3wu4e9238werw

za każdym razem zmieniając zagadkowy ciąg na końcu URL. Długo szukałem, gdzie ten tajemniczy bufor się znajduje i jak go wyczyścić… Ktoś napisał, że to będzie nowa opcja nowego Playera - to byłby skandal - ale chodziło o buforowanie komponentów, a nie danych. Ktoś inny, że cache przeglądarki i playera to dwie różne sprawy. Nie znalazłem rozwiązania nigdzie… aż spróbowałem wyczyścić pliki tymczasowe w IE. O tyle byłem zdziwiony efektem, że używam FF, a testowane SWFy niby nie korzystają ani z jednego, ani drugiego. Niemniej dane się odświeżyły. Więc powtarzam:
aby odświeżyć cache Flash Playera, należy odświeżyć cache Internet Explorera, nawet jeśli korzystamy z Firefoksa. Głupie, nie?

« Previous PageNext Page »