Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Дождаться изменения объекта (http://www.flasher.ru/forum/showthread.php?t=213356)

FactoREAL2 15.09.2016 18:10

Дождаться изменения объекта
 
Здравствуйте. подскажите пожалуйста, как можно дождаться "обновления" объекта и после этого выполнить код ? Суть в следующем: имеется некий объект _global.sub.sub2.my_object. имеется моя ф-ция myFunc(), которая использует этот объект и после выполнения моей ф-ции объект должен измениться. моя ф-ция выполняет действия, которые влекут изменение объекта. но проблема в том, что объект изменяется не мной, а каким-то способом, который мне не известен (черный ящик). я не знаю когда и как именно изменяется объект, но точно знаю что изменения происходят не мгновенно после выполнения моей ф-ции, а с какой-то задержкой. Подскажите как наиболее правильно выполнить в цикле мою ф-цию, что бы на каждой итерации цикла дожидаться изменения объекта. мне нужно примерно следующее:
Код AS1/AS2:

while(условие) {
  myFunc();
}

если я делаю именно так, то моя ф-ция зацикливается т.к. каждый раз она "работает" с одним и тем же объектом _global.sub.sub2.my_object потому что он не успевает измениться.

Bletraut 15.09.2016 19:01

Что значит объект изменяется?

Tails 15.09.2016 19:25

FactoREAL2,
На флеше нельзя использовать бесконечные циклы, из-за этого не произойдёт обновление экрана и всё зависнет.

Вам нужны Timer, setInterval или EnterFrame. Выбирайте что по душе. Но лучше всего, если есть такая возможность, наследовать "объект" от диспетчера и прикрутить ему распуливание событий при изменений свойств. Это самое трезвое решение.

А что за объект? Все нативные флешовые классы имеют события для уведомлений об изменениях.

FactoREAL2 15.09.2016 21:36

Цитата:

Сообщение от Bletraut (Сообщение 1196175)
Что значит объект изменяется?

ну к примеру он был
Код AS1/AS2:

{
  a:{x:1, y:2},
  b:{x:2, y:2}
}

а стал:
Код AS1/AS2:

{
  с:{x:4, y:1}
}

Добавлено через 12 минут
Цитата:

Сообщение от Tails (Сообщение 1196176)
FactoREAL2,
Вам нужны Timer, setInterval или EnterFrame. Выбирайте что по душе. Но лучше всего, если есть такая возможность, наследовать "объект" от диспетчера и прикрутить ему распуливание событий при изменений свойств. Это самое трезвое решение.

я подозреваю что нужно что-то типа setInterval но не знаю как именно воспользоваться им. все что вы пишете про диспатчеры и события наверное правильно, но опять же, я не знаю как устроен этот "объект" (у меня нет исходного кода его реализации). что б вы понимали, я встраиваю свой код в уже работающее приложение. я вижу что есть объект, вижу все его свойства, но не знаю как он реализован. какие он там события генерирует, от какого класса наследуется и т.п. я не знаю. если это все можно узнать (без исходного кода) - подскажите как.

Bletraut 15.09.2016 23:02

Если можешь к объекту обратиться, то можешь на него и слушатель повесить. Я не уверен, но может есть Event.CHANGE?

FactoREAL2 16.09.2016 09:30

нет. по Event.CHANGE ничего не происходит =(


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

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