flash - 如何创建垂直颜色渐变(或除平面水平渐变之外的任何其他角度)

标签 flash actionscript-3 rotation gradient draw

大家好,我第一次尝试在 actionscript 3 中绘制多色渐变。

所以我从 the help docs 得到了这段代码,但我似乎无法获得垂直渐变,无论我使用什么公式或数字进行旋转,它都停留在默认的水平渐变上:(

我的代码:

您可以在轨迹中看到我尝试过的旋转代码...

package
{
import flash.display.DisplayObject;
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.display.MovieClip;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.display.Shape;
import flash.geom.Matrix;
import flash.events.*;

public class MyGradient extends MovieClip
{
    private var colorHolder:MovieClip = new MovieClip();
    private var colorGrad:MovieClip = new MovieClip();
    private var fillType:String     = GradientType.LINEAR;
    private var colors:Array        = [0xFF0000, 0x4F8EEC];
    private var alphas:Array        = [1, 1];
    private var ratios:Array        = [0x00, 0xFF];
    private var matr:Matrix         = new Matrix();
    private var spreadMethod:String = SpreadMethod.PAD;


    public function MyGradient():void
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init():void
    {
        colorHolder = new MovieClip();
        colorGrad   = new MovieClip();

        //matr.rotate(30*Math.PI/180);
        //matr.rotate(45);
        //matr.rotate(90);
        //matr.rotate(Math.PI/90);
        matr.rotate(Math.PI/9);
        matr.createGradientBox(200, 200, 0, 0, 1);
        colorGrad.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);        
        colorGrad.graphics.drawRect(0,0,200,200);

        colorHolder.addChild(colorGrad);
        addChild(colorHolder);
        }

    }

}

Heavily involved 更新修复:

matr.createGradientBox(200, 200, Math.PI/2, 0, 0);

alt text

最佳答案

这行代码将旋转值设置回零:

matr.createGradientBox(200, 200, 0, 0, 1);

如果您查看该函数接受的参数,您会发现第三个参数是旋转。因此,请尝试以下操作:

matr.createGradientBox(200, 200, Math.PI/9, 0, 1);

此外,您将 y 值平移 1 个像素是否有任何原因?

希望这对您有所帮助。祝你好运!

关于flash - 如何创建垂直颜色渐变(或除平面水平渐变之外的任何其他角度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364689/

相关文章:

actionscript-3 - 如何修复 Flash 中的触摸延迟?

flash - 关于部署社交游戏的多个分支的想法

javascript - 使用 JavaScript 调用 Flash ExternalInterface

apache-flex - 如何在Flex中解码和转换JSON字符串?

java - Java中旋转指定列的4x4数组

c# - 如何将二进制文件从actionScript 发送到.net?

javascript - 站点上的 js 代码可以阻止其他 js 代码检测到 Flash 的存在吗?

javascript - 前 Flash 开发人员对基于 HTML 的 Web 应用程序的看法 - DIV == movieclips 吗?

python - 给定一个单位向量,找出使该向量与轴对齐的两个旋转角度

c++ - 计算旋转角度