如何做到像 js的vue那样,改了数据后,UI自动更新

我把论坛里和框架、数据渲染 相关关键词的文章都阅读了一下。 感觉cocos creator 相关的设计方案还不是很多。 信息比较杂,所以再发一贴,真诚请教。

请大佬帮忙看下我的思路对不对哈。

1.做一个单例的数据类
2.设计一套监听器模式。
3.渲染UI时,注册监听事件。
4.数据变化时,触发事件,重新渲染UI

应该是这个流程吗?

白嫖时间来了, 有没有现成的 cocos creator 用JS实现的 框架? 求建议。

我也搜了一些 有MVC MVP巴拉巴拉的 实在没啥头绪。。。

求指导 我主业是一个后端开发,所以有些前端问题描述的不是很到位, 请谅解哈

但显然易见,这样也有问题。
例如 我滑动到页面底部了。 如果触发事件,重新渲染UI 那岂不是又回到了页面顶部?

就会出现闪跳到感觉。。

没做过类似需求,以前在论坛里好像看到个啥双向绑定,你搜搜不知道符不符合你的需求

嗯呢 就是类似的功能哈。
因为双向绑定了, 所以数据模型变化后,UI上的内容也会变化。

我的疑问就是 这应该属于很常见的功能呀, 为啥这么难搜到呢。。 完美的解决方案也找不到。

是我的路子走错啦?


你看看这个

嗯嗯 这个我看了。 的确正在尝试。 只是我的游戏已经用js写好了。。。他这个是ts的。

感觉想换成ts再写一遍了。。

这个可以用观察者模式或mvc实现呐

有类似的实现吗? 求白嫖 :joy:

参考参考

这个暂时没有 :joy:
如果用观察者就自己实现一个匿名函数的时事件系统,注册监听发射就可以了
mvc就更好弄了 在c层调用一下UI更新就可以了

https://github.com/wsssheep/cocos_creator_mvvm_tools
这个还真不错 应该可以用 。 哈哈

等我的插件出来就行了

哈哈 大佬 我的确找了一下你的回复

对于游戏模块太复杂了,后面我把模块架构改成了单独的 视图驱动模块 + 代码驱动模块,两个驱动都可以单独使用和复合使用

大佬,快出,期待ing

我有一个Layout Container 里面用于展示一个列表。 列表可能有10条 也可能有20条。
貌似用这种方式就不能自动更新了。。 每次有任何一条数据变化,都需要重新渲染整个列表?

怎么做到,只更新其中一条的数据呢?

或者是 原本有20条,后来删了10条。 怎么做到只删除10条, 而不用重新渲染整个列表。。。

数据影响视图 属于是单向绑定啊。现成的双向绑定框架没有,有的话意义也不大。类似的需求 rxjs redux mobx都可以做,论坛里都有人用过。可以搜一下

有的情况一个ui与多条数据绑定,每次这几条数据不一定修改几条,如果没修改一条数据就刷新一下UI就会显得很呆

你要的东西

这种在数据更新后,做一个需刷新UI的标记,在下一帧执行UI更新操作后将标记去掉就好了吧。当然你如果是每一帧改变一条数据,想所有数据改完后再刷新就只能特殊情况特殊处理。

有什么意义?creator 本就是在下一帧更新UI,你上一帧操作多少次 UI 都没关系,除非调用了立即刷新的接口