Esempio n. 1
0
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;
}