Strona wykorzystuje ciasteczka by usprawnić komfort z jej korzystania. Korzystając ze strony akceptujesz naszą Politykę Ciasteczek. X

Od AS2 do AS3: odpowiednik _global w AS3 [podstawowy]

Pewnego razu zostałem zapytany czy istnieje sposób by odczytać zmienne utworzone na _root albo _global. W AS3 problemem są bardzo rygorystyczne wymagania - w AS2 można po prostu napisać _global.myVar = 5 by mieć dostęp do tej zmiennej z każdego miejsca w projekcie, ale niestety AS3 po prostu nie toleruje dynamicznych zmiennych (no i nie obsługuje słowa kluczowego _global).
Można to obejść na dwa sposoby:

1. Użyć składni przewidzianej do dynamicznych zmiennych.

root["myVar"] = 5;
To właściwie to samo co w AS2, ale używanie dynamicznych zmiennych może tragicznie spowolnić działanie aplikacje (przy częstym używaniu). W takim wypadku lepiej zainteresować się drugą opcją.

2. Użyć słowa kluczowego static.
To prawdopodobnie najlepsze podejście do całej sprawy, ale wymaga nieco dodatkowej pracy. Przed zrobieniem czegokolwiek należy utworzyć "Klasę Dokumentu" na zakładce właściwości.

Wybraną nazwę klasy (np. "MyClass") należy potwierdzić enter'em (w tym momencie wyskoczy okienko informujące, że taka klasa nie istnieje - śmiało można to zignorować) a następnie kliknąć na ikonkę ołówka obok.
Jeśli wszystko przebiegło pomyślnie zawartość naszej nowej klasy zostanie wyświetlona w osobnym okienku:

package  {
	import flash.display.MovieClip;
	
	public class MyClass extends MovieClip {
		
		public function MyClass() {
			// constructor code
		}
	}
	
}
Teraz jeszcze przed linijką public function MyClass() pozostało napisać:
public static var myVar:Number = 5;
To w zasadzie wszystko. Od teraz z każdego miejsca w projekcie możemy dostać się do naszej zmiennej pisząc:
import MyClass;
trace(MyClass.myVar);
Ponadto skoro klasa dokumentu jest obiektem nadrzędnym całego projektu, możemy się do niej dostać przez pole root w każdym MovieClip'ie. Trzeba go tylko rzutować na naszą klasę:
import MyClass;
trace((root as MyClass).myVar);

Imię:
Komentarz:
Potwierdz kod z obrazka:confirm image