Hi Sony,
I'm not sure I understand the question correctly ... in general, it's not necessary for the listener and the dispatcher to be the same object. The important thing is just that you add your listener to the right object. So, if we're talking about block-based event listener, like this:
[object addEventListenerForType:@"eventType" block:^(SPEvent *event)
{
// the event was triggered
}];
Then the block will be executed any time "object" dispatches an event with the type "eventType". So the only relation that's required is that, when you add the event listener, the "object" is known to you.
There is one addition to this, though, when we're talking about display objects; because with them, bubbling comes into play. When a display object dispatches an event that has its "bubble" property sent to "true", every object along the parent-chain will be able to catch it. (E.g. if a button in a sprite is triggered, the TRIGGERED event can be listened to on both the button and the sprite.)
Does that answer your question?
BTW: I'm sorry that you had to wait so long for the reply!