![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2011
Адрес: Россия, РТ, г. Казань
Сообщений: 14
|
Здравствуйте, меня зовут Руслан и скажу сразу, лукавить не стану по-поводу моих знаний в AS, как многие здесь ищущие помощь, что якобы код они сами написали.
Я дизайнер, Photoshop и Corel - вот мои подручные средства пр создании оригинал-макетов, но буквально несколько месяцев назад начал изучать (правда поверхностно из-за отсутствия времени) технологию Flash и скажу честно... очень понравилось и стал привлекать AS с каждым днем все больше и больше. ![]() Писать сам код я не умею (думаю вопрос времени), но уже что-то могу понять при его чтении. В основном помогают исходники и уроки этого форума. Проблема у меня состоит в следующем: Есть у меня следующий код скролла, работает отменно, НО хотелось бы внедрить и эффект плавного торможения текста. С другого исходника нашел три строки, которые отвечают именно за данный эффект. Немного, повозившись с ним, пришел к почти желаемому результату, подчеркну "почти", но проблема в том что появился плавный эффект не только у динамического текстового поля, но и всего мувика. Ниже приведен код, а три комментированные строки в нем и есть те строчки, отвечающие за эффект плавного торможения. Помогите пожалуйста, очень прошу, больше низнаю кому можно обратиться. Я человек благодарный и могу также, при необходимости помочь например с дизайном. pole - динамическое текстовое поле, подгружающий данные из XML файла drag - сам ползунок _root.onEnterFrame = function() { pole._y = -((pole._height-150)/XodPolzuna*drag._y); // я уверен, что нижние (закоментированные) три строки должны быть именно здесь, т.к при их редактировании почти достигается желаемый эффект. // targY = 0; // targY = -dragger._y*scrollAmount; // this._y -= (this._y-targY)/4; }; drag.pres = false; drag.onPress = function() { if (pole._height>150) { this.pres = true; this.startDrag(false, 150, 0, 150, XodPolzuna); } };//onPress drag.onMouseUp = function() { if (this.pres) { this.pres = false; this.stopDrag(); } }; |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Все достаточно просто: если у вас есть формула расчета положения поля по _y, то можно сделать плавное перемещение по такому принципу:
поле._y += (нужное_положение_по_у - поле._y) / коэффициент_торможения Где коэффициент_торможения — число от 1 (при 1 не тормозит). Только такой расчет положения поля (я имею в виду с торможением) должен считаться по таймеру, например, или в onEnterFrame, чтобы торможение работало и после того, как отпустили бегунок. По вашему коду как-то так должно быть: Что касается неправильного эффекта, который вы описали ("плавный эффект не только у динамического текстового поля, но и всего мувика"), это из-за того, что в функции _root.onEnterFrame строка "this._y -= (this._y-targY)/4" ссылается на _root. Иными словами в этой функции this = _root, а должна быть ссылка на проматываемое поле.
__________________
hauts.ru Последний раз редактировалось Hauts; 01.03.2011 в 10:48. |
|
|||||
|
Регистрация: Feb 2011
Адрес: Россия, РТ, г. Казань
Сообщений: 14
|
Огромнейшее Вам человеческое СПАСИБО!!! Действительно, все очень просто и предельно ясно.
Это просто замечательно, что на свете встречаются такие люди, как Вы... способный помочь и имеющий на это желание. Обычно с высока (прозженые прогеры) смотрят на людей, которые делают только первые шаги в освоении AS и Flash, соответственно, направляя всякий раз на мануал. Как я и писал чуть выше... я человек благодарный и, хотелось бы сделать для Вас что-нибудь хорошее. Если Вас интересуют услуги дизайнера, то я буду рад Вам помочь. Знаете, не хотелось бы казаться нагловатым, но хотелось бы задать еще пару вопросов, которые беспокоят меня относительно этого же скролла. Если я получу на них ответ, моей радости не будет предела и я начну двигаться дальше в изучении actionscript. Вопрос №:1 Я уверен, что можно реализовать код таким образом, чтобы размер ползунка варьировался в зависимости от полноты текста, загруженного из XML, то есть чем больше текста, тем меньше по оси._y сам ползунок, и нашел следующее... высота_ползунка = высота_скролла / высота_всего_текста * высота_видимого_текста если высота_ползунка больше высота_скролла то высота_ползунка = высота_скролла сдвиг_текста = высота_всего_текста / (высота_скролла - высота_ползунка) * скролл_у Высота ползунка = drag._y Высота_скролла = XodPolzuna Высота_всего_текста = pole._height Высота_видимого_текста = тоже чтоли pole._height ??? Сдвиг_текста = ??? 2. Вопрос №2 Вопрос по кнопкам. Как реализовать не знаю, вернее знаю события onPress, onrelease и т.д. а дальше полный стопр. Заранее большое спасибо! |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Спасибо, мы все когда-то начанали
![]() Я вам пример подготовил, думаю на ваши вопросы вы найдете решение. scrollbar_example.zip Относительно задачи — все сводится к простым математическим пропорциям. Высота ползунка, если вдуматься, — настолько же меньше, чем высота всей области прокрутки, насколько показываемая область текста меньше той, что остается невидимой. Вот. Еще один момент. Высота мувиклипа во флэше — это свойство _height. Его положение по вертикали — свойство _y. Масштаб по вертикали (изначально равен 100) — свойство _yscale. Тоже самое относится и к горизонтальным свойствам, но там, соответственно уже "_width", "_x" и "_xscale".
__________________
hauts.ru Последний раз редактировалось Hauts; 02.03.2011 в 22:26. |
|
|||||
|
Регистрация: Feb 2011
Адрес: Россия, РТ, г. Казань
Сообщений: 14
|
Спасибо большое, уже начал изучать...
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|