![]() |
как создать SWC реагирующий на [Bindable] масив ?
всем привет .
я написал класс который должен апдаитить свою дату в зависимости от изменения источника. Код AS3:
Код AS3:
в общем не работает привязка . как мне это починить ? |
ArrayCollection используйте.
|
компонент создан на Flash(SWC) , чтоб я мог им управлять в Flax я вставил мета тег :
Код AS3:
|
Inspectable - поддерживается флешевым компилятором, Bindable - нет.
|
другими словами компонент созданий на Flash не сможет никак апдейтится через Bindable ?
|
Неа, не будет, да и забиндить к массиву тяжело, т.как он не IEventDispatcher :) Как возможное решение - Создайте пустой класс mx.collections.ArrayCollection с теми же свойствами и методами, что есть у настоящей ArrayCollection + посмотрите, от чего он там зависит, добавьте его в класс-путь флеша и назначте его как тип дата-провайдеру (при этом не забывайте писать свойства и методы с маленькой буквы). После чего, импортируйте етот "недокомпонент" во флексовый проект, отнаследуйтесь от него, и в классе-наследнике переопределите это свойство + добавьте метатаг.
Кроме того, если это сеттер а не просто переменная, то сеттеры биндятся не так, а примерно так: Код AS3:
|
Цитата:
Код AS3:
Код:
[DefaultProperty("source")]2. Код:
ArrayCollection extends ListCollectionViewВ общем не совсем понятно, как его изменить ? и еще такой вопрос, в флексовском компоненте "ComboBox" к "dataProvider" можно подключать обычный массив и апдеит работает, чем это отличается от моего компонента ? |
ОК, сначала простое:
когда вы подключаете массив в качестве датапровайдера компонент его сам обворачивает в ArrayCollection, но лучше это делать самому - вам же в итоге удобнее будет. >> эти мета теги вроде не поддерживаются флешом, это уже добавьте в компоненте, который будет экстендить ваш компонент во флексе, флекс "догадается" заменить ваш "поддельный" ArrayCollection своим, если вы ему не будете кормить свой. Вам не нужно имплементить методы ArrayCollection, просто создайте intrinsic класс, т.е. с пустыми методами / свойствами - вы же его все равно в окончательном проекте использовать не будете. >> ArrayCollection extends ListCollectionView Это по-серьезнее проблема, но тоже решаемая, т.е. прийдется соответственно создать ListCollectionView и его суперкласс (всех до Proxy), чтобы описание класса совпало с флексовым, хотя, можно попробовать ни от чего не наследоваться - а вдруг прокатит? :) |
Цитата:
/** *создаю "ArrayCollection" для Флеша */ 1.1 создаю в флексе "Flex Library Project". 1.2 в библиотеке "src" создаю свой класс "ArrCollection ". 1.3 пишу код : Код AS3:
/** *добавляю "ArrayCollection" в Флеш */ 2.1 в Флеш Publish settings > flash >Script > settings > Library Path добавляю ArrayCollection.swc . /** *создаю компонент для Флекса * в компоненте имеется textFild для отображения длины коллекции массивов. */ 3.1 в Флаш добавляю новый объект, его код : Код AS3:
/** *наследую и переопределяю */ 4.1 в Флекс в "Libs" добавляю мой компонент "TestComponent.swc". 4.2 создаю новый класс, наследую от "TestComponent.swc", переопределяю функцию. Код AS3:
проверяю в Флексе : Код:
<?xml version="1.0" encoding="utf-8"?> |
Нее... не так... ладно, ждите, сделаю пример :)
|
| Часовой пояс GMT +4, время: 13:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.