Indeed there is another way! Most of these enemies are broken into several sprites, which either move around, stretch, or rotate.
To make them move, it's usually a sinusoidal pattern (meaning it'll go back and forth in a wave pattern) like x = sin(timer) * amplitude.
To make them stretch, you can use the image_xscale and image_yscale attributes.
To make them rotate, you can use image_angle, which also usually moves sinusoidally.