ActionScript 3 Alpha补间

时间:2011-06-02 00:29:20

标签: flash actionscript-3 actionscript preloader tween

我正在构建一个自定义预加载器,它与RIA中常见的“传统”滑动条不同。预加载器使用100个直线的白色激光灯,它们共同表示进度条。在我提出问题之前,让我先说明一下这是如何运作的:

.................的 ....... ,,,,,,,,, ::::::::::: :::::::::::::: BBBBBBBB 等...

上面的字符串捕获了预加载器指示符的精神。在这个插图中,角色越大越胖,我的实际预加载器中的激光越亮:

  1. 右侧最远的激光表示当前加载的百分比。这也是最亮的激光。
  2. 所有其他尾随激光器变得越来越暗,直到它们变成完全黑色,好像它们在屏幕后面烧了整整一样。
  3. 步骤“2”是事情变得棘手的地方。出于某种原因,除了一些随机激光器之外,试验激光器不会变暗。这是控制点的亮度(或者,我使用它,alpha属性)的代码片段:

    ... more code ...
    
    //Build the dots according the configuration and load status parameters
      private function buildDots(x:int, y:int):void {
      //Draw the dot, details not shown
        var dot:Shape = new Shape();
    
      //Begin the transitioning
        this.fadeOn(dot);
      }
    
    //Fade a dot to full brightness
      private function fadeOn(dot:Shape):void {
        var fadeOn:Tween = new Tween(dot, "alpha", None.easeNone, 0, 1, this.fadeOnTime, true);
    
          fadeOn.addEventListener(TweenEvent.MOTION_FINISH, fadeOff);
      }
    
    //Fade a dot to black
      private function fadeOff(e:TweenEvent):void {
        var fadeOff:Tween = new Tween(e.target.obj, "alpha", None.easeNone, 1, .2, this.fadeOffTime, true);
      }
    
    ... more code ...
    

    有人可以告诉我哪里出错了吗?这些细节可能有所帮助:

    1. 整个预加载器位于自定义类中。
    2. 激光灯完全由代码创建,无需访问库。
    3. 如果我能提供更多详情,请告诉我。我会尽可能多地奖励一个好的答案/反馈。

      感谢您的所有时间!

2 个答案:

答案 0 :(得分:1)

我看到的是嵌入式功能。

我会使用Greensock强大的TweenMax类重新编码。 http://www.greensock.com/tweenmax/

答案 1 :(得分:0)

我唯一看到的就是你没有从你的fadeOn变量中删除一个事件监听器。这是我要检查的第一件事 - 我对补间知之甚少,但我确实知道你的事件监听器会导致变量“fadeOn”存在的时间超过它应该存在的时间,因为它有一个对它的引用。 / p>

但是,您可能需要发布更多代码。也许拥有更多补间经验的人可以获得更多的光。