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

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

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

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
Вопрос по таймауту: какое время задержки нужно задавать, чтобы метод finalizeAdjust выполнился после всего остального кода в текущем кадре?
Если я правильно понимаю, то любого минимального времени (например 1 млс) будет вполне достаточно. Так как выполнение стэка команд в кадре разрываться не может и команда на выполнение метода finalizeAdjust просто добавится в конец. Заапрувьте или поправьте моё понимание

Старый 11.02.2014, 17:48
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
не могу ничего внятного по времени сказать
1 млс это все равно те же 16 мс - типа частота системного таймера в винде, например, а в плеере это может быть вообще что угодно.., ну и потом насколько это принципиально - обновится через 10 или 40 мс ?

Старый 11.02.2014, 17:59
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 13  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Это все-таки неверный подход, по моему мнению. Если есть зависимость от смены кадров - нужно работать с этим событием, а не придумывать костыли в виде:
Цитата:
какое время задержки нужно задавать
Вопрос вашей архитектуры - как протаскивать событие смены кадров.
Можно сделать какой-нибудь глобальный броадкастер, как, например, здесь
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 11.02.2014, 18:00
myakushka вне форума Посмотреть профиль Отправить личное сообщение для myakushka Найти все сообщения от myakushka
  № 14  
Ответить с цитированием
myakushka

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
я просто хочу понять как работает этот таймаут.
если, например, я укажу setTimeout(finalizeAdjust, 20);, а время выполнения последующего кода в этом кадре составит 60 мс, то метод finalizeAdjust выполнится через 60? или через 20 мс выполнение стэка команд в кадре прервется и выполнится метод finalizeAdjust?

Добавлено через 11 минут
carrotoff, собственно сейчас почти так и сделал. Слушаю событие смены кадров через глобальный статический инстанс


Последний раз редактировалось myakushka; 11.02.2014 в 18:12.
Старый 11.02.2014, 20:43
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 15  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от myakushka Посмотреть сообщение
метод finalizeAdjust выполнится через 60?
Ага.

Цитата:
Сообщение от myakushka Посмотреть сообщение
или через 20 мс выполнение стэка команд в кадре прервется и выполнится метод finalizeAdjust?
Неа.
__________________
Поймай яблоко 2!

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

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

Таймаут совсем уж как-то костыльно, по моему мнению.
__________________
hauts.ru

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
информация к размышлению
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.*;
 
	[SWF( frameRate="40")]
	public class Test extends Sprite
	{
		private var log:String = "";
		private var id:int;
 
		public function Test()
		{
			addEventListener(Event.ENTER_FRAME, enterFrame);
		}
 
		private function enterFrame(e:Event):void
		{
 
			_trace("enterFrame   \t" + new Date().getMilliseconds());
			if (!id)start();
		}
 
		private function start():void
		{
			_trace("start      \t\t\t" + time());
			id = setTimeout(traceTime, 10, 10);
			setTimeout(traceTime, 40, 40);
			setTimeout(traceTime, 80, 80);
			setTimeout(traceTime, 160, 160);
 
			setTimeout(stop, 400);
 
			// если нет вычислений в кадре, то таймауты разбредутся  по enterFrame
			// если нагрузить, то все просроченные таймауты выполнятся до ближайшего  enterFrame
			// for (var i:int = 0; i <1e7 ; i++) if(!(i%1e6))_trace( "loop \t\t\t"+ time() );
 
		}
 
		private function stop():void
		{
			removeEventListener(Event.ENTER_FRAME, enterFrame);
			var tf:TextField = new TextField();
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.text = log;
			addChild(tf);
		}
 
		private function _trace(s:String):void
		{
			log += s + "\n";
		}
 
		private function traceTime(val:Number):void
		{
			_trace("timeOut_" + val + "   \t" + time());
 
		}
 
		private function time():Number
		{
			return new Date().getMilliseconds();
		}
	}
 
}
хотя это, конечно, ничего не доказывает - раз поведение таймеров не документировано никак, то и ручаться за однозначность не выходит

Старый 12.02.2014, 12:29
myakushka вне форума Посмотреть профиль Отправить личное сообщение для myakushka Найти все сообщения от myakushka
  № 18  
Ответить с цитированием
myakushka

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
всем спасибо

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

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

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


 


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


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