ios - 请求输入:swift 8 位模拟器架构
问题描述
我正在使用 iOS 上的 Swift 创建一个 8 位计算机的模拟器。8 位计算机的屏幕有 25 行,每行有 40 个字符(即总共 1000 个字符),每个字符可以是 256 个不同字符中的 1 个(例如 A、B、C、1、2、3 等) . 8 位处理器每 5 微秒执行 1 条指令。
我创建了一个模拟 8 位 CPU 的函数(即每次调用它时执行一条指令)。我已经创建并显示了一个包含 1000 个 SKSpriteNode 的数组,我根据应该显示的字符在不同的纹理上进行交换。
问题:
- 是否有一种准确的方法可以每 5 微秒运行一次 CPU 功能,同时仍然有 SKSpiteNodes 更新?我尝试了以下几种变体:
1A:
serialQueue.asyncAfter(deadline: DispatchTime.now() + .microseconds(5)) {
runCPU()
}
..但是这个时间不是很准确。
1B:
repeat {
let runAt = DispatchTime.now() + .microseconds(5)
var done = false
repeat {
if DispatchTime.now() >= runAt {
runCPU()
done = true
}
} while !done
} while true
..但是屏幕(SKSpriteNodes 的数组)可能永远不会更新,因为我在主队列上运行无限循环?
- 有没有比 1000 个 SKSpriteNodes 的数组更有效的方法来显示我的 1000 个字符并在我需要更新屏幕时更改纹理?
解决方案
推荐阅读
- shell - 如何使用 ImageMagic 清除图像的水印?
- node.js - socket.io 客户端无法从 XHR 长轮询升级到 websocket
- react-native - React-Navigation this.props.navigation.navigate undefined is not an object
- c# - 在 Pythonnet 中运行自述文件
- python - .strip('{}:'.format(key)) 有时会去除最后一个字符
- android - Android 应用无法通过 WIFI 连接到本地服务器
- c - HAL_UART_Transmit 发送错误数据
- image - Win/ffmpeg - 如何从 ffmpeg 下的图像生成视频?
- c# - 如何使用 c# 添加和更新 PDF 文件的注释
- python - tf.nn.in_top_k 的输入维度