1

我的情况是这样的,我只想获取WebGlContextAttributesstruct的字段。

let antialias_info = gl.get_context_attributes().unwrap();

match antialias_info.antialias {
   // ...
}

我收到以下错误:

attempted to take value of method `antialias` on type `web_sys::WebGlContextAttributes` method, not a field.

而且我已经阅读了文档WebGlContextAttributes,但仍然不知道如何获取它的字段值。

4

1 回答 1

2

看起来该WebGlContextAttributes类型仅被设计为用于使用的构建器,HtmlCanvasElement::get_context_with_context_options()但忽略了它也应该用于从WebGlRenderingContext::get_context_attributes(). 我看到您已经创建了一个问题来解决这个问题。

作为一种解决方法,您应该能够使用通用机制来获取对象属性。从wasm-bindgen 指南中的Accessing Properties of Untyped JavaScript Values中,您可以js_sys::Reflect::get()像这样使用:

let attributes = gl.get_context_attributes().unwrap();
let antialias = js_sys::Reflect::get(&attributes, &JsValue::from_str("antialias"))
    .unwrap()
    .as_bool()
    .unwrap();
于 2021-12-31T22:17:53.763 回答