Руководство по actionscript. часть 3, стр. 006
Public function newQuestion ( ):void { // Получаем полный список типов элементов (массив пространств имен) var itemTypes.-Array = gameltems. get ItemTypes ( ); // Случайным образом выбираем тип элемента (одно из пространств имен, // на которые ссылается переменная itemTypes) var randomltemType:Namespace = itemTypes[Math. floor(
Math. random( )*itemTypes.1ength)];
// Получаем элементы набора, выбранного случайным образом var items:Array = gameltems. randomltemType: -.get I terns ( );
// Случайным образом выбираем элемент для данного вопроса // из набора элементов
thisQuestionltem = iterns[Math. floor(Math. random( )*iterns. length)];
// Удаляем предыдущий вопрос, если он существует if (questionScreen!= null) { removeChild(questionScreen);
}
// Отображаем новый вопрос
questionScreen = new QuestionScreen(this, items, thisQuestionltem); addChi1d(questi onScreen);
}
Оставшаяся часть кода из листинга 17.3 относится к игровой логике и созданию пользовательского интерфейса, что в настоящее время не является нашей основной задачей. Как уже отмечалось ранее, вы должны самостоятельно изучить оставшийся код. Информацию о методиках создания пользовательского интерфейса можно найти в части II этой книги.
Что ж, это был хороший практический пример. Впереди нас ждет еще несколько примеров, однако сначала мы должны рассмотреть две фундаментальные концеп-
ции, относящиеся к пространствам имен: открытые пространства имен и пространства имен для модификаторов управления доступом.
Открытые пространства имен и директива use namespace
Помните простой класс Items из листинга 17.1?
package { public class Items { fruit var orange:String = «Round citrus fruit»; color var orange:String = «Color obtained by mixing red and yellow»;
public function Items ( ) { trace(fruit: -.orange); trace(color::orange);
}
}
}
Как уже говорилось, один из способов обращения к переменным orange в предыдущем коде заключается в применении уточненных идентификаторов, как показано ниже:
trace(fruit::orange); // Выводит: Round citrus fruit trace(color::orange); // Выводит: Color obtained by
// mixing red and yellow
Однако язык ActionScript предлагает еще один удобный инструмент для обращения к переменным, уточняемым пространствами имен: директиву use namespace. Директива use namespace добавляет указанное пространство имен в набор так называемых открытых пространств имен для определенной области видимости программы. Открытые пространства имен — это набор пространств имен, к которому обращается компилятор при попытке разрешить неуточненные ссылки. Например, если пространство имен п находится в наборе открытых пространств имен и компилятор встретит неуточненную ссылку на переменную р, то он автоматически проверит существование переменной п: : р.