0

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

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

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

  1. 最右边的激光表示当前加载的百分比。这也是最亮的激光。
  2. 所有其他尾随激光变得越来越暗,直到完全变黑,就好像它们在屏幕背面烧毁了一个整体。

步骤“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. 激光灯完全由代码创建,无需访问库。

如果我可以提供更多详细信息,请告诉我。我会尽可能多地奖励一个好的答案/反馈。

谢谢你所有的时间!

4

2 回答 2

1

我看到的是一个嵌入式功能。

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

于 2011-06-02T21:26:51.427 回答
0

我看到的唯一一件事是,您没有从您的 fadeOn 变量中删除事件侦听器。这是我要检查的第一件事 - 我对补间了解不多,但我知道您的事件侦听器会导致变量“fadeOn”存在的时间比它应该存在的时间长,因为它引用了它。

不过,您可能需要发布更多代码。也许有更多补间经验的人可以提供更多的信息。

于 2011-06-02T04:27:59.623 回答