Archive for February, 2008

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

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?

ReferenceError: Error #1065: Variable xxx is not defined.

Chwilę walczyłem we Flashu z tym błędem. Pojawiał się, kiedy poniższą definicję klasy przypisywałem do dokumentu (klasa dokumentu), ale bez słówka “public” przed klasą.

package moje.com
{
import flash.display.MovieClip;


public class MainPage extends MovieClip
{
public function MainPage():void
{

//konstruktor
}
}
}

Next Page »