我的JavaScript代码遇到了一个有趣但困难的问题。基本上,出于教育原因,我正在尝试使用JavaScript (排序算法,如果您想知道的话)创建一个简单算法的动画。我已经写好了所有的动画代码(使用RaphaelJS),一切都很好。问题是要让算法的动画在正确的时间发生。JavaScript实际上没有任何方法来“暂停”执行,所以我不能真正缓慢地逐步执行算法,在每一步都播放动画。从教育的角度来看,如果算法以学生可以理解的速度进行,显然更有价值。
有两种我能想到的解决这个问题的方法,而且都很糟糕。第一种方法是使用一些疯狂的setTimeout()代码。这可能非常困难--需要进行大量奇怪的代码转换才能将算法的不同部分与正确的超时关联起来。我已经尝试过这么做了,对于一个非平凡的算法来说,这会变得非常复杂。
第二种是忙碌-等待。这可能也是可行的。问题是,忙于等待在JavaScript代码中是一个非常糟糕的想法--当我测试这个替代方案时,我实际上使火狐崩溃了。基本上,我想知道是否还有另一个我忽略的解决方案。如果解决方案只是客户端的,那就加分,因为我在学校服务器上提供静态html和javascript以外的东西的自由度是值得怀疑的。
发布于 2009-12-08 15:15:13
,从教育的角度来看,如果算法以学生可以理解的速度进行,显然更有价值。
如何使用链接/按钮,例如<>,允许用户通过单击上一步/下一步来逐步执行代码?
这可能是唯一可行的解决办法,对最终用户来说可能更有意义。
发布于 2009-12-08 15:26:19
也许这太简单了,无法完成您希望它做的事情,但是如果您将想要在停靠点之间运行的代码段放入一个函数中,并通过按下/单击页面上的一个按钮来调用该函数,该怎么办:onclick="runAnimationPiece()"
你的代码需要保持一定的状态,才能知道它从上次函数运行到最后一次停止的位置。
如果您需要为动画的不同片段运行不同的函数,例如,第一个片段应该由foo1()生成,第二个片段由foo2()生成,您可以创建一个计数器和一个调用适当动画函数(foo1()或foo2()等)的函数。基于计数器。
https://stackoverflow.com/questions/1865144
复制相似问题