|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Ресайз группы объектов без матриц
Доброго времени суток.
Делаю свой free transform и пытаюсь менять размеры одновременно целой группе элементов. Это было бы сравнительно просто осуществить с помощью матриц / scaleX/Y. Но к сожалению, при scale текстовых полей, в них деформируется текст, чего не должно происходить в моём приложении. То есть мне нужно использовать только ширину и высоту контейнера и детей. Контейнер у меня лишь условность - он не сожержит детей, а просто прямоугольник который размечает границы группы. Попытался на рисунке изобразить что мне нужно. Известны dx, dy, ширина и координаты контейнера и каждого элемента (в том числе и bounding box повёрнутых элементов) до ресайза. Нужно узнать height' и width' (как изменились ширина и высота элемента после ресайза), и dx', dy' (на сколько переместился элемент в группе). Пока ничего не получается, а именно совместить перемещение с изменением ширины/высоты элемента, либо слишком перемещаю и элемент вылазит за границы, либо недорастягиваю/сжимаю, и он опять же вылазит за пределы группы. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
а при изменении width, scaleX и transform разве не меняются?
|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Да, вы правы, что-то я запутался.
Значит осталось узнать на сколько перемещается элемент при ресайзе группы. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Да, я попробовал способ описанный в первой ссылке, но всё-таки при scale происходит и изменение размера текста в текст поле, а при изменении ширины/высоты - нет. Видимо это потому что при scale также происходит изменение размеров всех детей элемента.
Класс во второй ссылке платный, и там нельзя ресайзить группу элементов в которой содержится текстовое поле, только перемещать, видимо товарищ столкнулся с той же проблемой. Так что вопрос остаётся открытым |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Не понял что вы хотите этим сказать.
Я использую spark:TextArea. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
"При изменении свойств width или height экранного объекта Flash Player и AIR обновляют также свойства scaleX и scaleY объекта.
Примечание. Объекты TextField являются исключением из этого поведения при масштабировании." у TextField свое поведение. если нужно чтобы TextField вел себя как прочие дисплэйные объекты, его нужно поместить в контэйнер. у гринсокса в примере два текста. первое - инпутТекстФилд, которое нельзя ресайзить в группе. но есть и второе. которое в контэйнере с графикой (человечек). |
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
На странице того примера гринсока вот что написано
Цитата:
А группы которые содержат текстовые поля - он тупо не даёт их растягивать, а мне это нужно сделать. То что я оберну поле спрайтом, не даст тексту искажаться при scale? Просто они у меня уже находятся внутри контейнера, и я всё равно наблюдаю искажение текста. А тот текст рядом с человечком, я думаю это графика а не текст поле. Да и вообще, какая разница - width/height или scaleX/scaleY, в данном случае, в группе есть один объект под углом в ~30 градусов, другой - 0 градусов, при ресайзе scaleX и scaleY для каждого будут разными, как их вычислить? Последний раз редактировалось AlexLucas; 17.12.2012 в 20:31. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
сразу применять к каждому объекту в группе свои значение, как если бы мы трансформировали только его. только центр трансформации брать от группы.
|
Часовой пояс GMT +4, время: 19:00. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|