Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.03.2010, 19:37
john.brown вне форума Посмотреть профиль Отправить личное сообщение для john.brown Найти все сообщения от john.brown
  № 1  
Ответить с цитированием
john.brown

Регистрация: Oct 2009
Сообщений: 18
По умолчанию Непонятка с try..catch

Суть следующая - В майн классе создаеться экземпляр класса Train, который делает запрос к серверу, получает json данные, и заполняет себя вагончиками. Дабы как то сообщить пользователю, что ничего не найдено, в ответе есть свойство success, и если оно false выкидываеться исключение. Беда в том, что до места, гда должно случаться исключение, доходит, а вот в майн классе оно не перехватываеться. Код примерно такой:
Код AS3:
// 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);
		}
	}
	.....
}
Помогите разобраться, плз.

Старый 06.03.2010, 19:44
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Замените исключение на событие и ловите его в Main.
Глобальный перехват исключений будет только в плеере версии 10.1

При таком подходе ссылку на Main передавать не обязательно: заполнился = одно событие, ошибка = другое событие
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 06.03.2010 в 19:46.
Старый 06.03.2010, 20:06
john.brown вне форума Посмотреть профиль Отправить личное сообщение для john.brown Найти все сообщения от john.brown
  № 3  
Ответить с цитированием
john.brown

Регистрация: Oct 2009
Сообщений: 18
О, как все запущено...
Спасибо, буду через событие делать.

Старый 06.03.2010, 20:24
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
1. Есть такая штука - ErrorEvent называется - по результату похоже на ошибку, но у него есть определенные преимущества, такие как, например, если его запустить из другого обработчика, то эффект будет такой же, как от обычной ошибки - вылезет окошко с напоминанием, но его еще можно сделать всплывающим (при условии, что диспатчер - DisplayObject, или вы самостоятельно организуете всплывание).
2. в ExternallInterface есть такая штука - marshalExceptions - если ее выставить в true то оно будет стараться передать вам ошибки из JS в AS и наоборот (работает не всегда...) но в простых случаях можно попробовать.
__________________
Hell is the possibility of sanity

Старый 06.03.2010, 20:48
john.brown вне форума Посмотреть профиль Отправить личное сообщение для john.brown Найти все сообщения от john.brown
  № 5  
Ответить с цитированием
john.brown

Регистрация: Oct 2009
Сообщений: 18
wvxvwб, спасибо, посмотрю по ErrorEvent. Ша уже сделал просто через Event, и все ок.

По поводу ExternalInterface интерестно, но в принципе я яваскрипт тут вызывал в целях дебага - к сожадению пока не понимаю, как по другому дебажить мувики, где все зависит от ответов сервера Если дадите ссылочку на описалово грамотного процесса дебага, буду благодарен.

Старый 07.03.2010, 00:59
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, ток платно в Билдере / FDT они как бы есть, и как бы нормально работают, можно приконнектится к флешке запущеной издалека и дебажить. в FD дебаггер пока не работает в таком режиме.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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