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

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

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

Регистрация: Mar 2012
Сообщений: 20
По умолчанию задержка на кадре

почему делать задержку на кадре вот таким вот образом не рационально?)

Код AS3:
 stop();
    var i_ex_7:Timer = new Timer(30000, 1);
    i_ex_7.start();
    i_ex_7.addEventListener(TimerEvent.TIMER_COMPLETE, function(e:TimerEvent){
        play();
    });


Последний раз редактировалось rustu; 01.04.2012 в 12:00.
Старый 01.04.2012, 13:04
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 2  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Вполне рационально. Если писать код в кадре. Но писать код в кадре само по себе не рационально и использовать замыкание тоже не хорошо. Лучше создать класс контроллер анимации, или там ещё что-то что управляет вашим клипом. И снаружи стопать когда надо и запускать когда надо. А функцию сделать не анонимной. Тогда это будет вполне хорошо.
__________________
:)

Старый 01.04.2012, 15:11
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Вполне рационально.
Да что вы.
Рационально так
Код AS3:
stop();
setTimeout( function():void { play() } , 30000 )
__________________
Марк Tween

Старый 01.04.2012, 15:17
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 4  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
та же болезнь, анонимные функции. Да и сеттаймаут это ни чуть не лучше таймера.
__________________
:)

Старый 01.04.2012, 15:51
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
setTimeout(play, 30000);
Тогда уж так. Без анонимности, но используя обертку над таймером.
__________________
тут я

Старый 01.04.2012, 15:56
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
КорДум - я ж написал общий пример, ведь кроме плей там может быть еще что.

Цитата:
та же болезнь, анонимные функции. Да и сеттаймаут это ни чуть не лучше таймера.
Да что вы? Откуда такие познания, что сеттаймаут не лучше? А я вам скажу, операция сеттаймаут будет в разы быстрее , чем создание таймера, подписка на событие, которое кстати не забыть бы удалить еще. В данном случае анонимная ( на самом деле анонимная это другое ) функция оправдана вполне, ведь методы такого плана смогут хоть немного нагрузить систему в случае если будут описаны в каждом кадре каждого клипа, да и то не факт

собственно проведите хотя бы тесты , ради приличия :

Код AS3:
for( var i:int = 0 ; i < 1000000 ; i++)  setTimeout( function():void { play() } , 30000 )
for (var j:int = 0 ; j < 1000000 ; j++) var t:Timer = new Timer(30000,1) , t.addEventListener(TimerEvent.TIMER , onTime)
Как просчитать разность думаю знаете
__________________
Марк Tween


Последний раз редактировалось in4core; 01.04.2012 в 15:59.
Старый 01.04.2012, 19:25
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 7  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
in4core без комментариев.

Добавлено через 16 минут
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.utils.getTimer;
	import flash.utils.setTimeout;
	import flash.utils.Timer;
 
	/**
	 * ...
	 * @author Aquah
	 */
	public class Main extends MovieClip 
	{
 
		public function Main():void 
		{
			trace(getTimer());
			for ( var i:int = 0 ; i < 1000000 ; i++)  setTimeout( function():void { play() } , 30000 );
			trace(getTimer());
			for (var j:int = 0 ; j < 1000000 ; j++)
			{
				var t:Timer = new Timer(30000, 1);
				t.addEventListener(TimerEvent.TIMER , onTime)
			}
			trace(getTimer());
		}
 
		public function onTime(evt:TimerEvent):void
		{
 
		}
	}
}
Код:
582
16353
20241
В следующий раз попрошу использовать менее резкий тон и самостоятельно тестировать код который предлагаете тестировать другим
__________________
:)


Последний раз редактировалось Aquahawk; 01.04.2012 в 19:43.
Старый 01.04.2012, 21:39
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Тьфу блин, и правда. извиняюсь. Чтож они там внутри такое сделали что аж 16 секунд (( Хотя на 10000 итераций почти одинаковая скорость, да и на 100000 близки...
__________________
Марк Tween


Последний раз редактировалось in4core; 01.04.2012 в 21:41.
Старый 01.04.2012, 21:43
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 9  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
А то что анонимные функции зло уже столько раз обсуждали что даже лень вообще что либо из аргументов приводить.
__________________
:)

Старый 01.04.2012, 22:15
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
А то что анонимные функции зло уже столько раз обсуждали что даже лень вообще что либо из аргументов приводить.
Это не анонимная функция !! Ну дело даже не в этом, тормозит сам сеттаймаут , пример выше который описал Кордум, работает так же по скорости
__________________
Марк Tween

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

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

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


 


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


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