Creating an Animating Script
造型换成 [Slash1 v] 等待 (0.05) 秒 造型换成 [Slash2 v] 等待 (0.05) 秒 造型换成 [Slash3 v] 等待 (0.05) 秒 造型换成 [Slash4 v] 等待 (0.05) 秒 造型换成 [Slash5 v] 等待 (0.05) 秒 造型换成 [Slash6 v]
As you can see, it is lengthy and can easily be done in a more efficient way:
switch costume to [Slash1 v] repeat (5) wait (0.05) secs next costume end
This script produces the same effect, but conserves space, which is quite useful if there are many costumes being displayed.
Another way to animate is by using operator blocks. If you want sprites to move, say something, then move again, this way is very effective.
重复直到 <(costume#) = (5)> 造型换成下一个 等待 (0.05) 秒 end
This script says to animate the sprite until a certain costume. This allows the sprite to move, stop, talk, then move again.
Often costumes may change so quickly that the desired animation is faster than wanted. Animations can be slowed by adding the Wait () Secs into the animation script. You will want to change the wait time according to how big the changes in each frame. If the changes are minor, you want a smaller wait. If they are choppy, you would want a bigger wait.
An inefficient animation script with delays:
switch costume to [Stab1 v] wait (0.1) secs switch costume to [Stab2 v] wait (0.1) secs switch costume to [Stab3 v] wait (0.1) secs switch costume to [Stab4 v] wait (0.1) secs
An efficient animation script with delays:
switch costume to [Stab1 v] repeat (5) wait (0.1) secs next costume end
The number in the Repeat () block is the amount of costumes that you'll be going through, not counting the first one that is before the block.
In some animations, the animation delay may have to change as the animation is running. Here, it gets a bit harder with an efficient script. With the inefficient script, it is easy; the multiple delay blocks simply have to be adjusted correctly:
switch costume to [Strike1 v] wait (0.1) secs switch costume to [Strike2 v] wait (0.2) secs switch costume to [Strike3 v] wait (0.3) secs switch costume to [Strike4 v] wait (0.4) secs switch costume to [Strike5 v] wait (0.5) secs
In the efficient script, the second delay block is being used multiple times, and will, therefore, have to change accordingly.
set [delay v] to (0.1) switch costume to [Strike1 v] repeat (4) wait (delay) secs next costume change [delay v] by (0.1) end
If the animation delay is changing in an unpredictable way, a list can be used, its items giving the animation delay:
set [item v] to (1) switch costume to [Strike1 v] repeat (4) wait (item (item) of [delays v]) secs next costume change [item v] by (1) end