首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex 4生命周期和手工绘图

Flex 4生命周期和手工绘图
EN

Stack Overflow用户
提问于 2010-07-25 22:29:32
回答 3查看 552关注 0票数 0

我有一个继承组的组件。我创建了一个名为dataSource:ArrayList的属性。我想为每一个条目划一条线。

当调用'function‘-method时,我执行以下操作(简化):

var newLine:Line = new Line(); newLine.stroke = new SolidColorStroke(); newLine.xFrom = 0; newLine.yFrom = 0; newLine.xTo = 0; newLine.yTo = height; this.addElement(newLine);

这条线本身不会延伸到父级的最底层。我猜我搞砸了生命周期,但我并不认为flex生命周期特别容易理解,所以我不知道该如何做。

EN

回答 3

Stack Overflow用户

发布于 2010-07-27 04:45:12

如果您不想将该行作为显示列表中的对象进行交互,我只需使用updateDisplayList()使用图形api绘制它,然后从set dataSource()调用invalidateDisplayList()

“正确”方式略显冗长;-)

代码语言:javascript
复制
private var dataSourceValid = true;

public function set dataSource(value:FooData):void {
    _dataSource = foo;
    dataSourceValid = false;
    invalidateProperties();
}

override protected function commitProperties():void {

    if (!dataSourceValid)
        commitDataSource();

    // Do it later in case we've invalidated something 
    // belonging to Flex while validating our stuff
    super.commitProperties();
}

protected function commitDataSource():void {

    // Do whatever we need to with our datasource, 
    // including adding or removing child elements.

    // ...

    // If we also need to re-draw something, then
    // invalidateDisplayList();

    dataSourceValid = true;
}

(所有输入的代码都是用TextMate编写的,所以它可能充满了拼写错误,而且没有编译,但是您了解到了)

票数 1
EN

Stack Overflow用户

发布于 2010-07-26 17:05:56

我同意您的看法,这可能与创建行时尚未正确测量的组件有关。您可以尝试重写updateDisplayList并将您创建的行的高度设置为提供给updateDisplayList方法的高度参数。不要在updateDisplayList中创建行,因为它可以在组件生命周期中被多次调用。关于生命周期,这里有一个链接,我在过去发现了一个有用的图表:http://danorlando.com/?p=122希望,帮助。

票数 0
EN

Stack Overflow用户

发布于 2010-07-29 10:22:14

目前还不完全清楚您想要做什么,但是通过在dataSource上添加一个Group属性,似乎您正在尝试重新创建DataGroup。也许您应该考虑只使用后者,同时使用自定义ItemRenderer,您可以在其中画一条线吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3331289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档