【发布时间】:2011-03-29 16:57:56
【问题描述】:
这似乎是一件非常直接的事情,并且有大量关于该主题的教程。但是,他们都没有帮助我解决这个问题,而且我终其一生都无法弄清楚出了什么问题。
我正在尝试创建一个具有垂直渐变的简单 Flash AS3 GUI 组件。我创建了精灵,并使用 beginGradientFill 和一个 90 度弧度角的矩阵绘制渐变。如果您查看此输出,您会发现它没有创建黑色到白色的垂直渐变。
package
{
import flash.display.GradientType;
import flash.display.Shape;
import flash.display.Sprite;
import flash.geom.Matrix;
public class Main extends Sprite
{
public function Main()
{
var theWidth : Number = 800;
var theHeight: Number = 100;
var shape1:Shape = new Shape();
var matrix:Matrix = new Matrix();
matrix.createGradientBox(theWidth , theHeight, Math.PI*0.5, 0, 0);
var colors:Array = [ 0xffffff, 0x000000];
var alphas:Array = [ 1, 1];
var ratios:Array = [ 0, 255];
shape1.graphics.lineStyle(2,0xa1b0b6);
shape1.graphics.beginGradientFill(GradientType.LINEAR,colors, alphas, ratios, matrix);
shape1.graphics.drawRect( 0.0, 0.0, theWidth , theHeight);
shape1.graphics.endFill();
addChild(shape1);
}
}
}
如果我改变了
matrix.createGradientBox(800, 100, Math.PI*0.5, 0, 0);
到
matrix.createGradientBox(800, 100, Math.PI, 0, 0);
它工作正常 - 但水平 - 为什么应用 90 度填充不起作用?
谢谢你的帮助,我真的不知道这是怎么回事
【问题讨论】:
-
你的代码对我来说很好......(Flashdevelop)
-
真的吗?我在 flash builder 和这个在线 flash 编译器上都试过了:victordramba.com/?p=31 - 但两个结果都是一样的。我看到一种灰色的渐变。应该是黑白的。我真的不明白:S
-
看看这个 (imm.io/4Fug) 并告诉我它是否是你想要的。这是您向我输出的代码。我唯一改变的是删除了 2 像素厚的边框。我可以看到有或没有边框完全一样,除了边框阻挡了矩形每一边的最外层像素。
-
您好 Nemo,我已经解决了这个问题 - 它与新的 Flash 播放器 11 有关。我为 molehill API 下载并安装了它,但它仍处于预发布阶段。如果没有 Flash Player 11,渐变效果很好 - 但有了它,它就会变得一团糟。我的想法是他们对矩阵类进行了一些更改,这影响了我想要实现的目标。感谢您的帮助 Nemo,我将向 Adobe 报告此问题,希望他们能在下一个版本中修复它。垫子
-
"我要向 Adobe 报告此问题" - 1+...请编辑您的帖子以添加此信息...它将在人们遇到与您遇到同样麻烦的情况下更加明显......