【发布时间】:2011-08-05 08:58:25
【问题描述】:
我有一个自定义组件,我在其中做一些图形(例如画一条线)并动态地向它添加一个子组件(例如标签)。
如果我将组件基于组(根据文档推荐,因为它是 spark 组件),那么当我动态添加标签时,图形部分就会消失。
但是,如果我将其基于 Canvas,则不会发生这种情况。
为什么会这样?
这里是代码。
MyComponent.as
public class MyComponent extends Group
{
public var x1:int;
public var y1:int;
public function MyComponent()
{
super();
addEventListener(MouseEvent.MOUSE_DOWN, function(event:MouseEvent):void {
x1 = mouseX;
y1 = mouseY;
});
addEventListener(MouseEvent.MOUSE_MOVE, function(event:MouseEvent):void {
if (event.buttonDown) {
graphics.lineStyle(3, 0x000000);
graphics.moveTo(x1, y1)
graphics.lineTo(mouseX, mouseY);
x1 = mouseX;
y1 = mouseY;
}
});
}
public function addLabel():void
{
var label:Label = new Label();
label.x = 100;
label.y = 100;
label.text = "new label ";
addElement(label); //change to addChild if using Canvas
}
}
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:local="*">
<s:Panel width="50%" height="50%" verticalCenter="0" horizontalCenter="0" title="Sample app">
<MyComponent id="drawingArea" xmlns="*" width="100%" height="100%" />
<s:controlBarContent>
<s:Button label="Add label" click="drawingArea.addLabel()"/>
</s:controlBarContent>
</s:Panel>
</s:Application>
【问题讨论】:
-
我们需要查看代码来帮助您。
-
@Jonathan 刚刚添加了代码。谢谢