1

使用 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 的属性的名称无效。有谁知道我在哪里可以查到这个,或者知道ClutterImages 中的文件名/uri 属性是什么?

4

1 回答 1

4

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

您应该使用GdkPixbuf从文件、缓冲区或流中加载图像数据,然后将其放入类似的内容中Clutter.Image

const Clutter = imports.gi.Clutter;     
const Cogl = imports.gi.Cogl;           
const GdkPixbuf = imports.gi.GdkPixbuf; 

const pixbuf = GdkPixbuf.Pixbuf.new_from_file('...');
const image = new Clutter.Image();

image.set_data(pixbuf.get_pixels(),
               pixbuf.get_has_alpha() ? Cogl.PixelFormat.RGBA_8888
                                      : Cogl.PixelFormat.RGB_888,
               pixbuf.get_width(),
               pixbuf.get_height(),
               pixbuf.get_rowstride());

这应该有效;如果不是,那么这是一个内省问题,并且可能需要在GdkPixbuf.

于 2013-06-06T14:24:58.937 回答