2010-11-20 22 views
0

Bir sözlük girdisi düzenlemek için TLF kullanıyorum. Oldukça iyi çalışıyor, ancak FlowElements üzerinde stil özelliklerini ayarlayarak elde edebileceğimden daha sıkı bir kontrole ihtiyacım var, özellikle de ebeveynler tarafından bağımsız olarak SpanElements üzerinde yatay boşluk ve ayar dolguları için.TLF - Birden çok kapsayıcı ve satır sonları boyunca akan metin

En çok ümit verici görünen çözüm, girdinin çeşitli öğelerini ayrı kapsayıcılara ayırmak ve metnin her tarafına yeni boyutlar ekleyerek yeni konteynırları ve ContainerControllers ekleyerek, metin içeriklerini bu şekilde akıtmaktır. Her yeni konteynere akar.

Bu ALMOST çalışır, ancak metin, farklı kapsayıcılara gitmesi gereken iki metin bölümü arasına fazladan bir satır sonu eklendiğinde yalnızca bir sonraki bölmeye doğru şekilde akar. Hat kesintisi olmadan, konteynerler doğru şekilde boyutlandırılır, ancak hiçbir metin görüntülenmez.

Bu örneklerde konteynır sprite'a kenarlıklar ekledim, böylece çizildiklerini görebilirsiniz. Satır aralığının dışında, metin tam olarak aynıdır. Hece alanı, bir Paragraf öğesi içinde bir SpanElement öğesidir. Telaffuz etiketi ve metni, başka bir ParagraphElement öğesinin içinde bulunan ayrı SpanElements'dir. satır sonu olmadan

: 'rab-bit' ve 'Sesler gibi:': arasındaki satır sonu ile

no line break

'Rae biht' SONRA satır sonu ile

1 break

(Satır sonu öğesinin hiçbir etkisi yoktur):

2 breaks

Gördüğünüz gibi, metinden sonra satır sonu eklenmediği sürece telaffuz gösterilmez, ancak hizalama kapalıdır. Satır sonları kombinasyonu bunları doğru şekilde hizalamıyor gibi görünüyor.

Herhangi bir fikrin var mı? Bu hatalar TLF'de mi? Farklı bir yöntem denemeli miyim? Tüm metni tek bir birim olarak seçilebilir hale getirmek isterim ve TLF'nin sunduğu daha iyi render ve kontrolü seviyorum, ama aynı zamanda düzen esnekliğine de ihtiyacım var. Sanırım satır sonu ve pozisyon ofsetleri ile birlikte böyle bir şeyi bir arada hackleyebildim, ama kesinlikle güzel (veya sürdürülemez) olmazdı. Okuduğunuz için teşekkürler.

cevap

1

Adobe Cookbooks için bir süre önce size bu konuda yardımcı olabilecek bir yemek tarifi yazdım. temel olarak, öncelikle kapsayıcı denetleyicilerine odaklanmak için açıklık ve paragraf öğelerini kullanmayı tamamen kullanmayı çok daha kolay buldum. umut yardımcı olur:

Generating a formatted TextFlow Layout for plain text assets


Güncelleme dinamik konteynerler için

, muhtemelen hedef dizesini belirlemek için satır sınırlayıcı bir ucunu kullanabilirsiniz, bu dizi uzunluğu, yazı tipi boyutu var birlikte , dolgu vb., Sen konteyner için gerekli boyutu bulmak ve buna göre arayarak kapsayıcınızın boyutunu değiştirebilir: Burada

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().width; 

//and/or 

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().height; 

otomatik olarak kabın içine sığacak şekilde bir metin akışının yazı tipi boyutunu değiştirir yazdığım başka tarifi: Automating font size for TextFlow containers

ancak yaptığım gibi yazı tipi boyutunu değiştirmek yerine, kapsayıcı boyutunu metninize uyacak şekilde değiştirebilirsiniz.

Umarım bu yardımcı olur.

+0

@ TheDarkInl1978 Bu harika bir yazı. Bağlantı için teşekkürler. Ama bence örnekle benim yapmaya çalıştığım şey arasındaki anahtar fark, dinamik kapsayıcı boyutlandırmaya göre düzeltildi. Makalede, bazı kapları sabit boyutlarda düzenler, sonra da metinleri bunlardan geçirirsiniz ve bu oldukça iyi çalışır. Ancak yapmak istediğim, metnin belirli değişken uzunluktaki bölümlerini karşılık gelen bağımsız, uygun boyuttaki kaplara sınırlamaktır. Yaklaşımınızı bu göreve uyarlama konusunda herhangi bir fikriniz var mı? Teşekkürler. Tabii ki – Dane

+0

doğru. cevabımı güncelledim. – TheDarkIn1978

+0

@ TheDarkInl1978 Güncelleme için teşekkürler. Bu, yukarıda yapmayı denediğim şeye benziyor, ancak görebildiğiniz gibi, metnin konteynırdan konteynere nasıl aktığına dair birçok tutarsızlığa rastladım. Bunu FlowElements eklemek yerine düz bir metin dizesi oluşturarak yapmam gerektiğini mi söylüyorsunuz? Ben deneyebilirsiniz bir şey önce konteyner boyutlarını kurmak için metin (metin gibi) her bölümü için bağımsız TextFlow oluşturma, sonra tüm kapsayıcılar tam TextFlow bağladığınız varsayalım. Verimsiz görünüyor ama belki de denemeye değer. – Dane

İlgili konular