you should use ID vars that refer to instances. at playstate, when its time to drop another block from the top screen, you create an instance of group at playstate, new (ID, x, y) where ID is a var that increments in number each time a block falls. so at group class, at update(), you add or remove that instance to group1 or group2 at the collision function. group1 is red images, blue is ID 2, etc. then `if collide (group, group2, function)'.
so at the group class which holds all images that fall, at update(), if (ID == anyNumberYouWantToCheckVar) collision (group, group1, function). Id is passed to the class when the instance is created. at that class, without an id check, all instances will be checked in that group. could that be the problem?
I always use IDs when working with instances.