Показать сообщение отдельно
Старый 23.05.2012, 15:36
V01D вне форума Посмотреть профиль Отправить личное сообщение для V01D Найти все сообщения от V01D
  № 1  
Ответить с цитированием
V01D

Регистрация: May 2012
Сообщений: 10
Question Проверка существования класса

Много уже нарыл здесь...
Только не получаеса!

Значитса классы для звуков я определяю так:
Код AS3:
[Embed(source = "../../lib/Source/Battle/sound/1/1.mp3")] private var Bs_1_1_cls : Class;
[Embed(source = "../../lib/Source/Battle/sound/1/2.mp3")] private var Bs_1_2_cls : Class;
...
[Embed(source = "../../lib/Source/Battle/sound/2/1.mp3")] private var Bs_2_1_cls : Class;
[Embed(source = "../../lib/Source/Battle/sound/2/2.mp3")] private var Bs_2_2_cls : Class;
..
[Embed(source = "../../lib/Source/Battle/sound/n/1.mp3")] private var Bs_n_1_cls : Class;
[Embed(source = "../../lib/Source/Battle/sound/n/2.mp3")] private var Bs_n_2_cls : Class;
      ...[Embed(source = "../../lib/Source/Battle/sound/n/m-1.mp3")] private var Bs_n_m-1_cls : Class;
         [Embed(source = "../../lib/Source/Battle/sound/n/m.mp3")] private var Bs_n_m_cls : Class;
Затем для создания объектов на основе этих классов
Определяю массив
Код AS3:
public var SoundObj : Array = new Array();
Далее в коде хочу сослатся на эти классы и получить объекты в массиве!
Код AS3:
var RabArrSound : Array;	
for (i= 1; i <= n ; i++) {	
           if (this["Bs_" + String(i) + "_1_cls"]) {
		RabArrSound = new Array();
		SoundObj[i] = RabArrSound;
	}else{
		break;
	}	
	for (var j:int = 1; j <= m ; j++) {	
		 if (this["Bs_" + String(i) + "_" + String(j) + "_cls"]) {			 
			SoundObj[i][j] = new this["Bs_" + String(i) + "_" + String(j) + "_cls"]();
		}
	}
}
Для корректного обращения в ходе программы.


- m - для различных i могут быть разные; поэтому берется максимальное значение!
- (т.е. нужна проверка на существование классов(что и видно в коде))
- кроме того некоторые i - в классах могут отсутствовать (смотреть предвдущий пункт)

Выдает ошибку при обращении к несуществующему классу

Код AS3:
if (this["Bs_" + String(i) + "_1_cls"]) {
...
 if (this["Bs_" + String(i) + "_" + String(j) + "_cls"]) {
...
Какую проверку здесь можно использовать, чтобы не заморачиватся на наличие или отсутствие класса?


Пробовал:
ApplicationDomain.currentDomain.hasDefinition
Как здесь советовали:
http://www.flasher.ru/forum/showthre...=111716&page=2

Но на все запросы:
Код AS3:
ApplicationDomain.currentDomain.hasDefinition("Bs_" + String(i) + "_" + String(j) + "_cls")
Выдает false

try catch использовать не хочу...

Подскажите что в этом случае можно сделать...