Bitmap пропорции
Всем привет. Загружаю картинку
Код AS3:
Код AS3:
|
Может обернуть битмап в спрайт и изменять размеры спрайта?
|
Это происходит из-за не верного просчета трансформации. Вот у alatar'а в блоге статейка по трансформациям.
Ну или как сказали выше, обернуть в спрайт. Но только размеры менять у картинки, а вращать спрайт. |
Цитата:
|
Цитата:
|
Но ведь ширина/высота считаются относительно собственной координатной системы объекта. Был такой баг именно с Bitmap?
|
Да, был баг при обращении к свойствам width / height при вращении битмапа. Сам помню делал стрелку часов, которая должна была на четных часах увеличиваться в длине, а на нечетных уменьшаться. Так вот в этот момент я об этом баге и узнал. Стрелка стала непредсказуемо как-то меняться. Пришлось обернуть в спрайт
|
Спасибо всем
|
Надо зарепортить в Adobe, наверное.
|
Это не баг, это фича :D
|
Вот это вы прикиньте я все время думал, что w/h берутся относительно локальной системы координат объекта!
|
Так и есть,при поворотах w/h DO меняться не должны. Я так понял данный баг относится только к Bitmap.
Добавлено через 2 минуты Либо это как-то связано с тем фактом, что битмап не совсем обычный DO |
Спецом проверил :) DO туда же! Куда катится мир…
|
Цитата:
Цитата:
А там уже, кто чего себе придумал, извините... Добавлено через 3 минуты Вот как-то делал небольшой обзор. |
Цитата:
|
Оси могут поворачиваться независимо, как быть в этом случае? Что вообще считать поворотом?
В общем это добавило бы только проблем и разночтений. |
Вложений: 1
Никаких разночтений — воспринимать все как если бы DO был обернут в контейнер-прокси, над которым производятся все действия, кроме масштаба по осям.
Наоборот, именно сейчас происходит непоняток. Сам суди: Вложение 32082 Как мы видим, квадрат стал не ожидаемым ромбом, как если бы шириной считалась ширина описанного прямоугольника, а прямоугольником, как если бы шириной все же считалась именно ширина относительно повернутых осей, но при этом ширина эта теперь имеет значение, отличное от того, которое мы задали строкой выше, которое еще и фиг посчитаешь без дополнительных действий. И вот теперь скажи мне, это ли не путаница: 1. Задали ширину 200; 2. Получили фактическую ширину ~142 3. Геттер выдает 170.7 Ну т.е. мало того что не получили ромб шириной 200, так мы еще имеем прямоугольник, с шириной не 200 и габаритами не 200. Что тут понятного — пардон! P.S. Предупреждая попытку объяснить, откуда взялись эти числа, сообщаю, что их значения мне понятны — не так сложно проследить эту логику. Именно после этого я снова таки настаиваю, что она извращенная. |
Ну, как говорится, все абстракции рано или поздно "текут". Увы, это как раз тот случай, когда надо знать как это работает внутри.
|
Ну т.е. при выборе вариантов, которые так или иначе требуют "понимания", выбрали самый нелепый? Тю!
|
Не могу с тобой полностью согласиться.
Например, поверни одну из осей, как при этом должен визуально поменяться объект, если ему задать width? а если scale? Что при этом по-твоему должен возвращать width/height? |
Но ведь именно при текущем положении дел width = 200 и scaleX = 2.0 дают совершенно разный результат. И куда более логичным выглядит именно вариант со скейлом — когда ширина квадрата удвоится в сторону уже повернутой ранее оси X. Говоря иначе, матрицу следует складывать в привычной последовательности: scale, rotation, translate. А сейчас все наизнанку.
|
Тут играет роль порядок задания свойств. Если width задать до rotation, то результат будет аналогичный scaleX. Для того, чтобы реализовать такое поведение как ты хочешь, пришлось бы добавить валидацию свойств для DisplayObject (типа как во Flex и Feathers для компонентов).
Ммм... в принципе можно реализовать для Stage3D :) |
В общем, самый доступный вариант тут - действительно обернуть его в спрайт :D
|
caseyryanну да, так работает, можно обернуть его в спрайт, а потом в битмапу положить уже готовый вариант.
|
Часовой пояс GMT +4, время: 23:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.