2011-12-04 157 views
1

因此,我正在制作Android游戏,基本上涉及在屏幕上向左和向右移动的飞船(锁定在纵向模式),该游戏试图躲避从屏幕顶部飞过的物体。我有一个类GraphicsView(它扩展视图),处理所有的绘图和whatnot。我试图在按钮上显示两个按钮,一个将船舶向左移动,另一个将船舶向右移动。我有这个布满整个代码:如何在屏幕上显示按钮?

Button mLeft; 

mLeft = new Button (context); 

mLeft.setX (0); 
mLeft.setY (mDisplay.getHeight() - 64); 
mLeft.setHeight (64); 
mLeft.setWidth (64); 
mLeft.setBackgroundColor (80000000); 
mLeft.setText ("<"); 

每当我尝试调用任何上述MLEFT这些方法,我的程序崩溃。我已经尝试将所有这些内容评论出来,然后逐个添加它们以查看它们中的任何一个是否不会崩溃,但是其中的一个是否会崩溃。我能够在没有程序崩溃的情况下执行mLeft.draw(canvas),但屏幕上没有任何内容显示。

对此的任何帮助将不胜感激,谢谢。

回答

0

您是否添加了mLeft.setOnClickListener()。另外,对于onDraw(),您是否在方法的末尾添加了invalidate()

+0

我刚刚在mleft = new Button(context)之后添加了mLeft.setOnClickListener(this),但它仍然崩溃。我的onDraw方法的底部有一个invalidate。 –

+0

您需要让您的类实现OnClickListener接口,并且必须重写onClick方法,否则您可以执行以下操作:'mLeft.setOnClickListener(new View.onClickListener {//实现onClick {})'。你还可以显示onDraw() –

+0

我实现了View.OnClickListener和onClick(View视图)方法。 –

0

可能是因为setText(“<”)。尝试改变它到别的东西。

+0

我试过注释掉那一行。他们每个人都会导致它崩溃。 –

+0

而LogCat总是说'找不到方法android.widget.Button。setX,从方法edu.pacificu.cs.Views.GraphicsView引用。 '或者先调用哪个方法,而不是setX。 –