如何将所有像素向下移动?

How to move all pixels down?

我在黑色上绘制了多个白色像素 canvas 以获得夜空。我给了星星随机位置,现在希望所有像素都向下移动以模仿地球的运动。

我试过翻译,但它似乎不适用于像素。

有没有办法将 canvas 中的所有像素向下移动?

arrayCopy(pixels, 0, pixels, width, (height - 1) * width);

应该可以解决你遇到的问题。有关 arrayCopy 的更多帮助,请查看此处:https://processing.org/reference/arrayCopy_.html

基本上,创建动画的过程是这样的:

  • 将您的状态存储在变量或缓冲区中。
  • 使用这些变量每帧绘制场景。
  • 随着时间的推移改变这些变量来改变你的场景。

一种方法是将星星绘制到缓冲区。 createGraphics() 函数是你的朋友。然后使用 image() 函数将该缓冲区绘制到屏幕上。然后将缓冲区的 y 位置每帧向下移动一定量。

另一种方法是将您的星星位置存储在一组变量中,例如 ArrayListPVector 个实例。将这些位置绘制到屏幕上,并在每一帧中将每个位置向下移动一点。

translate() 函数应该可以很好地处理点,这只是我上面概述的步骤的另一种方法。就像托比亚斯的回答一样。有很多不同的方法可以做到这一点。如果您仍然遇到问题,请 post 在新问题 post 中回答 MCVE。祝你好运。

无耻的自我推销:我在 Processing 中写了一个创建动画的教程可用 here