最近做到了一个项目,需要在quickcocos2dx里做一个手指绘制功能,随着手指滑动在屏幕上画出自己想要画的图案。
参考了quickcocos2dx中的luatest的实例,它里面使用的是CCRenderTexture,但它是全屏绘制,并且没有清除掉我已经画的图案的功能,下面我就把自己的一些心得记录下来(代码在github上)。
在这之前,不妨设定自己的需求,在一个居于屏幕中央的正方形内,设定我们的可绘制区域,并且保证我们的绘制不能超出这个正方形区域,同时设定一个按钮,可以保证这些我们已经绘制上去的图案被清除掉。
1.首先我们先确定自己的绘制区域CCRenderTexture:create(dx, dy, kCCTexture2DPixelFormat_RGBA8888),然后setPosition(x, y),这样我们就确定了我们的绘制区域的大小和位置。dx,dy表示我们的绘制区域的长和宽,x,y表示我们的绘制区域的位置。
2.然后是自定义我们的画笔,这里我使用的是一张图片,brush = CCSprite:create("a.png"),并且加上brush:retain() ,并不需要加到我的层或者场景里去,同时,在离开场景的时候要将brush这个对象release掉。
3.在画笔和绘制区域都定好了之后,我们可以定义一个ontouch事件来进行绘制了。这部分代码主要是在began里记录起始点,然后在moved里不断进行绘制,具体的用法和数学问题(斜率)在我的例子和luatest里都有表述。
4.最后,在我们在指定区域内绘制我们的图案之后,我们还可以设定一个按钮,它的作用是清空当前的区域内我已经画上的东西,那么就需要我们用这个CCRenderTexture对象去调用我们的clear函数,如果是完全清空,那么clear的参数应当依次是0,0,0,0。
github:https://github.com/Froyo91/quickcocos2dx-paint-in-an-area