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

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

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от udaaff Посмотреть сообщение
Я лишь пытаюсь смотреть на задачу в общем виде. Если у нас будет 400 детей рендомно распределяемых по области, то считать рендом 800 раз, вместо 400, не очень хотелось бы.
Я думаю, что в данном случаи можно найти просто другой выход.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 08.12.2012, 12:58
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Допустим ты подписан на Event.ENTER_FRAME.
Там ты изменил width, там новое значение записалось в _width и для changed выставилось true, что в свою очередь вызвало stage.invalidate (), но пересовки нет.
Потом ты изменил height и там произошло тоже самое, что и с width.
Далее выполняется еще какой-то то код.
Но вот, все выполнилось. И плеер собирается перерисовать экран, то тут он видит, что был вызван stage.invalidate () и поэтому он посылает Event.RENDER, который у твоего объекта вызывает метод redraw и где ты стираешь graphics и рисуешь его заново.
Это всё понятно. Опять возвращаемся к началу. Почему если вызвать width/height по разу в ENTER_FRAME объект перерисуется дважды, но если то же самое сделать в Event.RENDER – объект перерисуется один раз? Когда происходит первая отрисовка, когда происходит вторая, и почему в случае с инвалидацией перерисовка происходит только раз?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Это всё понятно. Опять возвращаемся к началу. Почему если вызвать width/height по разу в ENTER_FRAME объект перерисуется дважды, но если то же самое сделать в Event.RENDER – объект перерисуется один раз? Когда происходит первая отрисовка, когда происходит вторая, и почему в случае с инвалидацией перерисовка происходит только раз?
Вот код, который рисует прямоугольник
Код AS3:
graphics.clear ();
graphics.beginFill (_color);
graphics.drawRect (0, 0, _width, _height);
graphics.endFill ();
В зависимости от разных факторов height и width могут поменять, а могут и нет.
И когда ты поменял любой из этих параметров, ты не знаешь будет ли меняться второй. Поэтому в переопределенном сеттере ты вызываешь этот код. И если ты меняешь второй параметр, он снова перерисуется.
Ты конечно можешь в сеттере не вызывать перерисовку, а вызвать ее вручную в самом конце кода, когда знаешь, что размеры уже заданы. Но этот способ не всегда подойдет. Да и нужно каждый раз перерисовку указывать явно.

А invalidate откладывает перерисовку на потом, когда весь код уже выполнился и осталось только вывести изображение.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А есть пример этой "двойной отрисовки"? А то я ни разу не видел. Не понимаю, как такое возможно. Если только сеттеры переписаны, да не просто так, а с ожиданием ентерфрейма (или, более вероятно, с использованием твинов). А так то естественно выполнится весь код в кадре и только потом произойдет рендер. Один. Не два)
__________________
Reality.getBounds(this);

Старый 09.12.2012, 12:13
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Понятно, мы о разных вещах говорим. Я говорил о сеттерах width/height у DO, а ты о graphics. Что странно, ведь код во третьем посте был дан для width/height у спрайта. Мои вопросы касаются только сеттеров, конечно.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Понятно, мы о разных вещах говорим. Я говорил о сеттерах width/height у DO, а ты о graphics. Что странно, ведь код во третьем посте был дан для width/height у спрайта. Мои вопросы касаются только сеттеров, конечно.
Ну и толку от твоих вопросах про сеттеры? Вопрос надо рассматривать в целом, только тогда от него есть толк.

В первом посте рассказывалась суть инвалидации, поэтому там redraw был пуст.
Код AS3:
override protected function redraw ():void {
	trace ("Я изменился! " + _width + " " + _heigth);
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 09.12.2012, 18:42
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Ну и толку от твоих вопросах про сеттеры? Вопрос надо рассматривать в целом, только тогда от него есть толк.
А зачем рассказывать про инвалидацию у graphics, когда вопрос был задан про DisplayObject?

Речь была про то что если за кадр дёргается не более одного раза один сеттер width/height инвалидатор точно лишний. Мне подумалось о каком-то незримом эффекте от Event.RENDER'a, который незадокумментирован, поэтому я и ударился в распросы, но проблема оказалась в недопонимании. Спасибо за объяснения )

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
А зачем рассказывать про инвалидацию у graphics, когда вопрос был задан про DisplayObject?

Речь была про то что если за кадр дёргается не более одного раза один сеттер width/height инвалидатор точно лишний. Мне подумалось о каком-то незримом эффекте от Event.RENDER'a, который незадокумментирован, поэтому я и ударился в распросы, но проблема оказалась в недопонимании. Спасибо за объяснения )
Тигер, ты реально не понимаешь, что речь идет не о графикс?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 12.12.2012, 11:35
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Сообщение от iNils Посмотреть сообщение
Тигер, ты реально не понимаешь, что речь идет не о графикс?
Я реально не понимаю, зачем нужен инвалидатор в объектах, которым за фрейм меняют width/height один раз. Где их менять – не важно, если речь идёт не о полной перерисовке graphics.

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

Регистрация: Jul 2008
Сообщений: 912
Топикстартер вообще в шоке, он всего лишь спросил: "как изменить одновременно ширину и высоту спрайта")))

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

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

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


 


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


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