更多操作
SC云音乐 是 Jexjws 使用 Turbowarp 制作的一款网易云第三方客户端。
SC云音乐 目前尚未制作完毕。
缘起
2022年时,DarlingJexjws 不满于官方网易云客户端的 卡顿、臃肿,就想搞个第三方网易云客户端玩玩,而他当时只会Scratch,再加上他有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方案,它将sc中的角色视作了模块(类)。
F engine也是方案中重要的一环,它实现了角色之间简单的RPC(调用方能获取返回值的那种哦!)。
其他模块展览
- PageM页面管理器: 与其他组件配合,实现标签页系统。
PageM,PageManager。即页面管理器。 用来实现多标签功能。 那么这个作品是怎么实现“多标签”的呢?是使用了与旧版苹果手机类似的墓碑机制。 以“用户切换到其他标签页”为例,说明一下这个机制: 当用户切换到其他标签页时,PageM会使用“XXX.closebyid.角色ID" 通知当前正在运行、在页面上显示东西的角色。 被通知角色(克隆体)收到后,会把当前自己的临时数据打包保存在列表“#所有页面缓存信息”的一个项当中。然后使用画笔的“全部擦除”功能清理舞台,最后删除自己。 被通知角色执行完毕后,PageM会通知用户的目标标签页所“负责”的角色,被通知角色收到后会先检查 列表“#所有页面缓存信息”中对应的自己的位置 中的内容。 如果为空,则使用默认设置。 如果不为空,则对内容进行解包并应用这些临时数据。 最后 被通知角色 启动,在屏幕上显示内容。
- Fapp Frame 应用程序开发模板:开发者可以复制这个角色,在这个角色之上快速创建一个新应用(页面)。
- Player后端、MusicPF音乐播放器前端: 这是两个角色,分别是播放器的前后端,后端负责处理播放列表、播放音乐,前端负责展示播放状态。