`
ch_kexin
  • 浏览: 897851 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

as3 图像颜色渐变中使用matrix

 
阅读更多

graphics 对象也可以绘制渐变笔触和填充,而不是纯色笔触和填充。渐变笔触是使用 lineGradientStyle() 方法创建的;渐变填充是使用 beginGradientFill() 方法创建的。

 

这两种方法接受相同的参数。前四个参数是必需的,即类型、颜色、Alpha 以及比率。其余四个参数是可选的,但对于高级自定义非常有用。

 

第一个参数指定要创建的渐变类型。可接受的值是 GradientFill.LINEAR 或 GradientFill.RADIAL。

第二个参数指定要使用的颜色值的数组。在线性渐变中,将从左向右排列颜色。在放射状渐变中,将从内到外排列颜色。数组颜色的顺序表示在渐变中绘制颜色的顺序。

第三个参数指定前一个参数中相应颜色的 Alpha 透明度值。

第四个参数指定比率或每种颜色在渐变中的重要程度。可接受的值范围是 0-255。这些值并不表示任何宽度或高度,而是表示在渐变中的位置;0 表示渐变开始,255 表示渐变结束。比率数组必须按顺序增加,并且包含的条目数与第二个和第三个参数中指定的颜色和 Alpha 数组相同。

虽然第五个参数(转换矩阵)是可选的,但通常会使用该参数,因为它提供了一种简便且有效的方法来控制渐变外观。此参数接受 Matrix 实例。为渐变创建 Matrix 对象的最简单方法是使用 Matrix 类的 createGradientBox() 方法。

 

定义 Matrix 对象以用于渐变

可以使用 flash.display.Graphics 类的 beginGradientFill() 和 lineGradientStyle() 方法来定义在形状中使用的渐变。定义渐变时,需要提供一个矩阵作为这些方法的其中一个参数。

 

定义矩阵的最简单方法是使用 Matrix 类的 createGradientBox() 方法,该方法创建一个用于定义渐变的矩阵。可以使用传递给 createGradientBox() 方法的参数来定义渐变的缩放、旋转和位置。createGradientBox() 方法接受以下参数:

 

渐变框宽度:渐变扩展到的宽度(以像素为单位)

渐变框高度:渐变扩展到的高度(以像素为单位)

渐变框旋转:将应用于渐变的旋转角度(以弧度为单位)

水平平移:将渐变水平移动的距离(以像素为单位)

垂直平移:将渐变垂直移动的距离(以像素为单位)

例如,假设渐变具有以下特性:

 

GradientType.LINEAR

绿色和蓝色这两种颜色(ratios 数组设置为 [0, 255])

SpreadMethod.PAD

InterpolationMethod.LINEAR_RGB

下面的示例显示的是几种渐变,如图所示,它们的 createGradientBox() 方法的 rotation 参数不同,但所有其它设置是相同的:

 

 

 

width = 100;

height = 100;

rotation = 0;

tx = 0;

ty = 0;

width = 100;

height = 100;

rotation = Math.PI/4; // 45°

tx = 0;

ty = 0;

width = 100;

height = 100;

rotation = Math.PI/2; // 90°

tx = 0;

ty = 0;

 

 

下面的示例显示的是绿到蓝线性渐变的效果,如图所示,它们的 createGradientBox() 方法的 rotation、tx 和 ty 参数不同,但所有其它设置是相同的:

 

 

width = 50;

height = 100;

rotation = 0;

tx = 0;

ty = 0;

width = 50;

height = 100;

rotation = 0

tx = 50;

ty = 0;

width = 100;

height = 50;

rotation = Math.PI/2; // 90°

tx = 0;

ty = 0;

width = 100;

height = 50;

rotation = Math.PI/2; // 90°

tx = 0;

ty = 50;

 

 

createGradientBox() 方法的 width、height、tx 和 ty 参数也会影响“放射状”渐变填充的大小和位置,如下面的示例所示:

 

width = 50;

height = 100;

rotation = 0;

tx = 25;

ty = 0;

 

下面的代码生成了所示的最后一个放射状渐变:

 

import flash.display.Shape;

import flash.display.GradientType;

[NextPage]

import flash.geom.Matrix;

 

var type:String = GradientType.RADIAL;

var colors:Array = [0x00FF00, 0x000088];

var alphas:Array = [1, 1];

var ratios:Array = [0, 255];

var spreadMethod:String = SpreadMethod.PAD;

var interp:String = InterpolationMethod.LINEAR_RGB;

var focalPtRatio:Number = 0;

 

var matrix:Matrix = new Matrix();

var boxWidth:Number = 50;

var boxHeight:Number = 100;

var boxRotation:Number = Math.PI/2; // 90°

var tx:Number = 25;

var ty:Number = 0;

matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty);

 

var square:Shape = new Shape;

square.graphics.beginGradientFill(type, 

                            colors,

                            alphas,

                            ratios,

分享到:
评论

相关推荐

    Flash绘图-AS3 Drawing API.pdf

    #### AS3中的颜色体系 在ActionScript 3.0 (AS3) 中,颜色体系主要分为两种形式:24位色彩和32位色彩。 - **24位色彩**:使用了RGB模型,即红、绿、蓝三种颜色的组合。每种颜色由8位表示,因此可以表达256×256×...

    AS3翻书效果源码

    在AS3中,这种翻书效果通常通过复杂的图形变换和动画来实现。ActionScript 3是Adobe Flash平台的核心编程语言,用于控制交互性、动画和用户界面。AS3相比之前的版本更加面向对象,性能更优,语法更加严格,因此能够...

    flash_as3_programming.pdf

    AS3提供了强大的数学函数和类,如Matrix和Point,用于进行坐标变换、旋转、缩放和裁剪等操作。通过学习这些概念,开发者可以创建出更为复杂和精细的视觉效果。 过滤显示对象是Flash的一大亮点,它允许开发者对舞台...

    office_word_visualbasic_

    例如,使用SolidBrush可以设置单一颜色,HatchBrush可以创建交叉线或点状纹理,而GradientBrush则可以创建颜色渐变的效果。 为了模拟Word的透视效果,我们需要理解GDI+中的Transformations。这涉及到矩阵运算,可以...

    ActionScript3.0开发人员指南

    正则表达式是文本处理的强大工具,本章详细阐述了如何在AS3中使用正则表达式进行字符串匹配和搜索。 - **正则表达式基础知识**:介绍正则表达式的概念,包括基本语法和特殊字符。 - **正则表达式语法**:提供完整的...

    透视与深度的交响:AI绘画软件中的图像生成秘籍

    - **颜色深度**:使用颜色渐变来表现深度,通常远处的物体颜色更淡,这有助于模拟空气透视的效果。 - **模糊深度**:远处的物体可以适度模糊,以突出空间感。这种方法特别适用于模拟大气效果。 - **遮挡关系**:正确...

    actionScript3开发人员最全指南

    AS3支持索引数组、关联数组以及多维数组的使用。此外,还介绍了如何克隆数组和扩展Array类的功能,以及如何利用数组处理复杂的数据结构,比如播放列表的实现。 错误处理在软件开发中占据重要位置。ActionScript 3.0...

    拉普拉斯锐化(边缘检测)

    在编程实践中,可以使用各种编程语言如Python的OpenCV库来实现拉普拉斯锐化。以下是一个简单的Python代码示例: ```python import cv2 import numpy as np # 读取图像 image = cv2.imread('input.jpg', 0) # 读取...

    ActionScript 3.0 开发人员指南中文官网上下的

    - **在ActionScript中使用XML的示例**:从互联网加载RSS数据的例子展示了如何解析和使用网络上的XML数据。 #### 七、使用本机JSON功能 - **JSON API概述**:介绍了ActionScript 3.0中内置的JSON处理API,包括 `...

    ActionScript3.0完全自学手册(1-10章源文件)

    3. **第3章:事件与事件处理程序** - 了解事件驱动编程模型 - 掌握Event类和自定义事件的创建 - 学习addEventListener、removeEventListener和dispatchEvent方法 - 实践各种常见事件的处理,如鼠标点击、键盘...

Global site tag (gtag.js) - Google Analytics