Цитата:
|
Как возможное решение - Создайте пустой класс mx.collections.ArrayCollection с теми же свойствами и методами
|
в общем не работает отпишу попорядку
/**
*создаю "ArrayCollection" для Флеша
*/
1.1 создаю в флексе "Flex Library Project".
1.2 в библиотеке "src" создаю свой класс "ArrCollection ".
1.3 пишу код :

Код AS3:
package
{
import mx.collections.ArrayCollection;
public class ArrCollection
{
public function ArrCollection()
{
new ArrayCollection();
}
}
}
1.4 сохраняем, в папке Bin лежит готовый ArrayCollection.swc
/**
*добавляю "ArrayCollection" в Флеш
*/
2.1 в Флеш Publish settings > flash >Script > settings > Library Path
добавляю ArrayCollection.swc .
/**
*создаю компонент для Флекса
* в компоненте имеется textFild для отображения длины коллекции массивов.
*/
3.1 в Флаш добавляю новый объект, его код :

Код AS3:
package com
{
import mx.flash.UIMovieClip;
import mx.collections.ArrayCollection;
public class TestComponent extends UIMovieClip
{
protected var myArray:ArrayCollection;
public function TestComponent ()
{
}
[Inspectable(category = Data,type = "Array")]
public function set dataProvider (arr:ArrayCollection):void
{
myArray = arr;
textFild.text =String(myArray.length);
}
}
}
3.2 делаю из него SWC файл (command > Convert Symbol to Flex Component > publish)
/**
*наследую и переопределяю
*/
4.1 в Флекс в "Libs" добавляю мой компонент "TestComponent.swc".
4.2 создаю новый класс, наследую от "TestComponent.swc", переопределяю функцию.

Код AS3:
package com
{
import flash.events.Event;
import mx.collections.ArrayCollection;
public class SuperComponent extends TestComponent
{
public function SuperComponent ()
{
}
[Bindable("dataProviderChange")]
public override function set dataProvider(value:ArrayCollection):void
{
myArray = value;
textFild.text =String(myArray.length);
dispatchEvent(new Event("dataProviderChange"));
}
}
}
вроде-бы все по инструкции .
проверяю в Флексе :

Код:
<?xml version="1.0" encoding="utf-8"?>
<s:Group
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
width="400" height="300" creationComplete="initApps(event)" xmlns:com="com.*">
<fx:Script>
<![CDATA[
import com.customTest;
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
[Bindable]
private var tempArray:ArrayCollection =new ArrayCollection();
protected function initApps(event:FlexEvent):void
{
tempArray.addItem("La-la");
}
]]>
</fx:Script>
<mx:Label x="23" y="33" text="Label" id="_label"/>
<com:customTest id="yo" x="28" y="57" dataProvider="{tempArray}" />
</s:Group>
получаю значение 0 не апдейтится
