Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3垂直坡度较大时不正确_Actionscript 3_Gradient - Fatal编程技术网

Actionscript 3 AS3垂直坡度较大时不正确

Actionscript 3 AS3垂直坡度较大时不正确,actionscript-3,gradient,Actionscript 3,Gradient,这似乎是一件非常直截了当的事情,而且有大量关于这个主题的教程。但是,没有一个能帮我解决这个问题,我一辈子也弄不清楚到底出了什么问题 我正在尝试创建一个简单的Flash AS3 GUI组件,该组件具有垂直渐变。我创建了精灵,用beginGradientFill和一个90度弧度角的矩阵绘制渐变。如果你看这个输出,你会发现它并没有创建一个从黑到白的垂直渐变 package { import flash.display.GradientType; import flash.display.S

这似乎是一件非常直截了当的事情,而且有大量关于这个主题的教程。但是,没有一个能帮我解决这个问题,我一辈子也弄不清楚到底出了什么问题

我正在尝试创建一个简单的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);

它可以很好地工作-但是水平-为什么应用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);