Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript three.js对象启动动画/游戏循环_Javascript_Angularjs_Three.js - Fatal编程技术网

Javascript three.js对象启动动画/游戏循环

Javascript three.js对象启动动画/游戏循环,javascript,angularjs,three.js,Javascript,Angularjs,Three.js,我使用angularJS和Three.js作为前端 我创建了我的three.js对象,如下所示: var ThreeObject = (function() { //constructor function ThreeObject() {} ThreeObject.prototype.init = functio init (){ //init scene,renderer,.... }; ThreeObject.prototype.update = function update(){ /

我使用angularJS和Three.js作为前端

我创建了我的three.js对象,如下所示:

var ThreeObject = (function() {
//constructor
function ThreeObject() {}

ThreeObject.prototype.init = functio init (){
//init scene,renderer,....
};

ThreeObject.prototype.update = function update(){
//update various objects attatched to scene
};

ThreeObject.prototype.draw = function draw(){
this.renderer.render(this.scene,this.camera);
};

return ThreeObject;
})();
在我的角度控制器中,我调用:

app.controller('Controller', ['$scope', '$http', function($scope,$http) {

    var foo = new ThreeObject(800,600);
    foo.init(document.getElementById('container'));

    function loop() {
        foo.update();
        foo.draw();
        requestAnimationFrame(loop);
    };

    requestAnimationFrame(loop);
 }]);
由于MVC,我的第一个反应是将所有三个.js行为封装到一个模型中。我不确定的是,这是否是一个正确的方法


创建一个处理循环的指令会更好吗?这对我使用的方法有什么好处吗?

这里是我用AngularJS和THREEjs制作的一个例子,使用工厂而不是指令。在本例中,我使用的是工厂内部的渲染循环


希望这能有所帮助。

在这个项目中是否有必要?它似乎对你没有任何帮助。我想用它。该项目包含的内容超过了发布的内容,但这与问题无关。在这种情况下,您的方法似乎是正确的。您不会将其放在指令中。你只需要确保如果你创建了另一个控制器,它就是这个控制器的子控制器,这样你的作用域就不会被破坏。thxs