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

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

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

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
По умолчанию реализация постпроцессинга

Здрасьте.
Есть объект, который имеет несколько настроек и состояние. Настройки изменяются извне. Обновить состояние извне невозможно. Если хоть одна из настроек изменилась, то нужно обновить состояние объекта. Класс объекта расширяет EventDispatcher.
Задача - сделать одно обновление состояния объекта после изменения одной или нескольких настроек за кадр.
хэлпмиплиз


Последний раз редактировалось myakushka; 11.02.2014 в 13:35. Причина: смена названия
Старый 11.02.2014, 14:09
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Самый простой и распространенный способ — хранить timestamp в модели (где меняются данные) и в отображении (где отображается текущее состояние). При изменении модели пиши в timestamp модели текущее время. В отображении же в каждом новом кадре сравнивай значение timestamp с его аналогом в модели. Если в модели он оказался больше, значит с момента последней "перерисовки" модель изменилась. Следовательно нужно "перерисоваться" и записать в timestamp отображения значение из модели.
__________________
Поймай яблоко 2!

Старый 11.02.2014, 14:25
myakushka вне форума Посмотреть профиль Отправить личное сообщение для myakushka Найти все сообщения от myakushka
  № 3  
Ответить с цитированием
myakushka

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
Спасибо за способ, возьму на заметку.
Но проблема немного иная. Я могу манипулировать только объектами модели. Доступа к объектам отображения нет, сл-но и к событиям смены кадров тоже. И обновлять нужно не объекты отображения, а объекты модели.

Старый 11.02.2014, 14:52
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от myakushka Посмотреть сообщение
Доступа к объектам отображения нет, сл-но и к событиям смены кадров тоже.
Что значит нет доступа — код объекта недоступен для изменения? Это скомпилированная кем-то SWC/SWF?
__________________
Поймай яблоко 2!

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

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
Нет, просто у меня mvc)
В модели не содержится отображаемых объектов и заводить их там нельзя:
- нельзя создавать фэйковый шейп, который будет являться проводником для enter_frame
- нельзя протягивать в модель снаружи какой-либо контейнер отображаемых объектов для тех же целей.
"нельзя" всмысле не хочу и не буду

Старый 11.02.2014, 15:41
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Ну так я тебе и рассказал как поступать в рамках MVC. Проверка timestamp модели и отображения производятся в отображении:

1. оно имеет ссылку на модель и может дернуть геттер timestamp
2. оно знает, когда новый кадр

Что не так?
__________________
Поймай яблоко 2!

Старый 11.02.2014, 16:09
myakushka вне форума Посмотреть профиль Отправить личное сообщение для myakushka Найти все сообщения от myakushka
  № 7  
Ответить с цитированием
myakushka

Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Проверка timestamp модели и отображения производятся в отображении
Мы друг друга пока не поймем
Отображение сейчас трогать вообще не надо. У меня настройка одного из объектов в моделе производится в несколько этапов. И после этих настроек ему нужно обновить своё внутреннее состояние (не отображение).

Старый 11.02.2014, 16:13
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Покажите минимальный пример, а то не понятно. Вам нужно обновлять вложенный объект, но так-как он внизу иерархии, события ему не послать, так?

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>И после этих настроек ему нужно обновить своё внутреннее состояние
как вариант: каждая из настроек запускает апдейт с неким таймаутом, сбрасывая предыдущий запуск
Код AS3:
clearTimeout(id);
id=setTimeout(finalizeAdjust, 20);
т.е. обновление выполнится только один раз при любом изменении, если об этом речь

Старый 11.02.2014, 17:19
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от myakushka Посмотреть сообщение
Отображение сейчас трогать вообще не надо.
Понял. Значит при внесении отдельных изменений устанавливать флаг изменений. А когда наступает время "обновиться" (в каждом кадре?) смотрим на этот флаг, если он указывает, что были внесены изменения, обновляемся. В конце флаг снова сбрасывается.
Хочешь ты или нет, но если тебе нужно менять модель раз в кадр, то она должна иметь либо публичный метод, который мы будем дергать покадрово, либо сама следить за событием ENTER_FRAME (EXIT_FRAME) какого-то DisplayObject.
__________________
Поймай яблоко 2!

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

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

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


 


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


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