![]() |
Скажите, как сделать кнопку, которая бы увеличивала рисунок?
Привет всем.
Сфоткал в Гугл Ерс часть города. Налепил много фоток в одну. Вышла одна большааааая картинка. Можно ли сделать такую кнопку, чтоб нажимая на нее, эта большая картинка увеличивалась (до невозможности :rolleyes:)? То есть приближалось изображение Ну и чтоб рядом кнопочка была чтоб быстрее увеличивала Ну а рядом еще чтоб уменьшала:mosking: Какой код надо на кнопку повесить. Спасибо. |
Код увелечения и уменьшения изображения.
/me недоумевает по поводу таких вопросов. Чтобы картинка не вылазила далеко далеко - добавляем туда маску. Как пример: Код:
bigger.onPress=function():Void{ |
Спасибо
Значит так. Методом втыка(поскольку я самоучка-начинающий) я сделал так: фотку перевел в мувиклип и в поле инстенс нейм я назвал его pic далее сделал новый символ- кнопку и назвал ее bigger Поместил кнопку и мувик на один слой и повесил на слой тот код, который Вы, Psycho Tiger, мне дали. Работает Тоже методом втыка только что подставил в код вместо * знак / и теперь рисунок может также уменьшаться :drinks: Но возикли следующие вопросы Рисунок увеличивается в то место, где зарегестрирован, когда я его переводил в мувиклип(т.е. в свой верхний левый край, или центр, смотря как выставить регистрацию) А надо чтоб он увеличивался в то место, которое сейчас находится в центре екрана ( ну как в любой електронной карте) Можно ли во флеше так сделать? И второе: когда нажимаю Сtrl+Enter получается конечный результат в файле Флеш муви. Так вот нужно, чтоб в этом файле можна мышкой брать за увеличенное изображений и перетаскивать влево-вправо-вверх-вниз А такое возможно? |
А вообще смотрим сюда:Zoom
|
Докладываю.Те, задания, которые я на сегодня себе поставил выполнил.
Спасибо Psycho Tiger, спасибо scarbo. Вот результат ваших стараний. Рисунок назвал в инстенс нейм: pic cоздал 4 кнопки с именами bigger, smaller, lefter, righter И на сцену повесил такой код Код:
bigger.onPress=function():Void{осталось три вопроса Два, как я думаю, легких, и один более сложный для исполнения Но это уже на завтра :victory: |
Еще неплохо бы добавить проверку на выход карты за края маски, т.е чтоб пользователь не утащил карту за рабочее поле полностью. :)
|
И сделать увеличение/уменьшение плавным - щадим глазки пользователя и его нежную психику.
|
плавным скейл растра сделать не так просто ))) особенно когда картинка "большааааая" )
|
Здесь качество не требуется, речь идет о секунде. Просто резко увеличившийся рисунок сбивает глаз, точки "привязки" теряются и необходимо опять искать глазами город или что там на карте - расположение вражеских эльфов) Битье пикселей здесь без разницы - посмотри любой мпег))))
|
тогда не "плавным", а "последовательным" )))
|
Начался новый день.
Ставлю перед собой новые задачи. Перед тем, как научится плавно или последовательно увеличивать изображение, надо бы мне сначала научиться увеличивать в нужном направлении. Картинки вместе склеены и общая картинка переведена в мувиклип. При этом точка регистрации мувика у меня, скажем в центре. Если мне надо рассмотреть что-то в левом краю карты и я там увеличиваю, то с каждым следующим нажатием кнопки, картинка лошадиными скачками смещается к центру карты (вправо) Как можно увеличивать в центр того, что ты сейчас видишь? |
У меня есть 3 предположения
1. Может надо карту делать как картинку а не мувиклип, тогда у картинки не будет точки регистарции. Но я не знаю лексикона - т.е. какие коды надо вписывать вместо онПресс, онРелиз,... чтоб воздействовать на рисунок 2 Может надо как-то отредактировать мувиклип(общую карту) чтоб уничтожить точку регистрации 3 Может есть какой-то код, чтоб увеличение происходило не в сторону этой "нехорошой" точки регистрации мувиклипа |
1. Картинки не управляются скриптом
2. Точку регистрации, к счастью, уничтожить невозможно. Благодаря ей Вы можете управлять координатами своей карты. 3. А вот это именно так. Необходимо не только увеличивать карту, но и смещать ее в нужное место. |
Привет всем.
Берусь опять за работу. Перед тем как научиться плавно( последовательно) увеличивать карту , надо бы мне научиться увеличивать в центр того фрагмента карты, который я сейчас вижу, а не в центр всей карты, где у меня выставлена точка регистрации. Может можна програмно как-то увеличивать карту в виде битмап, а не в виде мувиклипа? В битмапе нет точки регистрации. Есть шанс, что будет увеличиватся правильно. Но какие коды надо использовать? (вместо онПрес, онРелиз...) А может в мой код надо какую-то писюльку вставить, чтоб оно игнорировало точку регистрации? А может этот мувиклип состоящий с карты можна так отредактировать, чтоб уничтожить эту точку регистрации? Кто знает? |
Извеняюсь Wolsh. Браузер подглючил и я неувидел последнего(Вашего) ответа.
Цитата:
До сих пор методом исключения и интуиции я брал какой-то большой код и удалял с него по строчке, но так, чтоб интересующий меня елемент кода работал. Так у меня получались кнопочки, всякие примитивы. Но смещать карту в нужное место - это для меня высшый пилотаж. Это для взрослых! Это круто! Да! Но... :wacko: |
Вложений: 1
Ну давайте помозгуем)) Итак, на рисунке зеленый прямоугольник - Ваша карта, клип. Его координаты - точка А(х, у). После клика в точку В(х0, у0) карта увеличилась до серого прямоугольника, его координаты остались те же, но наша точка В уехала вообще из поля видимости :o
Чтобы вернуть беглянку на место, нам надо сместить серый клип в точку А2(х2, у2). Вот эти х2 и у2 нам и надо узнать. Сложно? Давайте попробуем. Допустим, мы увеличивали при клике в scaler раз. Значит отрезок х_х0 тоже увеличился в scaler раз, и стал отрезком х2_х0. Мы можем узнать его длину: (x0-x)*scaler (x0 это _xmouse в момент клика, а х - координата клипа в момент клика). Ну чтож, теперь осталось только вычесть эту длину из х-координаты точки клика: x2 = x0 - (x0-x)*scaler Вроде несложно.... Для у сами сделаете? :boredom: |
проще говоря, то же что описал wolsh, только простыми словами ) ( чесно я сам с раза 4 понял )
возьмите _width уже расширенного ( или посчитайте какой он будет ) отнимите от него, _width тот что был изначально, получите delta _x, вот эту дельта отнимите от _x и переместите на получившейся _x свой MovieClip, тоже самое с _y, только отнимаете из _height конечного, _height начальный, получаете delta _y ) |
Ничего подобного. В Вашей интерпретации напрочь отсутствует точка, в которую кликнули. А именно ее я и пытаюсь привести на место.
|
эм, помоему задача была равномерно увеличить обьект, как бы вытащить его из далека
хм, если нужно чтобы в точку которую кликнули перемещался мувик и плавно увеличивался, как бы из середины, то собственно к описанному мной способу, нужно просто добавить смещение мувика, в место клика и варавнивание его относительно центра клика %) |
darksranger, Вы чем читаете? Я говорю не о центрирующем в любом смысле коде, а о сохранении положения точки, в которую кликнули. Допустим что в мувике текст. Кликнув на букву А, я хочу чтобы мувик увеличился, но так, чтобы под мышкой)))) у меня осталась та самая буква А - я вроде как ее хотел увеличить, правда? Вот так он и должен "вытаскиваться издалека", а если заинтересовавшая меня область будет постоянно куда-то убегать, с чем-то там центрируясь, я уйду к тем, кто умеет делать интерфейсы.
Если же предлагается использовать для увеличения кнопки +-, подразумевается что "точка клика" - центр видимой области. Само собой, формулы остаются те же, можно только при желании ввести константы, т.к. точка клика постоянна и заранее известна. |
ааа все понял, я просто подумал, что нужно увеличивать весь мувик, а не область клика ...
( читаю как всегда :) самым не адэкватным местом %) |
Вложений: 1
Wolsh, обьяснили очень доходчиво и последовательно.
Вы наверное в душе учитель. Принцип понял сразу. Моих познаний в области АS наверное не хватает .Не могу обьяснить компьютеру что мне от него надо. Не понимает он меня. Решил закинуть эту дурацкую затею чтоб вас всех не выводить с себя подобными вопросами. Немножко не понял зачем нам координаты x_mouse и y_mouse, так как я мышкой передвигаю карту на нужный фрагмент и увеличиваю специально созданной кнопкой биггер - в момент увеличения мышка все равно находится над кнопкой биггер. ... Если все же вы вошли в азарт и комуто с читающих/обсуждающих все же интересно довести дело до конца, то еще раз даю тот полный код, который у меня есть на данный момент Код:
bigger.onPress=function():Void{ |
Вложений: 1
Ну вот к примеру, черновой вариант, реагирует на колесо мыши,щас поем и доделаю,а пока это гляньте:
|
Проблема та же на этом черновом варианте. Увеличение делается в левый верхний угол.
Может я не плохо формулирую суть проблемы? Скажем, чтоб максимально приблизить домик, который на этом вашем рисунке, мне надо трижды перетаскивать мышкой в центр екрана. Потому что он при увеличении выходит за поле зрения |
так яж сказал,что до делаю.Подождите,я только с работы пришел
|
Понимаю, каждый занят. И на этом ОГРОМНОЕ спасибо.
Может кто-то еще знает какую-нибудь книжечку скачать, или сайтец, в котором я бы смог разобраться как правильно увеличивать( суть моей проблемы) |
Вложений: 1
Ладно, не ворчите) Вот исходник. Просто была надежда, что справитесь сами. А свой опыт в сотни раз важнее исходников.
Впрочем, я не стал комментировать код. Может, возникнет желание поразбираться, полазить по хелпу. Ну а нет - чтож, спрашивайте. |
Даааа
это уж красота Подозреваю, что для Вас это задачка на 10-20 минут, но пред Вами голову склоняю... Импрессив. Честно говоря, я думал, что в инете не возможно найти людей настолько терпеливых к моим вопросам( хотя в жизни я совсем не настойчивый) и настолько дружелюбных Поразила ваша щедрость. Это именно то, что мне нужно было. Немножко стыдно за себя, что не сумел сам это сделать. Но и образования компьютерного( а тем более програмирования) у меня нет. Это только мечта... Обязуюсь: - Разобраться что-по чем в вашем примере - Если доделаю свою карту - обязательно там напишу почетное слово о Ваших заслугах. Можно? Ну, я пошел разбираться в примере и учиться! |
| Часовой пояс GMT +4, время: 17:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.