100分拼图怎么显示在模拟器正中央,帮忙修改代码(5)
* @see javax.microedition.midlet.MIDlet#startApp()
*/
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
if (m_MainCanvas == null)
{
try
{
m_MainCanvas = new MainCanvas(this);
}
catch (Exception ex)
{
System.out.println(ex);
}
}
Display.getDisplay(this).setCurrent(m_MainCanvas);
}
/* (non-Javadoc)
* @see javax.microedition.midlet.MIDlet#pauseApp()
*/
protected void pauseApp() {
// TODO Auto-generated method stub
m_MainCanvas.stop();
}
/* (non-Javadoc)
* @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
*/
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
m_MainCanvas.stop();
}
}
------解决方案--------------------------------------------------------
调整paint中for循环中的X的初值
------解决方案--------------------------------------------------------
显示在正中间吗?那就把你现在的paint函数里边所有画东西的函数中,x,y坐标分别加一个量dx,dy就好了。
protected void paint(Graphics g) {
g.setColor(0);
g.fillRect( 0, 0, getWidth(), getHeight() );
int nImg = 0; //暂存图片的编号
int dx = (getWidth() - 90) / 2;
int dy = (getHeight() - 90) / 2;
switch( m_nSta ) {
case 0:
for( int x = 0; x < 3; x++ ) {
for( int y = 0; y < 3; y++ ) {
if( x == m_nHidX && y == m_nHidY )
continue;
nImg = m_anCur[y][x];
if( nImg > = 0 && nImg < 9 ) {
if( m_aImg[nImg] != null )
g.drawImage( m_aImg[nImg], dx + x * 30, dy + y * 30, Graphics.LEFT|Graphics.TOP);
}
}
}
//接着画线,将9块格子分割开。
g.setColor(0xffffff);//设置成白色
for(int i = 0; i <= 3; i++) {
g.drawLine( dx + 0, dy + i*30, dx + 3*30, dy + i*30);
g.drawLine( dx + i*30, dy + 0, dx + i*30, dy + 3*30);
}
break;
case 1:
for( int x = 0; x < 3; x++ ) {
for( int y = 0; y < 3; y++ ) {
nImg = y * 3 + x;
if( m_aImg[nImg] != null )
g.drawImage( m_aImg[nImg], dx + x * 30, dy + y * 30, Graphics.LEFT|Graphics.TOP);
}
}
break;
case 2:
default:
g.drawString( "Very Good! ", 10, 45,Graphics.LEFT|Graphics.TOP);
break;
}
}