Sprite moving when it is not told to

I’m trying to make a project where you can draw frames of an animation and play it back, but when you play the animation the sprite that shows the animation moves each frame, even though there is no code making it move.
here is a video:
Screen recording 2026-04-19 11.22.04 AM

Could you share a link?

okay.
also to use it press + to add a frame and enter to play it

okay, first thing i noticed is that you do
if <(variable) = <<true>>> { ... } a lot, even though you can just do if (variable) { ... }
as for the actual issue you’re having.. i’m not sure. but im in the process figuring it out now

I think it might be is because I used the pen block it sets the anchor(I don’t know what else to call it) to where the pen last was.

okay, ive think i got it. in the Frame sprite, replace the go to [canvas V] block with go to x: (0) y: (0), add a go to [front V] layer block below that, and replace the main loop with
if <(Playing?) = <<true>>> { show switch costume to (item (Frame) of (Frames::variables)) } else { hide }
then, in the Pen sprite, replace pen trails with this script pic:
Animation maker script pic (1)
and you’re done!

explanation

we use ask [Stage V] for ((pen trails) @>) @:> just to ensure the size of the costume stays the same for each frame. then, we put that into the custom clone @list::looks reporter block that I made, to unlink the pen trails. without the clone block, every frame would look different in the list, but they all point to the same reference, causing them to be the same.

why not id of __?

i tried using ([id V] of ()), but that didn’t unlink the pen trails for whatever reason. a bug, probably?

other issues and suggestions
  1. the aforementioned
  1. i’d remove the change [Frame V] by (1) at the end of the when [enter V] key pressed in the Pen sprite, since it isn’t needed anymore
  2. the Bottom Bar sprite doesn’t do anything, so i would recommend deleting it

Thanks, it worked!

or just if (Playing?){ } else{ , no?

ID of deep copies lists only. I learned why this happened, it is a quite beautiful side-effect of hyperization.

i was trying to keep parity with what they were already doing :)