when the falling block reaches the target, create a sprite object at that location. that object should be with zero speed. no need to collide anything. place the falling block back up at the top of the screen and change its color and other stuff to prepare for another falling block. you could create a maze of empty blocks in a x and y grid and then the falling block would move lets say by increments of 32 pixels. then when that falling block reaches a unit that has a full unit underneath it, create the sprite object with its coordinates or better yet, just change that instances color and solid state.
what i would do is each time a block is added to the scene, i would store its x and y coordinates, its color and instance ID. each time a block object is created, do a var plus one to that total. so the blockCount var is passed at the constructor and do ID = blockCount. also, I would use redBlockCoordinateY, redBlockCoordinateX these vars I would use arrays.
next, at the Reg class create a var flickerBlocks[x][y] array which represents the blocks on the screen. at the block class you can use if (flickerBlocks == 1), if redBlockCoordinateY and redBlockCoordinateX was passed to that class and they both equal one then flicker the object. ID is handy if you want to flicker each block in the order of one to max and also to remove objects.
so you can do something like... at the block class update()
for (I in 0...maxID)
// IDx and IDy was passed to the block constructor.
if (Row[x] = 3 && colorID = 2 && flickerBlocks[IDx][IDy] == 1)