Обновление свойства обратного вызова Cesium заставляет объект мигать
Вот некоторый код, который можно вставить в замок с цезиевым песком.
Он добавляет объект на карту, затем каждую секунду обновляет CallbackProperty для свойства position. Каждый раз, когда он обновляется, объект мигает.
var viewer = new Cesium.Viewer('cesiumContainer');
var position = new Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0);
var constant = false;
var blueBox = viewer.entities.add({
name : 'Blue box',
position: new Cesium.CallbackProperty(getPos, constant),
box : {
dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
material : Cesium.Color.BLUE
}
});
function getPos() {
return position;
}
function setPosCallback() {
constant = !constant;
blueBox.position.setCallback(getPos, constant);
}
setInterval(setPosCallback, 1000);
Есть ли способ обновить этот тип свойства, не заставляя сущность мигать? Может быть, используя requestAnimationFrame или что-то?
Мне нужно использовать callbackProperties для рисования фигур, но как только они будут нарисованы, я хочу, чтобы они использовали постоянные свойства. Я также попытался изменить свойство isConstant, но оно доступно только для чтения.
2 ответа
Я понимаю, что этот вопрос был задан очень давно, но похоже, что проблема в этой строке «constant =! Constant;». Простое удаление этого устранит мерцание.
var viewer = new Cesium.Viewer('cesiumContainer');
var position = new Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0);
var constant = true;
var blueBox = viewer.entities.add({
name : 'Blue box',
position: new Cesium.CallbackProperty(getPos, constant),
box : {
dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
material : Cesium.Color.BLUE
}
});
var count = -114.0;
function getPos() {
count+=0.2;
return new Cesium.Cartesian3.fromDegrees(count, 40.0, 300000.0);
}
function setPosCallback() {
constant = !constant;
blueBox.position.setCallback(getPos.bind(blueBox), true);
}
setInterval(setPosCallback, 1000);
Привет, коробка движется, и она не вспыхнула в моем браузере, когда я связал функцию обратного вызова с сущностью и сохранил константу = true.
Вы можете попробовать еще раз. ура