![]() |
проблема с Yahoo ASTRA Tree
Скачал и установил компонент:
http://developer.yahoo.com/flash/astra-flash/tree/ обнаружил неприятную особенность: в примере, в корне можно увидеть несколько подкатегорий-контейнеров: + Work documents + Personal docs + Photos если в корне создать больше одного потомка-неконтейнера (т.е. листья дерева), то компонент выдает рантайм ошибки и не запускается проблема лечится если все это содержимое засунуть в один контейнер, например "Menu" и поместить его в корень но это кривое решение, хотелось бы нормальное |
можно разобрать xml и листья вставить вручную, через Tree.addItem()
|
XML наверное нет смысла руками ковырять, косяк не в нем, а в самом дереве
там ещё есть addChildNodeAt(childNode:TNode, index:int):void у класса RootNode, но не очень понятно как это использовать никаких нормальных примеров не прилагается в документации, кроме совсем очевидных вам приходилось эту штуку использовать? |
>>XML наверное нет смысла руками ковырять, косяк не в нем, а в самом дереве
дело хозяйское.. в этой ситуации похоже тока два выхода: -формировать дерево 'вручную': не вижу особых проблем создать дерево в цикле, addItem() нормально съедает листья, проверил -править яховские (и скорее всего и адобовские классы: астровские компонеты наследуются от CS3-шного набора), я бы не стал этого делать, даже если поборешь баг у себя, нигде больше твой код работать не будет |
ок, понял
т.е. надо вместо того, чтобы задавать XML и пихать его как датапровайдер использовать добавление листьев напрямую. НО у Tree нет метода addItem http://developer.yahoo.com/flash/ast...lassreference/ ну и в классе Tree пошарился, нет таких методов можете привести кусок кода с addItem, если это не сильно сложно? |
как вариант: валидную структуру скармливаем через new TreeDataProvider
а одиночные листья добавляем "вручную", раз так не хочет.. (компонент д.б. в библиотеке) Код:
import com.yahoo.astra.fl.controls.treeClasses.*; |
в прошлый раз удалось избежать проблем, закинув все листы из корня в один контейнер «Menu»
а сейчас надо добавлять листы на лету и я с какой то мистикой столкнулся: делаю mytree.addItem({label:"aloneLeaf1"}); пишет что не могу преобразовать тип Object к типу TNode хотя в доке написано, что там Object и на самом деле лист добавляется в конец списка, в корень пытаясь избежать ошибки пишу тот тип, который требует дебагер: Код:
var dataXML2:XML=<node>cannot convert com.yahoo.astra.fl.controls.treeClasses::TreeDataProvider@1228d101 to com.yahoo.astra.fl.controls.treeClasses.TNode. это он на строку Код:
var pDP:TreeDataProvider=new TreeDataProvider(dataXML2);бред какой то |
| Часовой пояс GMT +4, время: 20:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.