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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.05.2006, 15:37
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 21  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Цитата:
Сообщение от ETC
Madasan, твой пример мне непонятен, this в функции enteRFrame куда ссылается?
this ссылается на объект активации функции, откуда мы ее вызовем, такой и будет this. В данном случае это будет mc
Цитата:
Сообщение от ETC
delete удаляет саму функцию из памяти, а не объект, который её содержит.
В моем примере, onEnterFrame содержит ссылку на функцию enteRFrame, и что же в этом случае удаляет delete? В твоем примере, ты присваиваешь каждому мувику отдельную функцию, и у тебя их соответственно в памяти висит столько, сколько мувиков ты и создаешь. У меня одна функция, и onEnterFrame каждого мувика ссылается на нее, так что delete onEnterFrame никак не может ее удалить, он удаляет только ссылку.
Цитата:
Сообщение от ETC
Я не вижу смысла удалять функцию перед тем, как заново ей присваивать значение.
А я не вижу смысла создавать 10000 мувиков и каждому задавать onEnterFrame. Это просто тэст, который показывает, что присвоение значения переменной происходит быстрее, чем создание новой переменной.
Цитата:
Сообщение от ETC
Как правило, если нужно остановить onEnterFrame, то останавливается он не на время выполнения двух строк кода, а на гораздо большее. Возможно, постоянно медленно работающее приложение тебя устроит больше, чем приложение, которое, хоть и подтормаживает при выполнении действий с onEnterFrame, но после их выполнения работает ощутимо быстрее...
Как правило да, но не всегда. Иногда нужно прерывать всего на несколько интераций, с достаточно большой частотой, и при этом нет необходимости полностью удалять функцию, если тут же придется ее создавать заново.(т.е. опять подписывать клип)

Цитата:
Сообщение от ETC
а другая часть просто отжирает процессорное время, ничего не делая, то потом можно не удивляться, почему тормозит...
Так вот, если работник пришел на работу, и в течении какого-то времени ему нечем заняться, то это не значит, что его надо отправлять домой, а потом снова вызывать. Если ему нечего делать всего несколько минут, он может и подождать, а если пауза большая, то его с работы можно пока и удалить.
А так, все правильно , и разница действительно есть и null для того и существует, чтобы переменная была, пусть и пустая, но нам она еще пригодиться.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

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

Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
Смысл кода такой, что есть два обработчика OnEnterFrame, первый считает число кадров, а второй выполняет некоторые действия, например программное рисование. Через 5 секунд мы отключаем второй обработчик 2 разными способами
Код:
test.onEnterFrame = null;
и
Код:
delete test.onEnterFrame;
и независимо от способа результат не меняется.
2 ETC. Запости как ты трассировал переменные. Кстати, ты не думаешь о том, что обрботчик onEnterFrame вызывается кодом, подобным
Код:
function CallEnterFrame(target)
{
    if(target.onEnterFrame)
        target.onEnterFrame();
}
Разумеется, что этот код написан на C++, но наверняка он имеет подобный вид, и соответственно не имеет значения, определена ли переменная onEnterFrame или она равна null
__________________
Всё гениальное просто.

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

Регистрация: Sep 2002
Сообщений: 30,787
Ctrl+Alt+V я трейсил.
Результат у тебя не меняется в силу того, что при наличии всего одного объекта разница не ощутима.
Функция может и не вызываться, но при null она в памяти есть.

Старый 15.05.2006, 18:05
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 24  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
for (i = 0; i < 2000; i++) {
	this.createEmptyMovieClip ("mc" + i, i);
	this["mc" + i].onEnterFrame = null;
}
загрузка процессора у меня порядка 8-11%
Код:
for (i = 0; i < 2000; i++) {
	this.createEmptyMovieClip ("mc" + i, i);
}
а так 2-4%
кому не нравится отсутствие onEnterFrame во втором примере, может сделать так
Код:
f = function () {
	delete this.onEnterFrame;
};
for (i = 0; i < 2000; i++) {
	this.createEmptyMovieClip ("mc" + i, i);
	this["mc" + i].onEnterFrame = f;
}
будут теже 2-4% (относительно моей машины)
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 15.05.2006 в 18:13.
Старый 15.05.2006, 19:33
Homo Sapiens вне форума Посмотреть профиль Отправить личное сообщение для Homo Sapiens Посетить домашнюю страницу Homo Sapiens Найти все сообщения от Homo Sapiens
  № 25  
Ответить с цитированием
Homo Sapiens
 
Аватар для Homo Sapiens

Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
2 ETC, спасибо, не знал про это
2 All, ну бог знает, я не знаю наверняка, вполне возможно, что delete работает действительно быстрее...
__________________
Всё гениальное просто.

Старый 15.05.2006, 20:42
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 26  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Цитата:
Сообщение от Homo Sapiens
2 All, ну бог знает, я не знаю наверняка, вполне возможно, что delete работает действительно быстрее...
Да нет быстрее работает не delete, а весь мувик, когда его освободишь от 2000 пустых энтерфреймов.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

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

Регистрация: Sep 2002
Сообщений: 30,787
именно

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

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

Старый 15.05.2006, 20:55
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 29  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
мораль проста: просто так одним только энтерфреймом машину не повесишь - надо проявить смекалку :~)
__________________
Хороший отдых - половина работы.

Старый 15.05.2006, 21:02
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 30  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Цитата:
Сообщение от Nirth
Beta-tester почитай в хелпе про delete
Я бы посоветовал вообще доку почитать. Азы объяснять утомляет.

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

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

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


 


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


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