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

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

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

Регистрация: Apr 2013
Сообщений: 8
По умолчанию Как отмасшабировать выпадающий список ComboBox ?

Помещаю ComboBox в Sprite, затем изменяю размеры спрайта, в который помещён комбобокс, и получается вот такая беда:

см. изображение в прикреплении

Может кто сталкивался с таким?
Изображения
 

Старый 03.06.2013, 11:02
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 2  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Нужно просто найти элемент меню(dropdown) и отмасштабировать либо его, либо вложенные элементы, как описано ниже.
http://www.kirupa.com/forum/showthre...opmenu-scaling:
Код AS3:
var combobox:ComboBox = _box;
combobox.dropdown.getChildAt(2).scaleY = combobox.dropdown.getChildAt(2).scaleX = this.scaleY;
 
this.addEventListener(Event.ENTER_FRAME, enterframe);
function enterframe(pEvent:Event):void{
combobox.dropdown.y = this.y + ((combobox.y + combobox.height) * this.scaleY);
Для позиционирования не обязательно использовать ENTER_FRAME, у ComboBox вроде есть событие открытия. Если все же нету - можно добавить слушатель события клика, он будет обработан после раскрытия.

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

Регистрация: Apr 2013
Сообщений: 8
мне изачально пришла в голову такая же мысль

но на практике оказалось, что количество вложенных спрайтов гораздо больше чем один, поэтому масштабируется далеко не тот в который я поместил комбобокс, а искать тот спрайт, который масштабируется, крайне утомительное занятие (да и бесполезное)

как мне видится наиболее приближённым решением что-то между этим:
Код AS3:
this.list.y = this.localToGlobal(new Point(this.x, this.y) ).y - (this.height + this.startHeight)
и в от этим:
Код AS3:
this.list.y = this.localToGlobal(new Point(this.x, this.y) ).y - (this.startHeight);
в примерах этого кода this - это это ссылка на класс, расширяющий класс ComboBox

печально конечно что это не окончальное решение. Вобщем нехватает какого-то коэффициента, на который нужно умножить или разделить

Старый 03.06.2013, 14:20
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
А если компонент не масштабировать? Я точно не помню, к тому же речь о компоненте AS3, но разве у него нет нативного метода, изменяющего видимый размер?
__________________
Идите первым!

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А не так ли?
Код AS3:
this.list.y = this.localToGlobal(new Point(this.x, this.y + this.startHeight)).y;
__________________
Reality.getBounds(this);

Старый 03.06.2013, 15:35
wolfenstein вне форума Посмотреть профиль Отправить личное сообщение для wolfenstein Найти все сообщения от wolfenstein
  № 6  
Ответить с цитированием
wolfenstein
 
Аватар для wolfenstein

Регистрация: Apr 2013
Сообщений: 8
Цитата:
Сообщение от Wolsh Посмотреть сообщение
А не так ли?
Код AS3:
this.list.y = this.localToGlobal(new Point(this.x, this.y + this.startHeight)).y;
да, почти точно, спасибо

только там не прибавлять, а вычитать, тогда позиция выпадающего списка в самый аккурат получается:
Код AS3:
this.list.y = this.localToGlobal(new Point(this.x, this.y - this.startHeight)).y;

осталось решить как поправить ширину и высоту выпадающего списка при масштабировании
Изображения
   

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну Вы могли сразу посчитать коэфициент масштабирования, запросив глобальные координаты точек this.x и this.x + this.width и узнав таким образом "новую" ширину, поделить ее на this.width — вот и скейл.
__________________
Reality.getBounds(this);

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

Регистрация: Apr 2013
Сообщений: 8
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ну Вы могли сразу посчитать коэфициент масштабирования, запросив глобальные координаты точек this.x и this.x + this.width и узнав таким образом "новую" ширину, поделить ее на this.width — вот и скейл.
Спасибо : )

Получилось то что нужно:
Код AS3:
var poinSize:Point = this.localToGlobal(new Point(this.x + this.width, this.y + this.height));
this.list.scaleX = (poinSize.x - this.list.x) / this.width;
this.list.scaleY = (poinSize.y - this.list.y) / this.height;

Старый 08.04.2016, 10:03
a.konigin вне форума Посмотреть профиль Отправить личное сообщение для a.konigin Найти все сообщения от a.konigin
  № 9  
Ответить с цитированием
a.konigin
 
Аватар для a.konigin

Регистрация: Mar 2015
Адрес: Ставрополь
Сообщений: 10
Простите за поднятие древней темы, однако столкнулся с такой же проблемой масштабирования. Увеличиваю спрайт на котором ComboBox, при этом видимая часть ComboBox'a увеличивается пропорционально скейлу спрайта, а выпадающий список остается такого же размера, как и до скейла. Не пойму что-то, как тс использовал код из предыдущего поста.
Вложения
Тип файла: rar ComboBox.rar (581.6 Кб, 123 просмотров)

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

Регистрация: Oct 2006
Сообщений: 2,282
вроде у всех компонентов есть родной метод setSize, который точно знает как надо компонент тянуть

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

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

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


 


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


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