Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как узнать ширину текста ДО добавления родительского елемента. (http://www.flasher.ru/forum/showthread.php?t=85646)

redbaron 27.09.2006 12:34

Как узнать ширину текста ДО добавления родительского елемента.
 
задача такая нарисовать цену с надстрочными копейками.
причем то на чем рисуем, еще не добавленно.

Код:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
                <![CDATA[
                        import mx.containers.Canvas;
                        import mx.controls.Text;
                   
                    private var fontsize:Number=24;
                    private var fontcolor:Number=0xFF0000;
                   
                        function drawIt(paper:String,coins:String){
                                       
                                       
                                        var _canvas:Canvas=new Canvas();
                                       
                                        var textChild:Text=new Text();
                                        textChild.text=paper;
                                    textChild.setStyle("fontSize",fontsize);
                                textChild.setStyle("color",fontcolor);
                               
                                textChild.validateNow();
                                var paperTextWidth:Number=textChild.textWidth;
                                tracelog("After text create - paperTextWidth="+paperTextWidth);
                               
                                _canvas.addChild(textChild);
                               
                                textChild.validateNow();
                                paperTextWidth=textChild.textWidth;
                                tracelog("After text add - paperTextWidth="+paperTextWidth);
                               
                                       
                               
                               
                                _canvas.validateNow();
                                paperTextWidth=textChild.textWidth;
                                tracelog("After validate canvas - paperTextWidth="+paperTextWidth);
                               
                               
                                var lm:TextLineMetrics=textChild.getLineMetrics(0);
                               
                                tracelog("After validate canvas - TextLineMetrics.width="+lm.width);
                               
                    // здесь нам бы уже надо знать paperTextWidth

                                if(""!=coins){
                                        var coinsChild:Text=new Text();
                                       
                                        coinsChild.x=textChild.x+paperTextWidth;
                                       
                                        coinsChild.text=coins;
                                        coinsChild.y=textChild.y +(textChild.height*0.4);
                                        coinsChild.setStyle("fontFamily",textChild.getStyle("fontFamily"));
                                        coinsChild.setStyle("color",textChild.getStyle("color"));
                                        coinsChild.setStyle("fontSize",textChild.getStyle("fontSize")*0.6);
                                        _canvas.addChild(coinsChild);
                                }
                                       
                                        _canvas.width=202;
                                        _canvas.height=323;
                                        _canvas.x=52;
                                        _canvas.y=74;
                                        addChild(_canvas);
                                       
                                        textChild.validateNow();
                                paperTextWidth=textChild.textWidth;
                                tracelog("After add canvas - paperTextWidth="+paperTextWidth);
                                       
                                       
                        }
                private function tracelog(s:String){
                    log.text+="\n"+s;
                }       
                       
                       
                ]]>
        </mx:Script>
       
        <mx:TextArea x="303" y="74" width="190" height="323" id="log"/>
        <mx:TextInput x="52" y="419" width="46" id="paper" text="737" />
        <mx:TextInput x="106" y="419" width="46" id="coins" text="99"/>
        <mx:Label x="97" y="418" text="." fontFamily="Arial" fontWeight="bold" fontSize="22"/>
        <mx:Button x="189" y="419" label="draw" click="drawIt(paper.text,coins.text)"/>
</mx:Application>

возможно так сделать нельзя.
тогда подскажите на какое событе повесить, чтоб рисовать После того как родитель текста добавоен в дисплей лист.


Часовой пояс GMT +4, время: 01:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.