在处理过程中,我有几个函数可以改变applet的属性来绘制东西,例如:
public void resetBackground(PApplet pApplet){
pApplet.fill(175);
pApplet.noStroke();
pApplet.rect(0,0,100,100);
}
但是我希望这些函数在函数调用之后保留pApplet的状态,因为我有类似的东西:
public void resetBackground(PApplet pApplet){
SaveAndRestoreDefaults saveAndRestoreDefaults = new SaveAndRestoreDefaults(pApplet);
// Code that changes state.
saveAndRestoreDefaults.restoreOriginals();
}
现在这对我有用,但我希望这不会使我的代码混乱,而是注释驱动,如:
@PreserveState
public void resetBackground(){
// code that changes state.
}
我对它做了一些研究,但这似乎不是一件容易的事。谷歌搜索带我去AOP,我不想花时间去学习。有没有更简单的方法来实现相同的目标?
谢谢:)
答案 0 :(得分:0)
我强烈建议留在Processing,而不是深入到底层虚拟机API(仅仅因为你在java中运行它,并不意味着Processing的每个实现都有一个JVM。Processing.js来了记住)。
只需制作一个州级课程并跟踪:
class SketchState {
color background_color, stroke_color, fill_color;
SketchState(color bg, color st, color fl) {
sketch = s; background_color = bg; stroke_color = st; fill_color = fl;
}
}
ArrayList<SketchState> stateCache = new ArrayList<SketchState>();
void cacheState() {
stateCache.add(new SketchState(...));
}
void restoreState() {
SketchState rest = stateCache.remove(stateCache.size()-1);
background(rest.background_color);
stroke(rest.stroke_color);
fill(rest.fill_color);
}
并将要保存的其他状态方面添加到该类中。