游戏主城比较大,支持拖动与缩放,m_touchLayer变量内取得位置偏移量与scale比例。
void testLayer::visit(void)
{
glEnable(GL_SCISSOR_TEST);
CCPoint selfPos = ccpAdd(this->getParent()->getPosition(), m_touchLayer->getPosition());
CCSize selfContentSize = this->getContentSize();
CCLOG("selfPos = %f,%f, selfContentSize =%f,%f", selfPos.x, selfPos.y ,selfContentSize.width, selfContentSize.height );
float scaleX = CCEGLView::sharedOpenGLView()->getScaleX() * m_touchLayer->getScaleX();
float scaleY = CCEGLView::sharedOpenGLView()->getScaleY() * m_touchLayer->getScaleY();
CCLOG("scale = %f,%f,m_bg->scale = %f,%f",scaleX,scaleY,m_touchLayer->getScaleX(),m_touchLayer->getScaleY());
CCRect viewPortRect = CCEGLView::sharedOpenGLView()->getViewPortRect();
glScissor(selfPos.x *scaleX + viewPortRect.origin.x ,
selfPos.y * scaleY + viewPortRect.origin.y ,
selfContentSize.width*scaleX,
selfContentSize.height*scaleY);
CCNode::visit();//显示父类的内容
glDisable(GL_SCISSOR_TEST);
}