Pakiet flash.system zawiera jedną funkcję zdefiniowaną na poziomie pakietu,
fscommand()
, która usprawnia komunikację między plikiem SWF a jego kontenerem.Funkcja | Zdefiniowane przez | ||
---|---|---|---|
Zapewnia komunikację pliku SWF z programem Flash Player lub programem, który z nim współpracuje (np. z przeglądarką internetową). | flash.system |
fscommand | () | funkcja |
public function fscommand(command:String, args:String = ""):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Zapewnia komunikację pliku SWF z programem Flash Player lub programem, który z nim współpracuje (np. z przeglądarką internetową). Do przekazywania komunikatów do programu Director lub Visual Basic, Visual C++ albo innych programów, które obsługują elementy sterujące ActiveX, można również użyć funkcji fscommand()
.
Funkcja fscommand()
umożliwia plikowi SWF komunikowanie ze skryptem na stronie sieci Web. Jednak dostęp skryptu jest kontrolowany przez ustawienie allowScriptAccess
strony. (Ten atrybut należy ustawić w kodzie HTML, który osadza plik SWF — na przykład w znaczniku PARAM
dla programu Internet Explorer lub znaczniku EMBED
dla programu Netscape).
- Gdy atrybut
allowScriptAccess
ma wartość"sameDomain"
(wartość domyślna), wykonywanie operacji skryptowych jest dozwolone tylko na plikach SWF znajdujących się w tej samej domenie, co strona sieci Web. - Gdy atrybut
allowScriptAccess
ma wartość"always"
, plik SWF może komunikować się ze stroną HTML, w której jest osadzony, nawet gdy pochodzi z innej domeny niż ta strona. - Gdy atrybut
allowScriptAccess
ma wartość"never"
, plik SWF nie może komunikować się z żadnymi stronami HTML. Należy zwrócić uwagę, że ta wartość jest przestarzała i niezalecana, a stosowanie jej nie powinno być konieczne, jeśli nie zachodzi potrzeba udostępniania niezaufanych plików SWF z własnej domeny. Jeśli zachodzi konieczność udostępniania niezaufanych plików SWF, firma Adobe zaleca utworzenie odrębnej poddomeny i umieszczenie w niej całej niezaufanej treści.
Istnieje możliwość zablokowania używania tej metody przez plik SWF. W tym celu należy ustawić parametr allowNetworking
znaczników object
oraz embed
na stronie HTML zawierającej zawartość SWF.
Wywołanie funkcji fscommand()
nie jest dozwolone, jeśli wywołujący plik SWF znajduje się w obszarze izolowanym lokalnego systemu plików lub sieci lokalnej, a strona HTML zawierająca funkcję znajduje się w niezaufanym obszarze izolowanym.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
Zastosowanie 1: w celu użycia funkcji fscommand()
do wysyłania komunikatów do programu Flash Player należy użyć predefiniowanych poleceń i parametrów. W poniższej tabeli przedstawiono wartości, jakie można wprowadzić dla parametrów command
i args
funkcji fscommand()
. Te wartości kontrolują pliki SWF odtwarzane za pomocą programu Flash Player, łącznie z projektorami. (Projektor jest plikiem SWF zapisanym w formacie, który może działać jako samodzielna aplikacja — tzn. bez programu Flash Player).
Polecenie | Parametr (argumenty) | Cel |
---|---|---|
quit | Brak | Zamyka projektor. |
fullscreen | true lub false | Określenie true powoduje włączenie programu Flash Player w trybie pełnoekranowym. Określenie false powoduje przywrócenie odtwarzacza do normalnego widoku menu. |
allowscale | true lub false | Określenie false powoduje takie ustawienie odtwarzacza, że plik SWF jest zawsze rysowany w oryginalnym rozmiarze i nigdy nie jest skalowany. Określenie true wymusza skalowanie pliku SWF do 100% wymiarów odtwarzacza. |
showmenu | true lub false | Określenie true powoduje aktywację pełnego zbioru elementów menu kontekstowego. Określenie false powoduje ukrycie wszystkich elementów menu kontekstowego z wyjątkiem informacji o programie Flash Player i elementów ustawień. |
exec | Ścieżka do aplikacji | Wykonuje aplikację z projektora. |
trapallkeys | true lub false | Określenie true powoduje wysłanie wszystkich zdarzeń kluczowych, łącznie z kluczami przyspieszania, do modułu obsługi onClipEvent(keyDown/keyUp) w programie Flash Player. |
Nie wszystkie polecenia widoczne w tabeli są dostępne we wszystkich aplikacjach:
- Żadne z poleceń nie jest dostępne w odtwarzaczach sieci Web.
- Wszystkie polecenia są dostępne w autonomicznych aplikacjach projektora.
- Aplikacje AIR powinny korzystać z klasy flash.desktop.NativeApplication w celu wywoływania podobnych funkcji. Należy na przykład używać wywołania
NativeApplication.nativeApplication.exit()
zamiastfscommand("quit")
. - Tylko
allowscale
iexec
są dostępne w odtwarzaczach wersji próbnych filmów.
Polecenie exec
może zawierać tylko następujące znaki: A-Z, a-z, 0-9, kropkę (.) i podkreślenie (_). Polecenie exec
działa wyłącznie w poleceniu fscommand dla podkatalogu. Innymi słowy: jeśli polecenie exec
służy do wywoływania aplikacji, aplikacja musi znajdować się w podkatalogu o nazwie fscommand. Polecenie exec
działa tylko z pliku projektora Flash.
Zastosowanie 2: W celu użycia funkcji fscommand()
do wysyłania komunikatów do języka skryptowego, takiego jak JavaScript w przeglądarce sieci Web, w parametrach command
i args
można przekazywać dowolne dwa parametry. Te parametry mogą być ciągami znaków lub wyrażeniami i są używane w funkcji JavaScript, która obsługuje lub buforuje funkcję fscommand()
.
W przeglądarce sieci Web funkcja fscommand()
wywołuje funkcję JavaScript moviename_DoFScommand
, która znajduje się w stronie sieci Web zawierającej plik SWF. W przypadku moviename
należy wprowadzić nazwę dla obiektu Flash, który był używany dla atrybutu NAME
znacznika EMBED
lub właściwości ID znacznika OBJECT
. Po wyznaczeniu dla pliku SWF nazwy "myMovie" następuje wywołanie funkcji JavaScript myMovie_DoFScommand
.
Na stronie sieci Web, która zawiera plik SWF, należy ustawić atrybut allowScriptAccess
, aby umożliwić lub zablokować dostęp pliku SWF do strony sieci Web, tak jak opisano to powyżej. (Ten atrybut należy ustawić w kodzie HTML, który osadza plik SWF — na przykład w znaczniku PARAM
dla programu Internet Explorer lub znaczniku EMBED
dla programu Netscape).
W programie Flash Player 10 i nowszych wersjach działających w przeglądarce użycie tej metody do programowego otwarcia okna podręcznego może zakończyć się niepowodzeniem. Różne przeglądarki (i konfiguracje przeglądarek) mogą blokować okna podręczne w każdej chwili; nie można zagwarantować, że okno podręczne zostanie wyświetlone. Jednak, aby zwiększyć szansę na powodzenie, należy używać tej metody w celu otwarcia podręcznego okna tylko w kodzie, który jest wykonywany jako bezpośredni wynik działania użytkownika (np. w module obsługi zdarzenia dla zdarzenia kliknięcia myszą lub naciśnięcia klawisza).
Zastosowanie 3: Funkcja fscommand()
może wysyłać komunikaty do programu Director (Macromedia Director firmy Adobe). Te komunikaty są interpretowane przez Lingo (język skryptowy programu Director) jako ciągi znaków, zdarzenia lub kod wykonywalny Lingo. Jeśli komunikat jest ciągiem znaków lub zdarzeniem, należy zapisać kod Lingo w celu odebrania komunikatu z funkcji fscommand()
, a następnie wykonać operację w programie Director. Więcej informacji udostępnia centrum wsparcia Director Support Center na stronie www.adobe.com/support/director/.
Zastosowanie 4: W językach VisualBasic, Visual C++ oraz innych językach, które mogą obsługiwać elementy sterujące ActiveX, funkcja fscommand()
wysyła zdarzenie VB zawierające dwa ciągi znaków, które mogą być obsługiwane w języku programowania środowiska. W celu uzyskania dodatkowych informacji należy wpisać słowa kluczowe „Flash method” w obszarze wyszukiwania centrum wsparcia Flash Support Center pod adresem www.adobe.com/support/flash/.
Uwaga: Klasa ExternalInterface zapewnia lepsze funkcjonowanie w ramach komunikacji między JavaScript i ActionScript (Usage 2) oraz między ActionScript i VisualBasic, Visual C++ lub innymi programami, które mogą obsługiwać elementy sterujące ActiveX (zastosowanie 4). W celu wysyłania komunikatów do programu Flash Player (Zastosowanie 1) i programu Director (Zastosowanie 3) nadal należy korzystać z funkcji fscommand()
.
Parametry
command:String — Ciąg znaków przekazywany do aplikacji głównej dla dowolnego użytku lub polecenie przekazywane do programu Flash Player.
| |
args:String (default = " ") — Ciąg znaków przekazywany do aplikacji głównej dla dowolnego użytku lub wartość przekazywana do programu Flash Player.
|
Zgłasza
Error — Jeśli funkcja nie jest wywoływana w odpowiedzi działanie użytkownika, np. zdarzenie związane z myszą lub naciśnięciem klawisza.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
fscommand()
w celu wyświetlania pełnoekranowego w programie Flash Player bez skalowania. Za pomocą metody draw()
na stole montażowym zostało umieszczone pomarańczowe pole. Do metody draw()
został dodany detektor zdarzenia click
o nazwie clickHandler()
, który odpowiada na zdarzenia click
, sterując programem Flash Player w taki sposób, aby kończył działanie poprzez ponowne wywołanie funkcji fscommand()
.
Uwaga: Tego przykładu nie należy uruchamiać w autonomicznym programie Flash Player ani w przeglądarce sieci Web.
package { import flash.display.Sprite; import flash.text.TextField; import flash.system.fscommand; import flash.events.MouseEvent; public class FSCommandExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 100; public function FSCommandExample() { fscommand("fullscreen", "true"); fscommand("allowscale", "false"); draw(); } private function clickHandler(event:MouseEvent):void { fscommand("quit"); trace("clickHandler"); } private function draw():void { var child:Sprite = new Sprite(); child.graphics.beginFill(bgColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); child.buttonMode = true; addEventListener(MouseEvent.CLICK, clickHandler); var label:TextField = new TextField(); label.text = "quit"; label.selectable = false; label.mouseEnabled = false; child.addChild(label); addChild(child); } } }
Tue Jun 12 2018, 12:22 PM Z