将Classic Textfield动态转换为TFL Textfield?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Classic Textfield动态转换为TFL Textfield?相关的知识,希望对你有一定的参考价值。
我有一个项目,在时间轴上有大量带有嵌入式文本字段的FLA。我们现在需要将这个项目本地化为阿拉伯语,从右到左文本(从XML中提取) - 我的理解是这只能用于TLF文本字段。
将所有这些texfields手动转换为TLF将是一项艰巨的任务。有没有办法以编程方式将普通文本字段设置为TLF文本字段?
如果你很乐意为这个复杂的任务编写自己的JSFL脚本,我建议你获得一些浏览Flash DOM树的经验,并获取FriendsofEd的“扩展Flash MX 2004”的副本,或者至少看看它的JSFL参考预览PDF:http://www.friendsofed.com/books/1590593049/3049_Ref.pdf。虽然这已经过时,但概念,属性和方法并没有显着改变(如果有的话),除了一些较新的功能外,TLF文本字段就是其中之一!
通常可以在线上的Adobe Livedocs /帮助参考中找到更完整和更新的版本:
- CS3(PDF) http://livedocs.adobe.com/flash/9.0/main/flash_cs3_extending.pdf
- CS5(html)http://help.adobe.com/en_US/flash/cs/extend/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7ffa.html
根据您的具体需要,您必须扫描:
- 主时间表;
- 主时间轴的实例有时间轴(MovieClip,Buttons,Graphics);
- 图书馆符号的时间表;
- 图书馆符号的孩子们的时间表(虽然,这可能是多余的,因为你已经采用了上一步的方式;
要扫描当前文档的元素时间轴,首先最好存储当前时间轴的引用,如下所示:
var doc = fl.getDocumentDOM();
var tl = doc.getTimeline();
注意:请注意,这将获取当前显示的时间轴的参考(无论它是“在位编辑”模式中的符号,还是其他场景等。确保它在您运行的任何时候选择“主时间轴”脚本,我相信以下内容会抓住它:
var tl = doc.timelines[0]; //Grabs the Main Timeline
注意:如果我错了,请更正以上内容!
不完全知道您的项目是否在不同的关键帧中具有TextFields,或者它们是否位于单帧时间轴中,扫描时间轴的每个帧以验证是否存在任何TextField实例是有意义的。
但要做到这一点,重要的是要注意Instances或JSFL术语“Elements”不能直接从Timeline对象中检索。你必须深入挖掘才能到达那里!
基本上你必须遍历这条道路:
- 目前的
Timeline
; - 那
Timeline
的层次; - 每个
Layer
对象的帧; - 然后,每个
Frame
对象的元素; - 验证它是否是
TextField
实例;
一旦找到那些TextFields,就可以将它“转换”为TLF文本字段。转换,意思是......创建一个新的TLF文本字段,将经典TextField对象的所有可重用属性传递给它,将TLF文本字段放在经典TextField所在的相同索引(z深度)处,然后丢弃它。您可以选择设置阿拉伯字体支持所需的所有必需的嵌入和/或TLF属性。
如果不详细了解如何进行此转换过程,您可以看到仅仅扫描一个时间轴是一项艰巨的任务。并非不可能,只需几个步骤。
如果您仔细创建自己的JSFL函数来封装每个必要的步骤,以便可以在其他必要的扫描(其他时间轴,库符号等)中重复使用,那么您将大大降低此任务的复杂性!
希望能帮到你(即使它不是一个直接的解药,就像“这是答案,拿这个......”!)
不,没有。当然,您可以创建自己的类来检查每个帧,并在运行时删除和替换现有的TextFields(循环显示列表并使用if (timeline.getChildAt(i) is TextField)
选择这些应该可以工作,尽管它可能不会提高性能)。但我建议你不要。当您不必处理大量现有内容时,切换到下一个项目的TLF文本。
虽然使用阿拉伯字体可能是一个真正的麻烦 - 不仅字符的顺序必须颠倒,还有连字(两个或多个相邻字符的各种组合“合并”以形成更复杂的符号);几乎没有办法完全正确,即使你没有使用TLF文本 - 如果你没有使用输入TextFields,Flaraby可能会帮助你根据你现有的经典文本创建一个不错的版本。但是要做好准备 - 你可能不得不忍受一些权衡。
以上是关于将Classic Textfield动态转换为TFL Textfield?的主要内容,如果未能解决你的问题,请参考以下文章
将 tf.data.Dataset 转换为 jax.numpy 迭代器