2

我正在构建一个自定义 Datagrid 组件,并且我有三个参数属性:

[Collection] _columns
[Inspectable] _headerHeight
[Inspectable] _rowHeight

这一切都编译得很好,但是我需要更改有关_columns变量的内容,并且改为创建_columnData以存储来自DataProvider.

现在,ReferenceError每次我尝试Test Movie时它都会抛出一个,说columnData无法创建该属性,尽管它已在 Flash Professional IDE 的参数列表中列出。

我唯一能想象的是,Flash 以某种方式缓存了我的类的早期版本,但是当我重建组件时,Flash IDE 会根据我的元数据正确更新自己。我已经清除了所有的东西~/Library/Application Support/Adobe/Flash CS5/CodeModel,重新启动了 Flash,删除了 ASO 文件,我已经将所有文件移到了新机器上,甚至在新的 FLA 中从头开始构建组件(使用相同的类) - 没有任何效果.

导致错误的代码复制如下:

private var _columnData:Object;
private var _headerHeight:Number = 40;
private var _rowHeight:Number = 40;

[Collection(collectionClass="musicone.components.data.DataCollection", collectionItem="musicone.components.controls.datagrid.DatagridColumn", identifier="item")]
public function get columnData():Object {
    return _columnData;
}
public function set columnData(value:Object):void {
    _columnData = value;

    var _forceClass:DataCollection = value as DataCollection;
    //updateColumns();
    draw();
}

[Inspectable(type="Number", defaultValue=40)]
public function get headerHeight():Number {
    return _headerHeight;
}
public function set headerHeight(value:Number):void {
    _headerHeight = value;
    draw();
}

[Inspectable(type="Number", defaultValue=40)]
public function get rowHeight():Number {
    return _rowHeight;
}
public function set rowHeight(value:Number):void {
    _rowHeight = value;
    draw();
}

编辑:我认为我的代码被缓存在某处的主要原因之一是 draw() 函数中的更改没有显示在任何地方 - 换句话说,我可以保证我的更改产生效果的唯一地方是在 Flash IDE 中。也就是说,同样的错误发生在不同的机器上这一事实让我相信这是内在的......

4

0 回答 0