欢迎来到天天文库
浏览记录
ID:40746041
大小:21.37 KB
页数:5页
时间:2019-08-07
《Flex 自定义组件要重写的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Flex自定义组件一般都要重写下面几个方法,他们的主要作用是什么呢?下面举例说明:1.关于createChildren()方法代码1-1显示了组件ImageViewer的createChildren()方法。代码1-1.ImageViewer的createChildren()方法1.overrideprotectedfunctioncreateChildren():void2.{3.trace('createChildren');4.super.createChildren();5.6.//创建边框CSS7.if(!this.border){8.c
2、reateBorder();9.}10.11.//创建控制按钮容器12.if(!controlBar)13.controlBar=newUIComponent();14.15.//创建放大按钮16.if(!zoomInButton){17.zoomInButton=newButton();18.zoomInButton.label="+";19.zoomInButton.addEventListener(MouseEvent.CLICK,zoomInButtonClickHandler);20.controlBar.addChild(zoomInB
3、utton);21.}22.23.//创建缩小按钮24.if(!zoomOutButton){25.zoomOutButton=newButton();26.zoomOutButton.label="-";27.zoomOutButton.addEventListener(MouseEvent.CLICK,zoomOutButtonClickHandler);28.controlBar.addChild(zoomOutButton);29.}30.31.//将控制按钮容器添加到显示节点32.addChild(controlBar);33.}在该方法
4、的末尾才把controlBar添加到DisplayList上,正如之前提到的那样,我们只在需要的时候装配他。同时,此时也是为子节点添加监听器的好地方。2.关于commitProperties()方法CommitProperties()是验证方法invalidateProperties()所对应的提交方法,也是初始化阶段会被调用的第一个提交方法。他的目的是使得任何通过set方法提交的数值更改生效。所以您可以看到在setscale()方法里,按照invalidation-validation模式,我们调用了invalidateProperties()方
5、法从而将值的生效延迟到了commitProperties()里,并且为了做到“避免对一个属性连续设置多个值,从而避免了不必要的资源浪费”,我们使用了标志位scaleChanged。代码2-1setscale()函数1.publicfunctionsetscale(value:Number):void{2.if(_scale!=value)3.{4._scale=value;5.6.//避免对一个属性连续设置多个值,从而避免了不必要的资源浪费7.scaleChanged=true;8.9.//由于调用本方法时,可能对象未创建10.//通过调用inva
6、lidateProperties(),将值的生效延迟到了commitProperties()里11.invalidateProperties();12.dispatchEvent(newEvent("scaleChanged"));13.}14.}代码2-2commitProperties()函数1.overrideprotectedfunctioncommitProperties():void{2.trace('commitProperties');3.super.commitProperties();4.5.//如果image控件不存在,则新建
7、并添加6.if(sourceChanged){7.if(!this.image){8.image=newImage();9.this.addChild(image);10.image.source=this._source;11.}else{12.image.source=this._source;13.}14.sourceChanged=false;15.}1.2.//如果scale属性改变了,则修改imageWidth3.if(scaleChanged){4.this.imageWidth=this.imageWidth*this.scale;
8、5.this.imageHeight=this.imageHeight*this.scale;6.scaleChanged
此文档下载收益归作者所有