【问题标题】:AS3 vertical gradient incorrect when largeAS3 垂直梯度大时不正确
【发布时间】: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,我将向 Adob​​e 报告此问题,希望他们能在下一个版本中修复它。垫子
  • "我要向 Adob​​e 报告此问题" - 1+...请编辑您的帖子以添加此信息...它将在人们遇到与您遇到同样麻烦的情况下更加明显......

标签: actionscript-3 gradient


【解决方案1】:

解决方案是将 Y 中的矩阵转换为盒子的高度,在 FP9 中工作很愚蠢,但我不这样做,孵化器构建并看起来很糟糕,再次回到 10.3 糟糕.. 可能无论是现在它被中心旋转的矩阵还是现在需要平移的东西。

【讨论】:

    【解决方案2】:

    如果不测试您的代码,您似乎在描述这个问题,马里奥·克林格曼 (Mario Klingemann) 有解决方案(当然)。

    http://www.quasimondo.com/archives/000689.php

    【讨论】:

    • 谢谢 nick,但我实际上已经尝试过他的解决方案,但它也不起作用。如果你去victordramba.com/?p=31 有一个方便的在线flash 编译器,如果你复制并粘贴我的代码,你就会明白我的意思。任何其他想法都会非常有帮助,因为我不知道出了什么问题:(
    • 这是我所看到的:gamasaur.co.uk/gradient_problem.jpg 我正在使用 flash builder 4,我创建了一个新的动作脚本项目,我将问题的代码粘贴到构造函数中,点击运行,以上就是我的看。看起来梯度比它应该的要大。有任何想法吗?请注意,我正在使用新的 molehill flash 版本 - 你认为这是一个原因吗?
    • 好的,我认为它是我得到的闪存版本 - 因为当我在其他具有闪存版本 10 的电脑上运行它时,它可以工作。我正在使用 flash 11 的新孵化器版本 - 所以大概就是这个问题:S
    【解决方案3】:

    确认一下,这是 Flash 播放器的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多