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

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

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

Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
По умолчанию Периодический вызов ф-ии

Всем привет!
такой вопрос по классу Timer:
1) Если таймер отсылает события для вызова ф-ии каждые 500 миллисекунд, то 500 миллисекунд это время между ВЫЗОВАМИ функции,или время от ЗАВЕРШЕНИЯ "предыдущей" до ВЫЗОВА "следующей"?
2) Соответственно из этого вытекает следующий: если эта функция выполняется, скажем, одну секунду, то как поведет себя таймер(т.е. следующая ф-ия вызовется сразу же после завершения предыдущей или таймер подождет полсекунды)?

Заранее спасибо!

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

Регистрация: Sep 2002
Сообщений: 30,787
1) Между.
2) Либо сразу выполнит, либо подожет положенные полсекунды. Сложно сказать, я не пробовал.

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

Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
>> 1) Между

между чем и чем?(там в обоих случаях между)))))


Последний раз редактировалось DimG; 23.06.2007 в 23:13.
Старый 24.06.2007, 00:32
DimG вне форума Посмотреть профиль Отправить личное сообщение для DimG Найти все сообщения от DimG
  № 4  
Ответить с цитированием
DimG
 
Аватар для DimG

Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
Проделал эксперимент: в вызываемой ф-ии сделал трэйс "call from func...", в нее засунул цикл for(var i=0;i<1600000;i++){}, а далее опять трэйс "finish"(частота проца - 1,7 Мг). в конструкторе класса создал timer(1000,0)
по идее эта функция должна выполняться около одной секунды, при этом:
1) если вызов ф-ии происходи через секунду после пред. вызова,то моя ф-ия должна выводить трэйс примерно через каждую секунду;
2) если вызов происходит через секунду после окнчания выполнения функции,то трэйс должен выполняться раз в примерно две секунды.

По логике вещей timer на то и timer,чтобы вызывать ф-ию с УКАЗАННОЙ частотой. Эксперимент примерно это и показывает - трэйс появляется с частотой примерно каждую 1.3 секунды. Наверно это сказывается из-за некоторой тормознутости интерпретатора AVM и ,возможно, трэйса.

Если сделать ф-ию, выполняющуюся более одной секунды:

создал такой код:
Код:
package main
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;

	public class main extends Sprite
	{
		var my_timer:Timer = new Timer(3000,0);
		public function main()
		{
			my_timer.addEventListener(TimerEvent.TIMER,t);
			my_timer.addEventListener(TimerEvent.TIMER,tr);
			my_timer.start();
			
			
		}
		public function t(e:TimerEvent)
		{
			trace("call from timer");
		}
		public function tr(e:TimerEvent)
		{
			trace("function tr() is starting");
			for (var i=0;i<16000000;i++){if(i%100000==0)trace(i);}
			trace("finish");
			trace("/////////////") ;
		}
	}
}

При этом ф-ия выполняется секунды четыре и ЖДЕТ еще секунды три (это слышно по жужжания проца - сильно грузит) Логика вообще непонятна. Если не трудно,объясните плиз

СПС

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

Регистрация: Sep 2002
Сообщений: 30,787
Флеш однопоточен, интервал работает в том же потоке, что и функция. Т.е. выполнение функции считается единовременным (хотя это в реальности далеко не так), следовательно интервал в момент выполнения функции простаивает и не выполняет отсчет времени. В хелпе насчет таймеров и прочего написано, что эти вещи не являются точными, есть множество зависимостей, в т.ч. framerate.

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

Регистрация: May 2006
Адрес: Moscow
Сообщений: 40
Спасибо)

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

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

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


 


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


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