flex 3中的bug以及隐性问题

    技术2022-05-19  18

    今天发现了一个很隐性的问题: private function downHandler(event:MouseEvent):void     //对一个Image做侦听 { //    trace(event.target.parent is Image,event.currentTarget);     var img:Image = event.target.parent;                     var ds:DragSource = new DragSource();     var obj:Object = new Object();     obj = getItem(getGoodPos(skillList.mouseX)); //    trace("second",ObjectUtil.toString(obj),"---",int(skillList.mouseX / 50 + 1))                     ds.addData(obj,"effect");     ds.addData("fromSkillList","action");     var proxy:Image = new Image();     proxy.source = img.source;     proxy.width = img.width;     proxy.height = img.height;     DragManager.doDrag(img,ds,event,proxy);         event.currentTarget.addEventListener(MouseEvent.MOUSE_UP, upHandler,true);                //(event.currentTarget.stage).addEventListener(MouseEvent.MOUSE_UP, upHandler,true);     evt = event.currentTarget as UIComponent;     trace(" image downHandler",evt) }                        private function upHandler(event:MouseEvent):void {     trace("upHandler",event.currentTarget);     //trace("upHandler",event.currentTarget,event.target.parent); } 结果发现:每次双击时,upHandler函数有时执行,有时有不执行。经过细心观察发现:原来是拖拽代理扰的祸。它附在Image之上,导致Image侦听不到 upHandler函数。 通过用注释中的代码来替代后,就可以了。 flex中的bug: var zoom:Zoom = new Zoom(); zoom.addEventListener(TweenEvent.TWEEN_START,effectStartHandler); zoom.addEventListener(EffectEvent.EFFECT_END,effectEndHandler); EffectEvent.EFFECT_START事件不起作用,所以用了TweenEvent.TWEEN_START,它的父类的事件。

     

     

    在Panel组件中的titleBar中添加一个关闭按钮:

     

    closeButton = new Button();                 closeButton.styleName = 'closeBtn';                 closeButton.width = 53;                 closeButton.height = 19;                 closeButton.x = width - 58;                 closeButton.y = 4;                 closeButton.addEventListener(MouseEvent.CLICK, closeButton_clickHanlder);                 closeButton.label = "关闭";                 titleBar.addChild(closeButton);

     

    一般情况,只要设置了按钮的标签,按钮的长宽就会自适应标签的大小,但是在titleBar中,长宽一定要手动设置,否则长宽为零,按钮就会显示不出来!

     

    一般性,向titleBar中添加组件必须手动设置长宽!

     


    最新回复(0)