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 :)
}

dziedziczenie i brak konstruktora – 1203: No default constructor

Dziś spotkała mnie taka przykrość: kompilator AS3 zmusił mnie do jawnego wywołania konstruktora klasy nadrzędnej. Dlaczego tak? Nie wiem, bo o ile rozumiem konieczność jego wywołania w przypadku potrzeby uruchomienia tamtego kodu, ale akurat konstruktor miał zostać przysłonięty… Znalazłem jakieś wyjaśnienie tutaj, ale jest raczej teoretyczne.

Przykład:


//---------------------------- plik TeamMember.as
package test
{
class TeamMember
{
private var bioURL:String;
private var imie:String;
public function TeamMemberFull(props:Object):void
{
super(props);
}
}
}
//---------------------------- plik TeamMemberFull.as
package test
{
class TeamMemberFull extends TeamMember
{
private var bioURL:String;
private var imie:String;

public function TeamMemberFull(props:Object):void
{
super(props);
}
}
}