Paketet flash.system innehåller en funktion på paketnivå,
fscommand()
, som förenklar kommunikationen mellan en SWF-fil och dess behållare.Funktion | Definieras med | ||
---|---|---|---|
Gör att SWF-filen kan kommunicera med antingen Flash Player eller det program som är värd för Flash Player, t.ex. en webbläsare. | flash.system |
fscommand | () | funktion |
public function fscommand(command:String, args:String = ""):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Gör att SWF-filen kan kommunicera med antingen Flash Player eller det program som är värd för Flash Player, t.ex. en webbläsare. Du kan också använda funktionen fscommand()
för att skicka meddelanden till Director eller till Visual Basic, Visual C++ och andra program som kan vara värd för ActiveX-kontroller.
Funktionen fscommand()
gör att en SWF-fil kan kommunicera med ett skript på en webbsida. Åtkomsten till skript styrs dock av webbsidans allowScriptAccess
-inställning. (Du anger det här attributet i den HTML-kod som bäddar in SWF-filen, till exempel i taggen PARAM
för Internet Explorer eller taggen EMBED
för Netscape.)
- När
allowScriptAccess
är inställd på"sameDomain"
(standard) tillåts endast skript från SWF-filer i samma domän som webbsidan. - När
allowScriptAccess
är inställt på"always"
kan SWF-filen kommunicera med HTML-sidan som den är inbäddad i, även när SWF-filen kommer från en annan domän än HTML-sidan. - När
allowScriptAccess
är inställt på"never"
kan inte SWF-filen kommunicera med någon HTML-sida. Observera att det här värdet är borttaget och dess användning rekommenderas inte. Det ska heller inte vara nödvändigt att använda om du inte skickar SWF-filer som du inte litar på från din egen domän. Om du måste skicka SWF-filer som du inte litar på rekommenderar Adobe att du skapar en separat underdomän och placerar allt innehåll som du inte litar på där.
Du kan förhindra att metoden används av en SWF-fil genom att ställa in parametern allowNetworking
i object
- och embed
-taggarna på den HTML-sida där SWF-innehållet finns.
Funktionen fscommand()
tillåts inte om den anropande SWF-filen är i sandlådan lokal-med-filsystem eller lokal-med-nätverk och HTML-sidan är i en otillförlitlig sandlåda.
Mer information om säkerhet finns i avsnittet Security på Flash Player Developer Center.
Användning 1: Om du vill använda fscommand()
för att skicka ett meddelande till Flash Player måste du använda fördefinierade kommandon och parametrar. I följande tabell visas vilka värden du kan ange för fscommand()
-funktionens parametrar command
och args
. Dessa värden styr SWF-filer som spelas upp i Flash Player, även projektorer. En projektor är en SWF-fil som har sparats i ett format som kan köras som ett fristående program, dvs. utan Flash Player.
Kommando | Parameter (args) | Syfte |
---|---|---|
quit | Inget | Stänger projektorn. |
fullscreen | true eller false | Om du anger true ställs Flash Player in på helskärmsläge. Om du anger false återgår spelaren till normal menyvisning. |
allowscale | true eller false | Om du anger false ställs spelaren in så att SWF-filen alltid visas i sin ursprungsstorlek och aldrig skalas. Om du anger true tvingas SWF-filen att skalas till 100 % av spelaren. |
showmenu | true eller false | Om du anger true aktiveras hela uppsättningen snabbmenyalternativ. Om du anger false döljs snabbmenyalternativen förutom Inställningar och Om Flash Player. |
exec | Sökväg till program | Kör ett program inifrån projektorn. |
trapallkeys | true eller false | Om du anger true skickas alla händelser, inklusive kortkommandon, till onClipEvent(keyDown/keyUp) -hanteraren i Flash Player. |
Alla kommandon som beskrivs i tabellen är inte tillgängliga i alla program:
- Inget av kommandona är tillgängliga på webbspelare.
- Alla kommandon är tillgängliga i fristående projektorprogram.
- AIR-program bör använda klassen flash.desktop.NativeApplication för liknande funktioner, som
NativeApplication.nativeApplication.exit()
i stället förfscommand("quit")
. - Det är bara
allowscale
ochexec
som är tillgängliga i testfilmspelare.
Kommandot exec
får bara innehålla tecknen A-Z, a-z, 0-9, punkt (.) och understreck (_). Kommandot exec
körs endast i underkatalogen fscommand. Det innebär att om du använder kommandot exec
för att anropa ett program, måste det programmet finnas i en underkatalog som heter fscommand. Kommandot exec
fungerar inifrån en Flash-projektorfil.
Användning 2: Du kan, om du vill använda fscommand()
för att skicka ett meddelande till ett skriptspråk (som JavaScript) i en webbläsare, överföra två valfria parametrar i parametrarna command
och args
. Dessa parametrar kan vara strängar eller uttryck och används i en JavaScript-funktion som hanterar, eller fångar, funktionen fscommand()
.
I en webbläsare anropar fscommand()
JavaScript-funktionen moviename_DoFScommand
som finns på den webbsida som innehåller SWF-filen. För moviename
anger du namnet på det Flash-objekt som du använde för attributet NAME
för EMBED
-taggen eller ID-egenskapen för OBJECT
-taggen. Om du ger SWF-filen namnet "myMovie" anropas JavaScript-funktionen myMovie_DoFScommand
.
På webbsidan som innehåller SWF-filen ställer du in attributet allowScriptAccess
för att SWF-filen ska få åtkomst till webbsidan, som beskrivs ovan. (Du anger det här attributet i den HTML-kod som bäddar in SWF-filen, till exempel i taggen PARAM
för Internet Explorer eller taggen EMBED
för Netscape.)
Det kan hända att det misslyckas om du använder den här metoden programmatiskt för att öppna ett popup-fönster i Flash Player 10 eller senare som körs i en webbläsare. Olika webbläsare (och webbläsarinställningar) kan när som helst blockera popup-fönster. Det går inte att garantera att ett popup-fönster visas. Den bästa möjligheten att lyckas får du om du endast använder den här metoden för att öppna popup-fönster i kod som körs som ett direkt resultat av en användaråtgärd (till exempel i en händelsehanterare för en musklicknings- eller tangenttryckningshändelse).
Användning 3: Funktionen fscommand()
kan skicka meddelanden till Director (Macromedia Director från Adobe). Dessa meddelanden tolkas av Lingo (skriptspråket i Director) som strängar, händelser eller körbar Lingo-kod. Om meddelandet är en sträng eller en händelse måste du skriva Lingo-koden för att kunna hämta meddelandet från fscommand()
-funktionen och utföra en åtgärd i Director. Mer information finns på Director Support Center på www.adobe.com/support/director/.
Användning 4: I Visual Basic, Visual C++ och andra program som kan använda ActiveX-kontroller skickar fscommand()
en VB-händelse med två strängar som kan hanteras i miljöns programmeringsspråk. Om du vill ha mer information använder du nyckelorden "Flash method" för att genomsöka Flash Support Center på www.adobe.com/se/support/flash/.
Obs! Klassen ExternalInterface ger bättre funktionalitet för kommunikation mellan JavaScript och ActionScript (Användning 2) och mellan ActionScript och VisualBasic, Visual C++ eller andra program som kan använda ActiveX-kontroller (Användning 4). Du bör fortsätta att använda fscommand()
för att skicka meddelanden till Flash Player (Användning 1) och Macromedia Director (Användning 3).
Parametrar
command:String — En sträng som skickas till värdprogrammet (för vilken användning som helst) eller ett kommando som skickas till Flash Player.
| |
args:String (default = " ") — En sträng som skickas till värdprogrammet (för vilken användning som helst) eller ett värde som skickas till Flash Player.
|
Utlöser
Error — Om funktionen inte anropas som svar på en användaråtgärd, som exempelvis en mushändelse eller tangenttryckningshändelse.
|
Relaterade API-element
Exempel ( Så här använder du exemplet )
fscommand()
kan användas för att instruera Flash Player att ingå helskärmsläge och inte tillåta skalning. En orange ruta läggs till på scenen med hjälp av draw()
. I draw()
läggs en click
-händelseavlyssnare till med namnet clickHandler()
som svarar på click
-händelserna genom att ange att Flash Player ska avslutas med ett annat anrop till fscommand().
Obs: det här exemplet bör utföras i ett fristående Flash Player och inte i en webbläsare.
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, 01:57 PM Z