Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Dart中更改铯几何体实例的颜色_Javascript_Dart_Cesium - Fatal编程技术网

Javascript 在Dart中更改铯几何体实例的颜色

Javascript 在Dart中更改铯几何体实例的颜色,javascript,dart,cesium,Javascript,Dart,Cesium,我正在尝试更新铯几何体实例的颜色。我目前使用javascript编写代码,但当我将其转换为dart时,它就不再工作了。如果将“半透明”(PeristanceColorapearance中)设置为false,则尝试更改颜色时的结果是一个黑色圆圈,如果将“半透明”设置为true,则没有结果。我相信这与我的省道转换有关,但我无法确定问题出在哪里 这是正确工作的javascript代码: var primitive; <script> document.getElementById

我正在尝试更新铯几何体实例的颜色。我目前使用javascript编写代码,但当我将其转换为dart时,它就不再工作了。如果将“半透明”(PeristanceColorapearance中)设置为false,则尝试更改颜色时的结果是一个黑色圆圈,如果将“半透明”设置为true,则没有结果。我相信这与我的省道转换有关,但我无法确定问题出在哪里

这是正确工作的javascript代码:

var primitive;

<script>
    document.getElementById("test").onclick = function() {myFunction()};

    function myFunction() {
        var attributes = primitive.getGeometryInstanceAttributes('circle');
        attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue(Cesium.Color.fromRandom({alpha : 1.0}));
    }
</script>

<script>
    var viewer = new Cesium.Viewer('cesiumContainer');
    var scene = viewer.scene;

    var circleInstance = new Cesium.GeometryInstance({
        geometry : new Cesium.CircleGeometry({
            center : Cesium.Cartesian3.fromDegrees(-95.0, 43.0),
            radius : 250000.0,
            vertexFormat : Cesium.PerInstanceColorAppearance.VERTEX_FORMAT
        }),
        attributes : {
            color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 0.0, 0.0, 0.5))
        },
        id: 'circle'
    });

    primitive = new Cesium.Primitive({geometryInstances : circleInstance, 
                                     releaseGeometryInstances : false, 
                                     appearance : new Cesium.PerInstanceColorAppearance({
                                                                 translucent : false, 
                                                                 closed : true})});
    scene.primitives.add(primitive);
</script>
单击“测试”按钮调用drawTestCircle。我使用的Cesium示例代码在这里的“更新每个实例属性”下找到。起初,我认为这与在绘制testPrimitive之后尝试访问它有关,但我认为设置“releaseGeometryInstances”应该允许我操作它。如有任何意见或建议,将不胜感激

var testPrimitive;
bool myTest = false;

void drawTestCircle() {
    if(!myTest) {
        var scene = _viewer['scene'];

        var color = new JsObject(context['Cesium']['Color'], [1.0, 0.0, 0.0, 0.5]);
        var colorInstance = context['Cesium']['ColorGeometryInstanceAttribute'].callMethod('fromColor', [color]);

        var vertexFormat = context['Cesium']['PerInstanceColorAppearance']['VERTEX_FORMAT'];
        var center = context['Cesium']['Cartesian3'].callMethod('fromDegrees', [-95.0, 43.0]);
        var geometry = new JsObject(context['Cesium']['CircleGeometry'], 
              [new JsObject.jsify({'center' : center, 
                                   'radius' : 250000.0, 
                                   'vertexFormat' : vertexFormat})]);

        var circleInstance = new JsObject(context['Cesium']['GeometryInstance'], 
               [new JsObject.jsify({'geometry' : geometry, 
                                    'attributes' : new JsObject.jsify({'color' : colorInstance}),
                                    'id' : 'circle'})]);

        var appearance = new JsObject(context['Cesium']['PerInstanceColorAppearance'], 
               [new JsObject.jsify({'translucent' : false, 'closed' : true})]);
        testPrimitive = new JsObject(context['Cesium']['Primitive'], 
               [new JsObject.jsify({'geometryInstances' : circleInstance, 
                                    'releaseGeometryInstances' : true, 
                                    'appearance' : appearance})]);

        scene['primitives'].callMethod('add', [testPrimitive]);
        myTest = true;
    } else {
        var attributes = testPrimitive.callMethod('getGeometryInstanceAttributes', ['circle']);

        var color = context['Cesium']['Color'].callMethod('fromRandom', [new JsObject.jsify({'alpha' : 1.0})]);
        attributes['color'] = context['Cesium']['ColorGeometryInstanceAttribute'].callMethod('toValue', [color]);
    }
}