Actionscript 3 颜色选择器在表单中不可编辑->;FormItem

Actionscript 3 颜色选择器在表单中不可编辑->;FormItem,actionscript-3,apache-flex,actionscript,flex4,flash-builder,Actionscript 3,Apache Flex,Actionscript,Flex4,Flash Builder,请注意此问题结尾处提到的解决方法备注 基于基于字典的规范,我的一个类以编程方式创建了一个表单 将TextInput或DatePicker添加到FormItemss中,效果与预期一致 不幸的是,以下代码只创建了一个彩色矩形,而不是实际的选取器: ti = new ColorPicker(); ColorPicker( ti ).selectedColor = TAColor( _spec[ key ].value ).color; 后来 formItem.addElement( ti );

请注意此问题结尾处提到的解决方法备注

基于基于字典的规范,我的一个类以编程方式创建了一个
表单

TextInput
DatePicker
添加到
FormItems
s中,效果与预期一致

不幸的是,以下代码只创建了一个彩色矩形,而不是实际的选取器:

ti = new ColorPicker();

ColorPicker( ti ).selectedColor = TAColor( _spec[ key ].value ).color;
后来

formItem.addElement( ti );
表单嵌入在标题窗口的
组件中,该组件使用

PopUpManager.addPopUp(...);
当添加到TitleWindow时,它会正确显示在Form->FormItem not中:

我无法想象,为什么选择器没有出现。你喜欢吗?

解决方法:

如果我将颜色选择器包装在一个组中则一切正常:

ti = new Group();
Group( ti ).addElement( new ColorPicker() );
在这种情况下,颜色选择器显示为可编辑


不过,我还是很乐意知道我最初的解决方案有什么问题。Bug?

在您提供的代码中,您从未将colorPicker作为子容器添加到任何父容器中;因此,它永远不会出现在任何地方

您可能需要执行以下操作:

formItem.addChild(ti ); 
[或对于Spark formItem]:

formItem.addElement(ti ); 
我不明白你为什么看到一个长方形

日期字段(类似于ColorPicker扩展ComboBase)以spark形式正常运行。但是在ColorPicker中,按钮的鼠标按下处理程序永远不会被调用。我认为可能是处理鼠标点击的皮肤部分(它必须是一个按钮)没有正确标注尺寸,结果是它没有显示出来。我得出这个结论是因为在mx表单中,ColorPicker不会像添加到常规显示列表时那样显示


希望这有助于…

正确!但事实上,我确实添加了FormItem。由于此表单项只是几个表单项中的一个,因此代码位于上述打印代码的下方。是的,它执行formItem.addElement();这真奇怪。我曾尝试通过编程方式向spark表单添加一个颜色选择器,它会按照您的解释执行。。。虽然使用MX表单,但它确实可以正常工作。我强烈怀疑FocusManager。正如您所解释的,DateField或DatePicker工作得很好。FlashBuilder 4.5.1中包含了ColorPicker的来源。我不打算修补它们。但是如果我愿意,FlashBuilder会重新编译并将它们添加到我的二进制文件中吗?不,你有源代码,但它不是用来运行你的应用程序的,而且,你不想重新编译整个框架。我建议您扩展该组件并尝试对其进行修补。我自己试过,但找不到任何解决办法。。。