40行代码在iPhone上动画显示路线图

lines

1<!-- lang: cpp --> 2void addAnimatedBezierDemo(GiPlayingHelper *play) 3{ 4 __block Point2d pt1, pt2, pt3, pt4; 5 __block float t = 0; 6 7 [play addPlayProvider:^int(GiFrame frame) { 8 MgShapes *shapes = MgShapes::fromHandle(frame.shapes); 9 10 if (shapes->getShapeCount() == 0) { 11 GiViewHelper *helper = [GiViewHelper sharedInstance:frame.view]; 12 MgShapeT<MgPathShape> path; 13 14 path._context.setLineWidth(-5, true); 15 pt1 = d2m(10, 50, helper); 16 pt2 = d2m(100, 400, helper); 17 pt3 = d2m(300, 400, helper); 18 pt4 = d2m(300, 50, helper); 19 20 path._shape.path().moveTo(pt1); 21 path._shape.path().bezierTo(pt2, pt3, pt4); 22 shapes->addShape(path); 23 } 24 25 if (frame.tick < frame.lastTick + 10) { 26 return 0; 27 } 28 29 MgShape* newsp = shapes->getLastShape()->cloneShape(); 30 GiPath& path = ((MgPathShape*)newsp->shape())->path(); 31 32 Point2d pts[12] = { pt1, pt2, pt3, pt4 }; 33 mgcurv::splitBezier(pts, t, pts + 4, pts + 8); 34 path.clear(); 35 path.moveTo(pts[4]); 36 path.beziersTo(3, pts + 5); 37 38 t += 1e-2; 39 if (t > 1) 40 t = 0; 41 shapes->updateShape(newsp, true); 42 return 1; 43 } ended:nil tag:1]; 44}

代码见 vgplay-ios 项目的 AnimatedLines.mmAnimatedBezier.mm

只是一个动画原型,还需要更多完善,使用还需要精简。目标使用还比较复杂,理想情况是写类似于脚本串指定速度、时间、moveto/lineto/curveto等简单绘图指令,隐藏坐标转换、图形更新等复杂细节。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )