定义prototype.updatePosition,以便在单击Object时,它会动画/旋转/缩放到特定值

时间:2017-06-07 19:49:49

标签: three.js

在Three.js

中理解类系统时遇到问题

我在player.js中有一个代码:

function Player() {

    var mesh = new THREE.Object3D();
    this.player = null;

    this.loader = new THREE.JSONLoader();

    this.name = 'player';

    this.loader.load(

        'obj/models/minecraft_sole.json',

        function ( geometry, materials ) {

            var material = new THREE.MultiMaterial( materials );
            this.player = new THREE.Mesh( geometry, material );
            this.player.position.set(0, 0, 0);
            this.player.scale.set(.5,.5,.5);
            this.player.castShadow = true;
            this.player.receiveShadow = false;  
            mesh.add( this.player );

        }
    );

    Player.prototype.constructor = Player;
    Player.prototype = Object.create(THREE.Object3D.prototype);

}

Player.prototype.updatePosition = function(){
    this.mesh.position.y += 0.05;
}

基本上我想要实现的目标:

在init()/ render()/ animate()的所有标准设置之后的main.js中... 我创建了一个名为johny的变量:

var johny = new Player();

现在一切都很好,但是在player.js我希望能够定义一些原型?方法,在那个方法中我想听一个点击事件。在调用该事件之后,我希望我的玩家网格动画到某个位置或开始旋转/缩放。

我的伪代码是为了更好地理解:

var Player = function(){
   // define mesh and all 

}

player.add.eventListener( 'click' ){
    //code to animate player
}

记住这一切;我希望成为player.js的一部分,以便在调用之后:

var johny = new Player();

我不必将事件监听功能添加到main.js以及所有这些功能。 第二,我希望我的代码是模块化的,正如您可能已经注意到的那样:)

1 个答案:

答案 0 :(得分:0)

所以我确实理解了它。