Watchers for sprites, costumes, sounds, etc

Snap! uses ListWatcherMorph to display lists.
This is so you can see data from the list, by viewing it head-on.
Costumes don’t work this way. Costumes just show you an image, and no other information. No name, no width, no height, n o t h i n g.
This is the same for sprites and clones. For sounds, it’s even worse because a sound is just the image of a music note, giving no info about the sound itself.
I suggest we add watchers for objects that give more information about the returned object.

Designs I made.

Well, sprites are watchers of themselves, they are visual assets. Same with costumes and sounds, they have their own GUI elements, and even tabs to observe them…

what about a costume made with the new costume @list width () height () block

I think the OP also means showing these new watchers in speech bubbles:

You can’t easily get anything from that speech bubble, other than exporting the sound or using the Untitled script pic (79) block

I think the disagreement is about the purpose of a watcher. In a debugger, you want to see every detail about a data structure. But that’s not the point of watchers; they are meant to give you an instant understanding of what you’re looking at. For example, consider bignums. They’re actually data structures, with the (binary) digits of the number spread across multiple items of an array. But you don’t want to see that implementation detail when looking at a bignum; you just want to see a (long) string of (decimal) digits. (Even for ordinary numbers, the actual implementation in the computer is in binary digits, but as a human being you want to see decimal digits.)

I do often wish there were an obvious way to distinguish a costume from a sprite in watchers/speech balloons. I’m not sure how to do that visually; I’ve thought about putting a wire coat hanger


behind a costume, to suggest that it’s something you can hang in your wardrobe.

Similarly, I don’t think you want to see the innards of a sound in a watcher. You do want it to be clickable to hear the actual sound.

A possibly interesting idea would be to allow an option in the context menu (right click menu) of a watcher or speech balloon that would open a Smalltalk-style display of the fields inside the shown object. That would let the OP see those details without hairing up the primary use of visual representations, namely to represent the meaning of the object. (Yes, I know, you can already do this in dev mode.)

P.S. A technical quibble: Don’t use “origin” to mean the parent of a sprite. “Origin” is a technical term for the point (0, 0) and it’d confuse people to use it to mean anything else.

I like the designs, but I think they should be more compact.
My modifications:

I did add a ‘hide’ button to each watcher, to hide the display of the image/channels/sprite.

I used ‘origin’ because ‘original sprite’ would be too long, and ‘original’ feels like I don’t know know to speak english.

i love these designs, especially the fact you used ‘temporary’, but how will anyone know the width or height of a costume? and you murdered my ‘hide’ button :‍(
(we could still keep the ask button though)

side note

I feel like icons that simplify the costumes, sounds and sprites (when being displayed on lists and tables) would be useful

I did add a ‘hide’ button to each watcher, to hide the display of the image/channels/sprite.

But it’s not the image that you want to hide – it’s the internal data fields such as position and heading. The issue isn’t what takes up more or less screen real estate, but what conveys to the user the main point of the object.

I used ‘origin’ because ‘original sprite’ would be too long, and ‘original’ feels like I don’t know know to speak english.

“Parent.” Among other reasons, if you make a clone of a clone, its parent isn’t the original sprite. :~)

RIP Hide button. (I think there should be a setting to enable and disable that…)

Thx! It’s important to remember: Clones aren’t first class separate from sprites!;)

Yeah, I guess I forgot that.

Yes they are…? First class just means variables and lists can hold them.

Oh yeah. But they’re not separate from sprites. I gotta update that…

I wouldn’t make “watchers” for these things, I’d just make the default representation in watchers and speech bubbles better.


For sounds, I would want something like the little preview squares in the sounds tab.

So you want a ‘hide’ button… for the ‘hide’ button?
'rip hide button, 2026-01-11T21:00:00Z2026-01-13T21:00:00Z ;(

oh yea why didnt i think of that
so should we hide the internal data or the displays?

WHY DIDNT I THINK OF THAT?

so should we hide the internal data or the displays?

What I’m saying is that our existing watchers are fine. :~)

Uh, If your 'hide' option is meant to turn it into the old sprite/costume view, I mean there should be a setting to disable the watcher / enable it.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.