I think I had the same problem wich I resolve this way.
First a little explanation of what i had and what i did.
I had several custom widgets into cells of a GridLayout, and bind the 'on_touch_down' to those widgets.
When I touch one the the widget, the event is fired x times ( x = number of instances of the widget ).
I expected the event to be sent only to the widget I touch.
So to get the correct widget at the 'on_touch_down' method, I used
if self.collide_point ( touch.x, touch.y) :
#filter to the touchded instance#
my code. .......
I think your doing a "ball breaker" game ? Maybe you have a clock to move the ball like in the Pong tutorial ? if so, maybe you can check the collision at the ball moving function ?
In the widget class you have a collide_widget method explained here :
http://kivy.org/docs/api-kivy.uix.widget.html?highlight=collide_widget#kivy.uix.widget.Widget.collide_widgetI hope I understand what you where asking for, I post my experience here to get this answer :
why, in my case, the on_touch_down event is call as many times as instances of my widget ?
cheers.
Mathieu