Clutter.Image属性 - 从磁盘加载图像

时间:2013-06-05 17:49:29

标签: javascript clutter

使用Javascript,因此非常糟糕的内省文档,我试图创建一个ClutterImage,它应该替换已弃用的ClutterTexture。我无法确定用于指定要为此类图像加载的文件名/ uri的属性名称:

const Clutter = imports.gi.Clutter;

Clutter.init(null);

let stage = new Clutter.Stage();

stage.connect("destroy", Clutter.main_quit);
stage.title = "Test";

stage.set_background_color(new Clutter.Color({
    red  : 0,
    blue : 128,
    green : 64,
    alpha : 255
}));

let img = new Clutter.Image({
    uri : 'some-image.jpg'
});

stage.add_actor(img);
Clutter.main();

我的错误当前是:Error: No property uri on this GObject ClutterImage这当然意味着我正在尝试用于uri的属性名称无效。有谁知道我可以在哪里查看,或者知道在ClutterImage s中调用了filename / uri属性?

1 个答案:

答案 0 :(得分:1)

没有用于将纹理数据从文件加载到Clutter.Image实例的属性或函数。

您应该使用Gdk.Pixbuf从文件,缓冲区或流中加载图像数据,然后将其放在Clutter.Image中,例如:

let pixbuf = Gdk.Pixbuf.new_from_file('...');
let image = new Clutter.Image();
image.set_data(pixbuf.get_pixels(),
               pixbuf.has_alpha() ? Cogl.PixelFormat.RGBA_8888
                                  : Cogl.PixelFormat.RGB_888,
               pixbuf.get_width(),
               pixbuf.get_height(),
               pixbuf.get_rowstride());

哪个应该有用;如果没有,那么这是一个内省问题,可能需要在GdkPixbuf中进行一些调整。