This is basically what I had in mind:
StopMoving.hype.zip (44.3 KB)
Each emoji gets an extra class called 'unmoved'. If the drag starts, this class is removed.
Pressing the left button calls
panEmojiLeft() which calls into
panEmoji() using an unlisted 4th argument for 'left' to give the direction to the generic function. The right button does the same, but with 'right' as the argument.
panEmoji() looks at any elements still with the 'unmoved' class, and will offset them by the amount specified in the function with an animation. There's also a little bit of code to make sure some basic boundaries are respected and that you don't click twice immediately.
There's a few downsides to this approach, one of which is you can't use a group with hidden overflow -- the emoji have to be peers. I've instead put some elements over the buttons so it looks like it is getting clipped.