ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flashx.textLayout.compose 

ISWFContext  - AS3

Paketflashx.textLayout.compose
Schnittstellepublic interface ISWFContext
Umsetzer TextContainerManager

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Die ISWFContext-Schnittstelle ermöglicht es einer SWF-Datei, ihren Inhalt für andere SWF-Dateien, die sie laden, freizugeben. Eine Anwendung, die eine SWF-Datei des Typs „ISWContext“ lädt, kann Methoden im Kontext der geladenen SWF-Datei aufrufen. Sie wird hauptsächlich zum Aufrufen der FTE-TextLine-Erstellungsmethoden verwendet.

Eine Anwendung verwendet diese Schnittstelle aus zwei Gründen zur Steuerung der TextLine-Erstellung:

  • Wiederverwendung einer eingebetteten Schriftart: wenn eine Anwendung eine Schriftart verwenden möchte, die in eine geladene SWF-Datei eingebettet ist, kann die Anwendung auf die Schriftart zugreifen, wenn im Kontext der geladenen SWF-Datei eine TextLine erstellt wird.
  • Wiederverwendung vorhandener TextLine-Instanzen: die Wiederverwendung von vorhandenen TextLine-Instanzen kann zur schnelleren Wiederzusammensetzung führen. TLF nutzt die interne Wiederverwendung vorhandener TextLine-Instanzen. TLF kann eine TextLine wiederverwenden, indem TextBlock.recreateTextLine() statt TextBlock.createTextLine() aufgerufen wird, wenn TLF erkennt, dass eine TextLine vorhanden ist.

Ihre Anwendung hat möglicherweise weitere TextLine-Instanzen, die wiederverwendet werden können. So können Sie vorhandene TextLine-Instanzen wiederverwenden:

  1. Fangen Sie Aufrufe von TextBlock.createTextLine() ab und
  2. rufen Sie TextBlock.recreateTextLine() mit der vorhandenen TextLine-Instanz auf anstatt TextBlock.createTextLine().

Beachten Sie jedoch, dass TextBlock.recreateTextLine() nur in Flash Player 10.1 und höher verfügbar ist.

Beispiele anzeigen

Verwandte API-Elemente



Öffentliche Methoden
 MethodeDefiniert von
  
callInContext(fn:Function, thisArg:Object, argArray:Array, returns:Boolean = true):*
Eine Möglichkeit zum Aufrufen einer Methode in einem vom Client gesteuerten Kontext.
ISWFContext
Methodendetails

callInContext

()Methode
public function callInContext(fn:Function, thisArg:Object, argArray:Array, returns:Boolean = true):*

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Eine Möglichkeit zum Aufrufen einer Methode in einem vom Client gesteuerten Kontext.

Parameter

fn:Function — Die aufzurufende Funktion oder Methode.
 
thisArg:Object — Dies ist der Zeiger für die Funktion.
 
argArray:Array — Die Argumente für die Funktion.
 
returns:Boolean (default = true) — Falls „true“, gibt die Funktion einen Wert zurück.

Rückgabewerte
* — Von der Funktion zurückgegebenes Ergebnis, falls vorhanden.

Verwandte API-Elemente

EmbeddedFontLineCreator.as

Das folgende Beispiel zeigt, wie eine ISWFContext-Implementierung erstellt wird, die anderen SWF-Dateien den Zugriff auf eine eingebettete Schriftart gewährt.

Die EmbeddedFontLineCreator-Klasse implementiert ISWFContext und bettet eine Schriftart ein. Andere Klassen können SWF-Dateien auf Basis des EmbeddedFontLineCreator laden und auf die eingebettete Schriftart zugreifen.

package flashx.textLayout.compose.examples {
    import flash.display.Sprite;
    
    import flashx.textLayout.compose.ISWFContext;
        
    public class EmbeddedFontLineCreator extends Sprite implements ISWFContext
    {
        [Embed( source="C:\\Windows\\Fonts\\BirchStd.otf", fontFamily="embeddedBirchStd", cff="embedAsCFF",
                unicodeRange="U+0041-U+005A, U+0061-U+007A, U+003F")]
        public var embeddedBirchStdFont:Class;
        
        public function callInContext(fn:Function, thisArg:Object, argsArray:Array, returns:Boolean=true):*
        {
            if (returns)
                return fn.apply(thisArg, argsArray);
            fn.apply(thisArg, argsArray);
        }
    }
}

FontConsumer.as

Im folgenden Beispiel wird gezeigt, wie eine Klasse erstellt wird, die auf eine in einer anderen SWF-Datei eingebettete Schriftart zugreifen kann. Die FontConsumer-Klasse lädt eine SWF-Datei, die die ISWFContext-Schnittstelle lädt. Genauer gesagt, lädt dieses Beispiel eine Instanz eines EmbeddedFontLineCreator, eine Beispielklasse, die ISWFContext implementiert.

Die FontConsumer-Klasse lädt zuerst die Datei „EmbeddedFontLineCreator.swf“ und wartet auf die erfolgreiche Ausführung der Ladefunktion. War das Laden erfolgreich, erstellt die Ereignis-Listener-Funktion createFlow() einen Textcontainer sowie einen Textfluss. Der Ereignis-Listener erstellt dann einen Flow-Composer und verknüpft die geladene SWF-Datei mit der swfContext-Eigenschaft des Flow-Composers. Durch diese Verknüpfung kann eine FontConsumer-Instanz Methoden innerhalb des Kontexts der geladenen SWF-Datei aufrufen. Dank des Zugriffs auf den Kontext von EmbeddedFontLineCreator kann die FontConsumer-Instanz die im EmbeddedFontLineCreator eingebettete Schriftart verwenden.

package flashx.textLayout.compose.examples {
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLRequest;
    import flash.text.engine.FontLookup;
    
    import flashx.textLayout.compose.StandardFlowComposer;
    import flashx.textLayout.container.ContainerController;
    import flashx.textLayout.conversion.TextConverter;
    import flashx.textLayout.elements.Configuration;
    import flashx.textLayout.elements.TextFlow;
    import flashx.textLayout.formats.TextLayoutFormat;
    
    public class FontConsumer extends Sprite
    {
        private var fontSWF:Loader = new Loader();    
        
        public function FontConsumer()
        {
            var fontSWFURL:URLRequest = new URLRequest("EmbeddedFontLineCreator.swf");
            fontSWF.contentLoaderInfo.addEventListener( Event.COMPLETE, createFlow );
            fontSWF.load( fontSWFURL );    
        }
        
        private function createFlow( event:Event ):void
        {
            var container:Sprite = new Sprite();
            this.addChild( container );
            var controller:ContainerController = new ContainerController( container, 600, 700 );
            
            var format:TextLayoutFormat = new TextLayoutFormat();
            format.fontFamily = "embeddedBirchStd";
            format.fontLookup = FontLookup.EMBEDDED_CFF;
            
            var config:Configuration = new Configuration();
            config.textFlowInitialFormat = format;
            
            var flow:TextFlow = TextConverter.importToFlow( "Shall I compare thee to a summer's day?", TextConverter.PLAIN_TEXT_FORMAT, config );
            flow.flowComposer = new StandardFlowComposer();
            
            var embeddedFontLineCreator:Class = fontSWF.contentLoaderInfo.applicationDomain.getDefinition( "flashx.textLayout.compose.examples.EmbeddedFontLineCreator" ) as Class;
            flow.flowComposer.swfContext = new embeddedFontLineCreator();
            
            flow.flowComposer.addController( controller );
            flow.flowComposer.updateAllControllers();
        }
    }
}





[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.