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

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

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
По умолчанию что такое исключение ScriptTimeoutError и зачем оно нужно?

в книге Мука написано:
"Чтобы избежать появления исключений ScriptTimeoutError, весь код должен быть разработан таким образом, чтобы его выполнение завершалось в течение интервала, определяемого параметром компиляторатах-execution-time. Для выполнения задачи, которой требуется больше времени, чем позволяет разрешенный лимит времени, разбейте ее на части, которые могут быть выполнены в течение времени, определяемого параметром max-execution-time, а затем используйте класс Timer, чтобы организовать выполнение этих частей кода."

не понимаю ничего, как это работает?

т.е. код выполняется как-то частями между событиями ENTER_FRAME что ли? и может не успеть выполниться, если слишком много кода или про что это? :\\

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Допустим есть цикл (но не обязаетльно цикл), в котором очень увесистая обработка объектов, например перекодировка изображений. Или цикл, с бесконечным выполнением, как например while(true) {}
Если не будет таймаута на выполнение, такой код запросто повесит все приложение или даже все устройство. А по таймауту, зависший код в любом случае рубанется

Старый 29.09.2015, 21:41
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
т.е. код выполняется как-то частями между событиями ENTER_FRAME что ли? и может не успеть выполниться, если слишком много кода или про что это? :\\
Да. Мук предлагает выполнять код между вызовами таймера TimerEvent.TIMER,но можно и по энтер_фрейм. Следующий ENTER_FRAME не наступит пока код текущего не закончит выполняться.Тут можно не волноваться.С таймером тоже самое.

Старый 29.09.2015, 21:49
nelco вне форума Посмотреть профиль Отправить личное сообщение для nelco Найти все сообщения от nelco
  № 4  
Ответить с цитированием
nelco
 
Аватар для nelco

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
а я почему-то подумал, что наоборот... что следующий ENTER_FRAME наступит сам и если за это время код предыдущего не выполнился, то всё - вылезет это исключение... не понимаю вообще как код зависит от ENTER_FRAME?
получается, что ENTER_FRAME есть как бы двух видов что ли? один - который принудительный (24 кадра в сек.) а второй - это когда сделали addChild в коде? и при чём тут код?
или имеется в виду только код, когда функция выполняется при подписке на событие ENTER_FRAME?

Добавлено через 4 минуты
до прочтения этой главы думал, что кадры (и соответственно события кадров ENTER_FRAME) есть только у MovieClipa... а теперь вроде как, получается, что и у Sprite есть? или это ENTER_FRAME сцены? ещё сильнее запутался, какой там код может не успеть выполниться... :\

Старый 29.09.2015, 22:14
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 5  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Всё очень просто. Флешь плеер работает таким образом:

Код:
КАДР 1:
1. Выполняет ваш код.
2. Рисует картинку на экране.

КАДР 2:
1. Выполняет код.
2. Рисует картинку.

КАДР 3:
1. Выполняет код.
2. Рисует картинку.

...

И так бесконечно, пока вы не закроете окно флешь плеера.
Так вот, пока не будет выполнен этап 1 (Полностью), флешь не начнёт обновление экрана. Если ваш код зависнет на 15 сек, флешь плеер перестанет его обрабатывать и перейдёт к отрисовке экрана. Та частота кадров, которую вы задаёте своему swf, она не обязательно будет такой. Если ваш код зависнет на 15 секунд, то у вас частота кадров будет 1 кадр в 15 секунд. Если у вас будет очень тяжёлая графика, ваша фактическая частота кадров так же снизится.

Событие EnterFrame получают любые дисплей объекты, подписавшиеся на него. Даже те, что не мувиклипы и даже те, что не находятся на экране. Вы правильно поняли, это событие относится к сцене.
__________________
Дети не должны знать о своих родителях

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
а если у меня на сцене кодом создан только один спрайт, то всё равно идёт обновление stage 24 кадра в сек даже если я не делаю addChild?

Старый 29.09.2015, 23:08
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 7  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
то всё равно идёт обновление stage 24 кадра в сек даже если я не делаю addChild?
Да.Рассматривай событие ENTER_FRAME как метроном, который тикает независимо от кода.Если код тяжелый -тикание замедляется.Если кода нет совсем - тикает с частотой = fps. У большинства дисплей обжектов этот метроном свой.Для производительности предпочтительнее подписываться на ENTER_FRAME стэйджа и делать все обновления дисплей листа там.
Цитата:
Событие EnterFrame получают любые дисплей объекты
Все же не любые.TextField, например, DO но энтер_фрейм не кидает.

Старый 30.09.2015, 00:16
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 8  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
энтер-фрейм что-то вроде того же таймера, вы указываете максимальное количество кадров в секунду, а вот успеет ли он их выполнить, вопрос второй. К примеру создайте движущийся объект и поиграйтесь с количеством кадров

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
У большинства дисплей обжектов этот метроном свой.
Это как так? ENTER_FRAME дословно переводится как "Вход в кадр", а ещё есть событие EXIT_FRAME, это "Выход из кадра". И вход и выход для всех ДО синхронизированы.
Цитата:
Для производительности предпочтительнее подписываться на ENTER_FRAME стэйджа и делать все обновления дисплей листа там.
Для производительности ли, или для идеализации кода, предпочтительнее подписываться на ENTER_FRAME в мейне, и обновлять всех детей с помощью метода update, в который передавать кол-во прошедшего времени. При этом нигде и ни при каких обстоятельствах больше не подписываться на ENTER_FRAME.
__________________
There is no thing in this world that is not simple.

Старый 30.09.2015, 11:22
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Всесто тысячи слов.
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

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


 


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


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