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

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

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

Регистрация: Nov 2005
Адрес: 26°58′49.06″ 49°24′35.72″ Ymaps
Сообщений: 119
Отправить сообщение для ZGG с помощью ICQ Отправить сообщение для ZGG с помощью Skype™
По умолчанию Timer или channel.position?

Здравствуйте уважаемые флеш кодеры!

Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.media.*;
	import flash.net.*;
	import flash.utils.*;
	public class Main extends Sprite
	{
		private var timer:Timer,sec:int,currentPos:int,sound:Sound,channel:SoundChannel,totalDiffer:int
 
		public function Main()
		{
			timer = new Timer(1000, 0)
			sound = new Sound(new URLRequest('Muzykant.mp3'))
			timer.start()
			channel = sound.play();
			timer.addEventListener(TimerEvent.TIMER, listener)
		}
		private function listener(e:TimerEvent):void
		{
			var cp:int = channel.position
			var dif:int = cp - currentPos - 1000
			totalDiffer +=Math.abs(dif)
			trace((++sec)+' sec. Current channel.position: '+cp+' ms, differs: '+dif+' ms. Total differ: '+totalDiffer+' ms.')
			currentPos=cp
		}
	}
}
Вывод:
Код:
1 sec. Current channel.position: 743 ms, differs: -257 ms. Total differ: 257 ms.
2 sec. Current channel.position: 1764 ms, differs: 21 ms. Total differ: 278 ms.
3 sec. Current channel.position: 2786 ms, differs: 22 ms. Total differ: 300 ms.
4 sec. Current channel.position: 3808 ms, differs: 22 ms. Total differ: 322 ms.
5 sec. Current channel.position: 4829 ms, differs: 21 ms. Total differ: 343 ms.
6 sec. Current channel.position: 5851 ms, differs: 22 ms. Total differ: 365 ms.
7 sec. Current channel.position: 6873 ms, differs: 22 ms. Total differ: 387 ms.
8 sec. Current channel.position: 7894 ms, differs: 21 ms. Total differ: 408 ms.
9 sec. Current channel.position: 8870 ms, differs: -24 ms. Total differ: 432 ms.
10 sec. Current channel.position: 9891 ms, differs: 21 ms. Total differ: 453 ms.
...
Почему происходит такие задержкы/опережения? Это погрешность таймера или так флеш проигрывает звук?
__________________
ЛОГИКА - залог программирования!

Старый 25.06.2010, 18:10
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Погрешность таймера есть совершенно точно, и вполне вероятно, что позиция проигрывания возвращается также довольно условная (т.к. звук играется блоками некоторого размера).

Старый 26.06.2010, 00:24
ZGG вне форума Посмотреть профиль Отправить личное сообщение для ZGG Найти все сообщения от ZGG
  № 3  
Ответить с цитированием
ZGG
 
Аватар для ZGG

Регистрация: Nov 2005
Адрес: 26°58′49.06″ 49°24′35.72″ Ymaps
Сообщений: 119
Отправить сообщение для ZGG с помощью ICQ Отправить сообщение для ZGG с помощью Skype™
кстати, тоже самое происходит и с getTimer(). Погрешности намного больше. А вот с классом Date - все гуд, хотя насколько я знаю таймер построен на Date.

От блин, целый проект повалился из за этого. (
__________________
ЛОГИКА - залог программирования!


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

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

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


 


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


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