在Flex中的UIComponent对象上使用drawLine

时间:2011-05-01 15:34:04

标签: flash flex actionscript-3

我一直在尝试使用UIComponent绘制一系列点:

var line : UIComponent = new UIComponent();
...
line.graphics.lineTo(renderPoint.x, renderPoint.y);

然后使用以下内容更新mainContainer Canvas对象。

mainContainer.addChild(line);

mainContainer在MXML中表示为:

<mx:Panel x="270" y="10" width="690" height="680" id="mainContainerPanel">
    <mx:Canvas width="690" height="680" initialize="onInit()" id="canvas">
    <mx:Script>
        protected function onInit():void
        {
            spiro = new Spirograph(canvas);         
        }
    </mx:Script>
    </mx:Canvas>
</mx:Panel>

请注意

我正在使用事件Event.ENTER_FRAME来执行drawLine()并且它遍历数组以每次执行绘图:

for (var j:int = 0; j < _segment.length; j++)
{
    renderPoint = _segment[j];
    line.graphics.lineTo(renderPoint.x, renderPoint.y);
}
mainContainer.addChild(line);

问题在于,虽然我有所有renderPoint段等。该行永远不会被绘制或永远不会被显示。我认为这可能是因为某些Flex事情并不那么明显。

我试图不使用此处的所有代码以提高可读性,希望描述简单明了。

1 个答案:

答案 0 :(得分:1)

首先,我不确定您的代码是否是来自ActionScript代码的真正复制粘贴。字段样式声明来自Java或C#,但不来自AS。在UIComponent line行上编译错误了吗?

其次,Script的{​​{1}}块。您不应将其放在MXML组件中的嵌套声明中,而应放在组件根节点的子项中。最好在CDATA块中的Panel块中包围代码。

Script中绘图怎么样?我建议您为其分配UIComponentwidth值。