是否可以将不同的代码加载到同一类的不同对象的更新函数中?即:
Button button = new Button();
class Button {
// constructor, variables, etc
void update() {
//load code specific to the object
}
}
我可以创建指向外部函数的指针(即在不同的文件中)吗?我知道我不能指出java,但有什么类似的吗?
答案 0 :(得分:1)
一个类用于定义某些行为。当然,并非所有类的实例都必须与完全相同(例如,button1显示为红色,button2显示为蓝色),但它仍然是相同的基本行为。按钮不会像树一样,让button1.func()
做一件事而button2.func()
做一些完全不同的事情是没有意义的。话虽如此,如果你想要两个按钮的某种方法来做不同的事情,你有两个选择:将行为分成两个方法,或者(这可能是你想要的)按钮包含一个标识符变量并具有方法包含基于该变量的条件。这是一个例子:
class Button {
// ID is 1 for green and 2 for blue
int ID;
Button(int id){
ID = id;
}
void update(){
if(ID == 1){ //green
//do something
else if(ID == 2){
//do something else
}
}
}
回答你的问题:动态代码加载(例如来自文本文件)是一个坏主意,原因很多。首先,不清楚代码如果你读过它会做什么(你必须去查看另一个文件才能找到),其次,它会是一个巨大的安全漏洞,因为有人可以用恶意的东西替换你的文本文件,你会有不受控制的代码执行。
答案 1 :(得分:1)
示例界面代码
Button r = new RedButt(); // note Buton = new RedButt...
Button b = new BlueButt();
Button[] buttons = new Button[2];
void setup(){
size(200,200);
buttons[0] = r;
buttons[1] = b;
for(Button b : buttons){
b.display();
}
}
interface Button{
void display();
}
class RedButt implements Button{
RedButt(){
}
void display(){
fill(255,0,0);
ellipse(random(25, width-25), random(25, height -25), 50, 50);
}
}
class BlueButt implements Button{
BlueButt(){
}
void display(){
fill(0, 0, 255);
ellipse(random(25, width-25), random(25, height -25), 50, 50);
}
}