Actionscript 3 AS3垂直坡度较大时不正确
这似乎是一件非常直截了当的事情,而且有大量关于这个主题的教程。但是,没有一个能帮我解决这个问题,我一辈子也弄不清楚到底出了什么问题 我正在尝试创建一个简单的Flash AS3 GUI组件,该组件具有垂直渐变。我创建了精灵,用beginGradientFill和一个90度弧度角的矩阵绘制渐变。如果你看这个输出,你会发现它并没有创建一个从黑到白的垂直渐变Actionscript 3 AS3垂直坡度较大时不正确,actionscript-3,gradient,Actionscript 3,Gradient,这似乎是一件非常直截了当的事情,而且有大量关于这个主题的教程。但是,没有一个能帮我解决这个问题,我一辈子也弄不清楚到底出了什么问题 我正在尝试创建一个简单的Flash AS3 GUI组件,该组件具有垂直渐变。我创建了精灵,用beginGradientFill和一个90度弧度角的矩阵绘制渐变。如果你看这个输出,你会发现它并没有创建一个从黑到白的垂直渐变 package { import flash.display.GradientType; import flash.display.S
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);
到
它可以很好地工作-但是水平-为什么应用90度填充不起作用
谢谢你的帮助,如果不测试你的代码,我真的不知道这有什么问题,你可能正在描述Mario Klingemann(当然)有解决方案的这个问题
解决方案是将Y中的矩阵转换为盒子的高度,在FP9中工作对我来说很愚蠢,没有这样做对我来说效果很好,培养箱已经建成,看起来很糟糕,又回到了10.3糟糕。。可能是现在矩阵由中心旋转,或者现在需要进行平移。请确认,这是Flash播放器的问题。您的代码对我来说运行良好。。。真的吗?我在flash builder和在线flash编译器上都试过:-但两种结果都是一样的。我看到一种灰色的渐变。应该是黑白相间的。我真的不明白:看看这个()告诉我这是不是你想要的。这是你给我的代码输出。我唯一改变的是去掉了2像素厚的边框。我可以看到完全相同的有或没有边界,除了边界阻碍了最外面的像素的每一边的矩形。嗨尼莫,我已经隔离的问题-它与新的Flash播放器11。我为molehill API下载并安装了它,但它仍处于预发布阶段。没有flash player 11,渐变效果很好,但有了它,它会变得一团糟。我的想法是,他们对matrix类做了一些更改,这影响了我试图实现的目标。感谢您的帮助,尼莫,我将向Adobe报告,希望他们能在下一版本中修复它。Mat“我将向Adobe报告此情况”-1+用于此。。。请编辑你的帖子来添加这条信息。。。当人们遇到与你同样的麻烦时,这会更加明显……谢谢尼克,但实际上我已经尝试过他的解决方案,而且也不起作用。如果你去那里有一个方便的在线flash编译器,如果你复制并粘贴我的代码,你就会明白我的意思。任何其他想法都会非常有用,因为我不知道出了什么问题:(以下是我看到的:我正在使用flash builder 4,我创建了一个新的动作脚本项目,我将我的问题代码粘贴到构造函数中,点击运行,上面就是我看到的。看起来梯度比它应该的要大。有什么想法吗?只是提醒一下,我正在使用新的molehill flash版本-这会是一个原因吗hink?好吧,我想这是我得到的flash版本——因为当我在其他有flash版本10的pc上运行它时,它可以工作。我使用的是flash 11的新孵化器版本——所以可能这就是问题所在:s
matrix.createGradientBox(800, 100, Math.PI, 0, 0);