Just want to fill in on the topics above:
Hashes are used instead of string because strings are really bad when it comes to comparison and lookup (this is a general thing for all languages. Avoid strings as much as possible). It’s all about performance really. If you want to improve performance even more it’s a good practise to store hashes in a local variable and use the variable in the comparison condition instead.
I guess the reason why “tint” is not in the sprite API would probably be because it is a part of the shader. As you can create your own shaders and use/name the properties differently it isn’t really a constant thing and shouldn’t be a part of that API.