Использование классов Starling и CitrusEngine с AIR
Я создаю приложение AIR с AS3, Citrus Engine и Starling. Вот две разные концепции создания TextField:
/*
Using native AS3 component.
import flash.text.TextField;
*/
var meaningTitle = new TextField();
meaningTitle.text = 'Meaning';
addChild(meaningTitle);
/*
Using Starling framework.
import starling.text.TextField;
*/
var meaningTitle = new TextField(0, 0, 'Meaning');
addChild(meaningTitle);
Используя Starling Framework, я не могу добиться форматирования текста и других интересных функций AS3 TextField. Если я создаю TextField с собственным компонентом AS3 и затем добавляю его в сцену, я получаю эту ошибку:
Type Coercion failed: cannot convert flash.text::TextField@37aada9 to starling.display.DisplayObject.
Я нашел одно решение, оно говорит, что я должен использовать это:
... as DisplayObject
Но это решение также не работает. Пожалуйста, помогите мне. Все, что я хочу, это форматирование TextField.
1 ответ
Starling или любая основанная на Stage3D инфраструктура несовместимы с классическим Flash DisplayObject. Вот почему addChild() завершается сбоем, а DisplayObject тоже не работает, поскольку они не относятся к одному и тому же типу Object. Скворец делает это хуже для новичка, давая точно такие же имена классов для соответствующего объекта. Итак, во-первых, не расстраивайтесь, десятки новичков попали в одноименную ловушку раньше, когда использовали Starling.
Теперь к вашей проблеме, используйте классический TextField, отформатируйте его так, как вы хотите, затем нарисуйте его в BitmapData и передайте его в Starling в Starling Image (используя Texture.fromBitmapData()). StarField TextField существует только для удобства, так как он предназначен только для самых простых целей.
Более продвинутый TextField может быть найден с фреймворком Feather (своего рода фреймворк на основе Starling).
Наконец, небольшой совет, так как вы новичок, не используйте Citrus, вы, вероятно, делаете это, потому что думаете, что это делают все, но это было бы ошибкой. Citrus - это очень слабый типизированный фреймворк, который часто затрудняет начинающим делать что-либо. Многие профессионалы также не могут работать с ним, потому что он в основном слабый типизированный везде. Это очень переоцененная структура.