0

我有一个扩展的自定义类,qx.ui.basic.Image这里是代码:

/*
#asset(path/to/*)
*/
qx.Class.define("myApp.myImage",
{
  extend : qx.ui.basic.Image,
  construct: function() {
    this.base(arguments);
    var imgPath = "path/to/test.png";
    this.setSource(imgPath);
    this.imageWidth = qx.util.ResourceManager.getInstance().getImageWidth(imgPath);
  },
  properties : {
    imageWidth : { check : 'Integer' }
  }
});

当我尝试使用:

var img = new myApp.myImage();
console.log(img.getImageWidth());

它说,

未捕获的错误:myApp.myImage 实例的属性 imageWidth 尚未(尚未)准备好

我只想获取图像的图像宽度。我也尝试使用:

var img = new myApp.myImage();
console.log(img.getBounds().width);

出现的错误是:

无法获得未定义的宽度

我错过了什么?

4

1 回答 1

1

让我们看一下属性描述。它没有初始值,也不能为空。这意味着,当您创建它时,它处于某种未知状态,没有任何价值。像在示例中那样查询该属性会导致错误,因为属性系统不知道要返回什么值,因为您没有指定一个值。因此,这一切都归结为构造函数的最后一行,您在其中将名为“imageWidth”的成员变量设置为图像的右侧宽度。但这不是属性,它是一个普通的成员。因此,您要么访问示例中的成员变量,img.imageWidth要么使用构造函数中属性的设置器:this.setImageWidth(...).

于 2013-05-23T05:56:31.810 回答