更多操作
(→技术架构) |
(→其他模块) |
||
第15行: | 第15行: | ||
SC云音乐 历经迭代,有了自己的一套独特的模块化设计方案,用于''防止代码过早的变成屎山、提高代码复用率''。 | SC云音乐 历经迭代,有了自己的一套独特的模块化设计方案,用于''防止代码过早的变成屎山、提高代码复用率''。 | ||
这么个方案的核心是 '''F engine,它'''实现了角色之间简单的RPC,调用方能获取返回值的那种。 | |||
== 其他模块 == | == 其他模块 == | ||
第46行: | 第41行: | ||
如果不为空,则对内容进行解包并应用这些临时数据。 | 如果不为空,则对内容进行解包并应用这些临时数据。 | ||
最后 被通知角色 启动,在屏幕上显示内容。</blockquote> | 最后 被通知角色 启动,在屏幕上显示内容。 | ||
</blockquote> | |||
*'''Fapp Frame 应用程序开发模板:'''开发者可以复制这个角色,在这个角色之上快速创建一个新应用(页面) | |||
* '''Player后端、MusicPF音乐播放器前端:''' 这是两个角色 |
2024年4月14日 (日) 00:25的版本
SC云音乐 是 Jexjws 使用 Turbowarp 制作的一款网易云第三方客户端。
SC云音乐 目前尚未制作完毕。
缘起
2022年时,DarlingJexjws 不满于官方网易云客户端的 卡顿、臃肿,再加上他有播放器制作经验,就想搞个第三方网易云客户端玩玩,而他当时只会Scratch,就理所当然地拿 Scratch 做起来啦!
SC云音乐 在40code上制作,主要因为当时 (2022年6月) 只有40code宽容地允许作品调用第三方网易云API。不过 Jexjws 打算发布稳定版后通过 Eureka 使其在其他平台上可用。
一开始(2022-6-29),Jexjws只是搞了个空作品发布在了40code上面,然后写了一个预告,就几乎忘掉了这码事(有的时候倒是想起来要搞,但感觉太难了就一直没搞),直到what过来催更(2022-7-13),他意识到自己挖了这么大一个坑还没填。感动于40code站长亲自过来催更,他就花了一整个暑假做完了 SC云音乐 的初版,并取得了40code的初级精华,这让他很开心,因为这可是他进sc圈以来获得的第一个精华,他就继续做了下去。
技术架构
SC云音乐 历经迭代,有了自己的一套独特的模块化设计方案,用于防止代码过早的变成屎山、提高代码复用率。
这么个方案的核心是 F engine,它实现了角色之间简单的RPC,调用方能获取返回值的那种。
其他模块
- PageM页面管理器: 与其他组件配合,实现标签页系统。
PageM,PageManager。即页面管理器。
用来实现多标签功能。
那么这个作品是怎么实现“多标签”的呢?是使用了与旧版苹果手机类似的墓碑机制。
以“用户切换到其他标签页”为例,说明一下这个机制:
当用户切换到其他标签页时,PageM会使用“XXX.closebyid.角色ID"
通知当前正在运行、在页面上显示东西的角色。
被通知角色(克隆体)收到后,会把当前自己的临时数据打包保存在列表“#所有页面缓存信息”的一个项当中。然后使用画笔的“全部擦除”功能清理舞台,最后删除自己。
被通知角色执行完毕后,PageM会通知用户的目标标签页所“负责”的角色,被通知角色收到后会先检查 列表“#所有页面缓存信息”中对应的自己的位置 中的内容。
如果为空,则使用默认设置。
如果不为空,则对内容进行解包并应用这些临时数据。
最后 被通知角色 启动,在屏幕上显示内容。
- Fapp Frame 应用程序开发模板:开发者可以复制这个角色,在这个角色之上快速创建一个新应用(页面)
- Player后端、MusicPF音乐播放器前端: 这是两个角色