• 绘图与遮罩整理


    a)shape,button,sprite,movieclip都有graphics属性,即Graphics类实例的引用,要画出特别的有个Pen类Grahphics类的代理包装类

       pen类要以Graphics对象引用为参数 var p:Pen = new Pen(sprite.graphics);

    eg:
    1
    var p : Pen = new Pen(graphics); 2 p.lineStyle(5, 0xfd0000); 3 p.drawEllipse(100, 120, 30, 50);

    b)绘画之前没有设置lineStyle(),则线条样式为undefined且线条和填充都不能被渲染!
       sprite.graphics.lineStyle(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit);
    c)渐变样式线条:Graphics.lineGradientStyle();先设置基本线条样式,所需的参数和beginGradientFill()一样

    d)曲线graphics.curveTo(contrlX,contrlY,mudeX,mudeY);
    e)画扇形pen.drawArc(x,y,radius,arc,starAngle,radialLines);arc:扇形度数,radialLines:是否画出扇形两端点到中心的直线,默认false

    f)规则图形:矩形Graphics.drawRect(x,y,w,h),圆角矩形Graphics.drawRoundRect(x,y,w,h,r);指定圆角半径Graphics.drawRoundRectComplex(xywh,1,2,3,4);
      圆形:Graphics.Circle(x,y,r);可用beginFill(), beginGradientFill(), 或beginBitmapFill() 填充圆
      椭圆:graphics.drawEllipse(x, y, width, height);三角形:pen.drawTriangle(x,y,ab,ac,angle);graphics.drawTriangles(vertices)???
      规则多边形:pen.drawRegularPolygon(x,y,sides,length,rotation),星形:pen.drawStar(x,y,points,innerRadius,outerRadius,rotation);
    g)填充:beginFill(color,alphas);
      beginGradientFill(gradientType,colorsArr,alphasArr,ratios,matrix);
      gradientType:常量LINEAR(线性)或RADIAL(放射).ratios:根据颜色和透明度指定最后的纯度,范围为0到255。
      matrix:flash.geom.Matrix 对象定义用于渐变的转换。默认为1x1的渐变转换来填充图形。Matrix类定义
      了createGradientBox()方法,它接受以下参数:scaleX,scaleY,tx,ty,rotation,spreadMethod,interpolationMethod,focalPointRatio.
      (1水平缩放比,2垂直缩放比,3旋转角度可转换为弧度公式为Math.PI/180,4X方向的转换数量,6flash.display.SpreadMethod 类常量,有PAD,REFLECT,和REPEAT。默认为                   PAD,7flash.display.InterpolationMethod类常量,有LINEAR_RGB和RGB。默认为RGB。插补方法影响颜色渐变,8改值范围从-1 到1指示渐变的焦点(对线形渐变无效)默  认为0,也就是位于中点,)
      beginBitmapFill(bitmap,matrix,repeat,smooth);bitmap:填充用的bitmapdata对象。repeat:指定是否平铺位图,默认true。smooth:对位图平滑处理默认false。
      matrix:默认下不需要应用转换,也可指定flash.geom.Matrix对象进行位图的缩放,旋转,倾斜,透明等变换。

     1  eg://渐变填充
     2  1 private function gradientFun() : void {
     3  2    var matrix : Matrix = new Matrix();
     4  3    matrix.createGradientBox(100, 100, 0, 50, 50);
     5  4    var colors : Array = [0xFF0000, 0x00ff00];
     6  5    var alphas : Array = [100, 100];
     7  6    var ratios : Array = [0x00, 0xFF];
     8  7    graphics.lineStyle();
     9  8    graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, matrix);
    10  9    graphics.drawCircle(100, 100, 50);
    11  10   graphics.endFill();
    12  11 }
    //位图填充
    13 package { 14 import flash.display.Sprite; 15 import flash.geom.Matrix; 16 import flash.display.Loader; 17 import flash.net.URLRequest; 18 import flash.display.BitmapData; 19 import flash.events.Event; 20 21 public class BitmapDraw extends Sprite { 22 private var _loader : Loader; 23 public function BitmapDraw() { 24 _loader = new Loader(); 25 _loader.load(new URLRequest("http://imgsrc.baidu.com/forum/pic/item/1f178a82b9014a9033d04c2da9773912b21beeb0.jpg"));
    _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad);
    26 } 28 private function onImageLoad(event : Event) : void { 29 var bitmap : BitmapData = new BitmapData(_loader.width, _loader.height); 30 bitmap.draw(_loader, new Matrix()); 31 var matrix : Matrix = new Matrix(); 32 matrix.scale(.1, .1); 33 var sampleSprite : Sprite = new Sprite(); 34 sampleSprite.graphics.lineStyle(); 35 sampleSprite.graphics.beginBitmapFill(bitmap, matrix); 36 sampleSprite.graphics.drawCircle(100, 100, 100); 37 sampleSprite.graphics.endFill(); 38 addChild(sampleSprite); 39 } 40 } 41 }

    h)遮罩mask:任何可视化对象都可以作为人一对象的mask。
    虽然遮罩即使不添加到显示列表也能正常工作,不过还是建议你添加到显示列表。
    调用显示对象被指定的 mask 对象遮罩。 要确保当舞台缩放时蒙版仍然有效,mask 显示对象必须处于显示列表的活动部分。 但不绘制 mask 对象本身。 将 mask 设置为 null 可删除蒙版。
    要能够缩放遮罩对象,它必须在显示列表中。 要能够拖动蒙版 Sprite 对象(通过调用其 startDrag() 方法),它必须在显示列表中。 要为基于 sprite 正在调度的 mouseDown 事件调用 startDrag() 方法,请将 sprite 的 buttonMode 属性设置为 true。
    注意:单个 mask 对象不能用于遮罩多个执行调用的显示对象。在将 mask 分配给第二个显示对象时,会撤消其作为第一个对象的遮罩,该对象的 mask 属性将变为 null。

     1 private function testMask() : void {
     2       var maskSprite : Sprite = new Sprite();
     3       var pen : Pen = new Pen(maskSprite.graphics);
     4       pen.beginFill(0xFFFFFF);
     5       pen.drawArc(100, 100, 50, 80, 20, true);
     6       pen.endFill();
     7       var maskedSprite : Sprite = new Sprite();
     8       maskedSprite.graphics.lineStyle();
     9       maskedSprite.graphics.beginFill(0xFF0000);
    10       maskedSprite.graphics.drawRect(0, 0, 200, 200);
    11       maskedSprite.graphics.endFill();
    12       maskedSprite.mask = maskSprite;
    13       addChild(maskedSprite);
    14       addChild(maskSprite);
    15   }
  • 相关阅读:
    JSON.stringify 方法模拟
    leetcode算法:1648. 销售价值减少的颜色球
    Dynamics 365 Marketing Trail
    Power Automate expression中的 string 相关公式
    Adaptive Card 和 Power Automate
    Power Automate Approval 功能初始化失败
    linux编程-csh
    王道论坛_PC端播放和下载视频
    记树莓派的一个项目_RGB1602的实际使用
    提取植物大战僵尸静态资源
  • 原文地址:https://www.cnblogs.com/ztdy/p/2588554.html
Copyright © 2020-2023  润新知