Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.03.2010, 10:46
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 1  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
По умолчанию куда откроется dropdown от combobox

привет всем.

делаю кастомный combobox. споткнулся о проблему направления dropdown, когда он откроется.
ситуация усложняется тем, что "y" для dropdown он начала экрана, а у combobox - от родительского элемента.

подскажите, если кто знает, как определить, выше dropdown от combobox-а или ниже?
заранее спасибо. во

Старый 24.03.2010, 13:53
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 2  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Для преобразования координат из локальных в глобальные и наоборот есть методы у DisplayObject-a:
localToGlobal
globalToLocal
__________________
2+2=5

Старый 25.03.2010, 14:04
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 3  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
ну мало-ли... еще кто-то мучается.

Код AS3:
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml"
             open="comboOpenHandler(event)"
             rowCount="12" 
             closeDuration="0" openDuration="0">
 
    <mx:Script>
        <![CDATA[
            private function comboOpenHandler(e:Event):void{
                var c:ComboBox=e.currentTarget as ComboBox;
//определяем глобально, где стоит поле
                var yC:Number = c.localToGlobal(new Point(c.x,c.y)).y;
 
//тупо прикидываем, откроется он вниз или вверх. 1100 - мой размер экрана 1024.
                var downOpen:Boolean = (yC + c.height + c.dropdown.height)< 1100;
 
                if (downOpen) {
//сдвигаем по вертикали
                    c.dropdown.y =c.dropdown.y - c.height - 1;
                    if (c.dataProvider.length > 4) c.dropdown.y -= (c.height*2); 
                } else {
                    c.dropdown.y =c.dropdown.y + (c.height*2) + 1;
                    if (c.dataProvider.length > 4) c.dropdown.y += c.height;
                }
 
//сдвигаем по горизонтали и увеличиваем для накрывания всего поля
                c.dropdown.width = c.width+2;
                c.dropdown.x = c.dropdown.x-1;
                if (c.dataProvider.length < 2)
                    c.dropdown.height = c.height + 2; 
            }
        ]]>
    </mx:Script>	
 
</mx:ComboBox>
во

Старый 29.03.2010, 16:17
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 4  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
последнее примечание: localToGlobal врет.
почему и в каких случаях, пока не понял. но у меня из десятка скринов, на одном вместо 450, возвращает 860. во :-(

Старый 29.03.2010, 16:44
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 5  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Вы его просто не правильно едите.
Возможно вы рассчитываете координаты для компонента который находится не глобально, а ложится на какой-то контейнер у которого уже своя система и тогда надо делать обратное преобразование globalToLocal.
__________________
2+2=5

Старый 29.03.2010, 17:02
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 6  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
гм... можно развить мысль, пожалуйста?
понятно про что, не понятно как решить "раз и на всегда".
заранее спасибо. во

Старый 30.03.2010, 09:10
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 7  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Ну а куда тут её ещё развивать:
localToGlobal - преобразует заданные координаты x и y из значений относительно исходной точки (0, 0) конкретного объекта (локальных координат) в значения относительно исходной точки рабочей области (глобальные координаты).
GlobalToLocal - наоборот.
Есть у вас там допустим канвас, и его локальная точка (0, 0) в глобальных координатах (т.е. всего приложения) уже другая и будет допустим (10, 10), т.к. Ваш канвас на основной аппликухе лежит по таким координатам. Т.е. если Вам надо взять координаты с одного DisplayObject-а и потом по этим же координатам сделать что-то на другом DisplayObject-е. Вам надо методом первого DO найти гломальные координаты этой точки и потом методом второго DO уже преобразовать эти глобальные координаты в в локальные для второго DO.
__________________
2+2=5

Старый 30.03.2010, 17:56
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 8  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
гм... угу. т.е. перебрать всю иерархию встроенных обьектов. была надежда, что localToGlobal мне сразу покажет обьекты глобально, вне зависимости от уровня "залегания". или я опять что-то не так понял? ну вот работает везде, как я ожидал, а в одном месте - нет. может все же localToGlobal сразу возвращает глобальные координаты вне зависимости от глубины вопрошающего?.. :-( во

Старый 30.03.2010, 18:09
Кип вне форума Посмотреть профиль Отправить личное сообщение для Кип Найти все сообщения от Кип
  № 9  
Ответить с цитированием
Кип
 
Аватар для Кип

Регистрация: Oct 2009
Сообщений: 34
Отправить сообщение для Кип с помощью ICQ
Цитата:
Сообщение от bastrakov Посмотреть сообщение
была надежда, что localToGlobal мне сразу покажет обьекты глобально, вне зависимости от уровня "залегания". или я опять что-то не так понял?

может все же localToGlobal сразу возвращает глобальные координаты вне зависимости от глубины вопрошающего?.. :-( во
Ну так ведь так и есть...

Старый 07.04.2010, 15:03
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 10  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
выше писал, что столкнулся со случаем, когда "так и нет".
причину не понял. :-( во

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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