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

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

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

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
По умолчанию Управление свойством _x

Проблема заключается в следующем: есть какой-то обьект с _х координатой. При нажатии на кнопке значение _х должно плюсоваться или минусоваться, в зависимости от выбранного направления (<< >>). Движение должно быть плавным, т.е. постепенный разгон с места и так же торможение.
Как я себе представлял решение этой задачи: есть какая-то переменная, пусть будет "а". При нажатии на кнопке значение этой переменной плюсуется (допустим становиться равным 100). Запускается цикл в виде:
Код:
while (a >= 0){
     _root["clip"]._x += 1;
     a = a - 1;
}
В итоге по этому циклу обьект пройдет без ускорения 100 пикселей, потом остановиться (впринципе я полагал, что ускорение можно будет прописать ифами в теле цикла, которые будут зависить от процента оставшегося значения "а"). Но в результате незнания я предположил, что частота прохождения цикла будет равна честоте кадров клипа, которые прописываются в параметрах заранее. Оказалось, что цикл проходится практически мгновенно и никакой анимации не видно.
Вобщем я надеюсь вы поняли мою проблему, поэтому если кто-то сталкивался с этим, то помогите мне пожалуйста! Или скажите где можно найти ответ на вопрос, я, честно говоря, уже замучился искать. Спасибо за то, что прочитали пост!


Последний раз редактировалось peresmeshnik; 07.06.2007 в 14:11.
Старый 07.06.2007, 04:01
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
следует понять логику флеша: сначала выполняется весь код на кадре, затем кадр отображается. Чтобы делать изменение координаты можно либо использовать обработчик onEnterFrame - вызов с частотой смены кадров, либо setInterval + updateAfterEvent - если не хочется зависеть от частоты кадров флешки.

Пример кода:
Код:
var a:Number = 100;
this.onEnterFrame = function():Void{
if(a>=0){
   _root.clip._x += 1;
   a -= 1;
}else{
   delete this.onEnterFrame
}
}
+Используйте Поиск, самые разные аспекты этого вопроса уже обсуждались
__________________
4am is time to rock


Последний раз редактировалось DarkLight; 07.06.2007 в 04:04.
Старый 07.06.2007, 06:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
peresmeshnik, отредактируйте свой пост и оформите код тегами [code][/code].

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

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
Спасибо, попробую сделать так. Только не понимаю, что означает вот эта часть:
Код:
else{
   delete this.onEnterFrame
}

Старый 07.06.2007, 14:50
Мыкыта вне форума Посмотреть профиль Отправить личное сообщение для Мыкыта Найти все сообщения от Мыкыта
  № 5  
Ответить с цитированием
Мыкыта

Регистрация: Mar 2003
Адрес: Россия, Санкт-Петербург
Сообщений: 565
удаляет обработчик onEnterFrame созданный ранее

Старый 07.06.2007, 16:01
peresmeshnik вне форума Посмотреть профиль Отправить личное сообщение для peresmeshnik Найти все сообщения от peresmeshnik
  № 6  
Ответить с цитированием
peresmeshnik
 
Аватар для peresmeshnik

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
Тогда получается, что если не удалять обработчик onEnterFrame и временная шкала будет на фрейме, в котором написан этот скрипт - то он будет постоянно выполняться?

Старый 07.06.2007, 16:05
Мыкыта вне форума Посмотреть профиль Отправить личное сообщение для Мыкыта Найти все сообщения от Мыкыта
  № 7  
Ответить с цитированием
Мыкыта

Регистрация: Mar 2003
Адрес: Россия, Санкт-Петербург
Сообщений: 565
он будет выполнятся то того пока ты его не удалишь, а где в это время шакала будет никого неволнует

Старый 07.06.2007, 16:40
Ведьмак вне форума Посмотреть профиль Отправить личное сообщение для Ведьмак Посетить домашнюю страницу Ведьмак Найти все сообщения от Ведьмак
  № 8  
Ответить с цитированием
Ведьмак
[+1 22.07.07]
 
Аватар для Ведьмак

Регистрация: May 2007
Адрес: Минск, Беларусь
Сообщений: 347
Отправить сообщение для Ведьмак с помощью ICQ Отправить сообщение для Ведьмак с помощью Yahoo
для ускорения пробуй добавлять не "1", а какую-нить переменную inc в зависимости от положения мувика, напр:
inc = this._x - 250;
чем дальше будет уезжать мувик, тем больше будет inc.... можно еще сделать его в квадрате...

PS: можно this._x - 250 еще не на что-нить поделить, чтобы inc изменялся (например) от 0 до 3.... тогда используя его в квадрате получаем диапазон от 0 до 6 (причем парабола)


Последний раз редактировалось Ведьмак; 07.06.2007 в 16:48.
Старый 07.06.2007, 21:20
Therion вне форума Посмотреть профиль Отправить личное сообщение для Therion Найти все сообщения от Therion
  № 9  
Ответить с цитированием
Therion
 
Аватар для Therion

Регистрация: Aug 2005
Сообщений: 785
ну или можно при ускарении назначать начальную скорость
а потом просто её умножать на 1,1) при торможении на 0,9
тоесть так
Код:
Vx=Vx*1.1
this._x+=Vx
так будет плавное ускарение
__________________
Нано-флешер (в отставке)

Старый 07.06.2007, 22:07
this.create вне форума Посмотреть профиль Отправить личное сообщение для this.create Найти все сообщения от this.create
  № 10  
Ответить с цитированием
this.create

Регистрация: Feb 2007
Сообщений: 264
Цитата:
Сообщение от peresmeshnik
При нажатии на кнопке значение _х должно плюсоваться или минусоваться, в зависимости от выбранного направления (<< >>). Движение должно быть плавным, т.е. постепенный разгон с места и так же торможение.
Как вариант, есть готовый класс Tween. Ознакомтесь с ним. Он предоставляет, в том числе, и возможность плавного старта/замедления при перемещении объекта.

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

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

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


 


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


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