Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
flashx.textLayout.compose 

ISWFContext  - AS3

Пакетflashx.textLayout.compose
Интерфейсpublic interface ISWFContext
Средство реализации TextContainerManager

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 10, AIR 1.5

Интерфейс ISWFContext позволяет SWF-файлу использовать свой контекст совместно с другими загружающими его SWF-файлами. Приложение, которое загружает SWF-файл типа ISWFContext, может вызывать методы в контексте загруженного SWF-файла. Основным использованием является вызов методов TextLine создания строки FTE.

Приложение может использовать этот интерфейс для управления созданием TextLine по двум причинам.

  • Многократное использование встроенного шрифта: если приложению требуется использовать шрифт, встроенный в загруженный SWF-файл, оно может получить доступ к шрифту, если объект TextLine создан в контексте загруженного SWF-файла.
  • Многократное использование существующих экземпляров TextLine: это позволяет быстрее выполнять повторную компоновку существующих экземпляров TextLine. TLF многократно использует существующие экземпляры TextLine во внутреннем режиме. TLF повторно использует объект TextLine путем вызова метода TextBlock.recreateTextLine() вместо TextBlock.createTextLine(), когда TLF распознает, что TextLine уже существует.

В приложении могут быть дополнительные объекты TextLine, доступные для многократного использования. Чтобы повторно использовать существующие экземпляры TextLine вручную, выполните следующие действия.

  1. Перехватывайте вызовы TextBlock.createTextLine(), а затем
  2. вызовите метод TextBlock.recreateTextLine() с существующим объектом TextLine вместо метода TextBlock.createTextLine().

Однако следует учитывать, что метод 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 — Указатель функции
 
argArray:Array — Аргументы функции
 
returns:Boolean (default = true) — Если true, функция возвращает значение

Возвращает
* — При любом значении, возвращаемом функцией.

Связанные элементы API

EmbeddedFontLineCreator.as

Следующий пример показывает, как создать реализацию ISWFContext для использования встроенного шрифта в других SWF-файлах.

Класс EmbeddedFontLineCreator внедряет ISWFContext и встраивает шрифт. Другие классы могут загрузить SWF-файл, основанный на EmbeddedFontLineCreator, и получить доступ к вложенному шрифту.

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 загружает SWF-файл, который внедряет интерфейс ISWFContext. В частности, этот пример загружает экземпляр EmbeddedFontLineCreator - типовой класс, реализующий ISWFContext.

Класс FontConsumer сначала загружает файл EmbeddedFontLineCreator.swf и ожидает функции загрузки для успешного выполнения. При успешной загрузке функция прослушивателя событий createFlow() создает контейнер текста и поток текста. Затем прослушиватель событий создает компоновщик потока и связывает загруженный SWF-файл со свойством swfContext компоновщика потока. Эта ассоциация позволяет экземпляру FontConsumer вызывать методы в пределах контекста загруженного SWF-файла. Получив доступ к контексту 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 будет отображаться на английском языке.