加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex 学习笔记 as自定义标尺组件

发布时间:2020-12-15 04:55:46 所属栏目:百科 来源:网络整理
导读:代码: package?contr?? ? {?? ? ????import?flash.geom.Point; ? ???? ? ????import?mx.controls.Alert; ? ????import?mx.controls.Text; ? ????import?mx.graphics.SolidColorStroke; ? ???? ? ????import?spark.components.BorderContainer; ? ????import

代码:

 
 
  1. package?contr?? ?
  2. {?? ?
  3. ????import?flash.geom.Point; ?
  4. ???? ?
  5. ????import?mx.controls.Alert; ?
  6. ????import?mx.controls.Text; ?
  7. ????import?mx.graphics.SolidColorStroke; ?
  8. ???? ?
  9. ????import?spark.components.BorderContainer; ?
  10. ????import?spark.primitives.Line; ?
  11. ?
  12. ????public?class?Ruler?extends?BorderContainer?? ?
  13. ????{?? ?
  14. ????????private?var?_trunkLine:Line;?? ?
  15. ???????? ?
  16. ????????/**设置标尺的长度*/ ?
  17. ????????private?var?_lineLength:Number; ?
  18. ???????? ?
  19. ????????/**设置最小单位*/ ?
  20. ????????private?var?_spacing:Number; ?
  21. ???????? ?
  22. ????????/**设置隔几个刻度显示一次*/ ?
  23. ????????private?var?_scale:Number; ?
  24. ???????? ?
  25. ????????/**标尺是横向还是纵向*/ ?
  26. ????????private?var?_type:String?=?"horizontal"; ?
  27. ???????? ?
  28. ????????/**标尺的位置,包括上下左右*/ ?
  29. ????????private?var?_position:String?=?"top"; ?
  30. ?
  31. ????????[Inspectable(enumeration="top,bottom,left,right")] ?
  32. ????????public?function?get?position():String ?
  33. ????????{ ?
  34. ????????????return?_position; ?
  35. ????????} ?
  36. ???????? ?
  37. ????????public?function?set?position(value:String):void ?
  38. ????????{ ?
  39. ????????????_position?=?value; ?
  40. ????????} ?
  41. ?
  42. ????????public?function?get?scale():Number ?
  43. ????????{ ?
  44. ????????????return?_scale; ?
  45. ????????} ?
  46. ?
  47. ????????public?function?set?scale(value:Number):void ?
  48. ????????{ ?
  49. ????????????_scale?=?value; ?
  50. ????????} ?
  51. ?
  52. ????????public?function?get?spacing():Number ?
  53. ????????{ ?
  54. ????????????return?_spacing; ?
  55. ????????} ?
  56. ?
  57. ????????public?function?set?spacing(value:Number):void ?
  58. ????????{ ?
  59. ????????????_spacing?=?value; ?
  60. ????????} ?
  61. ?
  62. ????????[Inspectable(enumeration="vertical,horizontal")] ?
  63. ????????public?function?get?type():String ?
  64. ????????{ ?
  65. ????????????return?_type; ?
  66. ????????} ?
  67. ???????? ?
  68. ????????public?function?set?type(value:String):void ?
  69. ????????{ ?
  70. ????????????_type?=?value; ?
  71. ????????} ?
  72. ????????public?function?Ruler()?? ?
  73. ????????{?? ?
  74. ????????????super();????? ?
  75. ???????????? ?
  76. ????????} ?
  77. ?
  78. ????????public?function?get?lineLength():Number ?
  79. ????????{ ?
  80. ????????????return?_lineLength; ?
  81. ????????} ?
  82. ???????? ?
  83. ????????public?function?set?lineLength(value:Number):void ?
  84. ????????{ ?
  85. ????????????_lineLength?=?value; ?
  86. ????????} ?
  87. ???????? ?
  88. ???????? ?
  89. ???????? ?
  90. ????????protected?override?function?createChildren():void{ ?
  91. ????????????super.updateDisplayList(unscaledWidth,unscaledHeight); ?
  92. ????????????this.alpha?=?0.5;?? ?
  93. ????????????this.setStyle("borderColor","red");?? ?
  94. ????????????this.width?=?0;?? ?
  95. ????????????this.height?=?0;?? ?
  96. ????????????_trunkLine?=?new?Line();?? ?
  97. ????????????_trunkLine.stroke?=?new?SolidColorStroke(0x000000);?? ?
  98. ????????????this.x?=?0;?? ?
  99. ????????????this.y?=?0; ?
  100. ????????????if(position?==?"top"){ ?
  101. ????????????????_trunkLine.xFrom?=?25;?? ?
  102. ????????????????_trunkLine.yFrom?=?25; ?
  103. ????????????}else?if(position?==?"bottom"){ ?
  104. ????????????????_trunkLine.xFrom?=?25;?? ?
  105. ????????????????_trunkLine.yFrom?=?parentApplication.height-100; ?
  106. ????????????}else?if(position?==?"left"){ ?
  107. ????????????????_trunkLine.xFrom?=?25;?? ?
  108. ????????????????_trunkLine.yFrom?=?25; ?
  109. ????????????}else?if(position?==?"right"){ ?
  110. ????????????????_trunkLine.xFrom?=?600;?? ?
  111. ????????????????_trunkLine.yFrom?=?25; ?
  112. ????????????} ?
  113. ????????????if(type?=="horizontal"){ ?
  114. ????????????????_trunkLine_trunkLine.xTo?=?_trunkLine.xFrom?+?lineLength;?? ?
  115. ????????????????_trunkLine_trunkLine.yTo?=?_trunkLine.yFrom;?? ?
  116. ????????????????this.addElement(_trunkLine);?? ?
  117. ????????????????for(var?i:Number=0;i<=lineLength/spacing;i++){?? ?
  118. ????????????????var?_line:Line?=?new?Line();?? ?
  119. ????????????????var?_ySpacing:Number?=?5;?? ?
  120. ????????????????_line.stroke?=?new?SolidColorStroke(0x000000);?? ?
  121. ????????????????_line.xFrom?=?i?*?spacing?+?_trunkLine.xFrom;?? ?
  122. ????????????????_line.yFrom?=?_trunkLine.yFrom;?? ?
  123. ????????????????_line_line.xTo?=?_line.xFrom;?? ?
  124. ????????????????var?_label:spark.components.Label?=?new?spark.components.Label();?? ?
  125. ????????????????_label.text?=?String(i?*?10);?? ?
  126. ????????????????_label.y?=?_trunkLine.yFrom?-?20; ?
  127. ????????????????if(i%10==0){?? ?
  128. ????????????????????_ySpacing?=?15;????????????????????????? ?
  129. ????????????????}else?if(i%5==0){?? ?
  130. ????????????????????_ySpacing?=?10;?? ?
  131. ????????????????}?? ?
  132. ????????????????if(i%scale==0){ ?
  133. ????????????????????_label.x?=?i?*?spacing?+?_trunkLine.xFrom+1; ?
  134. ????????????????????this.addElement(_label); ?
  135. ????????????????} ?
  136. ????????????????_line.yTo?=?_trunkLine.yFrom?-?_ySpacing;?? ?
  137. ????????????????this.addElement(_line); ?
  138. ????????????????} ?
  139. ????????????}else{ ?
  140. ????????????????_trunkLine?=?new?Line();?? ?
  141. ????????????????_trunkLine.stroke?=?new?SolidColorStroke(0x000000);???? ?
  142. ????????????????_trunkLine_trunkLine.xTo?=?_trunkLine.xFrom;? ?
  143. ????????????????_trunkLine_trunkLine.yTo?=?_trunkLine.yFrom?+?lineLength;?? ?
  144. ????????????????this.addElement(_trunkLine);?? ?
  145. ???????????????? ?
  146. ????????????????for(var?j:Number?=?0;j<=lineLength/spacing;j++){?? ?
  147. ????????????????????var?_xSpacing:Number?=?5;?? ?
  148. ????????????????????var?_lineV:Line?=?new?Line();?? ?
  149. ????????????????????_lineV.stroke?=?new?SolidColorStroke(0x000000);? ?
  150. ????????????????????var?_labelV:spark.components.Label?=?new?spark.components.Label();?? ?
  151. ????????????????????_labelV.text?=?String(j?*?10);?? ?
  152. ????????????????????_labelV.x?=?(_trunkLine.xFrom?-?20);?? ?
  153. ????????????????????if(j%10==0){?? ?
  154. ????????????????????????_xSpacing?=?15;?? ?
  155. ????????????????????}else?if(j%5==0){?? ?
  156. ????????????????????????_xSpacing?=?10;? ?
  157. ????????????????????} ?
  158. ????????????????????if(j%scale==0){ ?
  159. ????????????????????????_labelV.y?=?j?*?spacing+1?+?+?_trunkLine.yFrom; ?
  160. ????????????????????????this.addElement(_labelV); ?
  161. ????????????????????} ?
  162. ????????????????????_lineV.xFrom?=?_trunkLine.xFrom?-?_xSpacing;?? ?
  163. ????????????????????_lineV.yFrom?=?j?*?spacing?+?_trunkLine.yFrom;?? ?
  164. ????????????????????_lineV.xTo?=?_trunkLine.xFrom?? ?
  165. ????????????????????_lineV.yTo?=?j?*?spacing?+?_trunkLine.yFrom;?? ?
  166. ????????????????????this.addElement(_lineV); ?
  167. ????????????????} ?
  168. ????????????} ?
  169. ???????????? ?
  170. ????????????} ?
  171. ????????} ?
  172. ????}???

使用:

 
 
  1. <?xml?version="1.0"?encoding="utf-8"?>?
  2. <mx:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"? ?
  3. ????????????????????xmlns:s="library://ns.adobe.com/flex/spark"? ?
  4. ????????????????????xmlns:mx="library://ns.adobe.com/flex/mx"?
  5. ????????????????????xmlns:con="contr.*"?
  6. ????????????????????xmlns:logic="com.runqianapp.fastreport.view.logic.*"????backgroundAlpha="0.0"?
  7. ????????????????????width="100%"?height="100%"?fontFamily="宋体"??creationComplete="init()">?
  8. ????<fx:Declarations>?
  9. ????????<!--?将非可视元素(例如服务、值对象)放在此处?-->?
  10. ????</fx:Declarations>?
  11. ????<mx:HBox?width="100%"?height="100%"?paddingLeft="20"?paddingTop="20"?horizontalGap="0">?
  12. ????????<con:Ruler?lineLength="500"?spacing="10"?scale="5"?type="vertical"/>?
  13. ????</mx:HBox>?
  14. ???? ?
  15. </mx:Application>?

效果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读