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

定义了一个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()...



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值