flash cs4 combobox组件完全忽略样式和事件

时间:2010-02-10 14:04:36

标签: flash actionscript-3 flash-cs4

我在flash cs4中有简单的组合框组件,我尝试添加和这样的事件监听器

mycombo.addEventListener(Event.ADDED_TO_STAGE, added);

function added(e:Event):void
{
trace("HI");
}

即使我手动或通过AS在舞台上有组件,也永远不会被调用,但是如果我向MouseOver添加一个监听器它可以工作,为什么ADDED_TO_STAGE事件不起作用,我也遇到了textFormat样式的问题我用

mycombo.setStyle("textFormat", tf);//suppose tf is a TextFormat object

也不起作用,但是如果我将该行放在MouseOver事件中,那么它的工作原理是什么?请帮忙谢谢!!

2 个答案:

答案 0 :(得分:2)

我遇到了同样的情况,发现如果我在ActionScript中创建组件而不是通过可视化设计工具,那么在代码中对组件进行更改就可以了。 因此,我从.FLA文件中删除了该对象,并在相关的.AS文件中创建了它,就像这样。

var ddlQF:ComboBox=new ComboBox();
this.addChild(ddlQF);
ddlQF.move(444,191);
ddlQF.setSize(284,40);
ddlQF.rowCount=10;
var myFormat:TextFormat = new TextFormat();
myFormat.font = "Georgia";
myFormat.size=16;
ddlQF.setStyle("textFormat",myFormat);

答案 1 :(得分:0)

问题1原因:

看来ADDED_TO_STAGE可以在触发之前发生。

来自https://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/events/Event.html#ADDED_TO_STAGE

将DisplayObject实例添加到舞台显示列表中,直接或通过添加包含DisplayObject实例的子树。如果直接添加DisplayObject实例,则添加的事件将在此事件之前发生。

问题2原因:

同样,我相信事件发生在事件触发之前。因此风格永远不会被处理。