我正在为这 ThreeJS类设置互操作层,类的构造函数接受一个用于设置属性的对象。
//PointCloudMaterial.js
THREE.PointCloudMaterial = function ( parameters ) {
THREE.Material.call( this );
this.color = new THREE.Color( 0xffffff );
this.map = null;
this.size = 1;
this.sizeAttenuation = true;
this.vertexColors = THREE.NoColors;
this.fog = true;
this.setValues( parameters );
};下面是我想在科特林做的事情,是否有可能以一种方式使用异常物体?我最初的想法是创建一个与传递的可能的周长相等的对象,问题是它会覆盖当前的值,而这不是我想要的。
//Interop Layer
native("THREE.PointCloudMaterial")
public class PointCloudMaterial(parameters: object) { } //This doesn't compile "Type Expected"
//Example usage
var sizeObject = object {
var size: Double = size
}
PointCloudMaterial(sizeObject);发布于 2014-08-02 19:55:31
类型安全解决方案可能如下所示:
native
val <T> undefined: T = noImpl
class PointCloudMaterialParameters (
val color: Int = undefined,
val opacity: Double = undefined,
//val map: THREE.Texture = undefined,
val size: Double = undefined,
//val blending: THREE.NormalBlending = undefined,
val depthTest: Boolean = undefined,
val depthWrite: Boolean = undefined,
val vertexColors: Boolean = undefined,
val fog: Boolean = undefined
)
fun main(args : Array<String>) {
println(PointCloudMaterialParameters(size = 2.0))
}
native("THREE.PointCloudMaterial")
public class PointCloudMaterial(parameters: PointCloudMaterialParameters)
//Example usage
PointCloudMaterial(PointCloudMaterialParameters(size = 2.0))另一种较短但不属于类型安全的解决方案是:
native("THREE.PointCloudMaterial")
public class PointCloudMaterial(parameters: Any)
//Example usage
PointCloudMaterial(object { val size = 2.0 })我们以后会尽量简化这个案子。
https://stackoverflow.com/questions/25098376
复制相似问题