日期:2014-05-20  浏览次数:20708 次

Sprite对象中使用Graphics对象?
我用一个Sprite类对象实现了一个菜单
现在需要在菜单里drawString(出于方便管理的考虑,drawString在实现菜单的Sprite里面处理)
问题是Sprite对象里面不存在Graphics对象

我试图在调用这个Sprite类的Canvas类中调用getGraphics来或得一个对象在传递给Sprite对象的构造函数
可是貌似Canvas没有这个方法
我该怎么办?一下是部分代码(做了省略):
//MyLayerManager.java
public class MyLayerManager extends Canvas {
  LayerManager lmgr;
Layer1 layer1;//Layer1类继承自Sprite类,代码在下面.

  layer1 = new Layer1(img,16,19);
lmgr.append(layer1);

protected void paint(Graphics g){
lmgr.paint(g, 0, 0);
}
}

//Layer1.java
public class Layer1 extends Sprite {
Layer1(Image image, int frameWidth, int frameHeight){
super(image, frameWidth, frameHeight);

this.setPosition(0, 0);
  g.drawString();//需要在这个Sprite里面画菜单里面的选项,可是没有Graphics对象.
}

public void nextFrm(){
this.nextFrame();
}
}
有没有什么办法可以再Layer1中使用drawString或者类似的函数来画出菜单中的选项呢?

------解决方案--------------------
只能写在绘制里面了。

你可以这样做:
为Layer1专门写个绘制方法,在方法中规定好什么时候调用文字绘制方法(用switch和if都可以),最后把你这个方法写在paint()里就行了。
绘制方法只能规定画什么、在哪画、怎么画,而无法决定什么时候画。什么时候画者能通过逻辑来判定。