Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Узнать класс экземпляра вызвавший статичный метод класса. Как? (http://www.flasher.ru/forum/showthread.php?t=149984)

artfabrique 04.02.2011 18:45

Не не шатл. Поиск пути по динамическим графам + много много физики (много тел)

Добавлено через 25 минут
а насчет неудаленных вовремя объектов — код внутри них продолжает выполняться, что мешает логике программы, события баблятся, например, или еще что. Так что у меня получается 2 причины по которым я не буду использовать дикшенари.

Psycho Tiger 04.02.2011 19:26

У Вас каша в голове. Куда события могут отбабблиться если они удалены?
Dictionary это тот же Object, но расширенный до возможности различать объекты.
Код в неудаленных, но подготовленных для этого объектах выполняться не будет. Есть исключения, вроде подписок на ENTER_FRAME в определенных условиях, но у программиста есть голова на плечах, чтобы отписаться.

artfabrique 04.02.2011 19:34

События бабляться в своих бывших родителей. Не нада мне рассказывать что такое дикшинари. Если я так говорю, сделайте вывод, что эта проблема есть. И прочитайте заголовок темы:
"Узнать класс экземпляра вызвавший статичный метод класса. Как?"

derhab 04.02.2011 19:43

после удаления дисплей объекта из его контейнера ничего не баблится в контейнер от удаленного объекта

Psycho Tiger 04.02.2011 20:19

Цитата:

Если я так говорю, сделайте вывод, что эта проблема есть.
Она есть только у Вас, и выводы делать лучше Вам.

expl 04.02.2011 21:14

Цитата:

Сообщение от Psycho Tiger (Сообщение 970294)
Увы, никак.

На самом деле можно получить информацию о том, кто вызвал функцию
Но как :) (про последствия применения вообще молчу)

Код AS3:

                      try
                        {
                                throw new Error();
                        }
                        catch (error:Error)
                        {
                              var text:String = error.getStackTrace();
                                // здесь парсим text и выкусываем имена функций,
                                // не понятно правда как достать объекты, к которым они принадлежат и вызвать
                                // их
                                trace(text);
                        }


mikhailk 04.02.2011 21:32

я это проверял
достаточно так:

Код AS3:

var error:Error = new Error();
trace(error.getStackTrace());

но объект так не достать

Psycho Tiger 04.02.2011 22:48

@expl, я как бэ это уже расписал постами выше. Объект не достать никак, можно получить строчку кода и стек вызовов. Вещь для логгеров и поиска ошибки, не более.

@mikhalik: new Error().getStackTrace(). Зачем плодить локальные? =)

mikhailk 04.02.2011 23:25

Цитата:

new Error().getStackTrace(). Зачем плодить локальные? =)
от жадности, полагаю :)

artfabrique 05.02.2011 01:15

Цитата:

Сообщение от Psycho Tiger (Сообщение 970450)
Она есть только у Вас, и выводы делать лучше Вам.

Если вы думаете, что в плеере нет багов, вот уже одна из явно определенных проблем Дикшенари:
«Note that there is a known bug with Dictionary that prevents it from operating correctly with references to methods. It seems that Dictionary does not resolve the method reference properly, and uses the closure object (ie. the “behind the scenes” object that facilitates method closure by maintaining a reference back to the method and its scope) instead of the function as the key. This causes two problems: the reference is immediately available for collection in a weak Dictionary (because while the method is still referenced, the closure object is not), and it can create duplicate entries if you add the same method twice. This can cause some big problems for things like doLater queues.»
Пишет не безызвестный gsinner


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

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