1

オブジェクトの終了位置を取得したい。アニメーションが終了したときの上と左の位置です。アニメーションが終了した後ではなく、その位置を直接取得したい。

これをオブジェクト指向でやりたい。

これは私が得たものです:

(function($) {

    Block = function() {

        this.el = $('<div></div>');
        this.el.css('position', 'relative');

        }

    Block.prototype.appendTo = function(parent) {

         this.el.appendTo(parent);
         return this;
    }

    Block.prototype.setSize = function(w, h) {

         this.el.css('width', w); 
         this.el.css('height', h);
         return this;    
    }

    Block.prototype.setPosition = function(x, y, speed) {

        speed = speed || 0;
        this.el.animate({'left': x+ 'px', 'top': y+ 'px'}, speed);
        return this;
    }

    Block.prototype.getPosition = function() {

        var left = this.el.position().left;
    var top = this.el.position().top;
    return [left, top];
    }



})(jQuery);

このクラスでブロックを作成し、その位置を console.log にすると、ブロックの開始点の位置が取得されます。終了位置を取得したい。直接

var block1 = new Block
block1.appendTo('body')
        .setSize(100,50)
        .setPosition(200, 300, 3000);


console.log(block1.getPosition());

だからconsole.log =[0, 0]私はそれが欲しい[200, 300]

4

2 に答える 2

0

呼び出し時に指定された位置のみを保存し、setPosition代わりにそれを取得できます。

Block = function() {
    this.el = $('<div></div>').css('position', 'relative');
    this.position = null;
};
Block.prototype.setPosition = function(x, y, speed) {
    this.position = {'left': x, 'top': y};
    this.el.animate(this.position, speed || 0);
    return this;
};
Block.prototype.getPosition = function() {
    var pos = this.position || this.el.position();
    return [pos.left, pos.top];
};
于 2012-12-13T13:56:28.213 に答える