Руководство по actionscript. часть 3, стр. 042

Интерпретация экземпляра класса XMLL i s t как экземпляра класса XML делает использование расширения Е4Х более простым и удобным, но при этом порождает некоторые сбивающие с толку детали, особенно когда эта возможность применяется вместе с автоматическим преобразованием строк. Поближе познакомимся с этой проблемой.

Предположим, что мы создаем пользовательский интерфейс для книжного интернет-магазина, где каждая книга представлена XML-фрагментом, структура которого совпадает со структурой нашего примера с фрагментом. Когда пользователь выбирает книгу, на экране появляется соответствующее имя автора.

В нашем коде мы создаем метод displayAuthor ( ), который выводит имя автора. В первой реализации метода мы будем требовать, чтобы имя автора передавалось в виде строки:

public function displayAuthor (name:String):void { // authorField ссылается на экземпляр класса TextField, // в котором отображается имя автора authorField. text = name;

}

Когда пользователь выбирает книгу, мы получаем имя ее автора из элемента и передаем его в метод displayAuthor ( ), используя код наподобие следующего:

displayAuthor(novel. AUTHOR):

Данная инструкция проста и интуитивно понятна, но, как мы уже знаем из этой главы, «за кадром» происходит очень много действий. В качестве повторения проанализируем, как это работает. Во-первых, среда выполнения Flash передает выражение novel. AUTHOR в метод displayAuthor ( ) в качестве значения параметра name. Типом данных параметра name является String, поэтому среда Flash автоматически пытается преобразовать значение выражения novel. AUTHOR в строку, используя следующее выражение:

novel. AUTHOR. toString( )

По умолчанию вызов метода toString ( ) над объектом возвращает строку в формате [obj ect ИмяКласса], но выражение novel. AUTHOR представляет экземпляр класса XMLList, а класс XMLList переопределяет метод toString ( ) собственной версией. В частности, версия метода toString ( ) класса XMLList узнает, что значение выражения novel. AUTHOR содержит только один элемент, поэтому возвращается результат вызова метода toString( ) класса XML над этим элементом. Таким образом, вызов novel. AUTHOR. toString ( ) автоматически преобразуется в вызов novel. AUTHOR [ 0 ] . toString ( ). Что же является возвращаемым значением выражения novel. AUTHOR [ 0 ] . toString ( )? Как мы уже знаем, ответ основан на факте, что выражение novel. AUTHOR [0] представляет простой элемент XML, который не содержит других элементов-потомков. Для элемента XML, не содержащего других элементов, метод toString ( ) класса XML возвращает текстовый узел данного элемента в виде строки, исключая охватывающие теги. Значит, выражение novel. AUTHOR [0] .toString( ) в качестве окончательного значения, передаваемого в метод displayAuthor ( ), вернет значение «Joyce, James» (а не «Joyce/ James«).

Подведем итоги.

? Передача значения выражения novel. AUTHOR в качестве параметра типа String приводит к неявному преобразованию значения выражения novel. AUTHOR в строку.

? Значение выражения novel. AUTHOR преобразуется в строку с помощью вызова novel. AUTHOR. toString ( ).

? Выражение novel. AUTHOR. toString ( ) автоматически возвращает результат выражения novel. AUTHOR [ 0 ] . toString ( ), поскольку значение выражения novel. AUTHOR представляет экземпляр класса XMLList с одним-единственным элементом.

? Выражение novel. AUTHOR [0] . toString ( ) возвращает текст, содержащийся в элементе («Joyce, James»), в соответствии с реализацией метода toString ( ) класса XML (дополнительную информацию можно найти далее, в разд. «Преобразование объектов XML и XMLList в строки»).

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 065
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 022
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 040
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.131
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.74
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.127
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 064
  • 11.03.2011">Руководство по actionscript. часть 4, стр. 002
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 134
  • 17.05.2012">«Лаборатория Касперского»: спамеры нацелились на геймеров и пользователей Facebook
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.33
  • 20.02.2012">Владельцы Twtter.com и Wikapedia.com оштрафованы за мошенничество
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 056
  • 26.07.2011">Продвинуть бизнес поможет сайт
  • 25.10.2011">Прозрачные батарейки – скорое будущее
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...