Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.02.2011, 22:46
Improveddesign вне форума Посмотреть профиль Отправить личное сообщение для Improveddesign Найти все сообщения от Improveddesign
  № 1  
Ответить с цитированием
Improveddesign

Регистрация: Feb 2011
Адрес: Россия, РТ, г. Казань
Сообщений: 14
По умолчанию Скролл. Добавление эффекта плавного торможения

Здравствуйте, меня зовут Руслан и скажу сразу, лукавить не стану по-поводу моих знаний в AS, как многие здесь ищущие помощь, что якобы код они сами написали.
Я дизайнер, Photoshop и Corel - вот мои подручные средства пр создании оригинал-макетов, но буквально несколько месяцев назад начал изучать (правда поверхностно из-за отсутствия времени) технологию Flash и скажу честно... очень понравилось и стал привлекать AS с каждым днем все больше и больше.
Писать сам код я не умею (думаю вопрос времени), но уже что-то могу понять при его чтении. В основном помогают исходники и уроки этого форума.

Проблема у меня состоит в следующем:
Есть у меня следующий код скролла, работает отменно, НО хотелось бы внедрить и эффект плавного торможения текста. С другого исходника нашел три строки, которые отвечают именно за данный эффект. Немного, повозившись с ним, пришел к почти желаемому результату, подчеркну "почти", но проблема в том что появился плавный эффект не только у динамического текстового поля, но и всего мувика.
Ниже приведен код, а три комментированные строки в нем и есть те строчки, отвечающие за эффект плавного торможения. Помогите пожалуйста, очень прошу, больше низнаю кому можно обратиться. Я человек благодарный и могу также, при необходимости помочь например с дизайном.

pole - динамическое текстовое поле, подгружающий данные из XML файла
drag - сам ползунок

Код AS1/AS2:
_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();
}
};

Старый 01.03.2011, 10:43
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Все достаточно просто: если у вас есть формула расчета положения поля по _y, то можно сделать плавное перемещение по такому принципу:

поле._y += (нужное_положение_по_у - поле._y) / коэффициент_торможения

Где коэффициент_торможения — число от 1 (при 1 не тормозит).

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

По вашему коду как-то так должно быть:
Код AS1/AS2:
_root.onEnterFrame = function() {
    var posY = -((pole._height-150)/XodPolzuna*drag._y);
    pole._y += (posY - pole._y) / 3;
};
Что касается неправильного эффекта, который вы описали ("плавный эффект не только у динамического текстового поля, но и всего мувика"), это из-за того, что в функции _root.onEnterFrame строка "this._y -= (this._y-targY)/4" ссылается на _root. Иными словами в этой функции this = _root, а должна быть ссылка на проматываемое поле.
__________________
hauts.ru


Последний раз редактировалось Hauts; 01.03.2011 в 10:48.
Старый 01.03.2011, 22:06
Improveddesign вне форума Посмотреть профиль Отправить личное сообщение для Improveddesign Найти все сообщения от Improveddesign
  № 3  
Ответить с цитированием
Improveddesign

Регистрация: Feb 2011
Адрес: Россия, РТ, г. Казань
Сообщений: 14
Огромнейшее Вам человеческое СПАСИБО!!! Действительно, все очень просто и предельно ясно.
Это просто замечательно, что на свете встречаются такие люди, как Вы... способный помочь и имеющий на это желание. Обычно с высока (прозженые прогеры) смотрят на людей, которые делают только первые шаги в освоении AS и Flash, соответственно, направляя всякий раз на мануал. Как я и писал чуть выше... я человек благодарный и, хотелось бы сделать для Вас что-нибудь хорошее. Если Вас интересуют услуги дизайнера, то я буду рад Вам помочь.
Знаете, не хотелось бы казаться нагловатым, но хотелось бы задать еще пару вопросов, которые беспокоят меня относительно этого же скролла. Если я получу на них ответ, моей радости не будет предела и я начну двигаться дальше в изучении actionscript.

Вопрос №:1
Я уверен, что можно реализовать код таким образом, чтобы размер ползунка варьировался в зависимости от полноты текста, загруженного из XML, то есть чем больше текста, тем меньше по оси._y сам ползунок, и нашел следующее...
Код AS1/AS2:
высота_ползунка = высота_скролла / высота_всего_текста * высота_видимого_текста
если высота_ползунка больше высота_скролла то высота_ползунка = высота_скролла
сдвиг_текста = высота_всего_текста / (высота_скролла - высота_ползунка) * скролл_у
Непонятные мне вещи:
Высота ползунка = drag._y
Высота_скролла = XodPolzuna
Высота_всего_текста = pole._height
Высота_видимого_текста = тоже чтоли pole._height ???
Сдвиг_текста = ???

2. Вопрос №2
Вопрос по кнопкам. Как реализовать не знаю, вернее знаю события onPress, onrelease и т.д. а дальше полный стопр.
Заранее большое спасибо!

Старый 02.03.2011, 22:14
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 4  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Спасибо, мы все когда-то начанали

Я вам пример подготовил, думаю на ваши вопросы вы найдете решение.

scrollbar_example.zip

Относительно задачи — все сводится к простым математическим пропорциям. Высота ползунка, если вдуматься, — настолько же меньше, чем высота всей области прокрутки, насколько показываемая область текста меньше той, что остается невидимой. Вот.

Еще один момент.
Высота мувиклипа во флэше — это свойство _height.
Его положение по вертикали — свойство _y.
Масштаб по вертикали (изначально равен 100) — свойство _yscale.

Тоже самое относится и к горизонтальным свойствам, но там, соответственно уже "_width", "_x" и "_xscale".
__________________
hauts.ru


Последний раз редактировалось Hauts; 02.03.2011 в 22:26.
Старый 02.03.2011, 22:21
Improveddesign вне форума Посмотреть профиль Отправить личное сообщение для Improveddesign Найти все сообщения от Improveddesign
  № 5  
Ответить с цитированием
Improveddesign

Регистрация: Feb 2011
Адрес: Россия, РТ, г. Казань
Сообщений: 14
Спасибо большое, уже начал изучать...

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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