Well the way you checked it was not enough.
'is visible' means the value visible of the sprite object is set to visible.
Either small darts and flying ones are visible.
But small darts made it also so throw was turned to 0
And since throw couldn't be >=1 anymore, then the instances did not shrink anymore.
Adding instances variables and checking them the way I did is the way for me to differentiate "States" in my instances.
What do I want :
For as long as it is flying, I want my Sprite Dart to shrink, giving the flight impression.
When the sprite reaches a certain size, I consider it to be planted (different state). It just has to stand there for now.
It's also the good time to check what zone it is colliding with for the score ^^
You might also want to check out this topic (the whole topic is informative imo)