cesium里面能不能导入动画_Cesium之动画原理(CallbackProperty)

本文介绍了Cesium中利用CallbackProperty创建动态效果的方法,通过回调函数实时计算材质属性,实现如动态随机颜色和拖尾效果的材质。示例中展示了如何结合canvas绘制和图片加载,动态控制光效移动速度和颜色,为线条添加动态效果。
摘要由CSDN通过智能技术生成

Cesium之动画原理(CallbackProperty)

CallbackProperty是一个类,其值由回调函数延迟计算。也就是说它在不断地自我调用,每当期返回的对象有改变,就抛出改编后的值。

利用这种特性,我们就可以在定义材质时,用CallbackProperty生成动态的对象赋值给材质参数,就可以得到动态材质的效果。

例子:

1.动态随机颜色材质

let aniMaterial = newCesium.ColorMaterialProperty(new Cesium.CallbackProperty(function() {returnCesium.Color.fromRandom({

minimumRed :0.75,

minimumGreen :0.75,

minimumBlue :0.75,

alpha :1.0});

},false))

2.配合cesium材质可以使用canvas绘制图片加载材质的方式,可以做拖尾效果的材质

//先添加两个canvas画布//因为画布内变化CallbackProperty监控不到,所以用两个画布切换的方式达成效果

let link = document.createElement('canvas')

link.style.width= '700px'link.style.height= '100px'link.setAttribute('class', 'canvas')

link.setAttribute('id', 'canvas-a')this.$refs.mainDiv.appendChild(

您可以将`ImageMaterialProperty`的`image`属性设置为一个动态的图片序列,来实现上下滚动的效果。以下是一些示例代码,可以将其添加到您的`dataProces`函数中: ```javascript let imageUrls = [ require("../../assets/images/weilan1.png"), require("../../assets/images/weilan2.png"), require("../../assets/images/weilan3.png"), require("../../assets/images/weilan4.png"), require("../../assets/images/weilan5.png"), ]; let currentIndex = 0; let intervalId = setInterval(() => { currentIndex = (currentIndex + 1) % imageUrls.length; imageMaterial.image = imageUrls[currentIndex]; }, 200); let imageMaterial = new Cesium.ImageMaterialProperty({ transparent: true, image: imageUrls[currentIndex], repeat: new Cesium.Cartesian2(1.0, 1), }); let coor = Array.prototype.concat.apply([], data); let datasouce = this.map_common_addDatasouce("wall"); datasouce.entities.add({ wall: { positions: Cesium.Cartesian3.fromDegreesArray(coor), maximumHeights: new Array(data.length).fill(300), minimunHeights: new Array(data.length).fill(0), material: imageMaterial, }, }); // 在组件销毁前清除定时器 beforeDestroy() { clearInterval(intervalId); } ``` 在上面的代码中,我们首先定义了一个`imageUrls`数组,其中包含了一组动态图片序列。然后,我们使用`setInterval`函数在每200毫秒更改一次`ImageMaterialProperty`的`image`属性,使图片序列上下滚动。最后,我们将`imageMaterial`对象作为`wall`实体的材质属性,并将其添加到场景中。 需要注意的是,由于使用了定时器来实现动态效果,因此在组件销毁前需要清除定时器,以避免内存泄漏。在Vue.js中,您可以在`beforeDestroy`生命周期钩子中清除定时器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值