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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jul 2001
Сообщений: 29
По умолчанию управление клипом

Помогите разобраться, как осуществить следующую вещь:
имеется объект, который, движется вертикально верх с некоторым ускорением, значение которого задается из отдельной кнопки по событию rollOver. Необходимо сделать так, чтобы ускорение плавно увеличивалось во время постоянного нахождения курсора над кнопкой. У меня же получается наращивать ускорение только после последовательных наведений на кнопку. Вот код всей этой байды:
Клип:
onClipEvent (enterFrame) {
_root.object.accel=_root.yskor;
y=y-5-accel;
_root.object._y =300+y;
if (_root.object._y<0) {
_root.object._y =0;
}
}
Кнопка:
on (rollOver) {
_root.yskor = _root.yskor+1;
}
Подскажите, что здесь нужно изменить для достижения нужного результата.

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

Регистрация: Jul 1999
Адрес: Russia, MSk
Сообщений: 185
onClipEvent (enterFrame) {
_root.object.accel+=_root.yskor;
y=y-5-accel;
_root.object._y =300+y;
if (_root.object._y<0) {
_root.object._y =0;
}
}
Кнопка:
on (rollOver) {
_root.yskor =1;
}
on (rollOut, dragOut) {
_root.yskor =0;
}
__________________
Thank for a question
http://www.cybergallery.ru/

Старый 01.07.2002, 21:09
Rotator вне форума Посмотреть профиль Отправить личное сообщение для Rotator Найти все сообщения от Rotator
  № 3  
Rotator

Регистрация: Jul 2001
Сообщений: 29
Спасибо за ответ. Усе работает как надо

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

Регистрация: Jul 1999
Адрес: Russia, MSk
Сообщений: 185
не за что только у тнебя в этом коде очень много лишних действий и переменных.... я бы упрастил (блин а как пишется упрастил или упростил , совсем туплю %)).... ну да ладно) некоторые действия.... во первых непонятна логика записи различных скоростей для различных мувиков "_root.object.accel" и единого "у", исходя из скрипта видно, что "карма" (все изменения ролика за время проигрывания клипа) ролика в том, чтобы с ускорением подьехать к нулю и замереть. тогда пишем ...
MC:
onClipEvent (Load) {
_root.object.accel=5;
_root.object._y =300;

}
onClipEvent (enterFrame) {
_root.object._y -=(_root.object.accel+=_root.yskor)*(_root.object._y>=0) ;

}
Кнопка:
on (rollOver) {
_root.yskor =1;
}
on (rollOut, dragOut) {
_root.yskor =0;
}

или карма у него другая? поясни
__________________
Thank for a question
http://www.cybergallery.ru/

Старый 03.07.2002, 01:38
Rotator вне форума Посмотреть профиль Отправить личное сообщение для Rotator Найти все сообщения от Rotator
  № 5  
Rotator

Регистрация: Jul 2001
Сообщений: 29
Относительно того, что ты назвал "кармой" для мувика, на самом деле ни в коей мере его "кармой" не является. Принципиально меня интересовали "игры" с ускорением.
Хотя замирание в конкретной точке, наверное (как человек, далекий от программирования, не берусь судить однозначно, оптимальнее реализовать предложенным тобой способом.
Тут назрел еще вопросец, связанный с hittest. Надеюсь, я не очень утомил ламерскими вопросами?
Допустим, имеется клип, который непрерывно дублируется, каждый новый дубликат появляется на новом слое. Кроме этого клипа есть еще один, которому посредством hittest поручено взаимодействовать с дубликатами. Но, так как все они находятся на разных слоях, столкновения не происходит. В общем ,как решить эту траблу со слоями, мне совершенно непонятно. Или это в принципе невозможно?
Если формулировка вопроса не достаточно ясна, прилагаю проясняющий файлик.
Вложения
Тип файла: zip hittest.zip (3.1 Кб, 337 просмотров)

Старый 03.07.2002, 05:50
Geo вне форума Посмотреть профиль Отправить личное сообщение для Geo Посетить домашнюю страницу Geo Найти все сообщения от Geo
  № 6  
Geo
 
Аватар для Geo

Регистрация: Jul 1999
Адрес: Russia, MSk
Сообщений: 185
посмотрел я твой исходник... у тебя все действует , только проверка на хитовость дублированного мувика проходит один раз в начале его жизни и конечно пересечения нет%))
ты просто не туда засунул проверку , навесь проверку на саму сферу и все заработает. вот измененный ролик (только мне скучно было я немного над ним поиздевался, ты уж прости. надеюсь поймешь что там к чему %))))
да и еще называй дублированные клипы начиная с буковки , а то в некоторых случаях из АС к нему не обратиться будет.
__________________
Thank for a question
http://www.cybergallery.ru/

Старый 03.07.2002, 05:52
Geo вне форума Посмотреть профиль Отправить личное сообщение для Geo Посетить домашнюю страницу Geo Найти все сообщения от Geo
  № 7  
Geo
 
Аватар для Geo

Регистрация: Jul 1999
Адрес: Russia, MSk
Сообщений: 185
файл то забыл приаттачить %)))
Вложения
Тип файла: zip hit2.zip (3.0 Кб, 19 просмотров)
__________________
Thank for a question
http://www.cybergallery.ru/

Старый 04.07.2002, 01:22
Rotator вне форума Посмотреть профиль Отправить личное сообщение для Rotator Найти все сообщения от Rotator
  № 8  
Rotator

Регистрация: Jul 2001
Сообщений: 29
За "издевательства" спасибо, но не все в них оказалось для меня понятным:
onClipEvent (load) {
i = 1;
htest = 5;
c = new Color(this);
cTr = new Object();
}
onClipEvent (enterFrame) {
this._y += i*(htest+this._y/30);
Строчкой выше осуществляется управление пресловутым ускорением. С этим все ясно
if (this._y>420) {
removeMovieClip (_target);
}
//Здесь тоже без вопросов

Следующая строчка, кажется, заставляет возвращаться отлетевшую после столкновения сферу, т.к. -i+(-i) будет i Но здесь непонятен синтаксис: если стоит htest == 0, то все работает. Если же ставлю просто "=",то в скрипте вылетает ошибка. В справочнике нашел, что "==" обозначает равнество операндов. Так вот не могу врубиться, что за операнды здесь сравниваются и почему не катит подстановка банального равентсва.
else if (this._y<20 && htest == 0) {
i = -i;
htest = 1;
}
if (this.hitTest(_root.plosh)&& htest!=0)
//А ларчик-то просто открывался. Блин, куда этот hittest я только не прикручивал. С htest! такие же непонятки, как и с htest ==. Без "!" скрипт тоже не работает. В том же справочнике обнаружил, что "!" - "действует как переключатель: для истинного операнда возвращает ложь, а для ложного, напротив, итстину". Где здесь истина, где ложь? Философия пошла какая-то%) Может разъяснишь?

Старый 04.07.2002, 05:35
Geo вне форума Посмотреть профиль Отправить личное сообщение для Geo Посетить домашнюю страницу Geo Найти все сообщения от Geo
  № 9  
Geo
 
Аватар для Geo

Регистрация: Jul 1999
Адрес: Russia, MSk
Сообщений: 185
%)
htest есть переменная которая создана мной для убирания багов многократного сравнивания и управления скоростью. я все про карму. проследи поведение клипа от его рождения. это помогает сделать оптимальный код и понять где могут возникнуть баги.
теперь переводим на русский выражения и смотрим карму клипа.
есть два варианта .
1.рождение, падение, смерть.
2.рождение падение отражение подьем , замирание, падение и опять выбор либо смерть либо отражение.
что бы замирание после отражения происходило в области видимости я поставил условие this._y<20 а процесс рождения мне неприятен и видеть я его не хочу (совместные роды не для меня ), поэтому рождается он за пределами видимости, но если проверить this._y<20 получается, что надо менять направление и так, как за один цикл (переход от фрейма к фрейму) клип все равно выше, условие this._y<20 выполняется снова: получаем дрожание на месте. поэтому добавим еще одно условие , которое заведомо ложно, возьмем переменную содержащюю начальную скорость и проверим равна она 0 или нет (htest ==0).
небольшое отступление:
"==" есть оператор сравнения если напишешь trace (2==2) то в ответе получишь true. есть такой анекдот, про то, чем отличается програмист от нормального человека: он отвечает на утверждение содержащее ответ "дважды два равно четыре." програист ответит true. запишем так 4==2*2, а так 5==2*2 false, а если так 5!=2*2 true, ааааа если 4!=2*2 то получаем false переводим "!=" на руский язык , получаем "не равно".
теперь продолжим.
после того как добавили новое условие получаем ,что клип падает вниз так как this._y<20 - true htest ==0 - false а условие смены проходит только когда оба условия истинны "&&" значит "и" .
летим дальше и встречаемс\я с битой, если не встречаемся там все понятно, и так if (this.hitTest(_root.plosh)&& htest!=0) - переводим на русский если произошло пересечение областей (this.hitTest(_root.plosh)==true) и htest не равно 0 меняем направление , и !!!!! htest=0 закрываем проверку так как в следующем кадре (проверке) клип все еще может быть над битой и опять сменить направление , получив в итоге дрожание над битой. убери "&& htest!=0" и посмотри что некоторые сферы дрожат а некоторые отскакивают. в принципе можно было бы использовать любую переменную , но у нас есть бесполезная - htest..... так как скорость клипа внизу очень большая то уменьшение на 5 пунктов не существенно , плюс !!! получим немного реальности: столкновение получилось не абсолютно упругим и скорость клипа уменьшилась, но это еще не все , в верхней мертвой точке клип почти замрет (рагу из трех зайцев на ужин обеспечено) . летим в верх и замираем в верхней точке. условие смены направления выполнено? да! меняем. и дрожание уберем htest=1 и ускорим падение но не очень сильно. Завтрак тоже есть% и тоже из трех, так как теперь проверка на соударение с битой выполняется.

Уф! помоему все %))
__________________
Thank for a question
http://www.cybergallery.ru/


Последний раз редактировалось Geo; 04.07.2002 в 05:40.
Старый 04.07.2002, 16:57
Rotator вне форума Посмотреть профиль Отправить личное сообщение для Rotator Найти все сообщения от Rotator
  № 10  
Rotator

Регистрация: Jul 2001
Сообщений: 29
Гм...
Здорово объяснил - все разложено по полочкам. После такого точно буду серьезнее относиться к карме, дхарме и иже с ними
thanks!!!

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

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

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


 


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


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