Рендеринг текста в Flex в графике - PullRequest
0 голосов
/ 22 декабря 2010

Я новичок в Flex (и Flash) и сейчас просто играю. Я использовал методы рисования на холсте, чтобы закрасить его синим цветом, и хотел нарисовать текст, однако где-то в коде произошла ошибка.

<?xml version="1.0" ?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" paddingLeft="0" paddingRight="0" paddingTop="0" paddingBottom="0" enterFrame="enterFrame(event)" applicationComplete="addtext(event)">
    <mx:VBox width="640" height="480">
        <mx:Label id="debug" text="No debug yet." />
        <mx:Button id="myButton" label="Hello World" />
        <mx:Button id="myOtherButton" label="Foo Bar Baz" />
        <mx:Canvas id="myCanvas" width="100%" height="100%" />
    </mx:VBox>
    <mx:Script>
    <![CDATA[
    import flash.text.engine.*;
    import mx.controls.*;

    public function addtext(event:Event):void
    {
        Alert.show("foo!");
        var str:String = "Hello World.";
        var format:ElementFormat = new ElementFormat();
        var textElement:TextElement = new TextElement(str, format);
        var textBlock:TextBlock = new TextBlock();
        textBlock.content = textElement;
        var textLine:TextLine = textBlock.createTextLine(null, 300);
        textLine.x = 30;
        textLine.y = 200;
        Alert.show("baz!");
        this.addChild(textLine); // Execution appears to cease here.
        Alert.show("bar!");
    }

    public function enterFrame(event:Event):void
    {
        myCanvas.graphics.clear();
        myCanvas.graphics.beginFill(0x66666FF);
        myCanvas.graphics.drawRect(0, 0, myCanvas.width, myCanvas.height);
        myCanvas.graphics.endFill();
    }
    ]]>
    </mx:Script>
</mx:Application>

Оповещения попадают в "Баз!" но не "бар!", поэтому ошибка где-то там. Кроме того, я запускал это в Firefox и fdb, но fdb ничего не выводит - это просто запуск Flash Player. Отправная точка для отладки Flash

1 Ответ

1 голос
/ 22 декабря 2010

ИМХО, это несколько нечеткое смешение между flash и flex. Во-первых: я бы сказал, что если вы хотите, чтобы ваш холст был синим, вы должны использовать:

<mx:canvas backgroundColor="0x66666FF" width="100%" height="100%" />

Во-вторых, структура текстового макета (обычно TLF) - это тема, которую я бы рекомендовал вам пропустить, пока вы не познакомитесь с flex и flash.

Возникла ошибка, связанная с тем, что TextLine не реализует IUIComponent и поэтому не может быть добавлен в контейнер Flex.

Если вы хотите использовать TLF, вам нужно добавить компонент spark, способный его обрабатывать, в ваше приложение, напр. s: RichText или s: TextArea

Удачного кодирования !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...