路径点漫游
<h1>路径点漫游</h1>
<h2>1. MovePathConfig</h2>
<ul>
<li><strong>描述</strong>:移动路径点配置类。</li>
<li><strong>构造</strong>: <code>new BCore.Extension.MovePathConfig(viewer3D)</code></li>
<li><strong>成员变量</strong>:
<ul>
<li><code>viewer3D</code>:<code>BCore.Viewer.Viewer3D</code>。</li>
</ul></li>
</ul>
<h2>2 MovePath</h2>
<ul>
<li><strong>描述</strong>:移动路径点类。</li>
<li><strong>构造</strong>: <code>new BCore.Extension.MovePath(config)</code></li>
<li><strong>参数</strong>:
<ul>
<li><code>config</code>:<code>BCore.Extension.MovePathConfig</code> 移动路径点配置类。</li>
</ul></li>
</ul>
<h2>3. MovePathKeyFrame</h2>
<ul>
<li><strong>描述</strong>:移动路径点关键帧。</li>
<li><strong>构造</strong>: <code>new BCore.Extension.MovePathKeyFrame()</code></li>
<li><strong>成员变量</strong>:
<ul>
<li><code>name</code>:<code>number</code> 帧索引</li>
<li><code>pos</code>:<code>THREE.Vector3</code> 位置</li>
<li><code>dir</code>:<code>THREE.Vector3</code> 朝向</li>
</ul></li>
</ul>
<hr />
<h2>BCore.Extension.MovePath 方法总览</h2>
<ul>
<li><code>*start()**</code>: 开始播放。</li>
<li><code>**play()**</code>:暂停后继续播放。</li>
<li><code>**pause()**</code>:暂停播放。</li>
<li><code>**stop()**</code>:停止播放,结束播放。</li>
<li><code>**setSpeed(speed)**</code>:设置播放速度。</li>
<li><code>**getSpeed()**</code>:获取当前播放速度。</li>
<li><code>**getName()**</code>:获取自动生成的路径名称。</li>
<li><code>**addKeyFrame(keyFrame)**</code>:添加关键帧对象。</li>
<li><code>**removeKeyFrame(index)**</code>:删除指定索引的关键帧。</li>
<li><code>**editKeyFrame(name, position, direction)**</code>:编辑关键帧。</li>
<li><code>**clearKeyFrames()**</code>:清除所有关键帧。</li>
<li><code>**getAllKeyFrames()**</code>:获取所有关键帧。</li>
<li><code>**onComplete(callback)**</code>:设置漫游完成事件回调。</li>
<li><code>**onKeyFrameDone(callback)**</code>:设置关键帧完成事件回调。</li>
<li><code>**onUpdate(callback)**</code>:设置状态更新事件回调。</li>
<li><code>**onStart(callback)**</code>:设置漫游开始事件回调。</li>
<li><code>**onPause(callback)**</code>:设置漫游暂停事件回调。</li>
<li><code>**onPlay(callback)**</code>:设置继续播放事件回调。</li>
</ul>
<hr />
<h2>方法示例</h2>
<h3>1.播放路径</h3>
<p><strong>接口</strong>:<code>start( )</code></p>
<p><strong>示例代码</strong>:</p>
<pre><code class="language-javascript">let config = new BCore.Extension.MovePathConfig(mViewer3D);
let movePath = new BCore.Extension.MovePath(config);
// 创建关键帧
let k1 = new BCore.Extension.MovePathKeyFrame('1',{x: 0, y: 0, z: 0},{x: 10, y: 0, z: 0});
let k2 = new BCore.Extension.MovePathKeyFrame('2',{x: 10, y: 0, z: 0},{x: 20, y: 0, z: 0});
let k3 = new BCore.Extension.MovePathKeyFrame('3',{x: 20, y: 0, z: 0},{x: 30, y: 0, z: 0});
let k4 = new BCore.Extension.MovePathKeyFrame('4',{x: 30, y: 0, z: 0},{x: 40, y: 0, z: 0});
// 添加关键帧
movePath.addKeyFrame(k1);
movePath.addKeyFrame(k2);
movePath.addKeyFrame(k3);
movePath.addKeyFrame(k4);
// 设置事件回调
movePath.onStart((e) =&gt; { console.log('onStart', e) });
movePath.onKeyFrameDone((e) =&gt; { console.log('onKeyFrameDone', e) });
movePath.onComplete((e) =&gt; { console.log('onComplete', e) });
movePath.onPause((e) =&gt; { console.log('onPause', e) });
movePath.onPlay((e) =&gt; { console.log('onPlay', e) });
// 开始播放路径
movePath.start();</code></pre>
<p><br></p>
<h3>2.漫游完成回调</h3>
<p><strong>接口</strong>: <code>onComplete(callback)</code>
<strong>参数</strong>:</p>
<ul>
<li><code>callback</code>:Function,回调函数,参数包含 <code>isAutoStop</code>(自动结束或通过 <code>MovePath.stop()</code> 结束)。</li>
</ul>
<p><strong>示例代码</strong>:</p>
<pre><code class="language-javascript">let config = new BCore.Extension.MovePathConfig(mViewer3D);
let movePath = new BCore.Extension.MovePath(config);
let k1 = new BCore.Extension.MovePathKeyFrame('1',{x: 0, y: 0, z: 0},{x: 10, y: 0, z: 0});
let k2 = new BCore.Extension.MovePathKeyFrame('2',{x: 10, y: 0, z: 0},{x: 20, y: 0, z: 0});
let k3 = new BCore.Extension.MovePathKeyFrame('3',{x: 20, y: 0, z: 0},{x: 30, y: 0, z: 0});
let k4 = new BCore.Extension.MovePathKeyFrame('4',{x: 30, y: 0, z: 0},{x: 40, y: 0, z: 0});
movePath.addKeyFrame(k1);
movePath.addKeyFrame(k2);
movePath.addKeyFrame(k3);
movePath.addKeyFrame(k4);
//e:回调参数
//walkPathName:路径名
movePath.onStart((e)=&gt;{console.log('onStart',e)});
//e:回调参数
//walkPathName:路径名
//position_x: 相机位置坐标X, ...position_y,position_z
//direction_x: 相机朝向坐标X, ...direction_y,direction_z
//fromKeyFrameName: 开始帧名称
//toKeyFrameName: 目标帧名称
movePath.onKeyFrameDone((e)=&gt;{console.log('onKeyFrameDone',e)});
//e:回调参数
//walkPathName:路径名
//isAutoStop:自动播放完成 / 通过 MovePath.stop()完成
movePath.onComplete((e)=&gt;{console.log('onComplete',e)});
//e:回调参数
//walkPathName:路径名
//position_x: 相机位置坐标X, ...position_y,position_z
//direction_x: 相机朝向坐标X, ...direction_y,direction_z
//fromKeyFrameName: 开始帧名称
//toKeyFrameName: 目标帧名称
movePath.onPause((e)=&gt;{console.log('onPause',e)});
//e:回调参数
//walkPathName:路径名
movePath.onPlay((e)=&gt;{console.log('onPlay',e)});
movePath.start();</code></pre>
<p>此结构提供了对 <code>路径点漫游</code> 功能的基本概览,供开发者使用和扩展。</p>