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

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

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

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

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 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, 13:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 33  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

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

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 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

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

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

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 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
  № 37  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

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

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

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

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

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

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

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

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Извиняюсь за практически некропостинг, но я нашел тот топик на stackoverflow, где у кого то не работал RENDER

http://stackoverflow.com/questions/7...age-invalidate

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

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

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


 


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


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