![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Доброго всем времени суток.
Подскажите, пожалуйста. К примеру есть <mx:Script><![CDATA[ [Bindable] private var bt:Button=new Button(); [Bindable] public var menuCollection:XMLListCollection; // создается на основе dataXML private function changeHandler(event:MenuEvent):void{ var ob:Button = Button(event.item.@data); //летит исключение } private function init():void{ //инициализирующий метод menuCollection = new XMLListCollection(new XMLList(dataXML)); } ]]></mx:Script> <mx:XML id="dataXML"> <menuitem label="Menu1"> <menuitem label="Test" type="check" data="{bt}"/> <menuitem type="separator"/> <menuitem label="Test" type="check" data="yes"> <menuitem label="one" group="gr1" type="radio"/> <menuitem label="two" group="gr1" type="radio"/> </menuitem> <menuitem label="Test" type="check" data="yes"/> </menuitem> </mx:XML> <mx:MenuBar labelField="label" dataProvider="{menuCollection}" itemClick="changeHandler(event)"/> Вопрос в том, что, судя по всему, к любому объектув <mx:XML> применяется toString()? Потому что в методе changeHandler event.item.@data равна bt.toString() - причем toString применен к изначально созданной кнопке, изменения ее свойства label в методе init() не фиксируются. Если исопльзовать ArrayCollection - все в порядке. В метод changeHandler приходит event.item.data = Button. Причем изменения свойства label у Button фиксируются. Это так и надо? Никак я не могу присвоить какому-то атрибуту свойство-объект?Заранее благодарен. |
|
|||||
|
Modus ponens
|
Ох...
Вобщем примерно так: - использовать XMLListCollection смысла вообще нет никогда... я не знаю, зачем создатели фреймворка это чудо наваяли, но его еффективная полезность === 0. - Объекты типа XML и XMLList имеют определенные сложности с биндингом корневого узла, проще говоря корневой узел XML забиндить нельзя. (Т.е. в принципе можно, но для этого нужно править фреймворковские классы, перекомпилировать фрейморковские библиотеки со всеми вытекающими и т.д... Теперь по поводу ошибки которую вы получаете: XML - это по-сути строка, а кастовать строку к кнопке вы ну никак не можете... в AS3 можно некоторые примитивные типы конвертировать один в другой, но сложные типы можно только сравнить, перепаять кнопку в строку и обратно у вас никак не получится.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Я Вас понял. Спасибо за ответ.
Просто почему-то казалось, что XMLListCollection должен держать у себя ссылку на кнопку, обозначенную в XML: Теперь понятно, что все это превращается в строки и всё. С ArrayList в этом плане все отлично.Еще раз спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|