0

this.pic_w、this.pic_hなどのメソッドを持つPicクラスがあります。クラスのメソッドの1つで、Imageオブジェクトを初期化し、そのメソッドの1つを書き直します。Picのメソッドの1つに含まれているが、Picから継承していないImage redefinedメソッドからPic変数(this.pic_w、this.pic_h)にアクセスするにはどうすればよいですか?クラス変数は次のとおりです。

Pic.prototype = new DaVinci();
Pic.prototype.constructor = Pic;
function Pic(canvas) {
    this.canvas = canvas;
    this.pic = "";
    this.resize_w = 200;
    this.resize_h = 200;
    this.pic_w;
    this.pic_h;
}

...他のいくつかの方法...

Pic.prototype.draw = function( img_src, pos_x, pos_y ) {
    this.setPos(pos_x,pos_y);
    this.setPic(img_src);
    var ctx = this.setWidget();
    var x = this.pos_x;
    var y = this.pos_y;
    var img = new Image();
    img.src = this.pic;
    img.onload = function() {
        // How can I access Pic class methods and variables from here?
            ctx.drawImage(img, x, y, this.width, this.height);
    }
}
4

1 に答える 1

1

通常、これは同じクロージャ内のオブジェクトへの参照を保存することによって行われます。何かのようなもの:

Pic.prototype.draw = function( img_src, pos_x, pos_y ) {
    var that = this; //Remember "this" so you can use it later

    this.setPos(pos_x,pos_y);
    this.setPic(img_src);
    var ctx = this.setWidget();
    var x = this.pos_x;
    var y = this.pos_y;
    var img = new Image();
    img.src = this.pic;
    img.onload = function() {
        // Here I can access this.width, this.height values.
        // I want to save those values as Pic.pic_w, and Pic.pic_h
        ctx.drawImage(img, x, y, this.width, this.height);
        that.pic_w = this.width; //Now you can set the properties of "that"
        that.pic_h = this.height;
    }
    return ss;
    // END
}
于 2012-08-16T22:11:44.950 に答える