Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Скажите, как сделать кнопку, которая бы увеличивала рисунок? (http://www.flasher.ru/forum/showthread.php?t=115695)

taraskontrabas 07.09.2008 18:17

Скажите, как сделать кнопку, которая бы увеличивала рисунок?
 
Привет всем.
Сфоткал в Гугл Ерс часть города. Налепил много фоток в одну. Вышла одна большааааая картинка. Можно ли сделать такую кнопку, чтоб нажимая на нее, эта большая картинка увеличивалась (до невозможности :rolleyes:)? То есть приближалось изображение
Ну и чтоб рядом кнопочка была чтоб быстрее увеличивала
Ну а рядом еще чтоб уменьшала:mosking:
Какой код надо на кнопку повесить.
Спасибо.

Psycho Tiger 07.09.2008 18:28

Код увелечения и уменьшения изображения.
/me недоумевает по поводу таких вопросов.
Чтобы картинка не вылазила далеко далеко - добавляем туда маску.
Как пример:
Код:

bigger.onPress=function():Void{
pic._xscale*=1.2;
pic._yscale*=1.2;
}

Что именно у вас не получается?

taraskontrabas 08.09.2008 10:05

Спасибо
Значит так. Методом втыка(поскольку я самоучка-начинающий) я сделал так: фотку перевел в мувиклип и в поле инстенс нейм я назвал его pic
далее сделал новый символ- кнопку и назвал ее bigger
Поместил кнопку и мувик на один слой и повесил на слой тот код, который Вы, Psycho Tiger, мне дали.
Работает
Тоже методом втыка только что подставил в код вместо * знак / и теперь рисунок может также уменьшаться :drinks:
Но возикли следующие вопросы
Рисунок увеличивается в то место, где зарегестрирован, когда я его переводил в мувиклип(т.е. в свой верхний левый край, или центр, смотря как выставить регистрацию) А надо чтоб он увеличивался в то место, которое сейчас находится в центре екрана ( ну как в любой електронной карте) Можно ли во флеше так сделать?
И второе: когда нажимаю Сtrl+Enter получается конечный результат в файле Флеш муви. Так вот нужно, чтоб в этом файле можна мышкой брать за увеличенное изображений и перетаскивать влево-вправо-вверх-вниз
А такое возможно?

scarbo 08.09.2008 10:45

А вообще смотрим сюда:Zoom

taraskontrabas 08.09.2008 17:49

Докладываю.Те, задания, которые я на сегодня себе поставил выполнил.
Спасибо Psycho Tiger, спасибо scarbo.
Вот результат ваших стараний.
Рисунок назвал в инстенс нейм: pic
cоздал 4 кнопки с именами bigger, smaller, lefter, righter
И на сцену повесил такой код
Код:

bigger.onPress=function():Void{
pic._xscale*=1.2;
pic._yscale*=1.2;
}
smaller.onPress=function():Void{
pic._xscale/=1.2;
pic._yscale/=1.2;
}
lefter.onPress=function():Void{
        pic._x-=12;
}
righter.onPress=function():Void{
        pic._x+=12;
}
pic.onPress = function() {
        this.startDrag();
};
//После того, как пользователь отпустил кнопку мышки, мы должны остановить
//прокручивание.
pic.onRelease = scroll_mc.onReleaseOutside=function () {
        this.stopDrag();
};

Пользуйтесь, кого заинтерисовало.
осталось три вопроса
Два, как я думаю, легких, и один более сложный для исполнения
Но это уже на завтра
:victory:

Mur4ik 08.09.2008 18:13

Еще неплохо бы добавить проверку на выход карты за края маски, т.е чтоб пользователь не утащил карту за рабочее поле полностью. :)

Wolsh 08.09.2008 18:41

И сделать увеличение/уменьшение плавным - щадим глазки пользователя и его нежную психику.

Double 08.09.2008 21:59

плавным скейл растра сделать не так просто ))) особенно когда картинка "большааааая" )

Wolsh 08.09.2008 22:12

Здесь качество не требуется, речь идет о секунде. Просто резко увеличившийся рисунок сбивает глаз, точки "привязки" теряются и необходимо опять искать глазами город или что там на карте - расположение вражеских эльфов) Битье пикселей здесь без разницы - посмотри любой мпег))))

Double 08.09.2008 22:15

тогда не "плавным", а "последовательным" )))

taraskontrabas 09.09.2008 09:20

Начался новый день.
Ставлю перед собой новые задачи.
Перед тем, как научится плавно или последовательно увеличивать изображение, надо бы мне сначала научиться увеличивать в нужном направлении.
Картинки вместе склеены и общая картинка переведена в мувиклип. При этом точка регистрации мувика у меня, скажем в центре. Если мне надо рассмотреть что-то в левом краю карты и я там увеличиваю, то с каждым следующим нажатием кнопки, картинка лошадиными скачками смещается к центру карты (вправо)
Как можно увеличивать в центр того, что ты сейчас видишь?

taraskontrabas 09.09.2008 13:12

У меня есть 3 предположения
1. Может надо карту делать как картинку а не мувиклип, тогда у картинки не будет точки регистарции. Но я не знаю лексикона - т.е. какие коды надо вписывать вместо онПресс, онРелиз,... чтоб воздействовать на рисунок
2 Может надо как-то отредактировать мувиклип(общую карту) чтоб уничтожить точку регистрации
3 Может есть какой-то код, чтоб увеличение происходило не в сторону этой "нехорошой" точки регистрации мувиклипа

Wolsh 09.09.2008 13:16

1. Картинки не управляются скриптом
2. Точку регистрации, к счастью, уничтожить невозможно. Благодаря ей Вы можете управлять координатами своей карты.
3. А вот это именно так. Необходимо не только увеличивать карту, но и смещать ее в нужное место.

taraskontrabas 09.09.2008 17:02

Привет всем.
Берусь опять за работу.
Перед тем как научиться плавно( последовательно) увеличивать карту , надо бы мне научиться увеличивать в центр того фрагмента карты, который я сейчас вижу, а не в центр всей карты, где у меня выставлена точка регистрации.
Может можна програмно как-то увеличивать карту в виде битмап, а не в виде мувиклипа? В битмапе нет точки регистрации. Есть шанс, что будет увеличиватся правильно. Но какие коды надо использовать? (вместо онПрес, онРелиз...)
А может в мой код надо какую-то писюльку вставить, чтоб оно игнорировало точку регистрации?
А может этот мувиклип состоящий с карты можна так отредактировать, чтоб уничтожить эту точку регистрации?
Кто знает?

taraskontrabas 09.09.2008 17:13

Извеняюсь Wolsh. Браузер подглючил и я неувидел последнего(Вашего) ответа.

Цитата:

А вот это именно так. Необходимо не только увеличивать карту, но и смещать ее в нужное место.
Не подскажите, где могу почитать об этом.
До сих пор методом исключения и интуиции я брал какой-то большой код и удалял с него по строчке, но так, чтоб интересующий меня елемент кода работал.
Так у меня получались кнопочки, всякие примитивы.
Но смещать карту в нужное место - это для меня высшый пилотаж.
Это для взрослых!
Это круто!
Да!
Но...
:wacko:

Wolsh 09.09.2008 23:26

Вложений: 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:

darksranger 09.09.2008 23:53

проще говоря, то же что описал wolsh, только простыми словами ) ( чесно я сам с раза 4 понял )
возьмите _width уже расширенного ( или посчитайте какой он будет ) отнимите от него, _width тот что был изначально, получите delta _x, вот эту дельта отнимите от _x и переместите на получившейся _x свой MovieClip, тоже самое с _y, только отнимаете из _height конечного, _height начальный, получаете delta _y

)

Wolsh 10.09.2008 00:06

Ничего подобного. В Вашей интерпретации напрочь отсутствует точка, в которую кликнули. А именно ее я и пытаюсь привести на место.

darksranger 10.09.2008 00:11

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

Wolsh 10.09.2008 00:27

darksranger, Вы чем читаете? Я говорю не о центрирующем в любом смысле коде, а о сохранении положения точки, в которую кликнули. Допустим что в мувике текст. Кликнув на букву А, я хочу чтобы мувик увеличился, но так, чтобы под мышкой)))) у меня осталась та самая буква А - я вроде как ее хотел увеличить, правда? Вот так он и должен "вытаскиваться издалека", а если заинтересовавшая меня область будет постоянно куда-то убегать, с чем-то там центрируясь, я уйду к тем, кто умеет делать интерфейсы.
Если же предлагается использовать для увеличения кнопки +-, подразумевается что "точка клика" - центр видимой области. Само собой, формулы остаются те же, можно только при желании ввести константы, т.к. точка клика постоянна и заранее известна.

darksranger 10.09.2008 00:30

ааа все понял, я просто подумал, что нужно увеличивать весь мувик, а не область клика ...
( читаю как всегда :) самым не адэкватным местом %)

taraskontrabas 10.09.2008 09:53

Вложений: 1
Wolsh, обьяснили очень доходчиво и последовательно.
Вы наверное в душе учитель.
Принцип понял сразу.

Моих познаний в области АS наверное не хватает .Не могу обьяснить компьютеру что мне от него надо. Не понимает он меня.
Решил закинуть эту дурацкую затею чтоб вас всех не выводить с себя подобными вопросами.
Немножко не понял зачем нам координаты x_mouse и y_mouse, так как я мышкой передвигаю карту на нужный фрагмент и увеличиваю специально созданной кнопкой биггер - в момент увеличения мышка все равно находится над кнопкой биггер.
...
Если все же вы вошли в азарт и комуто с читающих/обсуждающих все же интересно довести дело до конца, то еще раз даю тот полный код, который у меня есть на данный момент
Код:

bigger.onPress=function():Void{
pic._xscale*=1.2;
pic._yscale*=1.2;
}
smaller.onPress=function():Void{
pic._xscale/=1.2;
pic._yscale/=1.2;
}
lefter.onPress=function():Void{
        pic._x-=12;
}
righter.onPress=function():Void{
        pic._x+=12;
}
pic.onPress = function() {
        this.startDrag();
};
//После того, как пользователь отпустил кнопку мышки, мы должны остановить
//прокручивание.
pic.onRelease = pic.onReleaseOutside=function () {
        this.stopDrag();
};

Ну и исходник

scarbo 10.09.2008 11:08

Вложений: 1
Ну вот к примеру, черновой вариант, реагирует на колесо мыши,щас поем и доделаю,а пока это гляньте:

taraskontrabas 10.09.2008 18:40

Проблема та же на этом черновом варианте. Увеличение делается в левый верхний угол.
Может я не плохо формулирую суть проблемы?
Скажем, чтоб максимально приблизить домик, который на этом вашем рисунке, мне надо трижды перетаскивать мышкой в центр екрана. Потому что он при увеличении выходит за поле зрения

scarbo 10.09.2008 19:06

так яж сказал,что до делаю.Подождите,я только с работы пришел

taraskontrabas 12.09.2008 20:14

Понимаю, каждый занят. И на этом ОГРОМНОЕ спасибо.
Может кто-то еще знает какую-нибудь книжечку скачать, или сайтец, в котором я бы смог разобраться как правильно увеличивать( суть моей проблемы)

Wolsh 14.09.2008 00:59

Вложений: 1
Ладно, не ворчите) Вот исходник. Просто была надежда, что справитесь сами. А свой опыт в сотни раз важнее исходников.
Впрочем, я не стал комментировать код. Может, возникнет желание поразбираться, полазить по хелпу. Ну а нет - чтож, спрашивайте.

taraskontrabas 15.09.2008 10:05

Даааа
это уж красота
Подозреваю, что для Вас это задачка на 10-20 минут, но пред Вами голову склоняю...
Импрессив.
Честно говоря, я думал, что в инете не возможно найти людей настолько терпеливых к моим вопросам( хотя в жизни я совсем не настойчивый) и настолько дружелюбных
Поразила ваша щедрость. Это именно то, что мне нужно было. Немножко стыдно за себя, что не сумел сам это сделать. Но и образования компьютерного( а тем более програмирования) у меня нет. Это только мечта...
Обязуюсь:
- Разобраться что-по чем в вашем примере
- Если доделаю свою карту - обязательно там напишу почетное слово о Ваших заслугах. Можно?
Ну, я пошел разбираться в примере и учиться!


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

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