BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

PropertyBinding.findNode()

PropertyBinding.findNode() 方法是three.js中的一个静态函数,用于在对象的数据结构中递归查找和返回与给定路径相匹配的目标属性结构。

语法

PropertyBinding.findNode(root, path)

参数

  • root(Object): 目标对象的根节点
  • path(String 或 Array): 目标属性的路径字符串或路径数组

返回值

findNode 方法会递归地查找整个目标对象树,返回该路径对应的属性结构,如果没有找到对应的属性则返回undefined

示例

以下示例是通过findNode方法修改了一个对象的属性值。

import { PropertyBinding } from 'three';

const root = {
  a: {
    b: 10,
    c: 20
  }
};

const path = ['a', 'b'];

const node = PropertyBinding.findNode(root, path);

if (node) {
  node.setValue(30);
} else {
  console.log(`未找到属性 ${path.join('.')}`);
}

console.log(root);
// 输出结果: { a: { b: 30, c: 20 } }

注意事项

  • path 参数可以是一个字符串,以 . 分割每一级路径(如:'a.b.c'),也可以是一个由路径名称组成的数组(如:['a', 'b', 'c'])。
  • 如果路径中任一级属性值为 nullundefined,则会导致函数返回 undefined
  • 在使用 findNode 方法之前,请先确保你已经了解了three.js对象的数据结构,以便快速找到目标配对的属性路径。