Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   UIComponent и его свойства width и height (http://www.flasher.ru/forum/showthread.php?t=143808)

Bratus 26.08.2010 12:16

UIComponent и его свойства width и height
 
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                                        xmlns:s="library://ns.adobe.com/flex/spark"
                                        xmlns:mx="library://ns.adobe.com/flex/mx"
                                        initialize="AppInit(event);">
        <fx:Script>
                <![CDATA[
                        import mx.core.UIComponent;
                        import mx.events.FlexEvent;
 
                        private var t1 :UIComponent = new UIComponent();
 
                        private function OnMouseDown( event :MouseEvent):void{
                                var UIC :UIComponent = UIComponent(event.target);
                                trace("x = "+UIC.x ); //x = 50
                                trace("y = "+UIC.y ); //y = 50
                                trace("width = "+UIC.width ); //width = 0
                                trace("height = "+UIC.height ); //height = 0
                        }
 
                        private function AppInit( event :FlexEvent ):void{
                                t1.graphics.lineStyle( 1, 0x000000 );
                                t1.graphics.beginFill( 0xee0000 );
                                t1.graphics.drawRect( 0, 0, 50, 50 );
                                t1.graphics.endFill();
                                t1.x = 50;
                                t1.y = 50;
                                t1.addEventListener( MouseEvent.MOUSE_DOWN, OnMouseDown );
                                addElement( t1 );
                        }
                ]]>
        </fx:Script>
</s:Application>

Почему ширина и высота = 0 ?
Код AS3:

trace("width = "+UIC.width ); //width = 0
trace("height = "+UIC.height ); //height = 0

Как нибудь можно сделать так, чтобы у рисованных объектов ( Sprite, SpriteVisualElement, GraphicElement, и т.д.) была высота и ширина ?

alatar 26.08.2010 15:38

А что вы ожидали увидеть у только что созданного, пустого UICmponent? При чем здесь Sprite, SpriteVisualElement, GraphicElement, и т.д. В чем собственно вопрос?

Bratus 26.08.2010 17:26

Цитата:

Сообщение от alatar (Сообщение 931547)
А что вы ожидали увидеть у только что созданного, пустого UICmponent? При чем здесь Sprite, SpriteVisualElement, GraphicElement, и т.д. В чем собственно вопрос?

Как же пустой ?!
А эта строка кода для чего стоит?
Код AS3:

t1.graphics.drawRect( 0, 0, 50, 50 );

Поясню немного код:
1) когда приходит событие initialize у Application - рисуется квадрат на t1 ( это UIComponent ) и добавляется в приложение:
t1.addEventListener( MouseEvent.MOUSE_DOWN, OnMouseDown );
addElement( t1 )
2) в обработчике события OnMouseDown я просто делаю trace x,y, width, height нарисованного квадрата. НО ЕГО ШИРИНА И ВЫСОТА = 0

Именно в этом и состоит вопрос: почему они нулевые ?

alatar 26.08.2010 18:38

Действительно, не заметил.
Цитата:

Именно в этом и состоит вопрос: почему они нулевые ?
width и height у UIComponent далеко не тоже самое, что у Sprite. Как вариант задайте их явно.
Либо наследуйтесь, и используя неймспейс mx_internal следите за $width, $heigth.
graphics при подсчете width и height не учитывается.

Bratus 26.08.2010 22:03

Цитата:

Сообщение от alatar (Сообщение 931599)
Либо наследуйтесь, и используя неймспейс mx_internal следите за $width, $heigth.

Можно поподробнеё про namespace mx_internal. Что это за пространство имен такое и как его пользовать?
И что за свойства с долларом ($width, $heigth, $x, $y, и т.д.) ?
Кстати, когда приложение запускаю на дебаг, то $width = 50 и $heigth = 50. НЕ НУЛЕВЫЕ! Что мне и надо!
Но как их использовать не знаю... (компилятор выдает ошибку).

alatar 27.08.2010 00:02

mx_internal внутренний неймспейс флекса (адоби используют его для прикрытия сомнительных мест), используется как и любой другой неймспейс.
Код AS3:

use namespace mx_internal;

Свойства с долларом нужны для задания оригинальных свойств Sprite (т.к. они переписаны).

Bratus 27.08.2010 10:08

Хорошо, понял.
Сейчас попробую ...


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

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