InterleavedBufferAttribute.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>InterleavedBufferAttribute - Three.js Docs</title>
  6. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  7. <script src="../scripts/highlight.min.js"></script>
  8. <link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
  9. <link type="text/css" rel="stylesheet" href="../styles/page.css">
  10. </head>
  11. <body>
  12. <h1 translate="no">InterleavedBufferAttribute</h1>
  13. <section>
  14. <header>
  15. <div class="class-description"><p>An alternative version of a buffer attribute with interleaved data. Interleaved
  16. attributes share a common interleaved data storage (<a href="InterleavedBuffer.html">InterleavedBuffer</a>) and refer with
  17. different offsets into the buffer.</p></div>
  18. </header>
  19. <article>
  20. <div class="container-overview">
  21. <h2>Constructor</h2>
  22. <h3 class="name name-method" id="InterleavedBufferAttribute" translate="no">new <a href="#InterleavedBufferAttribute">InterleavedBufferAttribute</a><span class="signature">( interleavedBuffer : <span class="param-type">InterleavedBuffer</span>, itemSize : <span class="param-type">number</span>, offset : <span class="param-type">number</span>, normalized : <span class="param-type">boolean</span> )</span> </h3>
  23. <div class="method">
  24. <div class="description">
  25. <p>Constructs a new interleaved buffer attribute.</p>
  26. </div>
  27. <table class="params">
  28. <tbody>
  29. <tr>
  30. <td class="name"><code>interleavedBuffer</code></td>
  31. <td class="description last"><p>The buffer holding the interleaved data.</p></td>
  32. </tr>
  33. <tr>
  34. <td class="name"><code>itemSize</code></td>
  35. <td class="description last"><p>The item size.</p></td>
  36. </tr>
  37. <tr>
  38. <td class="name"><code>offset</code></td>
  39. <td class="description last"><p>The attribute offset into the buffer.</p></td>
  40. </tr>
  41. <tr>
  42. <td class="name"><code>normalized</code></td>
  43. <td class="description last"><p>Whether the data are normalized or not.<br/>Default is <code>false</code>.</p></td>
  44. </tr>
  45. </tbody>
  46. </table>
  47. </div>
  48. </div>
  49. <h2 class="subsection-title">Properties</h2>
  50. <div class="member">
  51. <h3 class="name" id="array" translate="no">.<a href="#array">array</a><span class="type-signature"> : TypedArray</span> </h3>
  52. <div class="description">
  53. <p>The array holding the interleaved buffer attribute data.</p>
  54. </div>
  55. </div>
  56. <div class="member">
  57. <h3 class="name" id="count" translate="no">.<a href="#count">count</a><span class="type-signature"> : number</span> <span class="type-signature">(readonly) </span></h3>
  58. <div class="description">
  59. <p>The item count of this buffer attribute.</p>
  60. </div>
  61. </div>
  62. <div class="member">
  63. <h3 class="name" id="data" translate="no">.<a href="#data">data</a><span class="type-signature"> : <a href="InterleavedBuffer.html">InterleavedBuffer</a></span> </h3>
  64. <div class="description">
  65. <p>The buffer holding the interleaved data.</p>
  66. </div>
  67. </div>
  68. <div class="member">
  69. <h3 class="name" id="isInterleavedBufferAttribute" translate="no">.<a href="#isInterleavedBufferAttribute">isInterleavedBufferAttribute</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
  70. <div class="description">
  71. <p>This flag can be used for type testing.<br/>Default is <code>true</code>.</p>
  72. </div>
  73. </div>
  74. <div class="member">
  75. <h3 class="name" id="itemSize" translate="no">.<a href="#itemSize">itemSize</a><span class="type-signature"> : number</span> </h3>
  76. <div class="description">
  77. <p>The item size, see <a href="BufferAttribute.html#itemSize">BufferAttribute#itemSize</a>.</p>
  78. </div>
  79. </div>
  80. <div class="member">
  81. <h3 class="name" id="name" translate="no">.<a href="#name">name</a><span class="type-signature"> : string</span> </h3>
  82. <div class="description">
  83. <p>The name of the buffer attribute.</p>
  84. </div>
  85. </div>
  86. <div class="member">
  87. <h3 class="name" id="needsUpdate" translate="no">.<a href="#needsUpdate">needsUpdate</a><span class="type-signature"> : number</span> </h3>
  88. <div class="description">
  89. <p>Flag to indicate that this attribute has changed and should be re-sent to
  90. the GPU. Set this to <code>true</code> when you modify the value of the array.<br/>Default is <code>false</code>.</p>
  91. </div>
  92. </div>
  93. <div class="member">
  94. <h3 class="name" id="normalized" translate="no">.<a href="#normalized">normalized</a><span class="type-signature"> : <a href="InterleavedBuffer.html">InterleavedBuffer</a></span> </h3>
  95. <div class="description">
  96. <p>Whether the data are normalized or not, see <a href="BufferAttribute.html#normalized">BufferAttribute#normalized</a></p>
  97. </div>
  98. </div>
  99. <div class="member">
  100. <h3 class="name" id="offset" translate="no">.<a href="#offset">offset</a><span class="type-signature"> : number</span> </h3>
  101. <div class="description">
  102. <p>The attribute offset into the buffer.</p>
  103. </div>
  104. </div>
  105. <h2 class="subsection-title">Methods</h2>
  106. <h3 class="name name-method" id="applyMatrix4" translate="no">.<a href="#applyMatrix4">applyMatrix4</a><span class="signature">( m : <span class="param-type">Matrix4</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  107. <div class="method">
  108. <div class="description">
  109. <p>Applies the given 4x4 matrix to the given attribute. Only works with
  110. item size <code>3</code>.</p>
  111. </div>
  112. <table class="params">
  113. <tbody>
  114. <tr>
  115. <td class="name"><code>m</code></td>
  116. <td class="description last"><p>The matrix to apply.</p></td>
  117. </tr>
  118. </tbody>
  119. </table>
  120. <dl class="details">
  121. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  122. </dl>
  123. </div>
  124. <h3 class="name name-method" id="applyNormalMatrix" translate="no">.<a href="#applyNormalMatrix">applyNormalMatrix</a><span class="signature">( m : <span class="param-type">Matrix3</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  125. <div class="method">
  126. <div class="description">
  127. <p>Applies the given 3x3 normal matrix to the given attribute. Only works with
  128. item size <code>3</code>.</p>
  129. </div>
  130. <table class="params">
  131. <tbody>
  132. <tr>
  133. <td class="name"><code>m</code></td>
  134. <td class="description last"><p>The normal matrix to apply.</p></td>
  135. </tr>
  136. </tbody>
  137. </table>
  138. <dl class="details">
  139. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  140. </dl>
  141. </div>
  142. <h3 class="name name-method" id="clone" translate="no">.<a href="#clone">clone</a><span class="signature">( data : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  143. <div class="method">
  144. <div class="description">
  145. <p>Returns a new buffer attribute with copied values from this instance.</p>
  146. <p>If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.</p>
  147. </div>
  148. <table class="params">
  149. <tbody>
  150. <tr>
  151. <td class="name"><code>data</code></td>
  152. <td class="description last"><p>An object with interleaved buffers that allows to retain the interleaved property.</p></td>
  153. </tr>
  154. </tbody>
  155. </table>
  156. <dl class="details">
  157. <dt class="tag-returns"><strong>Returns:</strong> A clone of this instance.</dt>
  158. </dl>
  159. </div>
  160. <h3 class="name name-method" id="getComponent" translate="no">.<a href="#getComponent">getComponent</a><span class="signature">( index : <span class="param-type">number</span>, component : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
  161. <div class="method">
  162. <div class="description">
  163. <p>Returns the given component of the vector at the given index.</p>
  164. </div>
  165. <table class="params">
  166. <tbody>
  167. <tr>
  168. <td class="name"><code>index</code></td>
  169. <td class="description last"><p>The index into the buffer attribute.</p></td>
  170. </tr>
  171. <tr>
  172. <td class="name"><code>component</code></td>
  173. <td class="description last"><p>The component index.</p></td>
  174. </tr>
  175. </tbody>
  176. </table>
  177. <dl class="details">
  178. <dt class="tag-returns"><strong>Returns:</strong> The returned value.</dt>
  179. </dl>
  180. </div>
  181. <h3 class="name name-method" id="getW" translate="no">.<a href="#getW">getW</a><span class="signature">( index : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
  182. <div class="method">
  183. <div class="description">
  184. <p>Returns the w component of the vector at the given index.</p>
  185. </div>
  186. <table class="params">
  187. <tbody>
  188. <tr>
  189. <td class="name"><code>index</code></td>
  190. <td class="description last"><p>The index into the buffer attribute.</p></td>
  191. </tr>
  192. </tbody>
  193. </table>
  194. <dl class="details">
  195. <dt class="tag-returns"><strong>Returns:</strong> The w component.</dt>
  196. </dl>
  197. </div>
  198. <h3 class="name name-method" id="getX" translate="no">.<a href="#getX">getX</a><span class="signature">( index : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
  199. <div class="method">
  200. <div class="description">
  201. <p>Returns the x component of the vector at the given index.</p>
  202. </div>
  203. <table class="params">
  204. <tbody>
  205. <tr>
  206. <td class="name"><code>index</code></td>
  207. <td class="description last"><p>The index into the buffer attribute.</p></td>
  208. </tr>
  209. </tbody>
  210. </table>
  211. <dl class="details">
  212. <dt class="tag-returns"><strong>Returns:</strong> The x component.</dt>
  213. </dl>
  214. </div>
  215. <h3 class="name name-method" id="getY" translate="no">.<a href="#getY">getY</a><span class="signature">( index : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
  216. <div class="method">
  217. <div class="description">
  218. <p>Returns the y component of the vector at the given index.</p>
  219. </div>
  220. <table class="params">
  221. <tbody>
  222. <tr>
  223. <td class="name"><code>index</code></td>
  224. <td class="description last"><p>The index into the buffer attribute.</p></td>
  225. </tr>
  226. </tbody>
  227. </table>
  228. <dl class="details">
  229. <dt class="tag-returns"><strong>Returns:</strong> The y component.</dt>
  230. </dl>
  231. </div>
  232. <h3 class="name name-method" id="getZ" translate="no">.<a href="#getZ">getZ</a><span class="signature">( index : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
  233. <div class="method">
  234. <div class="description">
  235. <p>Returns the z component of the vector at the given index.</p>
  236. </div>
  237. <table class="params">
  238. <tbody>
  239. <tr>
  240. <td class="name"><code>index</code></td>
  241. <td class="description last"><p>The index into the buffer attribute.</p></td>
  242. </tr>
  243. </tbody>
  244. </table>
  245. <dl class="details">
  246. <dt class="tag-returns"><strong>Returns:</strong> The z component.</dt>
  247. </dl>
  248. </div>
  249. <h3 class="name name-method" id="setComponent" translate="no">.<a href="#setComponent">setComponent</a><span class="signature">( index : <span class="param-type">number</span>, component : <span class="param-type">number</span>, value : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  250. <div class="method">
  251. <div class="description">
  252. <p>Sets the given value to the given component of the vector at the given index.</p>
  253. </div>
  254. <table class="params">
  255. <tbody>
  256. <tr>
  257. <td class="name"><code>index</code></td>
  258. <td class="description last"><p>The index into the buffer attribute.</p></td>
  259. </tr>
  260. <tr>
  261. <td class="name"><code>component</code></td>
  262. <td class="description last"><p>The component index.</p></td>
  263. </tr>
  264. <tr>
  265. <td class="name"><code>value</code></td>
  266. <td class="description last"><p>The value to set.</p></td>
  267. </tr>
  268. </tbody>
  269. </table>
  270. <dl class="details">
  271. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  272. </dl>
  273. </div>
  274. <h3 class="name name-method" id="setW" translate="no">.<a href="#setW">setW</a><span class="signature">( index : <span class="param-type">number</span>, w : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  275. <div class="method">
  276. <div class="description">
  277. <p>Sets the w component of the vector at the given index.</p>
  278. </div>
  279. <table class="params">
  280. <tbody>
  281. <tr>
  282. <td class="name"><code>index</code></td>
  283. <td class="description last"><p>The index into the buffer attribute.</p></td>
  284. </tr>
  285. <tr>
  286. <td class="name"><code>w</code></td>
  287. <td class="description last"><p>The value to set.</p></td>
  288. </tr>
  289. </tbody>
  290. </table>
  291. <dl class="details">
  292. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  293. </dl>
  294. </div>
  295. <h3 class="name name-method" id="setX" translate="no">.<a href="#setX">setX</a><span class="signature">( index : <span class="param-type">number</span>, x : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  296. <div class="method">
  297. <div class="description">
  298. <p>Sets the x component of the vector at the given index.</p>
  299. </div>
  300. <table class="params">
  301. <tbody>
  302. <tr>
  303. <td class="name"><code>index</code></td>
  304. <td class="description last"><p>The index into the buffer attribute.</p></td>
  305. </tr>
  306. <tr>
  307. <td class="name"><code>x</code></td>
  308. <td class="description last"><p>The value to set.</p></td>
  309. </tr>
  310. </tbody>
  311. </table>
  312. <dl class="details">
  313. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  314. </dl>
  315. </div>
  316. <h3 class="name name-method" id="setXY" translate="no">.<a href="#setXY">setXY</a><span class="signature">( index : <span class="param-type">number</span>, x : <span class="param-type">number</span>, y : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  317. <div class="method">
  318. <div class="description">
  319. <p>Sets the x and y component of the vector at the given index.</p>
  320. </div>
  321. <table class="params">
  322. <tbody>
  323. <tr>
  324. <td class="name"><code>index</code></td>
  325. <td class="description last"><p>The index into the buffer attribute.</p></td>
  326. </tr>
  327. <tr>
  328. <td class="name"><code>x</code></td>
  329. <td class="description last"><p>The value for the x component to set.</p></td>
  330. </tr>
  331. <tr>
  332. <td class="name"><code>y</code></td>
  333. <td class="description last"><p>The value for the y component to set.</p></td>
  334. </tr>
  335. </tbody>
  336. </table>
  337. <dl class="details">
  338. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  339. </dl>
  340. </div>
  341. <h3 class="name name-method" id="setXYZ" translate="no">.<a href="#setXYZ">setXYZ</a><span class="signature">( index : <span class="param-type">number</span>, x : <span class="param-type">number</span>, y : <span class="param-type">number</span>, z : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  342. <div class="method">
  343. <div class="description">
  344. <p>Sets the x, y and z component of the vector at the given index.</p>
  345. </div>
  346. <table class="params">
  347. <tbody>
  348. <tr>
  349. <td class="name"><code>index</code></td>
  350. <td class="description last"><p>The index into the buffer attribute.</p></td>
  351. </tr>
  352. <tr>
  353. <td class="name"><code>x</code></td>
  354. <td class="description last"><p>The value for the x component to set.</p></td>
  355. </tr>
  356. <tr>
  357. <td class="name"><code>y</code></td>
  358. <td class="description last"><p>The value for the y component to set.</p></td>
  359. </tr>
  360. <tr>
  361. <td class="name"><code>z</code></td>
  362. <td class="description last"><p>The value for the z component to set.</p></td>
  363. </tr>
  364. </tbody>
  365. </table>
  366. <dl class="details">
  367. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  368. </dl>
  369. </div>
  370. <h3 class="name name-method" id="setXYZW" translate="no">.<a href="#setXYZW">setXYZW</a><span class="signature">( index : <span class="param-type">number</span>, x : <span class="param-type">number</span>, y : <span class="param-type">number</span>, z : <span class="param-type">number</span>, w : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  371. <div class="method">
  372. <div class="description">
  373. <p>Sets the x, y, z and w component of the vector at the given index.</p>
  374. </div>
  375. <table class="params">
  376. <tbody>
  377. <tr>
  378. <td class="name"><code>index</code></td>
  379. <td class="description last"><p>The index into the buffer attribute.</p></td>
  380. </tr>
  381. <tr>
  382. <td class="name"><code>x</code></td>
  383. <td class="description last"><p>The value for the x component to set.</p></td>
  384. </tr>
  385. <tr>
  386. <td class="name"><code>y</code></td>
  387. <td class="description last"><p>The value for the y component to set.</p></td>
  388. </tr>
  389. <tr>
  390. <td class="name"><code>z</code></td>
  391. <td class="description last"><p>The value for the z component to set.</p></td>
  392. </tr>
  393. <tr>
  394. <td class="name"><code>w</code></td>
  395. <td class="description last"><p>The value for the w component to set.</p></td>
  396. </tr>
  397. </tbody>
  398. </table>
  399. <dl class="details">
  400. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  401. </dl>
  402. </div>
  403. <h3 class="name name-method" id="setY" translate="no">.<a href="#setY">setY</a><span class="signature">( index : <span class="param-type">number</span>, y : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  404. <div class="method">
  405. <div class="description">
  406. <p>Sets the y component of the vector at the given index.</p>
  407. </div>
  408. <table class="params">
  409. <tbody>
  410. <tr>
  411. <td class="name"><code>index</code></td>
  412. <td class="description last"><p>The index into the buffer attribute.</p></td>
  413. </tr>
  414. <tr>
  415. <td class="name"><code>y</code></td>
  416. <td class="description last"><p>The value to set.</p></td>
  417. </tr>
  418. </tbody>
  419. </table>
  420. <dl class="details">
  421. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  422. </dl>
  423. </div>
  424. <h3 class="name name-method" id="setZ" translate="no">.<a href="#setZ">setZ</a><span class="signature">( index : <span class="param-type">number</span>, z : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  425. <div class="method">
  426. <div class="description">
  427. <p>Sets the z component of the vector at the given index.</p>
  428. </div>
  429. <table class="params">
  430. <tbody>
  431. <tr>
  432. <td class="name"><code>index</code></td>
  433. <td class="description last"><p>The index into the buffer attribute.</p></td>
  434. </tr>
  435. <tr>
  436. <td class="name"><code>z</code></td>
  437. <td class="description last"><p>The value to set.</p></td>
  438. </tr>
  439. </tbody>
  440. </table>
  441. <dl class="details">
  442. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  443. </dl>
  444. </div>
  445. <h3 class="name name-method" id="toJSON" translate="no">.<a href="#toJSON">toJSON</a><span class="signature">( data : <span class="param-type">Object</span> )</span><span class="type-signature"> : Object</span> </h3>
  446. <div class="method">
  447. <div class="description">
  448. <p>Serializes the buffer attribute into JSON.</p>
  449. <p>If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.</p>
  450. </div>
  451. <table class="params">
  452. <tbody>
  453. <tr>
  454. <td class="name"><code>data</code></td>
  455. <td class="description last"><p>An optional value holding meta information about the serialization.</p></td>
  456. </tr>
  457. </tbody>
  458. </table>
  459. <dl class="details">
  460. <dt class="tag-returns"><strong>Returns:</strong> A JSON object representing the serialized buffer attribute.</dt>
  461. </dl>
  462. </div>
  463. <h3 class="name name-method" id="transformDirection" translate="no">.<a href="#transformDirection">transformDirection</a><span class="signature">( m : <span class="param-type">Matrix4</span> )</span><span class="type-signature"> : <a href="InterleavedBufferAttribute.html">InterleavedBufferAttribute</a></span> </h3>
  464. <div class="method">
  465. <div class="description">
  466. <p>Applies the given 4x4 matrix to the given attribute. Only works with
  467. item size <code>3</code> and with direction vectors.</p>
  468. </div>
  469. <table class="params">
  470. <tbody>
  471. <tr>
  472. <td class="name"><code>m</code></td>
  473. <td class="description last"><p>The matrix to apply.</p></td>
  474. </tr>
  475. </tbody>
  476. </table>
  477. <dl class="details">
  478. <dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
  479. </dl>
  480. </div>
  481. <h2 class="subsection-title">Source</h2>
  482. <p>
  483. <a href="https://github.com/mrdoob/three.js/blob/master/src/core/InterleavedBufferAttribute.js" target="_blank" rel="noopener" translate="no">src/core/InterleavedBufferAttribute.js</a>
  484. </p>
  485. </article>
  486. </section>
  487. <script src="../scripts/linenumber.js"></script>
  488. <script src="../scripts/page.js"></script>
  489. </body>
  490. </html>
粤ICP备19079148号