![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2009
Сообщений: 18
|
Суть следующая - В майн классе создаеться экземпляр класса Train, который делает запрос к серверу, получает json данные, и заполняет себя вагончиками. Дабы как то сообщить пользователю, что ничего не найдено, в ответе есть свойство success, и если оно false выкидываеться исключение. Беда в том, что до места, гда должно случаться исключение, доходит, а вот в майн классе оно не перехватываеться. Код примерно такой:
// Train.as public class Train extends Sprite { .... private var srvData:Object; ..... /** * Constructor * @param Main */ public function Train(main:Main):void { super(); this.main = main; var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.TEXT; loader.addEventListener(Event.COMPLETE, this.populate, false, 0, true); loader.load(new URLRequest(this.main.loaderInfo.parameters.requestUrl)); } .... /** * Populate train with cars from server response */ private function populate(evt:Event):void { var json:JSONDecoder = new JSONDecoder(evt.target.data); this.srvData = json.getValue(); var offset:Number = 0; if(this.srvData.success == false) { ExternalInterface.call('getFromAs', this.srvData.error); // Тут ошибку выводит в яваскрипт throw new Error(this.srvData.error); } // tut vsjakoje chto delatj, jesli success == true } } // Main.as public class Main extends MovieClip { private var train:Train = null; public var currWidth:Number; public function Main():void { super(); this.stage.scaleMode = StageScaleMode.NO_SCALE; this.stage.align = StageAlign.TOP_LEFT; this.stage.addEventListener(Event.RESIZE, this.onResize); this.currWidth = this.stage.stageWidth; try { this.train = new Train(this); } catch(e:Error) { ExternalInterface.call('getFromAs', 'Error 1'); // A тут уже невыводит!!! this.displayError(e); } } ..... } |
|
|||||
|
Замените исключение на событие и ловите его в Main.
Глобальный перехват исключений будет только в плеере версии 10.1 При таком подходе ссылку на Main передавать не обязательно: заполнился = одно событие, ошибка = другое событие
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 06.03.2010 в 19:46. |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 18
|
О, как все запущено...
![]() Спасибо, буду через событие делать. |
|
|||||
|
Modus ponens
|
1. Есть такая штука - ErrorEvent называется - по результату похоже на ошибку, но у него есть определенные преимущества, такие как, например, если его запустить из другого обработчика, то эффект будет такой же, как от обычной ошибки - вылезет окошко с напоминанием, но его еще можно сделать всплывающим (при условии, что диспатчер - DisplayObject, или вы самостоятельно организуете всплывание).
2. в ExternallInterface есть такая штука - marshalExceptions - если ее выставить в true то оно будет стараться передать вам ошибки из JS в AS и наоборот (работает не всегда...) но в простых случаях можно попробовать.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 18
|
wvxvwб, спасибо, посмотрю по ErrorEvent. Ша уже сделал просто через Event, и все ок.
По поводу ExternalInterface интерестно, но в принципе я яваскрипт тут вызывал в целях дебага - к сожадению пока не понимаю, как по другому дебажить мувики, где все зависит от ответов сервера Если дадите ссылочку на описалово грамотного процесса дебага, буду благодарен. |
|
|||||
|
Modus ponens
|
Ну, ток платно
в Билдере / FDT они как бы есть, и как бы нормально работают, можно приконнектится к флешке запущеной издалека и дебажить. в FD дебаггер пока не работает в таком режиме.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|