ICharacter* MovieClip::getTopMost(float x, float y, bool polygonTest) { ICharacter* pRet = NULL; DisplayList::reverse_iterator rit = _display_list.rbegin(); while( rit != _display_list.rend() ) { MovieObject &object = rit->second; ICharacter* pCharacter = object._character; if (pCharacter && pCharacter->visible()) { MATRIX m; POINT local, world = {x,y}; m.setInverse( object._transform ); m.transform(local, world); pRet = pCharacter->getTopMost(local.x, local.y, polygonTest); if (pRet) { switch(pRet->type()) { case ICharacter::TYPE_BUTTON: case ICharacter::TYPE_MOVIE: return pRet; default: return this; } } } ++rit; } return NULL; }