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

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

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

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
По умолчанию Плавное движение

Вот код на AS3:
Код:
package {
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.display.StageScaleMode;
	import flash.display.StageAlign;
	import flash.events.Event;
	
	public class Test extends Sprite
	{
		private var w:Number;
		private var h:Number;
		
		public function Test()
		{
			w = 200;
			h = 200;
			
			stage.stageWidth = w;
			stage.stageHeight = h;
			stage.frameRate = 30;
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			x = 5;
			y = 50;
			graphics.beginFill(0xff0000, 1);
			graphics.drawCircle(0, 0, 5);
			
			addEventListener(Event.ENTER_FRAME, Update);
		}
		
		public function Update(event:Event):void
		{
			x += 5;
			if(x > w) x = 5;
		}
	}
}
При перемещении шарика видно как он дергается и неравномерно ускоряется. Почему? Как сделать движение плавным?

Nirth:испольхуйте теги [code][/code]


Последний раз редактировалось Nirth; 30.09.2006 в 18:36.
Старый 01.10.2006, 20:08
RadiationX вне форума Посмотреть профиль Отправить личное сообщение для RadiationX Найти все сообщения от RadiationX
  № 2  
Ответить с цитированием
RadiationX

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
Неужели никто не знает?

Старый 01.10.2006, 20:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Естесственно видно, шаг слишком большой.

Старый 02.10.2006, 18:41
RadiationX вне форума Посмотреть профиль Отправить личное сообщение для RadiationX Найти все сообщения от RadiationX
  № 4  
Ответить с цитированием
RadiationX

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
А если нужно чтобы двигалось с большой скоростью? Видел похожие ролики на AS2, там все движется быстро и плавно.

Старый 02.10.2006, 23:40
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 5  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Подобный код на любом языке будет дергатся.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Заставь его перерисовываться чаще
Код:
...
	import flash.utils.Timer;
...
			var t:Timer = new Timer(3);
			t.start();			
			t.addEventListener("timer", Update);
			//addEventListener(Event.ENTER_FRAME, Update);
		}
		
		public function Update(e:Event):void
		{
			x += 1;
			if(x > w) x = 5;
			e.updateAfterEvent();
		}
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 03.10.2006, 03:11
RadiationX вне форума Посмотреть профиль Отправить личное сообщение для RadiationX Найти все сообщения от RadiationX
  № 7  
Ответить с цитированием
RadiationX

Регистрация: Sep 2006
Сообщений: 32
Отправить сообщение для RadiationX с помощью ICQ
Подобный код на любом языке будет дергатся.
Подскажите пожалуйста как сделать правильно

Заставь его перерисовываться чаще
Не помогает, все равно дергается

По идее при смещении надо:
x += speed * delta

где delta - время прошлого цикла

Старый 03.10.2006, 18:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Только если увеличить FPS, других вариантов не вижу. Или запустить с интервалом и updateAfterEvent()

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

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

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


 


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


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