我正在制作一个游戏,它有超过10个关卡,都包含相同的" CheckWin()"方法,这太长了,并做了很多东西,如更改值,更新分数,更新时间,更改图像等所有,所以我想移动" CheckWin()"一个名为"函数"的新类的方法,所以该方法需要访问一些视图,值,对象等的主要问题...并在调用此方法的类中更改一些视图,现在我&# 39;我喜欢
//In Level Activity Calling The Method
ImageView imageView1 = (ImageView)findViewById(R.id.imageView);
Function function = new Funtions();
//And In Functions Class Changing Images
public void CheckWin() {
Level1.imageView1.setVisibility(View.INVISIBLE);
Level2.imageView1.setVisibility(View.INVISIBLE);
Level3.imageView1.setVisibility(View.INVISIBLE);
Level4.imageView1.setVisibility(View.INVISIBLE);
Level5.imageView1.setVisibility(View.INVISIBLE);
Level6.imageView1.setVisibility(View.INVISIBLE);
Level7.imageView1.setVisibility(View.INVISIBLE);
Level8.imageView1.setVisibility(View.INVISIBLE);
Level9.imageView1.setVisibility(View.INVISIBLE);
Level10.imageView1.setVisibility(View.INVISIBLE);
}
但这会产生错误,所以如何检查用户是哪个级别以及哪个类调用此方法,这样我只能使用一个语句来完成所有这些......比如
public void CheckWin() {
ClassThatInvokedThisMethod.imageView1.setVisibility(View.INVISIBLE);
}
答案 0 :(得分:0)
请使用抽象。
创建具有给定功能的基类并在您的关卡中扩展它
如果所有内容完全相同,您可以在BaseLevel
中进行实施,否则在Level1
类
public class Level1 extends BaseLevel{
...
// if implementation is different per class
public void checkwin(){
}
}
public abstract class BaseLevel extends AppCompatActivity{
public abstract void checkwin();
}
或者喜欢这个
public class Level1 extends BaseLevel{
...
// if implementation is always the same
}
public abstract class BaseLevel extends AppCompatActivity{
public void checkwin(){
// do it here
}
}