Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
ホーム  |  パッケージおよびクラスリストの非表示 |  パッケージ  |  クラス  |  新機能  |  索引  |  付録  |  英語で表示される理由
フィルター: サーバーからデータを取得しています...
サーバーからデータを取得しています...
flashx.textLayout.compose 

ISWFContext  - AS3

パッケージflashx.textLayout.compose
インターフェイスpublic interface ISWFContext
実装者 TextContainerManager

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

ISWFContext インターフェイスを使用すると、SWF ファイルは、自身をロードする他のファイルとコンテキストを共有することができます。ISWFContext タイプの SWF ファイルをロードするアプリケーションは、ロードした SWF ファイルのコンテキストでメソッドを呼び出すことができます。主な使用方法は、FTE TextLine 作成メソッドの呼び出しです。

アプリケーションは、次の 2 つの理由により、TextLine 作成の制御にこのインターフェイスを使用します。

  • 埋め込みフォントの再利用:アプリケーションで、ロードした SWF ファイル内の埋め込みフォントを使用する場合、ロードした SWF ファイルのコンテキストで TextLine が作成されていれば、アプリケーションはその埋め込みフォントにアクセスできます。
  • 既存の TextLine インスタンスの再利用:既存の TextLine インスタンスを再利用することで、再構成に要する時間が短縮されます。TLF は、既存の TexeLine インスタンスを内部的に再利用します。TLF は、TextLine がまだ存在していると認識したときに、TextBlock.createTextLine() ではなく TextBlock.recreateTextLine() を呼び出すことによって、TextLine を再利用します。

アプリケーション内に、再利用可能な他の TextLine インスタンスがある可能性があります。既存の TextLine インスタンスを手動で再利用するには、次の手順に従います。

  1. TextBlock.createTextLine の呼び出しをトラップします。
  2. TextBlock.createTextLine() ではなく、存在している TextLine インスタンスを指定して TextBlock.recreateTextLine() を呼び出します。

ただし、TextBlock.recreateTextLine() を使用できるのは、Flash Player 10.1 以降のみであることに注意してください。

例を表示

関連する API エレメント



パブリックメソッド
 メソッド定義元
  
callInContext(fn:Function, thisArg:Object, argArray:Array, returns:Boolean = true):*
クライアントで制御されるコンテキストでメソッドを呼び出す方法です。
ISWFContext
メソッドの詳細

callInContext

()メソッド
public function callInContext(fn:Function, thisArg:Object, argArray:Array, returns:Boolean = true):*

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

クライアントで制御されるコンテキストでメソッドを呼び出す方法です。

パラメーター

fn:Function — 呼び出す関数またはメソッド
 
thisArg:Object — 関数の this ポインター
 
argArray:Array — 関数の引数
 
returns:Boolean (default = true) — true の場合、関数は値を返します

戻り値
* — 関数から返されるものすべて(返された場合)

関連する API エレメント

EmbeddedFontLineCreator.as

次の例は、他の SWF ファイルから埋め込みフォントにアクセスできるようにするための ISWFContext 実装の作成方法を示しています。

EmbeddedFontLineCreator クラスは、ISWFContext を実装してフォントを埋め込みます。他のクラスは、EmbeddedFontLineCreator に基づいて SWF ファイルをロードして、埋め込みフォントにアクセスできます。

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

次の例は、別の SWF ファイルの埋め込みフォントにアクセスできるクラスの作成方法を示しています。FontConsumer クラスは、ISWFContext インターフェイスを実装する SWF ファイルをロードします。具体的には、この例では、ISWFContext を実装するクラスの例である EmbeddedFontLineCreator のインスタンスをロードします。

FontConsumer クラスは、EmbeddedFontLineCreator.swf ファイルをまずロードして、ロード関数が正しく完了するのを待ちます。ロードが正しく完了したら、createFlow() というイベントリスナー関数がテキストコンテナとテキストフローを作成します。次に、このイベントリスナーがフローコンポーザーを作成して、ロードされた SWF ファイルをフローコンポーザーの swfContext プロパティに関連付けます。この関連付けにより、ロードされた SWF ファイルのコンテキスト内で、FontConsumer インスタンスがメソッドを呼び出せるようになります。EmbeddedFontLineCreator のコンテキストにアクセスすることにより、FontConsumer インスタンスは、EmbeddedFontLineCreator の埋め込みフォントを使用できるようになります。

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 ]英語で表示される理由
ActionScript 3.0 リファレンスガイドのコンテンツが英語で表示されます。

ActionScript 3.0 リファレンスガイドのすべての部分がすべての言語に翻訳されているわけではありません。言語エレメントが翻訳されていない場合、そのエレメントは英語で表示されます。例えば、ga.controls.HelpBox クラスはどの言語にも訳されていません。このため、リファレンスガイドの日本語バージョンでは、ga.controls.HelpBox クラスは英語で表示されます。