3408|8

402

帖子

9

TA的资源

纯净的硅(初级)

楼主
 

在BL808上增加宠物互动(实现图片旋转、图片上色、屏幕触摸功能) [复制链接]

 

还记得在前几篇中提到LVGL的时候,说初始化的时候,除了初始化显示输出(lv_port_disp_init();)以外,还提到了初始化了输入功能(lv_port_indev_init();),本篇我们将配合输入功能实现通过点击按钮来逗宠物玩耍。

前几篇中,小狮子已经可以自由自在地跑来跑去了,本篇中希望增加狮子和蝴蝶的互动。

添加小狮子的动作,还是继续增加图片数组就行。

再增加一个蝴蝶数组,考虑到各种颜色蝴蝶的形状是一样的,干脆只设置一组蝴蝶飞舞的动作,再通过lv_obj_set_style_img_recolor(butterfly, butterfly_color, 0);修改蝴蝶颜色。

当然在设置颜色之前,还需要修改图片的透明度:

lv_obj_set_style_img_recolor_opa(butterfly, 200, 0);

使得可以使用特定颜色填充图片。

通过lv_obj_get_x(butterfly)、lv_obj_get_y(butterfly)、lv_obj_get_x(lion)、lv_obj_get_y(lion)计算狮子和蝴蝶的相对位置,再调用特定的动作数组,就可以实现其互动效果啦。

为了放飞蝴蝶,或者改变蝴蝶的颜色,我们需要增加屏幕触摸功能,但main()中初始化输入功能(增加lv_port_indev_init();)之后,会发现一件神奇的事情,那就是我们可以拖动“太阳”。这其实也正常,因为在上一篇中就是使用的lv_arc的LV_PART_KNOB作为太阳的,而LV_PART_KNOB本来就是让大家拖来拖去的。不仅仅是拖动,只要随便在屏幕上点击一下,就会发现太阳的角度发生了变化。这是因为为了让太阳在天空中活动,lv_arc占据了整个屏幕(上半部分是太阳可以活动的范围,下半部分虽然是没有显示,但lv_arc必须要按照一个完整圆来布局),当然敲击屏幕会引起angle的改变。

于是乎考虑把太阳换掉,换成一个lv_led。为了实现太阳按照弧线轨迹的运动效果,单纯使用lv_obj_set_pos似乎太过困难(计算x,y值就是一个很大的工作量啊,用函数查表也是不怎么现实),考虑使用旋转效果实现。首先设置旋转圆心:

lv_obj_set_style_transform_pivot_x(sun_led,135,0);

lv_obj_set_style_transform_pivot_y(sun_led,90,0);

然后通过lv_obj_set_style_transform_angle设置旋转角度

lv_obj_set_style_transform_angle(sun_led,sun_time,0);

就可以实现太阳使用弧线经过天空的效果。

这里的sun_time同样是角度的单位,但和之前lv_arc中设置旋转进度的百分比不同,这里是以0.1度为计量单位的。

经过触摸的屏幕,会留有一个小小LV_SYMOL_USB的图标,这是表示上一次触摸位置的,如果不需要,可以通过修改“/M1s_BL808_SDK/components/lvgl/port/lv_port_indev.c” 文件,去掉这个图标。

 

 

为了放飞蝴蝶,我们增加一个按钮组,并设置动作

 

当然,这里让小狮子喝点水的按钮功能还没开始做,先看看btns[0]吧。

188395f3bb089351cc0b78cc3679fdd8

 

点按btns[1]中水杯的图标没有效果,点击btns[0](蝴蝶)的图标,会出现一只“扑棱蛾子”,颜色是随机的,再次点击会变颜色。被狮子抓住了就没有了。当然手指的精度不太高,可能在这块开发板上还需要找一个触摸笔来配合。

 

 

 

最新回复

  详情 回复 发表于 2023-1-25 03:17
点赞 关注
 
 

回复
举报

402

帖子

9

TA的资源

纯净的硅(初级)

沙发
 

关于触摸输入功能的参考文档:

https://docs.lvgl.io/master/porting/indev.html

 
 
 

回复

7244

帖子

2

TA的资源

版主

板凳
 

这想法挺有趣的,把LVGL玩出花来了,哈哈。

 
 
 

回复

3416

帖子

0

TA的资源

纯净的硅(高级)

4
 

楼主你这是要把LVGL当游戏引擎来用啊

何不直接移植一些开源小游戏引擎来做,可能一个下午就完成游戏设计了

pico性能比BL808差多了,也能流畅能运行《重返德军总部》的2D游戏

点评

当时申请的时候就是说做一个电子宠物啊。 不过移植游戏引擎是个好主意,下下篇开始尝试。  详情 回复 发表于 2023-1-17 22:28
个人签名

So TM what......?

 

 
 

回复

402

帖子

9

TA的资源

纯净的硅(初级)

5
 
ljj3166 发表于 2023-1-17 14:57 楼主你这是要把LVGL当游戏引擎来用啊 何不直接移植一些开源小游戏引擎来做,可能一个下午就完成游戏设计 ...

当时申请的时候就是说做一个电子宠物啊。

不过移植游戏引擎是个好主意,下下篇开始尝试。

点评

有了引擎事半功倍  详情 回复 发表于 2023-1-19 06:56
 
 
 

回复

4942

帖子

12

TA的资源

版主

6
 
ljj3166 发表于 2023-1-17 14:57 楼主你这是要把LVGL当游戏引擎来用啊 何不直接移植一些开源小游戏引擎来做,可能一个下午就完成游戏设计 ...
当时申请的时候就是说做一个电子宠物啊。 不过移植游戏引擎是个好主意,下下篇开始尝试。

有了引擎事半功倍

 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(中级)

7
 

这个厉害了,都开始玩游戏了                                                                

 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

8
 
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

9
 
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表