栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

山东大学软件实验课程-Ebiten-基于go语言实现的2D游戏库源码分析第七篇-关于Ebiten游戏库触摸等功能函数的分析 2021SC@SDUSC

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

山东大学软件实验课程-Ebiten-基于go语言实现的2D游戏库源码分析第七篇-关于Ebiten游戏库触摸等功能函数的分析 2021SC@SDUSC

2021SC@SDUSC

目录

一、AppendJustPressedTouchIDs()函数

二、IsTouchJustReleased()函数

三、TouchPressDuration()函数

四、总结


一、AppendJustPressedTouchIDs()函数

代码如下:

func AppendJustPressedTouchIDs(touchIDs []ebiten.TouchID) []ebiten.TouchID {
	origLen := len(touchIDs)
	theInputState.m.RLock()
	for id, s := range theInputState.touchDurations {
		if s == 1 {
			touchIDs = append(touchIDs, id)
		}
	}
	theInputState.m.RUnlock()
	s := touchIDs[origLen:]
	sort.Slice(s, func(a, b int) bool {
		return s[a] < s[b]
	})
	return touchIDs
}

在当前帧中创建的触摸id附加到触摸id中,并返回扩展的缓冲区。给予一个已经有足够容量的有效工作部分。

该动作是是并发且安全的。

二、IsTouchJustReleased()函数

代码如下:

func IsTouchJustReleased(id ebiten.TouchID) bool {
	theInputState.m.RLock()
	r := theInputState.touchDurations[id] == 0 && theInputState.prevTouchDurations[id] > 0
	theInputState.m.RUnlock()
	return r
}

该函数的作用是给出一个布尔值,判断该触摸动作是否在有效帧内释放。

三、TouchPressDuration()函数

代码如下:

func TouchPressDuration(id ebiten.TouchID) int {
	theInputState.m.RLock()
	s := theInputState.touchDurations[id]
	theInputState.m.RUnlock()
	return s
}

该函数的返回值不再是布尔值,而是int类型,它判断了该触摸动作持续的有效帧。

四、总结

对于inpututil包内代码的分析基本到这里结束了,所以该篇分析内容较少。

纵观整个inpututil.go文件,其主要作用就是定义了很多函数,用来反馈鼠标。键盘。游戏手柄以及触摸的输入、释放及持续时间,是整个Ebiten游戏库中很重要的部分。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号