creator-sp.d.ts 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910
  1. declare module cc {
  2. /**
  3. * Cocos Creator Enhance Kit 命名空间
  4. */
  5. module sp {
  6. /**
  7. * 是否初始化完成
  8. */
  9. const inited: boolean,
  10. /**
  11. * 版本号
  12. */
  13. const version: string,
  14. /**
  15. * 最大纹理插槽数量
  16. *
  17. * 固定为 8
  18. */
  19. const MAX_MULTITEXTURE_NUM: number;
  20. /**
  21. * 渲染组件是否默认自动切换至贴图关联的多纹理材质
  22. */
  23. let autoSwitchMaterial: boolean;
  24. /**
  25. * 渲染组件是否默认参与动态合图
  26. */
  27. let allowDynamicAtlas: boolean;
  28. /**
  29. * Label 组件是否默认启用渲染时进行缩放以适配高 DPI 屏幕
  30. */
  31. let enableLabelRetina: boolean;
  32. /**
  33. * Label 组件渲染时进行缩放的缩放比例
  34. */
  35. let labelRetinaScale: number;
  36. /**
  37. * Char 图集会进行自动多纹理合批的数量
  38. */
  39. let charAtlasAutoBatchCount: number;
  40. /**
  41. * Char 图集是否在场景切换时清空
  42. */
  43. let charAtlasAutoResetBeforeSceneLoad: boolean;
  44. /**
  45. * 内置的多纹理合批 Effect Asset
  46. */
  47. const multi2dSpriteEffectAsset: cc.EffectAsset;
  48. /**
  49. * property index to name
  50. */
  51. function propertyIndex2Name(index: number): string;
  52. /**
  53. * property name to index
  54. */
  55. function propertyName2Index(name: string): number;
  56. /**
  57. * 多纹理 Material 管理类
  58. */
  59. class MultiHandler {
  60. /**
  61. * 材质
  62. */
  63. material: cc.Material;
  64. /**
  65. * Texture 数组
  66. *
  67. * 注意:不是 cc.Texture2D
  68. */
  69. protected textures: any[];
  70. /**
  71. * 有空槽(缓存值,并不是完全正确,只是为了降低当材质没有空槽时避免数组遍历的性能消耗)
  72. */
  73. protected hasEmptySlot: boolean;
  74. constructor(material?: cc.Material);
  75. /**
  76. * 同步 Material 的纹理插槽数据
  77. *
  78. * 当自行设置插槽可调用此函数同步 Material 上的插槽数据至 textures 数组
  79. */
  80. syncTextures(): void;
  81. /**
  82. * 设置纹理插槽(提供 cc.Texture2D)
  83. */
  84. setTexture(index: number, texture: cc.Texture2D): void;
  85. /**
  86. * 移除指定纹理
  87. *
  88. * 注意:不是 cc.Texture2D
  89. */
  90. removeTexture(texture: any): void;
  91. /**
  92. * 纹理是否在插槽中
  93. *
  94. * 注意:不是 cc.Texture2D
  95. */
  96. hasTexture(texture: any): boolean;
  97. /**
  98. * 获取纹理在插槽中的 Index,没有返回 -1
  99. *
  100. * 注意:不是 cc.Texture2D
  101. */
  102. getIndex(texture: any): number;
  103. /**
  104. * 获取指定 index 中的纹理
  105. *
  106. * 注意:不是 cc.Texture2D
  107. */
  108. getTexture(index: number): any;
  109. /**
  110. * 获取空插槽 Index,没有返回 -1
  111. */
  112. getEmptyIndex(): number;
  113. /**
  114. * 自动设置纹理到空插槽,返回插槽下标,失败返回 -1(提供 cc.Texture2D)
  115. */
  116. autoSetTexture(texture: cc.Texture2D): number;
  117. }
  118. /**
  119. * 多纹理合批管理器
  120. */
  121. class MultiBatcher {
  122. /**
  123. * 多纹理材质管理器数组
  124. */
  125. handlers: MultiHandler[];
  126. /**
  127. * 有空槽的材质
  128. */
  129. nextHandler: MultiHandler;
  130. /**
  131. * 初始化
  132. */
  133. init(): void;
  134. /**
  135. * 传入 cc.Texture2D,会关联并返回一个多纹理材质,如果已经有关联的材质则会返回已关联的材质
  136. */
  137. requsetMaterial(texture: cc.Texture2D): cc.Material;
  138. /**
  139. * 重置多纹理材质数组,再次使用请先初始化
  140. */
  141. reset(): void;
  142. }
  143. };
  144. namespace RenderComponent {
  145. export enum EnableType {
  146. /**
  147. * !#en Global.
  148. * !#zh 使用全局值
  149. * @property {Number} GLOBAL
  150. */
  151. GLOBAL = 0,
  152. /**
  153. * !#en Enable.
  154. * !#zh 开启
  155. * @property {Number} ENABLE
  156. */
  157. ENABLE = 1,
  158. /**
  159. * !#en Disable.
  160. * !#zh 关闭
  161. * @property {Number} DISABLE
  162. */
  163. DISABLE = 2,
  164. }
  165. }
  166. interface RenderComponent {
  167. /**
  168. * `updateRenderData` 时是否需要更新使用的 Texture 在材质中的 Index
  169. */
  170. _texIdDirty: boolean;
  171. /**
  172. * 使用的 Texture 在材质中的 Index
  173. */
  174. _texId: number;
  175. /**
  176. * 更新 `_texId`(使用的 Texture 在材质中的 Index)
  177. */
  178. _updateMultiTexId(material: cc.MaterialVariant, texture: cc.Texture2D);
  179. }
  180. interface Label {
  181. /**
  182. * 是否自动切换至贴图关联的材质
  183. */
  184. autoSwitchMaterial: cc.RenderComponent.EnableType;
  185. /**
  186. * 是否参与动态合图
  187. */
  188. allowDynamicAtlas: cc.RenderComponent.EnableType;
  189. /**
  190. * 是否启用渲染时进行缩放以适配高 DPI 屏幕
  191. */
  192. enableRetina: cc.RenderComponent.EnableType;
  193. /**
  194. * 置渲染数据刷新脏标记
  195. */
  196. setVertsDirty(): void;
  197. }
  198. namespace Label {
  199. /**
  200. * CHAR 缓存模式单图集类
  201. */
  202. class LetterAtlas {
  203. /**
  204. * 所属图集管理器
  205. */
  206. _atlases: cc.Label.LetterAtlases;
  207. /**
  208. * 图集纹理
  209. */
  210. _texture: cc.RenderTexture;
  211. /**
  212. * 在管理器图集数组中的下标
  213. */
  214. _id: number;
  215. /**
  216. * 渲染时用的临时变量
  217. */
  218. _tmpId: number;
  219. /**
  220. * 废弃字符区域数组
  221. */
  222. frees: cc.BitmapFont.FontLetterDefinition[];
  223. /**
  224. * 可能可以进行回收的字符区域数组
  225. */
  226. waitCleans: cc.BitmapFont.FontLetterDefinition[];
  227. /**
  228. * 重置图集
  229. */
  230. reset(): void;
  231. /**
  232. * 销毁
  233. */
  234. destroy(): void;
  235. }
  236. /**
  237. * CHAR 缓存模式图集管理类
  238. */
  239. class LetterAtlases {
  240. /**
  241. * 图集数组
  242. */
  243. atlases: any[];
  244. /**
  245. * Char 多纹理材质
  246. */
  247. material: cc.Material;
  248. /**
  249. * Fake MaterialVariant
  250. */
  251. fakeMaterial: { material: cc.Material };
  252. /**
  253. * 抽象字体图集 cc.BitmapFont.FontAtlas
  254. */
  255. _fontDefDictionary: any;
  256. /**
  257. * 使用该接口在显示字符前将字符打入 CHAR 图集
  258. */
  259. getLetterDefinitionForChar(char: string, labelInfo: any): any;
  260. /**
  261. * 获取已存在的字符信息
  262. */
  263. getLetter(key: string): cc.BitmapFont.FontLetterDefinition;
  264. /**
  265. * 从图集中删除字符
  266. */
  267. deleteLetter(letter: cc.BitmapFont.FontLetterDefinition): void;
  268. /**
  269. * 重置所有图集
  270. */
  271. reset(): void;
  272. /**
  273. * 销毁
  274. */
  275. destroy(): void;
  276. }
  277. /**
  278. * CHAR 缓存模式图集管理器
  279. */
  280. const _shareAtlas: LetterAtlases;
  281. }
  282. namespace BitmapFont {
  283. /**
  284. * Letter 信息类
  285. */
  286. class FontLetterDefinition {
  287. u: number;
  288. v: number;
  289. w: number;
  290. h: number;
  291. offsetX: number;
  292. offsetY: number;
  293. textureID: number;
  294. valid: boolean;
  295. xAdvance: number;
  296. texture: cc.Texture2D;
  297. atlas: cc.Label.LetterAtlas;
  298. ref: number;
  299. _inCleans: boolean;
  300. _hash: string;
  301. _width: number;
  302. _height: number;
  303. }
  304. }
  305. interface Sprite {
  306. /**
  307. * 是否自动切换至贴图关联的材质
  308. */
  309. autoSwitchMaterial: cc.RenderComponent.EnableType;
  310. /**
  311. * 是否参与动态合图
  312. */
  313. allowDynamicAtlas: cc.RenderComponent.EnableType;
  314. /**
  315. * 置渲染数据刷新脏标记
  316. */
  317. setVertsDirty(): void;
  318. }
  319. interface RichText {
  320. /**
  321. * 自定义内部使用的材质
  322. */
  323. customMaterial: cc.Material;
  324. /**
  325. * 是否自动切换至贴图关联的材质
  326. */
  327. autoSwitchMaterial: cc.RenderComponent.EnableType;
  328. /**
  329. * 是否参与动态合图
  330. */
  331. allowDynamicAtlas: cc.RenderComponent.EnableType;
  332. /**
  333. * 是否启用渲染时进行缩放以适配高 DPI 屏幕
  334. */
  335. enableRetina: cc.RenderComponent.EnableType;
  336. /**
  337. * 置渲染数据刷新脏标记
  338. */
  339. setVertsDirty(): void;
  340. }
  341. interface MotionStreak {
  342. /**
  343. * 是否自动切换至贴图关联的材质
  344. */
  345. autoSwitchMaterial: cc.RenderComponent.EnableType;
  346. /**
  347. * 检查并切换至纹理关联的材质
  348. */
  349. _checkSwitchMaterial(): void;
  350. /**
  351. * 置渲染数据刷新脏标记
  352. */
  353. setVertsDirty(): void;
  354. }
  355. interface Texture2D {
  356. /**
  357. * 关联的多纹理材质
  358. */
  359. _multiMaterial: cc.Material;
  360. /**
  361. * 关联指定材质,返回是否成功
  362. *
  363. * @param material 材质
  364. * @param index 材质纹理插槽下标,默认自动寻找第一个空插槽
  365. */
  366. linkMaterial(material: cc.Material, index?: number): boolean;
  367. /**
  368. * 取消已关联的材质
  369. */
  370. unlinkMaterial(): void;
  371. /**
  372. * 获取已关联的材质
  373. */
  374. getLinkedMaterial(): cc.Material;
  375. /**
  376. * 是否已关联材质
  377. */
  378. hasLinkedMaterial(): boolean;
  379. }
  380. interface Material {
  381. /**
  382. * 所属 MultiHandler 实例
  383. */
  384. _multiHandler?: cc.sp.MultiHandler;
  385. /**
  386. * 根据材质的 `USE_MULTI_TEXTURE` 宏来更新材质是否支持多纹理
  387. */
  388. updateMultiSupport(): boolean;
  389. /**
  390. * 判断该材质是否有 MultiHandler 实例
  391. */
  392. isMultiSupport(): boolean;
  393. /**
  394. * 设置该材质是否持有 MultiHandler 实例
  395. */
  396. setMultiSupport(bool: boolean): void;
  397. /**
  398. * 获取 MultiHandler 实例
  399. */
  400. getMultiHandler(): cc.sp.MultiHandler;
  401. }
  402. namespace DynamicAtlasManager {
  403. /**
  404. * 动态图集类
  405. */
  406. class Atlas {
  407. /**
  408. * 当自由空间的某边长度不足该值则直接忽略该空间
  409. */
  410. static ignoreRectSize: number;
  411. /**
  412. * 默认 Atlas
  413. */
  414. static DEFAULT_HASH: string;
  415. /**
  416. * 宽度
  417. */
  418. width: number;
  419. /**
  420. * 高度
  421. */
  422. height: number;
  423. /**
  424. * 间距
  425. */
  426. padding: number;
  427. /**
  428. * 边距
  429. */
  430. border: number;
  431. /**
  432. * 根矩形
  433. */
  434. rootRect: Rect;
  435. /**
  436. * 自由空间
  437. */
  438. freeRects: Rect[];
  439. /**
  440. * 已使用数量
  441. */
  442. _count: number;
  443. /**
  444. * cc.RenderTexture
  445. */
  446. _texture: cc.RenderTexture;
  447. /**
  448. * texture update dirty
  449. */
  450. _dirty: boolean;
  451. constructor(width: number, height: number, padding?: number, border?: number);
  452. /**
  453. * push to free rects
  454. */
  455. protected pushFreeRect(rect: Rect): void;
  456. /**
  457. * faster remove from free rects
  458. */
  459. protected removeFreeRect(index: number): void;
  460. /**
  461. * change member from free rects
  462. */
  463. protected replaceFreeRect(index: number, rect: Rect): void;
  464. /**
  465. * 插入 SpriteFrame
  466. */
  467. insertSpriteFrame(spriteFrame: cc.SpriteFrame): { x: number, y: number, texture: cc.Texture2D };
  468. /**
  469. * 删除精灵帧
  470. */
  471. deleteSpriteFrame(texture: cc.Texture2D, frame: cc.SpriteFrame): boolean;
  472. /**
  473. * 删除子矩形
  474. */
  475. deleteInnerRect(rect: Rect): void;
  476. /**
  477. * 删除贴图
  478. */
  479. deleteInnerTexture(texture: cc.Texture2D): boolean;
  480. /**
  481. * 是否未使用
  482. */
  483. isEmpty(): boolean;
  484. /**
  485. * 清空
  486. */
  487. reset(): void;
  488. /**
  489. * 销毁
  490. */
  491. destroy(): void;
  492. }
  493. /**
  494. * 动态图集的子矩形空间类
  495. */
  496. class Rect {
  497. /**
  498. * 复用
  499. */
  500. static reuse(atlas: Atlas, width: number, height: number, x: number, y: number): cc.DynamicAtlasManager.Rect;
  501. /**
  502. * 回收
  503. */
  504. static recycle(rect: Rect): void;
  505. /**
  506. * 所属 Atlas
  507. */
  508. atlas: Atlas;
  509. /**
  510. * 宽度
  511. */
  512. width: number;
  513. /**
  514. * 高度
  515. */
  516. height: number;
  517. /**
  518. * 横坐标
  519. */
  520. x: number;
  521. /**
  522. * 纵坐标
  523. */
  524. y: number;
  525. /**
  526. * 在 freeRects 中的下标
  527. */
  528. cacheIndex: number;
  529. /**
  530. * cc.Texture2D UUID
  531. */
  532. uuid: string;
  533. /**
  534. * 使用该贴图的精灵帧数组
  535. */
  536. spriteFrames: cc.SpriteFrame[] = [];
  537. /**
  538. * 父矩形
  539. */
  540. parentRect: Rect | undefined;
  541. /**
  542. * 子矩形之一
  543. */
  544. subRectA: Rect | undefined;
  545. /**
  546. * 子矩形之一
  547. */
  548. subRectB: Rect | undefined;
  549. /**
  550. * 子矩形之一
  551. */
  552. subRectC: Rect | undefined;
  553. /**
  554. * 子矩形或自身计数
  555. */
  556. used: number;
  557. /**
  558. * 像素数
  559. */
  560. readonly sizes: number;
  561. constructor(atlas: Atlas, width: number, height: number, x: number, y: number);
  562. }
  563. }
  564. interface DynamicAtlasManager {
  565. /**
  566. * !#en Is enable autoMultiBatch.
  567. * !#zh 是否开启自动多纹理合批
  568. * @property autoMultiBatch
  569. * @type {Boolean}
  570. */
  571. autoMultiBatch: boolean;
  572. /**
  573. * !#en Is enable autoResetBeforeSceneLoad.
  574. * !#zh 是否在场景切换时清空所有图集
  575. * @property autoResetBeforeSceneLoad
  576. * @type {Boolean}
  577. */
  578. autoResetBeforeSceneLoad: boolean;
  579. /**
  580. * 图集数组
  581. */
  582. atlases: cc.DynamicAtlasManager.Atlas[];
  583. /**
  584. * 已用空间集合 <`texture._uuid`, Rect>
  585. */
  586. rects: Record<string, cc.DynamicAtlasManager.Rect>;
  587. /**
  588. * !#en Delete a sprite frame from the dynamic atlas.
  589. * !#zh 使精灵帧取消使用动态图集
  590. * @method deleteSpriteFrame
  591. * @param {SpriteFrame} spriteFrame
  592. */
  593. deleteSpriteFrame(spriteFrame: cc.SpriteFrame): void;
  594. /**
  595. * !#en Delete a texture from the dynamic atlas.
  596. * !#zh 从动态图集删除该贴图,使用该贴图的精灵帧会被还原
  597. * @method deleteTexture
  598. * @param {Texture2D} texture
  599. */
  600. deleteTexture(texture: cc.Texture2D): void;
  601. }
  602. }
  603. declare module sp {
  604. /**
  605. * Spine Attachment 的 Region 数据
  606. */
  607. class RegionData {
  608. /**
  609. * 根据当前 `x` `y` `width` `height` `texture` 更新 uv 数据
  610. */
  611. static updateUV(region: RegionData | spine.TextureAtlasRegion): void;
  612. x: number;
  613. y: number;
  614. degrees: number;
  615. texture2D: cc.Texture2D;
  616. texture: any;
  617. u: number;
  618. v: number;
  619. u2: number;
  620. v2: number;
  621. width: number;
  622. height: number;
  623. rotate: boolean;
  624. offsetX: number;
  625. offsetY: number;
  626. originalWidth: number;
  627. originalHeight: number;
  628. constructor(attachmentOrSpriteFrame?: spine.Attachment | cc.SpriteFrame);
  629. /**
  630. * 使用 SpriteFrame 的数据初始化 RegionData
  631. */
  632. initWithSpriteFrame(spriteFrame: cc.SpriteFrame): void;
  633. /**
  634. * 使用 Attachment 的数据初始化 RegionData
  635. */
  636. initWithAttachment(attachment: spine.Attachment): void;
  637. /**
  638. * 根据当前 `x` `y` `width` `height` `texture` 更新 uv 数据
  639. */
  640. updateUV(): void;
  641. /**
  642. * 使用 PackedFrame 对象更新 RegionData
  643. */
  644. updateWithPackedFrame(packedFrame: any): void;
  645. /**
  646. * 使用 Texture2D 对象更新 RegionData
  647. */
  648. updateWithTexture2D(texture2d: cc.Texture2D): void;
  649. /**
  650. * 转为 SpriteFrame
  651. *
  652. * 注意:SpriteFrame 只支持两个旋转角度,如果 region 的旋转角度不是 270 或 0 度,则不能完美转换。
  653. *
  654. * @param strict 严格模式,开启时如果无法完美转换则返回 `null`,默认 `false`
  655. */
  656. toSpriteFrame(strict?: boolean): cc.SpriteFrame;
  657. /**
  658. * 将数据更新到 Attachment
  659. *
  660. * @param strict 严格模式,是否确保数据被同步,默认开启
  661. * @param resetDynamicAtlas 如果正在使用动态图集,则先还原,默认开启
  662. */
  663. assignToAttachment(attachment: spine.Attachment, strict?: boolean, resetDynamicAtlas?: boolean): void;
  664. }
  665. interface SkeletonData {
  666. /**
  667. * 克隆该 SkeletonData
  668. *
  669. * 注意:将会克隆原始数据而不是运行时数据
  670. */
  671. clone(): SkeletonData;
  672. }
  673. interface Skeleton {
  674. /**
  675. * 是否自动切换至贴图关联的材质
  676. */
  677. autoSwitchMaterial: cc.RenderComponent.EnableType;
  678. /**
  679. * 参与动态合图
  680. */
  681. allowDynamicAtlas: cc.RenderComponent.EnableType;
  682. /**
  683. * 通过 slot 和 attachment 的名称获取 attachment 上的 region 数据。Skeleton 优先查找它的皮肤,然后才是 Skeleton Data 中默认的皮肤。
  684. */
  685. getRegionData(slotName: string, attachmentName: string): sp.RegionData | null;
  686. /**
  687. * 通过 slot 和 attachment 的名称设置 attachment 上的 region 数据。Skeleton 优先查找它的皮肤,然后才是 Skeleton Data 中默认的皮肤。
  688. */
  689. setRegionData(slotName: string, attachmentName: string, region: sp.RegionData): boolean;
  690. /**
  691. * 置渲染数据刷新脏标记
  692. */
  693. setVertsDirty(): void;
  694. }
  695. }