animation thread /nullPointerException / fill(unknown source)/ processing

来源:互联网 发布:简述数控编程的步骤 编辑:程序博客网 时间:2024/05/16 06:02

定义了一个class Block,存在block.java文件,另外一个视图文件,mosaicView.java。绘图由mosaicView负责,extends PApplet,绘的图由一个个Block组成。

原本让block类也extends PApplet了,然后自己的draw函数里面直接进行绘制(主要这样设计是从语义上考虑,同时也可以直接使用block自己的成员变量——block的四个坐标位置)。而draw里面的fill等函数能被识别,出了要import processing的包,还需要block extends PApplet。

然后问题出来了。



原本错误在rectMode上面,我试着把fill放前面去,则到fill时出错了。同时,也说明了调用这个方法的block对象不是空的。那么这个空指针是哪里来的?只有出在fill上面。

fill表示他不知道调用它的对象。想一想,调用fill的应该是一个PApplet对象,而在这里,表示了PApplet对象是空的,编译器不知道他是什么。好吧。block继承自PApplet,好像确实没有给它指定一个PApplet对象。有两种方法可以解决。

1.mosaicView存在的原因是因为,就是要它来绘制的,相当于画板。而它确实是继承自PApplet了。那么block再继承PApplet就没什么意义了,其实block里面只要能保存它的信息,比如位置信息就够了。至于draw函数,就放到mosaicView里面去,传入需要draw的对象,而不把draw作为block的成员方法。

2.另外一种方法,让block类多一个参数,mosaicView parentView; 然后block的draw里面,fill、rectMode都加上前缀:parentView.fill()..parentView.rectMode()...



原创粉丝点击