|
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
реализация постпроцессинга
Здрасьте.
Есть объект, который имеет несколько настроек и состояние. Настройки изменяются извне. Обновить состояние извне невозможно. Если хоть одна из настроек изменилась, то нужно обновить состояние объекта. Класс объекта расширяет EventDispatcher. Задача - сделать одно обновление состояния объекта после изменения одной или нескольких настроек за кадр. хэлпмиплиз Последний раз редактировалось myakushka; 11.02.2014 в 13:35. Причина: смена названия |
|
|||||
Lorem ipsum
|
Самый простой и распространенный способ — хранить timestamp в модели (где меняются данные) и в отображении (где отображается текущее состояние). При изменении модели пиши в timestamp модели текущее время. В отображении же в каждом новом кадре сравнивай значение timestamp с его аналогом в модели. Если в модели он оказался больше, значит с момента последней "перерисовки" модель изменилась. Следовательно нужно "перерисоваться" и записать в timestamp отображения значение из модели.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
Спасибо за способ, возьму на заметку.
Но проблема немного иная. Я могу манипулировать только объектами модели. Доступа к объектам отображения нет, сл-но и к событиям смены кадров тоже. И обновлять нужно не объекты отображения, а объекты модели. |
|
|||||
Lorem ipsum
|
Что значит нет доступа — код объекта недоступен для изменения? Это скомпилированная кем-то SWC/SWF?
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
Нет, просто у меня mvc)
В модели не содержится отображаемых объектов и заводить их там нельзя: - нельзя создавать фэйковый шейп, который будет являться проводником для enter_frame - нельзя протягивать в модель снаружи какой-либо контейнер отображаемых объектов для тех же целей. "нельзя" всмысле не хочу и не буду |
|
|||||
Lorem ipsum
|
Ну так я тебе и рассказал как поступать в рамках MVC. Проверка timestamp модели и отображения производятся в отображении:
1. оно имеет ссылку на модель и может дернуть геттер timestamp 2. оно знает, когда новый кадр Что не так?
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
Мы друг друга пока не поймем
Отображение сейчас трогать вообще не надо. У меня настройка одного из объектов в моделе производится в несколько этапов. И после этих настроек ему нужно обновить своё внутреннее состояние (не отображение). |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Покажите минимальный пример, а то не понятно. Вам нужно обновлять вложенный объект, но так-как он внизу иерархии, события ему не послать, так?
|
|
|||||
>>И после этих настроек ему нужно обновить своё внутреннее состояние
как вариант: каждая из настроек запускает апдейт с неким таймаутом, сбрасывая предыдущий запуск т.е. обновление выполнится только один раз при любом изменении, если об этом речь |
|
|||||
Lorem ipsum
|
Понял. Значит при внесении отдельных изменений устанавливать флаг изменений. А когда наступает время "обновиться" (в каждом кадре?) смотрим на этот флаг, если он указывает, что были внесены изменения, обновляемся. В конце флаг снова сбрасывается.
Хочешь ты или нет, но если тебе нужно менять модель раз в кадр, то она должна иметь либо публичный метод, который мы будем дергать покадрово, либо сама следить за событием ENTER_FRAME (EXIT_FRAME) какого-то DisplayObject.
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 07:29. |
|
« Предыдущая тема | Следующая тема » |
|
|