![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте
Подскажите, пожалуйста, как реализовать изменение высоты и ширины изображения, путем передвижения маркера. Изображение подгружено в спрайт. Спасибо
__________________
http://zenpro.blogspot.com/ |
|
|||||
|
ветеран форума
|
Есть изначальные координаты маркера, меняя его положение меняются его координаты. Исходя из этих данных несложно вычислить и изменить новые размеры изображения.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
если я правильно понял задачу..
например, для случая если маркер находится в нижнем правом углу изображения это при условии, что img имеет нулевую координату в своем левом верхнем углу и img и marker находятся в одном координатном пространстве, если нет, то пересчитывать локальные координаты в глобальные.. |
|
|||||
|
В AS2 я делала с помощью onEnterFrame, запускала эту ф-цию в момент перетаскивания, какой аналог или как сделать это на AS3?
__________________
http://zenpro.blogspot.com/ |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Event.ENTER_FRAME напрашивается... можно по MouseEvent.MOUSE_MOVE
|
|
|||||
|
А как сделать, чтоб маркер который мы передвигаем, двигался только по прямой. Получается по диагонали картинки
__________________
http://zenpro.blogspot.com/ |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Ну так проверяйте каждый раз, не выходит ли маркер за допустимые координаты. Или startDrag вам в помощь с заданием ограничений (подробнее в хелпе все расписано, но это только для ортогональных системы координат, соответственно, можете двигать маркер в своем прямоугольнике заданном). Если надо только по диагонали и никак иначе - пишите сами. Обычно при этом надо контролировать одно направление (например, большее - запоминаете предыдущее значение и сравниваете по x и y, маркер ушел дальше), по нему высчитывать scale по одной оси и делать такой же по другой.
Update: подумал, что большее значение и не к чему, просто смотрите, куда у вас идет маркер по оси X, а дальше двигайте его по Y исходя из соотношения сторон картинки. Но будьте готовы к тому, что в этом случае часто будет курсор уходить с маркера, в зависимости от движений мыши... Последний раз редактировалось Hidest; 21.07.2010 в 01:49. |
|
|||||
|
Вот мне сложно вычислить. Туго с геометрией в программировании. Может есть примерчик?
__________________
http://zenpro.blogspot.com/ |
|
|||||
|
ветеран форума
|
Тут нет геометрии по сути. Простые арифметические действия. Есть координаты и размеры картинки. В момент опускания мыши на маркер запоминаете координаты курсора, подписываетесь событие движения мыши. Дальше двигая мышь, изменяются координаты курсора. Вычитая из текущих координат курсора сохраненные (в момент когда нажали кнопку мыши) узнаем величину на которую нужно изменить размер изображение по той или иной оси (ширину или высоту).
Меняем на эту величину размеры изображения (прибавляя то что вышло в разнице координат) и смещаем на маркер на новую позицию, ведь новые размеры опять известны и пристыковать маркер на свое место тоже не проблема. Примерчик: Была картинка 50х50 пикселей в координатах x=10 и y=10, взялись за нижний центральный маркер (т.е. нажали кнопку мыши), запомнили координаты мыши (это примерно x=35 и y=60) и отодвинули мышь вниз на координты x=40 (это мы не учитываем, т.к. нас только высота интересует) и y=75. Теперь считаем 75-60=15, значит высоту картинки нужно изменить на 15 пикселей (yourImage.height +=15) и смещаем маркер на координаты x=35 и y=75. Повторяем эти операции пока не отпустим кнопку мыши.
__________________
trace("Остановите Землю, я сойду!!!"); |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|