Archive for February, 2008

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

Upload plików we Fleksie

Prosta sprawa, ale postanowiłem zacząć od Google. Znalazłem fajny, gotowy komponent do uploadu całej listy plików, ale… trochę nie działał. Przestudiowałem dokumentację, potem kilka forów i wreszcie na CodingCowboys: jest. Okazało się, że Flex ma błąd w uploadzie i wysyła plik bez kończącego znacznika MIME. Aby to obejść wystarczy dodać plik .htaccess, a w nim dwie linijki (dla Apache/Linux):

SecFilterEngine Off
SecFilterScanPOST Off

Działa. Załączam lekko skorygowane pliki Flex i PHP. W aplikacji wstawiamy coś takiego:


<com:FileUpload
width="100%" height="100%"
uploadUrl="http://nucom.ntxt.net/upload.php"
uploadComplete="Alert.show('File(s) have been uploaded.', 'Upload successful')"
uploadIOError="Alert.show('IO Error in uploading file.', 'Error')"
uploadSecurityError="Alert.show('Security Error in uploading file.', 'Error')"/>

Next Page »