Paket | flashx.textLayout.compose |
Arabirim | public interface ISWFContext |
Uygulayıcılar | TextContainerManager |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
Bir uygulamanın TextLine oluşturmayı kontrol etmek için bu arabirimi kullanması için iki sebep vardır:
- Gömülü bir fontu yeniden kullanma: bir uygulama yüklü bir SWF dosyasına gömülü bir font kullanmak istiyorsa, yüklenen SWF dosyasının bağlamında bir TextLine oluşturulursa uygulama fonta erişebilir.
-
Mevcut TextLine örneklerini yeniden kullanma:: TextLine örneklerini yeniden kullanma daha hızlı yeniden oluşturma süreleriyle sonuçlanabilir. TLF mevcut TextLine örneklerini dahili olarak yeniden kullanır. TLF, bir TextLine öğesini bir TLF bir TextLine öğesinin varolduğunu fark ettiğinde
TextBlock.createTextLine()
yerineTextBlock.recreateTextLine()
öğesini çağırarak yeniden kullanır.
Uygulamanız yeniden kullanılabilecek ek TextLine örneklerine sahip olabilir. Mevcut TextLine örneklerini elle yeniden kullanmak için:
-
TextBlock.createTextLine()
öğesine yapılan çağrıları engelleyin ve sonra -
TextBlock.createTextLine()
öğesinin yerineTextBlock.recreateTextLine()
öğesini varolan TextLine örneği ile çağırın.
Ancak, lütfen TextBlock.recreateTextLine()
öğesinin yalnızca Flash Player 10.1 ve daha sonrasında mevcut olduğunu aklınızda tutun.
İlgili API Öğeleri
Yöntem | Tanımlayan: | ||
---|---|---|---|
İstemci kontrollü bir bağlamda bir yöntem çağırma yöntemi. | ISWFContext |
callInContext | () | yöntem |
public function callInContext(fn:Function, thisArg:Object, argArray:Array, returns:Boolean = true):*
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10, AIR 1.5 |
İstemci kontrollü bir bağlamda bir yöntem çağırma yöntemi.
Parametreler
fn:Function — Çağrılacak işlev veya yöntem
| |
thisArg:Object — İşleve ilişkin this işaretleyicisi
| |
argArray:Array — İşleve ilişkin argümanlar
| |
returns:Boolean (default = true ) — Değer true ise, işlev bir değer döndürür
|
* — Varsa, işlevin döndürdüğü herhangi bir şey.
|
İlgili API Öğeleri
EmbeddedFontLineCreator sınıfı ISWFContext öğesini uygular ve bir font gömer. Diğer sınıflar EmbeddedFontLineCreator öğesini temel alarak bir SWF dosyası yükleyebilir ve gömülü fonta erişebilir.
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 sınıfı ilk olarak EmbeddedFontLineCreator.swf dosyasını yükler ve yükleme işleminin tamamlanmasını bekler. Yükleme tamamlandığında, createFlow()
olay dinleyicisi işlevi bir metin kabı ve bir metin akışı oluşturur. Daha sonra, olay dinleyicisi bir akış oluşturucu oluşturur ve yüklü SWF dosyasını akış oluşturucunun swfContext
özelliğiyle ilişkilendirir. Bu ilişkilendirme bir FontConsumer örneğinin yüklü SWF dosyasının bağlamı dahilindeki yöntemleri çağırmasına izin verir. EmbeddedFontLineCreator öğesinin bağlamına erişim ile, FontConsumer örneği EmbeddedFontLineCreator öğesinde gömülü olan fontu kullanabilir.
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(); } } }
Tue Jun 12 2018, 01:09 PM Z