FLEX 3.0 虚线边框

本文共两个文件:DashBorderExample.mxml 和 DashBorder.as

1、DashBorderExample.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
   
    <mx:VBox x="50" y="50" width="200" height="200" borderThickness="1" borderColor="#00FF00" borderSkin="DashBorder"/>
    <mx:Panel x="300" y="50" width="200" height="200" borderThickness="5" borderColor="#FF00FF" borderSkin="DashBorder"/>
    <mx:Canvas x="550" y="50" width="200" height="200" borderThickness="1" borderColor="#FF0000" borderSkin="DashBorder"/>
    <mx:VBox x="800" y="50" width="200" height="200" borderThickness="5" borderColor="#00FFFF" borderSkin="DashBorder"/>
   
</mx:Application>

2、DashBorder.as

package{
import mx.core.UIComponent;

public class DashBorder extends UIComponent{
     private var dashlen:Number = 5;    //单点长度
     private var gaplen:Number = 55;    //两点间隔
    
     public function DashBorder(){
         super();
     }
   
     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
         super.updateDisplayList(unscaledWidth, unscaledHeight);
         var borderThickness:int = getStyle("borderThickness");
         var borderColor:int = getStyle("borderColor");
         graphics.clear();
         graphics.lineStyle(borderThickness, borderColor, 1);
         if(getStyle("dashlen")){
             this.dashlen = getStyle("dashlen");
         }
         if(getStyle("gaplen")){
             this.gaplen = getStyle("gaplen");
         }
         drawBorder(this.x, this.y, unscaledWidth, unscaledHeight, this.dashlen, this.gaplen);
     }
   
     private function drawBorder(x1:Number, y1:Number, width:Number, height:Number, dashlen:Number, gaplen:Number):void{
         drawLine(x1, y1, x1 + width, y1, dashlen, gaplen);
         drawLine(x1 + width, y1, x1 + width, y1 + height, dashlen, gaplen);
         drawLine(x1 + width, y1 + height, x1, y1 + height, dashlen, gaplen);
         drawLine(x1, y1 + height, x1, y1, dashlen, gaplen);
     }
    
     public function drawLine(x1:Number, y1:Number, x2:Number, y2:Number, dashlen:Number, gaplen:Number):void{   
         if((x1 != x2) || (y1 != y2)){
          var incrlen:Number = dashlen + gaplen;
          var len:Number = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
          var angle:Number = Math.atan((y2 - y1) / (x2 - x1));
          var steps:uint = len / (dashlen + gaplen);
          var dashstepx:Number = dashlen * Math.cos(angle);
          if(x2 < x1){
              dashstepx *= -1;
          }
          var dashstepy:Number = dashlen * Math.sin(angle);
          var gapstepx:Number = gaplen * Math.cos(angle);
          if (x2 < x1){
              gapstepx *= -1;
          }
          var gapstepy:Number = gaplen * Math.sin(angle);
          var stepcount:uint = 0;
          while((stepcount++) < steps){      
              var dashstartx:Number;
              var dashstarty:Number;
              var dashendx:Number;
              var dashendy:Number;
              if(x1 == x2 && y1 != y2){
                  dashstartx = dashendx = x1;
                  if(y2 > y1){
                      dashstarty = y1 + ((stepcount-1) * (dashlen + gaplen));            
                      dashendy = dashstarty + dashlen;
               }else{
                   dashstarty = y1 - ((stepcount-1) * (dashlen + gaplen));            
                   dashendy = dashstarty - dashlen;
               }
            }else if(y1 == y2 && x1 != x2){
                dashstarty = dashendy = y1;
                if(x2 > x1){
                    dashstartx = x1 + ((stepcount-1) * (dashlen + gaplen));
                    dashendx = dashstartx + dashlen;
                }else{
                    dashstartx = x1 - ((stepcount-1) * (dashlen + gaplen));
                       dashendx = dashstartx - dashlen;
                   }
               }
               graphics.moveTo(dashstartx, dashstarty);
               graphics.lineTo(dashendx, dashendy);
          }
      }
     }
    
   }
}

转载于:https://www.cnblogs.com/liuzhong/archive/2011/08/09/2132474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值