我创建了一个自定义组件来覆盖linkButton,使其表现如果找到一个存在的值,它将显示为“已添加”。
默认情况下,按钮标签是“添加到购物车”,我尝试在uHandler上尝试多次试错后无法使按钮变为“已添加”,我认为,COMPLETE,ENTER_FRAME,CREATION_COMPLETE甚至无法更新标签。
public class Btn extends LinkButton{
public function Btn(){
super();
this.addEventListener(MouseEvent.CLICK, labelHandler);
this.addEventListener(FlexEvent.INITIALIZE, loopArray);
this.addEventListener(FlexEvent.PREINITIALIZE, cHandler);
this.addEventListener(Event.COMPLETE, uHandler);
}
...
private var disableLabel:int = 0;
private function uHandler(event:Event):void {
trace("creation");
if(disableLabel == 1){
super.label = "Already added";
disableLabel = 0;
}
}
请建议。
答案 0 :(得分:1)
您甚至不必扩展LinkButton
类来更改其标签。你可以打电话:
linkBtnInstanceName.label = "Added";
如果事件侦听器位于Repeater
中,则可以使用它。检查此代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Repeater id="rp">
<mx:dataProvider>
<mx:Array>
<mx:String>ASD</mx:String>
<mx:String>QWE</mx:String>
<mx:String>ZXC</mx:String>
<mx:String>123</mx:String>
</mx:Array>
</mx:dataProvider>
<mx:LinkButton label="{rp.currentItem}" click="onClick(event);"/>
</mx:Repeater>
<mx:Script>
<![CDATA[
private function onClick(event:MouseEvent):void
{
//this works
LinkButton(event.currentTarget).label = "Clicked";
}
]]>
</mx:Script>
</mx:Application>
答案 1 :(得分:0)
我是未知的(谷歌),你只是使用creationcomplete给了我间接的想法,而不需要扩展组件,它确实显示了我需要的东西。谢谢!
我几乎试图射击你,但设法理解你试图在试错后解释的内容。