多手指划线

secret_t 2017-03-06 10:02:31
求指导,求指导!!!根据点击屏幕手指的个数,在屏幕上滑动,生成各个手指滑动的轨迹,这个怎么实现。。。急求,求指导!!! 求demo!!
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
secret_t 2017-03-08
  • 打赏
  • 举报
回复
引用 7 楼 disburden 的回复:
我大概的想法是这样,不确定实际执行中会遇到什么问题
比如我建个全局数组叫myDrawing
然后在touchgegan中这样
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

for (UITouch *touch in touches)
{
[myDrawing addObject:[[NSMutableArray alloc] initWithCapacity:40]];
CGPoint curPoint = [touch locationInView:self];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.x]];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.y]];
}
}


在move和end方法中和上面的类似,只是不要创建数组了
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches)
{
CGPoint curPoint = [[touches anyObject] locationInView:self];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.x]];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.y]];
//如果需要立即显示
[self setNeedsDisplay];
}
}

最后你可以写个简单的方法清楚所有的笔划
-(void)cancelDrawing {
[myDrawing removeAllObjects];
[self setNeedsDisplay];
}

这是我的想法,具体的实现可能有很多细节,比如你不能直接用for in循环来遍历touches,因为这样有可能和数组中的lastObject对应不上,具体的你自己调试一下

我觉的这个方向应该没啥问题吧



我试了下可以的。。。就是现在有点小瑕疵,有时候多个手指点击屏幕时,会先把手指的点连起来,其在研究哈 , 谢谢
不担心 2017-03-07
  • 打赏
  • 举报
回复
我大概的想法是这样,不确定实际执行中会遇到什么问题
比如我建个全局数组叫myDrawing
然后在touchgegan中这样
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

for (UITouch *touch in touches)
{
[myDrawing addObject:[[NSMutableArray alloc] initWithCapacity:40]];
CGPoint curPoint = [touch locationInView:self];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.x]];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.y]];
}
}


在move和end方法中和上面的类似,只是不要创建数组了
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches)
{
CGPoint curPoint = [[touches anyObject] locationInView:self];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.x]];
[[myDrawing lastObject] addObject:[NSNumber numberWithFloat:curPoint.y]];
//如果需要立即显示
[self setNeedsDisplay];
}
}

最后你可以写个简单的方法清楚所有的笔划
-(void)cancelDrawing {
[myDrawing removeAllObjects];
[self setNeedsDisplay];
}

这是我的想法,具体的实现可能有很多细节,比如你不能直接用for in循环来遍历touches,因为这样有可能和数组中的lastObject对应不上,具体的你自己调试一下

我觉的这个方向应该没啥问题吧
qq_21298909 2017-03-07
  • 打赏
  • 举报
回复
有点高深,恕我不知道
不担心 2017-03-06
  • 打赏
  • 举报
回复
可以给你个思路(demo是需要时间和精力的,除非正好写过,一般人家是不会有时间特意去写的) 首先你可以把问题简化,先实现一个手指画轨迹的功能,实现这个功能很简单,初始化一个数组,在touchbegin,touchmove,touchend方法中获取对应的座标存到数组中,然后在drawRect方法中用CGContextAddLineToPoint把这些点连起来就行了,当有新座标点加入到数组中的时候调用一下setNeedDisplay方法就能把最新的点画上去 现在再来考虑多手指的问题,已经很清晰了,通过NSOperation对每个手指创建一个线程,每个线程都调用上面单独一个手指的画线方法. 再看一下touchBegan方法的定义 - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 其中touches是个NSSet,你可以理解为这里面装的每一个UITouch对象就是一个根手指
secret_t 2017-03-06
  • 打赏
  • 举报
回复
引用 5 楼 disburden 的回复:
为啥不能动态生成数组? 你可以定义一个全局的数组,在drawRect 的方法中获取这个全局数组中的数据来画线,然后把每个手指产生的座标点各自放在一个数组里,最后把这些数组都放到全局的那个数组里就行了,就是数组中存数组
每个手指产生的坐标点存放的数组,在那块创建?如果在- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event方法创建,不行啊,每次数组里面就只有一个;如果全局的话,也是根据手指个数来。。这个怎么解决??脑子转不过弯,之前想到过书中中存数组 , 感谢
不担心 2017-03-06
  • 打赏
  • 举报
回复
为啥不能动态生成数组?
你可以定义一个全局的数组,在drawRect 的方法中获取这个全局数组中的数据来画线,然后把每个手指产生的座标点各自放在一个数组里,最后把这些数组都放到全局的那个数组里就行了,就是数组中存数组
secret_t 2017-03-06
  • 打赏
  • 举报
回复
引用 1 楼 disburden 的回复:
可以给你个思路(demo是需要时间和精力的,除非正好写过,一般人家是不会有时间特意去写的)
首先你可以把问题简化,先实现一个手指画轨迹的功能,实现这个功能很简单,初始化一个数组,在touchbegin,touchmove,touchend方法中获取对应的座标存到数组中,然后在drawRect方法中用CGContextAddLineToPoint把这些点连起来就行了,当有新座标点加入到数组中的时候调用一下setNeedDisplay方法就能把最新的点画上去

现在再来考虑多手指的问题,已经很清晰了,通过NSOperation对每个手指创建一个线程,每个线程都调用上面单独一个手指的画线方法.
再看一下touchBegan方法的定义
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
其中touches是个NSSet,你可以理解为这里面装的每一个UITouch对象就是一个根手指






出来就是这种效果了

secret_t 2017-03-06
  • 打赏
  • 举报
回复
引用 1 楼 disburden 的回复:
可以给你个思路(demo是需要时间和精力的,除非正好写过,一般人家是不会有时间特意去写的) 首先你可以把问题简化,先实现一个手指画轨迹的功能,实现这个功能很简单,初始化一个数组,在touchbegin,touchmove,touchend方法中获取对应的座标存到数组中,然后在drawRect方法中用CGContextAddLineToPoint把这些点连起来就行了,当有新座标点加入到数组中的时候调用一下setNeedDisplay方法就能把最新的点画上去 现在再来考虑多手指的问题,已经很清晰了,通过NSOperation对每个手指创建一个线程,每个线程都调用上面单独一个手指的画线方法. 再看一下touchBegan方法的定义 - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 其中touches是个NSSet,你可以理解为这里面装的每一个UITouch对象就是一个根手指
我刚试了试,发现各个手指的滑动轨迹点不同,但只有一个数组,全部加进去的话会错乱。。。又不能动态生成数组。。。。
secret_t 2017-03-06
  • 打赏
  • 举报
回复
我刚试了试,发现各个手指的点不同,但只有一个数组,全部加进去的话会错乱。。。又不能动态生成数组。。。。
在Excel使用过程中,运用一些技巧会使得我们的工作效率提高很多。而这些技巧往往又被忽略或忘记怎么去使用。本套课程基于此整理了一些Excel方面的技巧,这些呢为学习笔记集锦,前后章内容不存在连贯性,仅整理一些常用的技巧与大家分享。【说明:Excel为2013版本,无下载资料,请参看课程视频学习。】l  本课程知识点l  第1节:概述l  第2节:Excel大批量数据自动填写灵活妙用经验分享l  第3节:巧为Excel2013单元格的文本内容增加拼音l  第4节:Excel在单元格内实现自动换行l  第5节:Excel快速使用函数计算不同区域数据l  第6节:Excel单元格超长内容不能显示全巧妙设置l  第7节:巧妙运用之Excel单元格中自动快速输入带有小数点的数值l  第8节:Excel巧妙使用回车键快速粘贴l  第9节:职场必会Excel函数经典应用,使用And函数多条件判断l  第10节:Excel函数经典应用之IF函数条件判断范例l  第11节:Excel技巧之巧妙使用不同颜色区分不同类型数据l  第12节:巧妙快速调整Excle所有单元格或局部单元格l  第13节:巧妙快速切换Excel单元格回车后的纵向输入和横向输入l  第14节:巧妙理解记忆Excel公式中的相对引用和绝对引用l  第15节:Excel单元格文风快速两端对齐l  第16节:Excel2013文档内容快速居中打印l  第17节:excel直接使用模板制作精美格式样式l  第18节: excel使用中可以直接使用翻译功能中英文互译l  第19节:不需要截图工具直接使用excel复制图片l  第20节:excel粘贴也可以多种方式选择了l  第21节:巧为excel单元格画双划线l  第22节:为excel的文字或数字添加单划线或双划线l  第23节:excel连续微调单元格内容字号的大小l  第24节: 快速的将长文本内容变为自适应多行文本l  第25节:excel多单元格合并居中l  第26节:单元格内容连续微调缩进量l  第27节:将文本内容倾斜到任意角度l  第28节:单元格内容多种形式的对齐方式l  第29节:快速将数据转换为会计专用数据l  第30节:快速为数据增加或减少小数位数

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧