Make sure you call blink() function once. It can be a problem if you keep calling it, it will look like things won’t get processed.
For visibility issue, you may have to set opacity to the sprite manually once you’ve done with blinking or during blinking process, this will confirms that thing is properly set. This is because sometimes you’re in the middle of the blinking and its opacity is set to 0, and something happens at the same time to not let blinking finishes.
Not sure if those helps as I see only portion of your code. Please check anyway.