在 TweenMax 和 AS3“覆盖管理器”中设置计数器

发布于 08-20 17:54 字数 1373 浏览 14 评论 0原文

如何使用 Greensocks TweenMax 或 TweenLite 制作计数器?有人了解覆盖管理器吗?

我的代码将在 AS3 中。我希望它是基于计时器的,并且能够 或重置它的自身并循环。建议或起始代码会很酷。另外,使用补间引擎有什么不好吗?让我知道。

想法
移动数字列“按像素递增”
0
1
2
3
4
5
6
7
8
9
0

//1
TweenMax.to
(num7, 1, {y:-3911, delay:1, paused:false, useFrames : false, immediateRender : false});
//2
TweenMax.to
(num7, 1, {y:85, delay:2, paused:false, useFrames : false, immediateRender : false});
//3
TweenMax.to
(num7, 1, {y:-3911, delay:3, paused:false, useFrames : false, immediateRender : false});
//4
TweenMax.to
(num7, 1, {y:85, delay:4, paused:false, useFrames : false, immediateRender : false});
//5
TweenMax.to
(num7, 1, {y:-3911, delay:5, paused:false, useFrames : false, immediateRender : false});
//6
TweenMax.to
(num7, 1, {y:85, delay:6, paused:false, useFrames : false, immediateRender : false});
//7
TweenMax.to
(num7, 1, {y:-3911, delay:7, paused:false, useFrames : false, immediateRender : false});
//8
TweenMax.to
(num7, 1, {y:85, delay:8, paused:false, useFrames : false, immediateRender : false});
//9
TweenMax.to
(num7, 1, {y:-3911, delay:9, paused:false, useFrames : false, immediateRender : false});
//10

外观“事物出现和消失,类似于load-sprite-method”
“没有例子”

我的问题
-无限循环运动
-全局时间缩放和数学基础
-垃圾堆积

How would I make a counter using Greensocks TweenMax or TweenLite? Does anyone understand the overwrite manager?

My code will be in AS3. I want it to be timer based, and be capable
or resetting it's self and looping. Advice or starter-code would be cool. Also, is it bad to use tweening engines? Let me know.

IDEAS
moving number column "increments by pixels"
0
1
2
3
4
5
6
7
8
9
0

//1
TweenMax.to
(num7, 1, {y:-3911, delay:1, paused:false, useFrames : false, immediateRender : false});
//2
TweenMax.to
(num7, 1, {y:85, delay:2, paused:false, useFrames : false, immediateRender : false});
//3
TweenMax.to
(num7, 1, {y:-3911, delay:3, paused:false, useFrames : false, immediateRender : false});
//4
TweenMax.to
(num7, 1, {y:85, delay:4, paused:false, useFrames : false, immediateRender : false});
//5
TweenMax.to
(num7, 1, {y:-3911, delay:5, paused:false, useFrames : false, immediateRender : false});
//6
TweenMax.to
(num7, 1, {y:85, delay:6, paused:false, useFrames : false, immediateRender : false});
//7
TweenMax.to
(num7, 1, {y:-3911, delay:7, paused:false, useFrames : false, immediateRender : false});
//8
TweenMax.to
(num7, 1, {y:85, delay:8, paused:false, useFrames : false, immediateRender : false});
//9
TweenMax.to
(num7, 1, {y:-3911, delay:9, paused:false, useFrames : false, immediateRender : false});
//10

Appearance "things appear and dissapear, similar to load-sprite-method"
"no example"

My Problems
-infinite looping motions
-global time-scaling and math floor
-garbage build up

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云淡风轻2024-08-27 17:54:01

听起来你有把事情复杂化的习惯。我可能不会使用补间引擎,但可能会使用 Timer 类。

我还会将事情分成可管理的块。目前看来您已经将计时代码和显示代码全部混合在一起了。我将创建这些单独的部分:

  1. CounterTimer - 计算出您的最新情况(基于时间)的东西。
  2. CounterView - 柜台的视觉图形。它唯一的工作是渲染告知要显示的任何数字。并处理状态之间的转换。
  3. CounterController - 有点像中间人。从 CounterTimer 获取当前计数,并告诉 CounterView 渲染该数字(基于帧,因为每帧只能渲染一次)。

像这样分解意味着您可以一次专注于一个组件,并与其他部分隔离地测试该部分。例如;首先你可以构建 CounterView。这可能是一个将图形保存在舞台上的影片剪辑。它可能有一个名为的方法:

public function displayNumber(numberToDisplay:Number):void

调用此方法时,CounterView 将显示该数字的图形,包括过渡。要测试此组件,只需使用随机数从 CounterView 父级调用此方法即可。工作完成后,您就可以开始使用 CounterTimer 了。

对于 CounterTimer,您可能希望它有更多的 API,例如,

public function CounterTimer( startCount:Number ) //This is the constructor.
public function start()
public function reset():void
public function getCount():Number

当 CounterTimer 完成时,只需启动 CounterController 将它们连接在一起。 CounterController 需要侦听 Enterframe 事件,并告诉 CounterView 每帧显示 CounterTimer 的计数。

It sounds like you have habit of over complicating things. I would probably not use a tweening engine, but might use the Timer class.

I would also separate things out into manageable chunks. At the moment it looks like you have your timing code and you display code all mixed in together. I would create these seperate parts:

  1. CounterTimer - The thing that works out what Count your up to (time-based).
  2. CounterView - The visual graphics of your counter. It's only job is to render what ever number it is TOLD to display. And handle the transitions between states.
  3. CounterController - Sort of a middle-man. Gets the current Count from CounterTimer, and tells CounterView to render that number (frame-based, because you can only render once per frame).

Breaking it down like this means you can concentrate on one component at a time, and test that one part in isolation from the other parts. For example; first you could build the CounterView. This would probably be a MovieClip that holds your graphics on the stage. It might have a method called:

public function displayNumber(numberToDisplay:Number):void

When this method is called, the CounterView will show the graphics for that number, including transitions. To test this component, just call this method from the CounterView parent, with a random number. Once it works you can start working on the CounterTimer.

For the CounterTimer you would probably want it to have a bit more of an API e.g.

public function CounterTimer( startCount:Number ) //This is the constructor.
public function start()
public function reset():void
public function getCount():Number

When CounterTimer is finished, just start on the CounterController to hook them together. The CounterController would need to listen to the enterframe event, and tell CounterView to display CounterTimer's count every frame.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文