javascript游戏的模型-视图-控制器模式(Three.js)。好主意

javascript游戏的模型-视图-控制器模式(Three.js)。好主意,javascript,model-view-controller,three.js,game-engine,Javascript,Model View Controller,Three.js,Game Engine,我正在用three.js开发一个完全在前端运行的3D游戏(目前)。我完全分离模型(状态)和视图是个好主意吗 例如,我现在在需要时直接操纵(平移、旋转)我的移动对象,但我想在模型中保持并操纵它们的位置向量(游戏状态),然后在每一帧将对象的位置设置为该向量。同样,我必须以某种方式存储对象的旋转,并在视图中的每一帧设置它 具体例子: 当按下左箭头键时,我只是将播放器对象向左平移。相反,对于每一帧,我会将player对象设置为模型中的当前向量,并在左箭头处平移模型中的向量 模型视图模式似乎是一个很好的架

我正在用three.js开发一个完全在前端运行的3D游戏(目前)。我完全分离模型(状态)和视图是个好主意吗

例如,我现在在需要时直接操纵(平移、旋转)我的移动对象,但我想在模型中保持并操纵它们的位置向量(游戏状态),然后在每一帧将对象的位置设置为该向量。同样,我必须以某种方式存储对象的旋转,并在视图中的每一帧设置它

具体例子: 当按下左箭头键时,我只是将播放器对象向左平移。相反,对于每一帧,我会将player对象设置为模型中的当前向量,并在左箭头处平移模型中的向量


模型视图模式似乎是一个很好的架构想法,但我担心它会影响性能?

您在模型视图控制器(MVC)模式中遗漏了控制器。控制器决定在模型更改时应如何更新视图

在具体示例的第一部分中,视图代码监视左箭头键的笔划。这是一个坏主意,因为通过检查是否按下了左箭头,每一帧都会变慢

在具体示例的第二部分中,控制器监视左箭头键的笔划,并相应地更新模型。这很好,因为控制器在左箭头出现时只运行一次代码。这也意味着控制器可以决定如何处理诸如多次按键或按下一个键之类的事情

视图代码在浏览器的“帧更新”(fast=每秒60帧)WebGL部分中运行。左箭头键代码在浏览器的(慢速)事件队列部分运行。性能方面,您应该优化在帧更新中运行的代码