when i use CCScrollView in my project, i found that it has not apply the uniform scale feature as other CCObject do.
thus in iPhone simulator I got 480*320(fullscreen) scroll view range,but in android cellphone, i only get 240*160 view range.
is there anyone else that has
encountered this situation?
it is a bug in CCScrollView.cpp, i have resolved this problem myself.
original source:
void CCScrollView::beforeDraw()
489 {
490 if (m_bClippingToBounds)
491 {
492 // TODO: This scrollview should respect parents’ positions
493 CCPoint screenPos = this~~>convertToWorldSpace~~>getPosition);
494
495 glEnable;
496 float s = this~~>getScale;
497
498 CCDirector director = CCDirector::sharedDirector;
499 s= director~~>getContentScaleFactor();
500
501 glScissor((GLint)screenPos.x, (GLint)screenPos.y, (GLsizei)(m_tViewSize.width*s), (GLsizei)(m_tViewSize.height*s));
502
503 }
504 }
fixed source:
void CCScrollView::beforeDraw()
{
if (m_bClippingToBounds)
{
// TODO: This scrollview should respect parents’ positions
CCPoint screenPos = this~~>convertToWorldSpace;//this~~>getParent()>getPosition);>getScale();
screenPos = CC_POINT_POINTS_TO_PIXELS;
glEnable;
float s = this
CCDirector director = CCDirector::sharedDirector;
s= director->getContentScaleFactor();
CCEGLView::sharedOpenGLView().setScissorInPoints((GLint)screenPos.x*s, (GLint)screenPos.y*s, (GLsizei)(m_tViewSize.width*s), (GLsizei)(m_tViewSize.height*s));
//glScissor((GLint)screenPos.x*s, (GLint)screenPos.y*s, (GLsizei)(m_tViewSize.width*s), (GLsizei)(m_tViewSize.height*s));
}
}