- Второй раз сталкиваюсь с тем, что флэш плеер не выбрасывает исключение там, где это нужно. На этот раз — при неправильном приведении типов. Странно это. До сих пор не было такой беды, а тут за два дня два раза :(#424955from 46E70C95, 25 months ago
Replies (26)
- @prof:Не верю! Пример — в студию. И описание окружения.#424955/1from 38867389431260892736689565, 25 months ago
- @yzh44yzh:@prof Ну весь проект я тебе не отдам. Кусок кода покажу, только ты его не скомпилишь :)
<mate:EventHandlers type="{RoomEvent.LEAVE}" debug="true">
<mate:MethodInvoker generator="{MainChatManager}"
method="LeaveRoom" arguments="{[event.roomID]}"/>
<!-- do something else -->
</mate:EventHandlers>
public function LeaveRoom(room : RoomVO) : void
Тут метод ждет RoomVO, а получает String. И ничего, просто метод не срабатывает (trace в первой строке метода не работате), но приложение продолжает работать как ни бывало.#424955/2from 46E70C95, 25 months ago, in reply to /1 - @prof:@yzh44yzh Так не пойдет. Ты утверждаешь, что бывают случаи, когда флэш плеер не выкидывает исключения, хотя должен. Я не верю (следовательно, как бы утверждаю, что ошибка в твоем коде, или в окружении). Поэтому нужно код, который я смогу скомпилить и запустить в нужном окружении, чтобы увидеть то, что видишь ты.
На самом деле я верю, что в флэше возможно все, и хочу понять, как мне не наступить на сии грабли.#424955/4from 38867389431260892736689565, 25 months ago, in reply to /2 - @yzh44yzh:@prof Проверил. Да, ты прав. Mate перехватывает исключение и пишет в trace. Только в браузере я эти трейсы не вижу. Это стремно, придется полазить в сорцах Mate и заменить стандартные trace() на мой Debug.Trace(), я то я ничего не вижу, что там Mate пишет.#424955/6from 46E70C95, 25 months ago, in reply to /5
- @7thsky:а может это инкрементная компиляция? очень часто случается что просто используется старый код#424955/9from Adium67C111DA, 25 months ago
- @yzh44yzh:@prof Просто у меня свой отладчик, который работает через LocalConnection. trace я вижу только когда запускаю приложение из IDE. А когда в браузере — не вижу.
Проблема в том, что приложение многопользовательское и нужно запускать несколько экземпляров приложения для теста. Из IDE не получить так сделать.
Нужно пересмотреть отладку. Либо читать из логов стандартные trace (куда они там пишутся), либо модифицировать сорцы Mate.#424955/10from 46E70C95, 25 months ago, in reply to /7 - @yzh44yzh:@prof ну да, только в моем отладчике логи смотреть удобнее: фильтры там, подсветка разными цветами. А главное, tracy из разных экземпляров приложения отображаются в разных потоках. В обычных логах хрен разберешь, что из какого экземпляра пришло.#424955/12from 46E70C95, 25 months ago, in reply to /11
- @yzh44yzh:Вы будете смеяться, но я никак не могу обратиться к объекту Debugger, чтобы вызывать addLogger :(
<mate:Debugger id="debugger" level="{Debugger.ALL}"/>
<mx:Script>
debugger.addLogger() — Access of undefined property debugger
</mx:Script>
не компилируется
<maps:InjectorsMap id="inj"/>
<mx:Script>
inj.debugger.addLogger(); — Access of undefined property inj
</mx:Script>
Посмотрел сгенеренный AS код — вроде все ок. Есть класс карты, есть public свойство debugger. Хрен знает, что тут творится :(#424955/19from 46E70C95, 25 months ago - @yzh44yzh:@7thsky Блин, я дятел. В этой области видимости this еще нету.
<mx:Script><![CDATA[
ddd.addLogger(Debug.GetLogger());
]]></mx:Script>
в компонетнах можно было бы юзать creationComplete, но в карте не будет такого события
сча погляжу, как бы добраться до нормальной области видимости#424955/22from 46E70C95, 25 months ago, in reply to /21
