I the version your have online, I cant see where its removing the child? Have you updated it since posting?
Also, one other thing which may be the problem. You don’t seem to remove the touch delegate on the object
i.e This function is never called
If you click and hold the mouse while the block is falling the object that you have clicked on appears set to null in the deselect function.
Also. Why are you using the LazyLayer for things that change ? I was under the impression that the LazyLayer was a special layer and was reserved backgrounds etc and other things that don’t change during the lifetime of the game.
I think that your problems are more likely to be logic errors that issues with the actual Sprites not being removed, or if the sprites are not removed its because they cant be removed because some sort of memory or event linkage to you main code.
I like you code that allows the Panel objects to receive touches. I posted a question about this, and the response I got was that touch was not supported on Sprites and that I should process touch events on the “layer”, but your solution is much neater