2011-05-11 3 views
1

화면에 VerticalFieldManager를 추가하고 있습니다. 나는 배경 이미지를 페인팅하고있어 화면의 하단에있는 공백을 제거 할 때 아래로 사용자가 스크롤과 같이 내 verticalfieldmanager에 sublayout를 오버라이드 (override) 메신저 :화면 또는 VerticalFieldManager에서 하위 레이아웃 재정의

protected void sublayout(int maxWidth, int maxHeight) { 
    super.sublayout(maxWidth, maxHeight); 
    setExtent(maxWidth,Constants.BACKGROUND_IMAGE.getHeight()); 
} 

이 작동하지 않습니다 - 공백의 하단에 표시 유저가 스크롤 다운했을 때의 화면. 화면 객체의 동일한 코드를 사용하는 재정의하는 하위 레이아웃이 화면의 하위 인 VerticalFieldManager보다 우선 순위가 높다고 생각했습니다.

답변

2

몇 가지 사항을 확인하십시오. MainScreen에서 super(VERTICAL_SCROLL | USE_ALL_WIDTH)이라면 화면 관리자는 사용자가 지정한 VFM이 아니라 실제로 스크롤 다운됩니다. 당신은 VFM의 paint() 메소드를 재정의 (override)하려고 시도 할 수 있습니다 :

protected void paint(Graphics graphics) { 
    graphics.drawBitmap(0, getVerticalScroll(), bg.getWidth(), bg.getHeight(), bg, 0, 0); 
    super.paint(graphics); 
} 

스크롤을 사용하여 배경을 "이동"시켜야합니다.

+0

먼저 슈퍼를 호출해야합니까? 이 경우 drawBitmap을 재정의합니까? –

+1

배경이기 때문에 먼저 그려야하고 그 다음에 다른 모든 것을 그 위에 놓으 려합니다 ('super()'를 호출하여). – jprofitt

+0

설명 주셔서 감사합니다! :) –

관련 문제