0

作成したオブジェクトに属する関数内に、(script.aculo.us dragdropモジュールから)「Draggable」オブジェクトの新しいインスタンスを作成しています。そのオブジェクトを「Person」オブジェクトと呼びましょう。簡単です。ただし、Draggableオブジェクト内の「onEnd」関数内から、前述の「Person」オブジェクトに属する別の関数getCell()を呼び出す必要があります。循環器系のようなものですが、これを行う方法を知っていればいいのですが。私が試したことは何もありません。できますか?以下は簡潔にするために大幅に編集された例ですが、それが私の意図を伝えていることを願っています。ここでの洞察に感謝します。ありがとう。

var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },        
  move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },
  getCell: function(t) {
    var pos = t.positionedOffset();
    return [(pos.left / 64).floor(), (pos.top /64).floor()];
  }
});    
4

2 に答える 2

0

試す

move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = p.getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },

また

move: function(p) {
    var getCell = function (el) {
        return p.getCell ( el );
    };

    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },
于 2009-08-04T02:33:43.813 に答える
0

Function.bindを試してください:

var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },        
  move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = this.getCell(d.element);
      .......
      .......
     }.bind(this)
     .......
     .......
    });
  },
  getCell: function(t) {
    var pos = t.positionedOffset();
    return [(pos.left / 64).floor(), (pos.top /64).floor()];
  }
});
于 2009-08-04T14:56:36.283 に答える