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