diff --git a/play/.gitignore b/play/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..c072d29adcca12daa3412d534483817b1c77c77f --- /dev/null +++ b/play/.gitignore @@ -0,0 +1,53 @@ +#///////////////////////////////////////////////////////////////////////////// +# Fireball Projects +#///////////////////////////////////////////////////////////////////////////// + +/library/ +/temp/ +/local/ +/build/ + +#///////////////////////////////////////////////////////////////////////////// +# npm files +#///////////////////////////////////////////////////////////////////////////// + +npm-debug.log +node_modules/ + +#///////////////////////////////////////////////////////////////////////////// +# Logs and databases +#///////////////////////////////////////////////////////////////////////////// + +*.log +*.sql +*.sqlite + +#///////////////////////////////////////////////////////////////////////////// +# files for debugger +#///////////////////////////////////////////////////////////////////////////// + +*.sln +*.csproj +*.pidb +*.unityproj +*.suo + +#///////////////////////////////////////////////////////////////////////////// +# OS generated files +#///////////////////////////////////////////////////////////////////////////// + +.DS_Store +ehthumbs.db +Thumbs.db + +#///////////////////////////////////////////////////////////////////////////// +# WebStorm files +#///////////////////////////////////////////////////////////////////////////// + +.idea/ + +#////////////////////////// +# VS Code files +#////////////////////////// + +.vscode/ diff --git a/play/assets/tmpGame.meta b/play/assets/tmpGame.meta new file mode 100644 index 0000000000000000000000000000000000000000..87e508f6fb144925fe2af6c529c89320c1298d27 --- /dev/null +++ b/play/assets/tmpGame.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "c35bb2f6-f24a-4850-ae44-643f2fdc7541", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/audios.meta b/play/assets/tmpGame/audios.meta new file mode 100644 index 0000000000000000000000000000000000000000..70a39fa0e7ad48eb8c52e75d788b782d6fb2a272 --- /dev/null +++ b/play/assets/tmpGame/audios.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "cb9fa4ea-66ca-45af-ad31-e445c7b0ef32", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/dragonBones.meta b/play/assets/tmpGame/dragonBones.meta new file mode 100644 index 0000000000000000000000000000000000000000..dae2435be94ec503e846d4456de901421f8022f2 --- /dev/null +++ b/play/assets/tmpGame/dragonBones.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "0853721c-3f55-4eb2-873d-e3081cfadd4b", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/fonts.meta b/play/assets/tmpGame/fonts.meta new file mode 100644 index 0000000000000000000000000000000000000000..67ced5a7c25c66ec870c7a41ea3e9c0f667af398 --- /dev/null +++ b/play/assets/tmpGame/fonts.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "20185448-a1ca-4de2-8b37-7bf6cdfccbae", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/prefabs.meta b/play/assets/tmpGame/prefabs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c42fe069715365f96b7504ab94e0855af694e945 --- /dev/null +++ b/play/assets/tmpGame/prefabs.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "08101b1e-bd60-4233-8710-fd6b73c61454", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/prefabs/TmpPreFab.js b/play/assets/tmpGame/prefabs/TmpPreFab.js new file mode 100644 index 0000000000000000000000000000000000000000..40eedea1b6e4ef8a4c2fc21e8eb60d03c4b87be6 --- /dev/null +++ b/play/assets/tmpGame/prefabs/TmpPreFab.js @@ -0,0 +1,38 @@ +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +cc.Class({ + extends: cc.Component, + + properties: { + // foo: { + // // ATTRIBUTES: + // default: null, // The default value will be used only when the component attaching + // // to a node for the first time + // type: cc.SpriteFrame, // optional, default is typeof default + // serializable: true, // optional, default is true + // }, + // bar: { + // get () { + // return this._bar; + // }, + // set (value) { + // this._bar = value; + // } + // }, + }, + + // LIFE-CYCLE CALLBACKS: + + // onLoad () {}, + + start () { + + }, + + // update (dt) {}, +}); diff --git a/play/assets/tmpGame/prefabs/TmpPreFab.js.meta b/play/assets/tmpGame/prefabs/TmpPreFab.js.meta new file mode 100644 index 0000000000000000000000000000000000000000..7937fdf85e8e06d2c7114398298f5a778048f9dd --- /dev/null +++ b/play/assets/tmpGame/prefabs/TmpPreFab.js.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.0.8", + "uuid": "94a7b9b9-6939-44a7-85cf-15336952b997", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/prefabs/TmpPreFab.prefab b/play/assets/tmpGame/prefabs/TmpPreFab.prefab new file mode 100644 index 0000000000000000000000000000000000000000..d8ba7cc0af9ca7cc2da926d7a357e623d791b2d5 --- /dev/null +++ b/play/assets/tmpGame/prefabs/TmpPreFab.prefab @@ -0,0 +1,97 @@ +[ + { + "__type__": "cc.Prefab", + "_name": "", + "_objFlags": 0, + "_native": "", + "data": { + "__id__": 1 + }, + "optimizationPolicy": 0, + "asyncLoadAssets": false, + "readonly": false + }, + { + "__type__": "cc.Node", + "_name": "TmpPreFab", + "_objFlags": 0, + "_parent": null, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 2 + } + ], + "_prefab": { + "__id__": 3 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "94a7bm5aTlEp4XPFTNpUrmX", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "ec03214c-4419-4127-8e8f-39df8d2c3146" + }, + "fileId": "17t3fETWZIALDkDA1OlUg9", + "sync": false + } +] \ No newline at end of file diff --git a/play/assets/tmpGame/prefabs/TmpPreFab.prefab.meta b/play/assets/tmpGame/prefabs/TmpPreFab.prefab.meta new file mode 100644 index 0000000000000000000000000000000000000000..5e5300b0b8fb7e3152c3e4c99c179e0f043d2c01 --- /dev/null +++ b/play/assets/tmpGame/prefabs/TmpPreFab.prefab.meta @@ -0,0 +1,8 @@ +{ + "ver": "1.2.7", + "uuid": "ec03214c-4419-4127-8e8f-39df8d2c3146", + "optimizationPolicy": "AUTO", + "asyncLoadAssets": false, + "readonly": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/scene.meta b/play/assets/tmpGame/scene.meta new file mode 100644 index 0000000000000000000000000000000000000000..e2b021a0b79e6f20cfdebf445a6436199d136d22 --- /dev/null +++ b/play/assets/tmpGame/scene.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "e8bd16b0-3804-45a9-a8ca-f52c02224f55", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/scene/tmpScene.fire b/play/assets/tmpGame/scene/tmpScene.fire new file mode 100644 index 0000000000000000000000000000000000000000..d80b14f3ca5e8e64f90ac04107a90cb58f3b870b --- /dev/null +++ b/play/assets/tmpGame/scene/tmpScene.fire @@ -0,0 +1,370 @@ +[ + { + "__type__": "cc.SceneAsset", + "_name": "", + "_objFlags": 0, + "_native": "", + "scene": { + "__id__": 1 + } + }, + { + "__type__": "cc.Scene", + "_objFlags": 0, + "_parent": null, + "_children": [ + { + "__id__": 2 + } + ], + "_active": false, + "_components": [], + "_prefab": null, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_is3DNode": true, + "_groupIndex": 0, + "groupIndex": 0, + "autoReleaseAssets": true, + "_id": "57ea7c61-9b8b-498a-b024-c98ee9124beb" + }, + { + "__type__": "cc.Node", + "_name": "Canvas", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 3 + }, + { + "__id__": 5 + } + ], + "_active": true, + "_components": [ + { + "__id__": 7 + }, + { + "__id__": 8 + }, + { + "__id__": 9 + } + ], + "_prefab": null, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 960, + "height": 640 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 480, + 320, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "a5esZu+45LA5mBpvttspPD" + }, + { + "__type__": "cc.Node", + "_name": "Main Camera", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 4 + } + ], + "_prefab": null, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 960, + "height": 640 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 511.82101363660325, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "e1WoFrQ79G7r4ZuQE3HlNb" + }, + { + "__type__": "cc.Camera", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 3 + }, + "_enabled": true, + "_cullingMask": 4294967295, + "_clearFlags": 7, + "_backgroundColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_depth": -1, + "_zoomRatio": 1, + "_targetTexture": null, + "_fov": 60, + "_orthoSize": 10, + "_nearClip": 1, + "_farClip": 4096, + "_ortho": true, + "_rect": { + "__type__": "cc.Rect", + "x": 0, + "y": 0, + "width": 1, + "height": 1 + }, + "_renderStages": 1, + "_alignWithScreen": true, + "_id": "81GN3uXINKVLeW4+iKSlim" + }, + { + "__type__": "cc.Node", + "_name": "MusicNode", + "_objFlags": 0, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 6 + } + ], + "_prefab": null, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "7dvmSP3MpJ9JVrZdBKlFPg" + }, + { + "__type__": "193f7Pj1dtKzIc1hLupu+6E", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 5 + }, + "_enabled": true, + "bgm": null, + "星星": null, + "爆炸": null, + "眩晕": null, + "ç ¸": null, + "移动": null, + "结æŸ": null, + "点击": null, + "_id": "12RCIBo/VE/qimm3KlDYPO" + }, + { + "__type__": "cc.Canvas", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "_designResolution": { + "__type__": "cc.Size", + "width": 960, + "height": 640 + }, + "_fitWidth": false, + "_fitHeight": true, + "_id": "59Cd0ovbdF4byw5sbjJDx7" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "29zXboiXFBKoIV4PQ2liTe" + }, + { + "__type__": "b94c9j3n9FOLpOrY/uISJik", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "_id": "267A85TkVOKKVTUUoX8JjJ" + } +] \ No newline at end of file diff --git a/play/assets/tmpGame/scene/tmpScene.fire.meta b/play/assets/tmpGame/scene/tmpScene.fire.meta new file mode 100644 index 0000000000000000000000000000000000000000..882c11e92468b589b3b4c64d1221e408403db119 --- /dev/null +++ b/play/assets/tmpGame/scene/tmpScene.fire.meta @@ -0,0 +1,7 @@ +{ + "ver": "1.2.7", + "uuid": "57ea7c61-9b8b-498a-b024-c98ee9124beb", + "asyncLoadAssets": false, + "autoReleaseAssets": true, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/scene/tmpScene.js b/play/assets/tmpGame/scene/tmpScene.js new file mode 100644 index 0000000000000000000000000000000000000000..40eedea1b6e4ef8a4c2fc21e8eb60d03c4b87be6 --- /dev/null +++ b/play/assets/tmpGame/scene/tmpScene.js @@ -0,0 +1,38 @@ +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +cc.Class({ + extends: cc.Component, + + properties: { + // foo: { + // // ATTRIBUTES: + // default: null, // The default value will be used only when the component attaching + // // to a node for the first time + // type: cc.SpriteFrame, // optional, default is typeof default + // serializable: true, // optional, default is true + // }, + // bar: { + // get () { + // return this._bar; + // }, + // set (value) { + // this._bar = value; + // } + // }, + }, + + // LIFE-CYCLE CALLBACKS: + + // onLoad () {}, + + start () { + + }, + + // update (dt) {}, +}); diff --git a/play/assets/tmpGame/scene/tmpScene.js.meta b/play/assets/tmpGame/scene/tmpScene.js.meta new file mode 100644 index 0000000000000000000000000000000000000000..aee2d74f96f136d1412abb3163192c72b31ead68 --- /dev/null +++ b/play/assets/tmpGame/scene/tmpScene.js.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.0.8", + "uuid": "b94c98f7-9fd1-4e2e-93ab-63fb884898a4", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/script.meta b/play/assets/tmpGame/script.meta new file mode 100644 index 0000000000000000000000000000000000000000..a56bf5da0170de415480c091e8157fd90d7cc8d1 --- /dev/null +++ b/play/assets/tmpGame/script.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "b0c008bc-cf92-463b-8360-0984e13c2e4d", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/script/MusicNode.js b/play/assets/tmpGame/script/MusicNode.js new file mode 100644 index 0000000000000000000000000000000000000000..331600848d9c881fe805a7ff8b3542cc088f505a --- /dev/null +++ b/play/assets/tmpGame/script/MusicNode.js @@ -0,0 +1,73 @@ +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +cc.Class({ + extends: cc.Component, + + properties: { + // foo: { + // // ATTRIBUTES: + // default: null, // The default value will be used only when the component attaching + // // to a node for the first time + // type: cc.SpriteFrame, // optional, default is typeof default + // serializable: true, // optional, default is true + // }, + // bar: { + // get () { + // return this._bar; + // }, + // set (value) { + // this._bar = value; + // } + // }, + bgm: { + default: null, + type: cc.AudioClip + }, + 星星: { + default: null, + type: cc.AudioClip + }, + 爆炸: { + default: null, + type: cc.AudioClip + }, + 眩晕: { + default: null, + type: cc.AudioClip + }, + ç ¸: { + default: null, + type: cc.AudioClip + }, + 移动: { + default: null, + type: cc.AudioClip + }, + 结æŸ: { + default: null, + type: cc.AudioClip + }, + 点击: { + default: null, + type: cc.AudioClip + }, + }, + + // LIFE-CYCLE CALLBACKS: + + // onLoad () {}, + + start() { + + }, + + playEffect(name, loop = false, volume = 1) { + cc.audioEngine.play(this[name], loop, volume); + } + // update (dt) {}, +}); diff --git a/play/assets/tmpGame/script/MusicNode.js.meta b/play/assets/tmpGame/script/MusicNode.js.meta new file mode 100644 index 0000000000000000000000000000000000000000..c88acd5def00a98ba37ad8a63020af973e37c22b --- /dev/null +++ b/play/assets/tmpGame/script/MusicNode.js.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.0.8", + "uuid": "193f73e3-d5db-4acc-8735-84bba9bbee84", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/script/defaultData.js b/play/assets/tmpGame/script/defaultData.js new file mode 100644 index 0000000000000000000000000000000000000000..48fc82b5910e1654e4d8f5754e82b6f2533948b9 --- /dev/null +++ b/play/assets/tmpGame/script/defaultData.js @@ -0,0 +1,34 @@ +module.exports = { + roundList: [{ + audio: 'ball', + questionList: [{ + rightAudio: 'b', + rightWord: 'b', + wrongWordList: ['p', 'd'], + wrongAudioList: ['p.mp3', 'd.mp3'], + }, { + rightAudio: 'a', + rightWord: 'all', + wrongWordList: ['ao', 'arl'], + wrongAudioList: ['ao.mp3', 'arl.mp3'], + }] + }, { + audio: 'banana', + questionList: [{ + rightAudio: 'baa', + rightWord: 'ba', + wrongWordList: ['pa', 'da'], + wrongAudioList: ['pa.mp3', 'da.mp3'], + }, { + rightAudio: 'na', + rightWord: 'na', + wrongWordList: ['ma', 'ha'], + wrongAudioList: ['ma.mp3', 'ha.mp3'], + }, { + rightAudio: 'na', + rightWord: 'na', + wrongWordList: ['ma', 'ha'], + wrongAudioList: ['ma.mp3', 'ha.mp3'], + }] + }], +} diff --git a/play/assets/tmpGame/script/defaultData.js.meta b/play/assets/tmpGame/script/defaultData.js.meta new file mode 100644 index 0000000000000000000000000000000000000000..0d5edd248d2d49190922727a861d57ea25cffa8e --- /dev/null +++ b/play/assets/tmpGame/script/defaultData.js.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.0.8", + "uuid": "8bcec27f-bb4b-4987-8289-3880d6079364", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/script/runtime.js b/play/assets/tmpGame/script/runtime.js new file mode 100644 index 0000000000000000000000000000000000000000..22e7b005c29c97df656f5af672e2212fb828267a --- /dev/null +++ b/play/assets/tmpGame/script/runtime.js @@ -0,0 +1,727 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +!(function(global) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; + } + + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + runtime.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. If the Promise is rejected, however, the + // result for this iteration will be rejected with the same + // reason. Note that rejections of yielded Promises are not + // thrown back into the generator function, as is the case + // when an awaited Promise is rejected. This difference in + // behavior between yield and await is important, because it + // allows the consumer to decide what to do with the yielded + // rejection (swallow it and continue, manually .throw it back + // into the generator, abandon iteration, whatever). With + // await, by contrast, there is no opportunity to examine the + // rejection reason outside the generator function, so the + // only option is to throw it from the await expression, and + // let the generator function handle the exception. + result.value = unwrapped; + resolve(result); + }, reject); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + runtime.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + if (delegate.iterator.return) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; +})( + // In sloppy mode, unbound `this` refers to the global object, fallback to + // Function constructor if we're in global strict mode. That is sadly a form + // of indirect eval which violates Content Security Policy. + (function() { return this })() || Function("return this")() +); diff --git a/play/assets/tmpGame/script/runtime.js.meta b/play/assets/tmpGame/script/runtime.js.meta new file mode 100644 index 0000000000000000000000000000000000000000..6def01a8165ff41595abd1ebf14a303363044fc6 --- /dev/null +++ b/play/assets/tmpGame/script/runtime.js.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.0.8", + "uuid": "d07c22c6-ea88-491a-8716-e509d7265361", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/script/utils.js b/play/assets/tmpGame/script/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..83ccee9986bcb703dc8ca5a0fea2c1462f6d6f54 --- /dev/null +++ b/play/assets/tmpGame/script/utils.js @@ -0,0 +1,96 @@ +export function getPosByAngle(angle, len) { + + const radian = angle * Math.PI / 180; + const x = Math.sin(radian) * len; + const y = Math.cos(radian) * len; + + return { x, y }; + +} + +export function getAngleByPos(px, py, mx, my) { + + const x = Math.abs(px - mx); + const y = Math.abs(py - my); + + const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + const cos = y / z; + const radina = Math.acos(cos); // 用å三角函数求弧度 + let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // å°†å¼§åº¦è½¬æ¢æˆè§’度 + + if (mx > px && my > py) {// é¼ æ ‡åœ¨ç¬¬å››è±¡é™ + angle = 180 - angle; + } + if (mx === px && my > py) {// é¼ æ ‡åœ¨yè½´è´Ÿæ–¹å‘上 + angle = 180; + } + if (mx > px && my === py) {// é¼ æ ‡åœ¨xè½´æ£æ–¹å‘上 + angle = 90; + } + if (mx < px && my > py) {// é¼ æ ‡åœ¨ç¬¬ä¸‰è±¡é™ + angle = 180 + angle; + } + if (mx < px && my === py) {// é¼ æ ‡åœ¨xè½´è´Ÿæ–¹å‘ + angle = 270; + } + if (mx < px && my < py) {// é¼ æ ‡åœ¨ç¬¬äºŒè±¡é™ + angle = 360 - angle; + } + + // console.log('angle: ', angle); + return angle; + +} + +export function exchangeNodePos(baseNode, targetNode) { + return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y))); +} + +export function RandomInt(a, b = 0) { + let max = Math.max(a, b); + let min = Math.min(a, b); + return Math.floor(Math.random() * (max - min) + min); +} + +export function randomSortByArr(arr) { + const newArr = []; + const tmpArr = arr.concat(); + while (tmpArr.length > 0) { + const randomIndex = Math.floor(tmpArr.length * Math.random()); + newArr.push(tmpArr[randomIndex]); + tmpArr.splice(randomIndex, 1); + } + return newArr; +} + +export async function asyncTweenTo(node, duration, obj, ease = undefined) { + return new Promise((resolve, reject) => { + cc.tween(node) + .to(duration, obj, ease) + .call(() => { + resolve(); + }) + .start(); + }); +} + +export async function asyncPlayDragonBoneAnimation(node, animationName, time = 1) { + return new Promise((resolve, reject) => { + node.getComponent(dragonBones.ArmatureDisplay) + .once(dragonBones.EventObject.COMPLETE, () => { + console.log('COMPLETE'); + resolve(); + }); + node.getComponent(dragonBones.ArmatureDisplay) + .playAnimation(animationName, time); + }); +} + +export async function asyncPlayEffectByUrl(url, loop = false) { + return new Promise((resolve, reject) => { + cc.assetManager.loadRemote(url, (err, clip) => { + console.log(clip); + cc.audioEngine.playEffect(clip, loop); + }); + }); +} \ No newline at end of file diff --git a/play/assets/tmpGame/script/utils.js.meta b/play/assets/tmpGame/script/utils.js.meta new file mode 100644 index 0000000000000000000000000000000000000000..e5c7aea3b3aba81d8f598f4c26f301469e0183a5 --- /dev/null +++ b/play/assets/tmpGame/script/utils.js.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.0.8", + "uuid": "285dc6a8-c221-449f-a19e-d2144b9d12d5", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/play/assets/tmpGame/textures.meta b/play/assets/tmpGame/textures.meta new file mode 100644 index 0000000000000000000000000000000000000000..ceee4a4a584d818294f3b6442c86f5f61c406c37 --- /dev/null +++ b/play/assets/tmpGame/textures.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "8ba21262-178f-4fa5-afc9-2c1dd50ba3ab", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/play/creator.d.ts b/play/creator.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..baca55f076a9074fabbb3debdba9a19f1ccd315a --- /dev/null +++ b/play/creator.d.ts @@ -0,0 +1,32244 @@ + +/** !#en +The main namespace of Cocos2d-JS, all engine core classes, functions, properties and constants are defined in this namespace. +!#zh +Cocos 引擎的主è¦å‘½å空间,引擎代ç 䏿‰€æœ‰çš„类,函数,属性和常é‡éƒ½åœ¨è¿™ä¸ªå‘½å空间ä¸å®šä¹‰ã€‚ */ +declare namespace cc { + /** The current version of Cocos2d being used.<br/> + Please DO NOT remove this String, it is an important flag for bug tracking.<br/> + If you post a bug to forum, please attach this flag. */ + export var ENGINE_VERSION: string; + /** + !#en + Creates the speed action which changes the speed of an action, making it take longer (speed > 1) + or less (speed < 1) time. <br/> + Useful to simulate 'slow motion' or 'fast forward' effect. + !#zh ä¿®æ”¹ç›®æ ‡åŠ¨ä½œçš„é€ŸçŽ‡ã€‚ + @param action action + @param speed speed + + @example + ```js + // change the target action speed; + var action = cc.scaleTo(0.2, 1, 0.6); + var newAction = cc.speed(action, 0.5); + ``` + */ + export function speed(action: ActionInterval, speed: number): Action; + /** + !#en Create a follow action which makes its target follows another node. + !#zh è¿½è¸ªç›®æ ‡èŠ‚ç‚¹çš„ä½ç½®ã€‚ + @param followedNode followedNode + @param rect rect + + @example + ```js + // example + // creates the action with a set boundary + var followAction = cc.follow(targetNode, cc.rect(0, 0, screenWidth * 2 - 100, screenHeight)); + node.runAction(followAction); + + // creates the action with no boundary set + var followAction = cc.follow(targetNode); + node.runAction(followAction); + ``` + */ + export function follow(followedNode: Node, rect: Rect): Action; + /** + Points setter + @param points points + */ + export function setPoints(points: any[]): void; + /** + !#en Creates an action with a Cardinal Spline array of points and tension. + !#zh æŒ‰åŸºæ•°æ ·æ¡æ›²çº¿è½¨è¿¹ç§»åŠ¨åˆ°ç›®æ ‡ä½ç½®ã€‚ + @param duration duration + @param points array of control points + @param tension tension + + @example + ```js + //create a cc.CardinalSplineTo + var action1 = cc.cardinalSplineTo(3, array, 0); + ``` + */ + export function cardinalSplineTo(duration: number, points: any[], tension: number): ActionInterval; + /** + update position of target + @param newPos newPos + */ + export function updatePosition(newPos: Vec2): void; + /** + !#en Creates an action with a Cardinal Spline array of points and tension. + !#zh æŒ‰åŸºæ•°æ ·æ¡æ›²çº¿è½¨è¿¹ç§»åŠ¨æŒ‡å®šçš„è·ç¦»ã€‚ + @param duration duration + @param points points + @param tension tension + */ + export function cardinalSplineBy(duration: number, points: any[], tension: number): ActionInterval; + /** + !#en Creates an action with a Cardinal Spline array of points and tension. + !#zh 按 Catmull Rom æ ·æ¡æ›²çº¿è½¨è¿¹ç§»åŠ¨åˆ°ç›®æ ‡ä½ç½®ã€‚ + @param dt dt + @param points points + + @example + ```js + var action1 = cc.catmullRomTo(3, array); + ``` + */ + export function catmullRomTo(dt: number, points: any[]): ActionInterval; + /** + !#en Creates an action with a Cardinal Spline array of points and tension. + !#zh 按 Catmull Rom æ ·æ¡æ›²çº¿è½¨è¿¹ç§»åŠ¨æŒ‡å®šçš„è·ç¦»ã€‚ + @param dt dt + @param points points + + @example + ```js + var action1 = cc.catmullRomBy(3, array); + ``` + */ + export function catmullRomBy(dt: number, points: any[]): ActionInterval; + /** + !#en Show the Node. + !#zh ç«‹å³æ˜¾ç¤ºã€‚ + + @example + ```js + // example + var showAction = cc.show(); + ``` + */ + export function show(): ActionInstant; + /** + !#en Hide the node. + !#zh ç«‹å³éšè—。 + + @example + ```js + // example + var hideAction = cc.hide(); + ``` + */ + export function hide(): ActionInstant; + /** + !#en Toggles the visibility of a node. + !#zh 显éšçжæ€åˆ‡æ¢ã€‚ + + @example + ```js + // example + var toggleVisibilityAction = cc.toggleVisibility(); + ``` + */ + export function toggleVisibility(): ActionInstant; + /** + !#en Create a RemoveSelf object with a flag indicate whether the target should be cleaned up while removing. + !#zh 从父节点移除自身。 + @param isNeedCleanUp isNeedCleanUp + + @example + ```js + // example + var removeSelfAction = cc.removeSelf(); + ``` + */ + export function removeSelf(isNeedCleanUp ?: boolean): ActionInstant; + /** + !#en Destroy self + !#zh 创建一个销æ¯è‡ªèº«çš„动作。 + + @example + ```js + var destroySelfAction = cc.destroySelf(); + ``` + */ + export function destroySelf(): ActionInstant; + /** + !#en Create a FlipX action to flip or unflip the target. + !#zh X轴翻转。 + @param flip Indicate whether the target should be flipped or not + + @example + ```js + var flipXAction = cc.flipX(true); + ``` + */ + export function flipX(flip: boolean): ActionInstant; + /** + !#en Create a FlipY action to flip or unflip the target. + !#zh Y轴翻转。 + @param flip flip + + @example + ```js + var flipYAction = cc.flipY(true); + ``` + */ + export function flipY(flip: boolean): ActionInstant; + /** + !#en Creates a Place action with a position. + !#zh æ”¾ç½®åœ¨ç›®æ ‡ä½ç½®ã€‚ + @param pos pos + @param y y + + @example + ```js + // example + var placeAction = cc.place(cc.v2(200, 200)); + var placeAction = cc.place(200, 200); + ``` + */ + export function place(pos: Vec2|number, y?: number): ActionInstant; + /** + !#en Creates the action with the callback. + !#zh 执行回调函数。 + @param selector selector + @param selectorTarget selectorTarget + @param data data for function, it accepts all data types. + + @example + ```js + // example + // CallFunc without data + var finish = cc.callFunc(this.removeSprite, this); + + // CallFunc with data + var finish = cc.callFunc(this.removeFromParentAndCleanup, this._grossini, true); + ``` + */ + export function callFunc(selector: Function, selectorTarget?: any, data?: any): ActionInstant; + /** + !#en + Creates the action easing object with the rate parameter. <br /> + From slow to fast. + !#zh 创建 easeIn 缓动对象,由慢到快。 + @param rate rate + + @example + ```js + action.easing(cc.easeIn(3.0)); + ``` + */ + export function easeIn(rate: number): any; + /** + !#en + Creates the action easing object with the rate parameter. <br /> + From fast to slow. + !#zh 创建 easeOut 缓动对象,由快到慢。 + @param rate rate + + @example + ```js + action.easing(cc.easeOut(3.0)); + ``` + */ + export function easeOut(rate: number): any; + /** + !#en + Creates the action easing object with the rate parameter. <br /> + Slow to fast then to slow. + !#zh 创建 easeInOut ç¼“åŠ¨å¯¹è±¡ï¼Œæ…¢åˆ°å¿«ï¼Œç„¶åŽæ…¢ã€‚ + @param rate rate + + @example + ```js + action.easing(cc.easeInOut(3.0)); + ``` + */ + export function easeInOut(rate: number): any; + /** + !#en + Creates the action easing object with the rate parameter. <br /> + Reference easeInExpo: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeExponentialIn 缓动对象。<br /> + EaseExponentialIn 是按指数函数缓动进入的动作。<br /> + å‚考 easeInExpo:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + action.easing(cc.easeExponentialIn()); + ``` + */ + export function easeExponentialIn(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeOutExpo: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeExponentialOut 缓动对象。<br /> + EaseExponentialOut 是按指数函数缓动退出的动作。<br /> + å‚考 easeOutExpo:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + action.easing(cc.easeExponentialOut()); + ``` + */ + export function easeExponentialOut(): any; + /** + !#en + Creates an EaseExponentialInOut action easing object. <br /> + Reference easeInOutExpo: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeExponentialInOut 缓动对象。<br /> + EaseExponentialInOut 是按指数函数缓动进入并退出的动作。<br /> + å‚考 easeInOutExpo:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + action.easing(cc.easeExponentialInOut()); + ``` + */ + export function easeExponentialInOut(): any; + /** + !#en + Creates an EaseSineIn action. <br /> + Reference easeInSine: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 EaseSineIn 缓动对象。<br /> + EaseSineIn 是按æ£å¼¦å‡½æ•°ç¼“动进入的动作。<br /> + å‚考 easeInSine:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + action.easing(cc.easeSineIn()); + ``` + */ + export function easeSineIn(): any; + /** + !#en + Creates an EaseSineOut action easing object. <br /> + Reference easeOutSine: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 EaseSineOut 缓动对象。<br /> + EaseSineIn 是按æ£å¼¦å‡½æ•°ç¼“动退出的动作。<br /> + å‚考 easeOutSine:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + action.easing(cc.easeSineOut()); + ``` + */ + export function easeSineOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInOutSine: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeSineInOut 缓动对象。<br /> + EaseSineIn 是按æ£å¼¦å‡½æ•°ç¼“动进入并退出的动作。<br /> + å‚考 easeInOutSine:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + action.easing(cc.easeSineInOut()); + ``` + */ + export function easeSineInOut(): any; + /** + !#en + Creates the action easing object with the period in radians (default is 0.3). <br /> + Reference easeInElastic: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeElasticIn 缓动对象。<br /> + EaseElasticIn 是按弹性曲线缓动进入的动作。<br /> + 傿•° easeInElastic:http://www.zhihu.com/question/21981571/answer/19925418 + @param period period + + @example + ```js + // example + action.easing(cc.easeElasticIn(3.0)); + ``` + */ + export function easeElasticIn(period: number): any; + /** + !#en + Creates the action easing object with the period in radians (default is 0.3). <br /> + Reference easeOutElastic: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeElasticOut 缓动对象。<br /> + EaseElasticOut 是按弹性曲线缓动退出的动作。<br /> + å‚考 easeOutElastic:http://www.zhihu.com/question/21981571/answer/19925418 + @param period period + + @example + ```js + // example + action.easing(cc.easeElasticOut(3.0)); + ``` + */ + export function easeElasticOut(period: number): any; + /** + !#en + Creates the action easing object with the period in radians (default is 0.3). <br /> + Reference easeInOutElastic: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeElasticInOut 缓动对象。<br /> + EaseElasticInOut 是按弹性曲线缓动进入并退出的动作。<br /> + å‚考 easeInOutElastic:http://www.zhihu.com/question/21981571/answer/19925418 + @param period period + + @example + ```js + // example + action.easing(cc.easeElasticInOut(3.0)); + ``` + */ + export function easeElasticInOut(period: number): any; + /** + !#en + Creates the action easing object. <br /> + Eased bounce effect at the beginning. + !#zh + 创建 easeBounceIn 缓动对象。<br /> + EaseBounceIn 是按弹跳动作缓动进入的动作。 + + @example + ```js + // example + action.easing(cc.easeBounceIn()); + ``` + */ + export function easeBounceIn(): any; + /** + !#en + Creates the action easing object. <br /> + Eased bounce effect at the ending. + !#zh + 创建 easeBounceOut 缓动对象。<br /> + EaseBounceOut 是按弹跳动作缓动退出的动作。 + + @example + ```js + // example + action.easing(cc.easeBounceOut()); + ``` + */ + export function easeBounceOut(): any; + /** + !#en + Creates the action easing object. <br /> + Eased bounce effect at the begining and ending. + !#zh + 创建 easeBounceInOut 缓动对象。<br /> + EaseBounceInOut 是按弹跳动作缓动进入并退出的动作。 + + @example + ```js + // example + action.easing(cc.easeBounceInOut()); + ``` + */ + export function easeBounceInOut(): any; + /** + !#en + Creates the action easing object. <br /> + In the opposite direction to move slowly, and then accelerated to the right direction. + !#zh + 创建 easeBackIn 缓动对象。<br /> + easeBackIn 是在相å的方å‘缓慢移动,然åŽåŠ é€Ÿåˆ°æ£ç¡®çš„æ–¹å‘。<br /> + + @example + ```js + // example + action.easing(cc.easeBackIn()); + ``` + */ + export function easeBackIn(): any; + /** + !#en + Creates the action easing object. <br /> + Fast moving more than the finish, and then slowly back to the finish. + !#zh + 创建 easeBackOut 缓动对象。<br /> + easeBackOut å¿«é€Ÿç§»åŠ¨è¶…å‡ºç›®æ ‡ï¼Œç„¶åŽæ…¢æ…¢å›žåˆ°ç›®æ ‡ç‚¹ã€‚ + + @example + ```js + // example + action.easing(cc.easeBackOut()); + ``` + */ + export function easeBackOut(): any; + /** + !#en + Creates the action easing object. <br /> + Begining of cc.EaseBackIn. Ending of cc.EaseBackOut. + !#zh + 创建 easeBackInOut 缓动对象。<br /> + + @example + ```js + // example + action.easing(cc.easeBackInOut()); + ``` + */ + export function easeBackInOut(): any; + /** + !#en + Creates the action easing object. <br /> + Into the 4 reference point. <br /> + To calculate the motion curve. + !#zh + 创建 easeBezierAction 缓动对象。<br /> + EaseBezierAction 是按è´å¡žå°”曲线缓动的动作。 + @param p0 The first bezier parameter + @param p1 The second bezier parameter + @param p2 The third bezier parameter + @param p3 The fourth bezier parameter + + @example + ```js + // example + action.easing(cc.easeBezierAction(0.5, 0.5, 1.0, 1.0)); + ``` + */ + export function easeBezierAction(p0: number, p1: number, p2: number, p3: number): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInQuad: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuadraticActionIn 缓动对象。<br /> + EaseQuadraticIn是按二次函数缓动进入的动作。<br /> + å‚考 easeInQuad:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuadraticActionIn()); + ``` + */ + export function easeQuadraticActionIn(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeOutQuad: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuadraticActionOut 缓动对象。<br /> + EaseQuadraticOut 是按二次函数缓动退出的动作。<br /> + å‚考 easeOutQuad:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuadraticActionOut()); + ``` + */ + export function easeQuadraticActionOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInOutQuad: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuadraticActionInOut 缓动对象。<br /> + EaseQuadraticInOut 是按二次函数缓动进入并退出的动作。<br /> + å‚考 easeInOutQuad:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuadraticActionInOut()); + ``` + */ + export function easeQuadraticActionInOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeIntQuart: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuarticActionIn 缓动对象。<br /> + EaseQuarticIn 是按四次函数缓动进入的动作。<br /> + å‚考 easeIntQuart:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuarticActionIn()); + ``` + */ + export function easeQuarticActionIn(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeOutQuart: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuarticActionOut 缓动对象。<br /> + EaseQuarticOut 是按四次函数缓动退出的动作。<br /> + å‚考 easeOutQuart:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.QuarticActionOut()); + ``` + */ + export function easeQuarticActionOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInOutQuart: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuarticActionInOut 缓动对象。<br /> + EaseQuarticInOut 是按四次函数缓动进入并退出的动作。<br /> + å‚考 easeInOutQuart:http://www.zhihu.com/question/21981571/answer/19925418 + */ + export function easeQuarticActionInOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInQuint: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuinticActionIn 缓动对象。<br /> + EaseQuinticIn 是按五次函数缓动进的动作。<br /> + å‚考 easeInQuint:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuinticActionIn()); + ``` + */ + export function easeQuinticActionIn(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeOutQuint: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuinticActionOut 缓动对象。<br /> + EaseQuinticOut 是按五次函数缓动退出的动作 + å‚考 easeOutQuint:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuadraticActionOut()); + ``` + */ + export function easeQuinticActionOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInOutQuint: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeQuinticActionInOut 缓动对象。<br /> + EaseQuinticInOut是按五次函数缓动进入并退出的动作。<br /> + å‚考 easeInOutQuint:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeQuinticActionInOut()); + ``` + */ + export function easeQuinticActionInOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInCirc: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeCircleActionIn 缓动对象。<br /> + EaseCircleIn是按圆形曲线缓动进入的动作。<br /> + å‚考 easeInCirc:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeCircleActionIn()); + ``` + */ + export function easeCircleActionIn(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeOutCirc: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeCircleActionOut 缓动对象。<br /> + EaseCircleOut是按圆形曲线缓动退出的动作。<br /> + å‚考 easeOutCirc:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + actioneasing(cc.easeCircleActionOut()); + ``` + */ + export function easeCircleActionOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInOutCirc: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeCircleActionInOut 缓动对象。<br /> + EaseCircleInOut 是按圆形曲线缓动进入并退出的动作。<br /> + å‚考 easeInOutCirc:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeCircleActionInOut()); + ``` + */ + export function easeCircleActionInOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInCubic: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeCubicActionIn 缓动对象。<br /> + EaseCubicIn 是按三次函数缓动进入的动作。<br /> + å‚考 easeInCubic:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeCubicActionIn()); + ``` + */ + export function easeCubicActionIn(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeOutCubic: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeCubicActionOut 缓动对象。<br /> + EaseCubicOut 是按三次函数缓动退出的动作。<br /> + å‚考 easeOutCubic:http://www.zhihu.com/question/21981571/answer/19925418 + + @example + ```js + //example + action.easing(cc.easeCubicActionOut()); + ``` + */ + export function easeCubicActionOut(): any; + /** + !#en + Creates the action easing object. <br /> + Reference easeInOutCubic: <br /> + http://www.zhihu.com/question/21981571/answer/19925418 + !#zh + 创建 easeCubicActionInOut 缓动对象。<br /> + EaseCubicInOut是按三次函数缓动进入并退出的动作。<br /> + å‚考 easeInOutCubic:http://www.zhihu.com/question/21981571/answer/19925418 + */ + export function easeCubicActionInOut(): any; + /** + !#en + Helper constructor to create an array of sequenceable actions + The created action will run actions sequentially, one after another. + !#zh é¡ºåºæ‰§è¡ŒåŠ¨ä½œï¼Œåˆ›å»ºçš„åŠ¨ä½œå°†æŒ‰é¡ºåºä¾æ¬¡è¿è¡Œã€‚ + @param actionOrActionArray actionOrActionArray + @param tempArray tempArray + + @example + ```js + // example + // create sequence with actions + var seq = cc.sequence(act1, act2); + + // create sequence with array + var seq = cc.sequence(actArray); + ``` + */ + export function sequence(actionOrActionArray: FiniteTimeAction|FiniteTimeAction[], ...tempArray: FiniteTimeAction[]): ActionInterval; + /** + !#en Creates a Repeat action. Times is an unsigned integer between 1 and pow(2,30) + !#zh é‡å¤åŠ¨ä½œï¼Œå¯ä»¥æŒ‰ä¸€å®šæ¬¡æ•°é‡å¤ä¸€ä¸ªåŠ¨ï¼Œå¦‚æžœæƒ³æ°¸è¿œé‡å¤ä¸€ä¸ªåŠ¨ä½œè¯·ä½¿ç”¨ repeatForever 动作æ¥å®Œæˆã€‚ + @param action action + @param times times + + @example + ```js + // example + var rep = cc.repeat(cc.sequence(jump2, jump1), 5); + ``` + */ + export function repeat(action: FiniteTimeAction, times: number): ActionInterval; + /** + !#en Create a acton which repeat forever, as it runs forever, it can't be added into cc.sequence and cc.spawn. + !#zh 永远地é‡å¤ä¸€ä¸ªåŠ¨ä½œï¼Œæœ‰é™æ¬¡æ•°å†…é‡å¤ä¸€ä¸ªåŠ¨ä½œè¯·ä½¿ç”¨ repeat 动作,由于这个动作ä¸ä¼šåœæ¢ï¼Œæ‰€ä»¥ä¸èƒ½è¢«æ·»åŠ åˆ° cc.sequence 或 cc.spawn ä¸ã€‚ + @param action action + + @example + ```js + // example + var repeat = cc.repeatForever(cc.rotateBy(1.0, 360)); + ``` + */ + export function repeatForever(action: FiniteTimeAction): ActionInterval; + /** + !#en Create a spawn action which runs several actions in parallel. + !#zh åŒæ¥æ‰§è¡ŒåŠ¨ä½œï¼ŒåŒæ¥æ‰§è¡Œä¸€ç»„动作。 + @param actionOrActionArray actionOrActionArray + @param tempArray tempArray + + @example + ```js + // example + var action = cc.spawn(cc.jumpBy(2, cc.v2(300, 0), 50, 4), cc.rotateBy(2, 720)); + todo:It should be the direct use new + ``` + */ + export function spawn(actionOrActionArray: FiniteTimeAction|FiniteTimeAction[], ...tempArray: FiniteTimeAction[]): FiniteTimeAction; + /** + !#en + Rotates a Node object to a certain angle by modifying its angle property. <br/> + The direction will be decided by the shortest angle. + !#zh æ—‹è½¬åˆ°ç›®æ ‡è§’åº¦ï¼Œé€šè¿‡é€å¸§ä¿®æ”¹å®ƒçš„ angle 属性,旋转方å‘将由最çŸçš„角度决定。 + @param duration duration in seconds + @param dstAngle dstAngle in degrees. + + @example + ```js + // example + var rotateTo = cc.rotateTo(2, 61.0); + ``` + */ + export function rotateTo(duration: number, dstAngle: number): ActionInterval; + /** + !#en + Rotates a Node object clockwise a number of degrees by modifying its angle property. + Relative to its properties to modify. + !#zh 旋转指定的角度。 + @param duration duration in seconds + @param deltaAngle deltaAngle in degrees + + @example + ```js + // example + var actionBy = cc.rotateBy(2, 360); + ``` + */ + export function rotateBy(duration: number, deltaAngle: number): ActionInterval; + /** + !#en + Moves a Node object x,y pixels by modifying its position property. <br/> + x and y are relative to the position of the object. <br/> + Several MoveBy actions can be concurrently called, and the resulting <br/> + movement will be the sum of individual movements. + !#zh 移动指定的è·ç¦»ã€‚ + @param duration duration in seconds + @param deltaPos deltaPos + @param deltaY deltaY + + @example + ```js + // example + var actionTo = cc.moveBy(2, cc.v2(windowSize.width - 40, windowSize.height - 40)); + ``` + */ + export function moveBy(duration: number, deltaPos: Vec2|number, deltaY?: number): ActionInterval; + /** + !#en + Moves a Node object to the position x,y. x and y are absolute coordinates by modifying its position property. <br/> + Several MoveTo actions can be concurrently called, and the resulting <br/> + movement will be the sum of individual movements. + !#zh ç§»åŠ¨åˆ°ç›®æ ‡ä½ç½®ã€‚ + @param duration duration in seconds + @param position position + @param y y + + @example + ```js + // example + var actionBy = cc.moveTo(2, cc.v2(80, 80)); + ``` + */ + export function moveTo(duration: number, position: Vec2|number, y?: number): ActionInterval; + /** + !#en + Create a action which skews a Node object to given angles by modifying its skewX and skewY properties. + Changes to the specified value. + !#zh åæ–œåˆ°ç›®æ ‡è§’度。 + @param t time in seconds + @param sx sx + @param sy sy + + @example + ```js + // example + var actionTo = cc.skewTo(2, 37.2, -37.2); + ``` + */ + export function skewTo(t: number, sx: number, sy: number): ActionInterval; + /** + !#en + Skews a Node object by skewX and skewY degrees. <br /> + Relative to its property modification. + !#zh åæ–œæŒ‡å®šçš„角度。 + @param t time in seconds + @param sx sx skew in degrees for X axis + @param sy sy skew in degrees for Y axis + + @example + ```js + // example + var actionBy = cc.skewBy(2, 0, -90); + ``` + */ + export function skewBy(t: number, sx: number, sy: number): ActionInterval; + /** + !#en + Moves a Node object simulating a parabolic jump movement by modifying it's position property. + Relative to its movement. + !#zh 用跳跃的方å¼ç§»åŠ¨æŒ‡å®šçš„è·ç¦»ã€‚ + @param duration duration + @param position position + @param y y + @param height height + @param jumps jumps + + @example + ```js + // example + var actionBy = cc.jumpBy(2, cc.v2(300, 0), 50, 4); + var actionBy = cc.jumpBy(2, 300, 0, 50, 4); + ``` + */ + export function jumpBy(duration: number, position: Vec2|number, y?: number, height?: number, jumps?: number): ActionInterval; + /** + !#en + Moves a Node object to a parabolic position simulating a jump movement by modifying its position property. <br /> + Jump to the specified location. + !#zh 用跳跃的方å¼ç§»åŠ¨åˆ°ç›®æ ‡ä½ç½®ã€‚ + @param duration duration + @param position position + @param y y + @param height height + @param jumps jumps + + @example + ```js + // example + var actionTo = cc.jumpTo(2, cc.v2(300, 300), 50, 4); + var actionTo = cc.jumpTo(2, 300, 300, 50, 4); + ``` + */ + export function jumpTo(duration: number, position: Vec2|number, y?: number, height?: number, jumps?: number): ActionInterval; + /** + !#en + An action that moves the target with a cubic Bezier curve by a certain distance. + Relative to its movement. + !#zh 按è´èµ›å°”曲线轨迹移动指定的è·ç¦»ã€‚ + @param t time in seconds + @param c Array of points + + @example + ```js + // example + var bezier = [cc.v2(0, windowSize.height / 2), cc.v2(300, -windowSize.height / 2), cc.v2(300, 100)]; + var bezierForward = cc.bezierBy(3, bezier); + ``` + */ + export function bezierBy(t: number, c: Vec2[]): ActionInterval; + /** + !#en An action that moves the target with a cubic Bezier curve to a destination point. + !#zh 按è´èµ›å°”æ›²çº¿è½¨è¿¹ç§»åŠ¨åˆ°ç›®æ ‡ä½ç½®ã€‚ + @param t t + @param c Array of points + + @example + ```js + // example + var bezier = [cc.v2(0, windowSize.height / 2), cc.v2(300, -windowSize.height / 2), cc.v2(300, 100)]; + var bezierTo = cc.bezierTo(2, bezier); + ``` + */ + export function bezierTo(t: number, c: Vec2[]): ActionInterval; + /** + !#en Scales a Node object to a zoom factor by modifying it's scale property. + !#zh 将节点大å°ç¼©æ”¾åˆ°æŒ‡å®šçš„倿•°ã€‚ + @param duration duration + @param sx scale parameter in X + @param sy scale parameter in Y, if Null equal to sx + + @example + ```js + // example + // It scales to 0.5 in both X and Y. + var actionTo = cc.scaleTo(2, 0.5); + + // It scales to 0.5 in x and 2 in Y + var actionTo = cc.scaleTo(2, 0.5, 2); + ``` + */ + export function scaleTo(duration: number, sx: number, sy?: number): ActionInterval; + /** + !#en + Scales a Node object a zoom factor by modifying it's scale property. + Relative to its changes. + !#zh æŒ‰æŒ‡å®šçš„å€æ•°ç¼©æ”¾èŠ‚ç‚¹å¤§å°ã€‚ + @param duration duration in seconds + @param sx sx scale parameter in X + @param sy sy scale parameter in Y, if Null equal to sx + + @example + ```js + // example without sy, it scales by 2 both in X and Y + var actionBy = cc.scaleBy(2, 2); + + //example with sy, it scales by 0.25 in X and 4.5 in Y + var actionBy2 = cc.scaleBy(2, 0.25, 4.5); + ``` + */ + export function scaleBy(duration: number, sx: number, sy?: number|void): ActionInterval; + /** + !#en Blinks a Node object by modifying it's visible property. + !#zh é—ªçƒï¼ˆåŸºäºŽé€æ˜Žåº¦ï¼‰ã€‚ + @param duration duration in seconds + @param blinks blinks in times + + @example + ```js + // example + var action = cc.blink(2, 10); + ``` + */ + export function blink(duration: number, blinks: number): ActionInterval; + /** + !#en + Fades an object that implements the cc.RGBAProtocol protocol. + It modifies the opacity from the current value to a custom one. + !#zh ä¿®æ”¹é€æ˜Žåº¦åˆ°æŒ‡å®šå€¼ã€‚ + @param duration duration + @param opacity 0-255, 0 is transparent + + @example + ```js + // example + var action = cc.fadeTo(1.0, 0); + ``` + */ + export function fadeTo(duration: number, opacity: number): ActionInterval; + /** + !#en Fades In an object that implements the cc.RGBAProtocol protocol. It modifies the opacity from 0 to 255. + !#zh æ¸æ˜¾æ•ˆæžœã€‚ + @param duration duration in seconds + + @example + ```js + //example + var action = cc.fadeIn(1.0); + ``` + */ + export function fadeIn(duration: number): ActionInterval; + /** + !#en Fades Out an object that implements the cc.RGBAProtocol protocol. It modifies the opacity from 255 to 0. + !#zh æ¸éšæ•ˆæžœã€‚ + @param d duration in seconds + + @example + ```js + // example + var action = cc.fadeOut(1.0); + ``` + */ + export function fadeOut(d: number): ActionInterval; + /** + !#en Tints a Node that implements the cc.NodeRGB protocol from current tint to a custom one. + !#zh 修改颜色到指定值。 + @param duration duration + @param red 0-255 + @param green 0-255 + @param blue 0-255 + + @example + ```js + // example + var action = cc.tintTo(2, 255, 0, 255); + ``` + */ + export function tintTo(duration: number, red: number, green: number, blue: number): ActionInterval; + /** + !#en + Tints a Node that implements the cc.NodeRGB protocol from current tint to a custom one. + Relative to their own color change. + !#zh 按照指定的增é‡ä¿®æ”¹é¢œè‰²ã€‚ + @param duration duration in seconds + @param deltaRed deltaRed + @param deltaGreen deltaGreen + @param deltaBlue deltaBlue + + @example + ```js + // example + var action = cc.tintBy(2, -127, -255, -127); + ``` + */ + export function tintBy(duration: number, deltaRed: number, deltaGreen: number, deltaBlue: number): ActionInterval; + /** + !#en Delays the action a certain amount of seconds. + !#zh 延迟指定的时间é‡ã€‚ + @param d duration in seconds + + @example + ```js + // example + var delay = cc.delayTime(1); + ``` + */ + export function delayTime(d: number): ActionInterval; + /** + !#en Executes an action in reverse order, from time=duration to time=0. + !#zh åè½¬ç›®æ ‡åŠ¨ä½œçš„æ—¶é—´è½´ã€‚ + @param action action + + @example + ```js + // example + var reverse = cc.reverseTime(this); + ``` + */ + export function reverseTime(action: FiniteTimeAction): ActionInterval; + /** + !#en Create an action with the specified action and forced target. + !#zh ç”¨å·²æœ‰åŠ¨ä½œå’Œä¸€ä¸ªæ–°çš„ç›®æ ‡èŠ‚ç‚¹åˆ›å»ºåŠ¨ä½œã€‚ + @param target target + @param action action + */ + export function targetedAction(target: Node, action: FiniteTimeAction): ActionInterval; + /** + + @param target the target to animate + */ + export function tween<T> (target?: T) : Tween<T>; + /** !#en This is a Easing instance. + !#zh 这是一个 Easing 类实例。 */ + export var easing: Easing; + /** + !#en + Outputs an error message to the Cocos Creator Console (editor) or Web Console (runtime).<br/> + - In Cocos Creator, error is red.<br/> + - In Chrome, error have a red icon along with red message text.<br/> + !#zh + 输出错误消æ¯åˆ° Cocos Creator 编辑器的 Console 或è¿è¡Œæ—¶é¡µé¢ç«¯çš„ Console ä¸ã€‚<br/> + - 在 Cocos Creator ä¸ï¼Œé”™è¯¯ä¿¡æ¯æ˜¾ç¤ºæ˜¯çº¢è‰²çš„。<br/> + - 在 Chrome ä¸ï¼Œé”™è¯¯ä¿¡æ¯æœ‰çº¢è‰²çš„å›¾æ ‡ä»¥åŠçº¢è‰²çš„æ¶ˆæ¯æ–‡æœ¬ã€‚<br/> + @param msg A JavaScript string containing zero or more substitution strings. + @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output. + */ + export function error(msg: any, ...subst: any[]): void; + /** + !#en + Outputs a warning message to the Cocos Creator Console (editor) or Web Console (runtime). + - In Cocos Creator, warning is yellow. + - In Chrome, warning have a yellow warning icon with the message text. + !#zh + 输出è¦å‘Šæ¶ˆæ¯åˆ° Cocos Creator 编辑器的 Console 或è¿è¡Œæ—¶ Web 端的 Console ä¸ã€‚<br/> + - 在 Cocos Creator ä¸ï¼Œè¦å‘Šä¿¡æ¯æ˜¾ç¤ºæ˜¯é»„色的。<br/> + - 在 Chrome ä¸ï¼Œè¦å‘Šä¿¡æ¯æœ‰ç€é»„è‰²çš„å›¾æ ‡ä»¥åŠé»„è‰²çš„æ¶ˆæ¯æ–‡æœ¬ã€‚<br/> + @param msg A JavaScript string containing zero or more substitution strings. + @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output. + */ + export function warn(msg: any, ...subst: any[]): void; + /** + !#en Outputs a message to the Cocos Creator Console (editor) or Web Console (runtime). + !#zh è¾“å‡ºä¸€æ¡æ¶ˆæ¯åˆ° Cocos Creator 编辑器的 Console 或è¿è¡Œæ—¶ Web 端的 Console ä¸ã€‚ + @param msg A JavaScript string containing zero or more substitution strings. + @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output. + */ + export function log(msg: string|any, ...subst: any[]): void; + /** !#en Director + !#zh 导演类。 */ + export var director: Director; + /** !#en This is a Game instance. + !#zh 这是一个 Game ç±»çš„å®žä¾‹ï¼ŒåŒ…å«æ¸¸æˆä¸»ä½“ä¿¡æ¯å¹¶è´Ÿè´£é©±åŠ¨æ¸¸æˆçš„æ¸¸æˆå¯¹è±¡ã€‚。 */ + export var game: Game; + /** + !#en + Rotates a Node object to a certain angle by modifying its quternion property. <br/> + The direction will be decided by the shortest angle. + !#zh æ—‹è½¬åˆ°ç›®æ ‡è§’åº¦ï¼Œé€šè¿‡é€å¸§ä¿®æ”¹å®ƒçš„ quternion 属性,旋转方å‘将由最çŸçš„角度决定。 + @param duration duration in seconds + @param dstAngleX dstAngleX in degrees. + @param dstAngleY dstAngleY in degrees. + @param dstAngleZ dstAngleZ in degrees. + + @example + ```js + // example + var rotate3DTo = cc.rotate3DTo(2, cc.v3(0, 180, 0)); + ``` + */ + export function rotate3DTo(duration: number, dstAngleX: number|Vec3|Quat, dstAngleY?: number, dstAngleZ?: number): ActionInterval; + /** + !#en + Rotates a Node object counter clockwise a number of degrees by modifying its quaternion property. + Relative to its properties to modify. + !#zh 旋转指定的 3D 角度。 + @param duration duration in seconds + @param deltaAngleX deltaAngleX in degrees + @param deltaAngleY deltaAngleY in degrees + @param deltaAngleZ deltaAngleZ in degrees + + @example + ```js + // example + var actionBy = cc.rotate3DBy(2, cc.v3(0, 360, 0)); + ``` + */ + export function rotate3DBy(duration: number, deltaAngleX: number|Vec3, deltaAngleY?: number, deltaAngleZ?: number): ActionInterval; + export var assetManager: AssetManager; + /** !#en + cc.resources is a bundle and controls all asset under assets/resources + + !#zh + cc.resources 是一个 bundleï¼Œç”¨äºŽç®¡ç†æ‰€æœ‰åœ¨ assets/resources ä¸‹çš„èµ„æº */ + export var resources: AssetManager.Bundle; + /** !#en The System event singleton for global usage + !#zh 系统事件å•例,方便全局使用 */ + export var systemEvent: SystemEvent; + /** + !#en Defines a CCClass using the given specification, please see [Class](/docs/editors_and_tools/creator-chapters/scripting/class.html) for details. + !#zh 定义一个 CCClassï¼Œä¼ å…¥å‚æ•°å¿…须是一个包å«ç±»åž‹å‚æ•°çš„å—é¢é‡å¯¹è±¡ï¼Œå…·ä½“用法请查阅[类型定义](/docs/creator/scripting/class.html)。 + @param options options + + @example + ```js + // define base class + var Node = cc.Class(); + + // define sub class + var Sprite = cc.Class({ + name: 'Sprite', + extends: Node, + + ctor: function () { + this.url = ""; + this.id = 0; + }, + + statics: { + // define static members + count: 0, + getBounds: function (spriteList) { + // compute bounds... + } + }, + + properties { + width: { + default: 128, + type: cc.Integer, + tooltip: 'The width of sprite' + }, + height: 128, + size: { + get: function () { + return cc.v2(this.width, this.height); + } + } + }, + + load: function () { + // load this.url... + }; + }); + + // instantiate + + var obj = new Sprite(); + obj.url = 'sprite.png'; + obj.load(); + ``` + */ + export function Class(options?: {name?: string; extends?: Function; ctor?: Function; __ctor__?: Function; properties?: any; statics?: any; mixins?: Function[]; editor?: {executeInEditMode?: boolean; requireComponent?: Function; menu?: string; executionOrder?: number; disallowMultiple?: boolean; playOnFocus?: boolean; inspector?: string; icon?: string; help?: string; }; update?: Function; lateUpdate?: Function; onLoad?: Function; start?: Function; onEnable?: Function; onDisable?: Function; onDestroy?: Function; onFocusInEditor?: Function; onLostFocusInEditor?: Function; resetInEditor?: Function; onRestore?: Function; _getLocalBounds?: Function; }): Function; + /** + !#en + Define an enum type. <br/> + If a enum item has a value of -1, it will be given an Integer number according to it's order in the list.<br/> + Otherwise it will use the value specified by user who writes the enum definition. + + !#zh + 定义一个枚举类型。<br/> + 用户å¯ä»¥æŠŠæžšä¸¾å€¼è®¾ä¸ºä»»æ„的整数,如果设为 -1,系统将会分é…为上一个枚举值 + 1。 + @param obj a JavaScript literal object containing enum names and values, or a TypeScript enum type + + @example + ```js + // JavaScript: + + var WrapMode = cc.Enum({ + Repeat: -1, + Clamp: -1 + }); + + // Texture.WrapMode.Repeat == 0 + // Texture.WrapMode.Clamp == 1 + // Texture.WrapMode[0] == "Repeat" + // Texture.WrapMode[1] == "Clamp" + + var FlagType = cc.Enum({ + Flag1: 1, + Flag2: 2, + Flag3: 4, + Flag4: 8, + }); + + var AtlasSizeList = cc.Enum({ + 128: 128, + 256: 256, + 512: 512, + 1024: 1024, + }); + + // TypeScript: + + // If used in TypeScript, just define a TypeScript enum: + enum Direction { + Up, + Down, + Left, + Right + } + + // If you need to inspect the enum in Properties panel, you can call cc.Enum: + const {ccclass, property} = cc._decorator; + + @ccclass + class NewScript extends cc.Component { + @property({ + type: cc.Enum(Direction) // call cc.Enum + }) + direction: Direction = Direction.Up; + } + + ``` + */ + export function Enum<T>(obj: T): T; + /** + + @param touches touches + */ + export function handleTouchesBegin(touches: any[]): void; + /** + + @param touches touches + */ + export function handleTouchesMove(touches: any[]): void; + /** + + @param touches touches + */ + export function handleTouchesEnd(touches: any[]): void; + /** + + @param touches touches + */ + export function handleTouchesCancel(touches: any[]): void; + /** + + @param touches touches + */ + export function getSetOfTouchesEndOrCancel(touches: any[]): any[]; + /** + + @param touch touch + */ + export function getPreTouch(touch: Touch): Touch; + /** + + @param touch touch + */ + export function setPreTouch(touch: Touch): void; + /** + + @param tx tx + @param ty ty + @param pos pos + */ + export function getTouchByXY(tx: number, ty: number, pos: Vec2): Touch; + /** + + @param location location + @param pos pos + @param eventType eventType + */ + export function getMouseEvent(location: Vec2, pos: Vec2, eventType: number): Event.EventMouse; + /** + + @param event event + @param pos pos + */ + export function getPointByEvent(event: Touch, pos: Vec2): Vec2; + /** + + @param event event + @param pos pos + */ + export function getTouchesByEvent(event: Touch, pos: Vec2): any[]; + /** + + @param element element + */ + export function registerSystemEvent(element: HTMLElement): void; + /** + + @param dt dt + */ + export function update(dt: number): void; + /** + !#en + Checks whether the object is non-nil and not yet destroyed.<br> + When an object's `destroy` is called, it is actually destroyed after the end of this frame. + So `isValid` will return false from the next frame, while `isValid` in the current frame will still be true. + If you want to determine whether the current frame has called `destroy`, use `cc.isValid(obj, true)`, + but this is often caused by a particular logical requirements, which is not normally required. + + !#zh + 检查该对象是å¦ä¸ä¸º null 并且尚未销æ¯ã€‚<br> + 当一个对象的 `destroy` 调用以åŽï¼Œä¼šåœ¨è¿™ä¸€å¸§ç»“æŸåŽæ‰çœŸæ£é”€æ¯ã€‚å› æ¤ä»Žä¸‹ä¸€å¸§å¼€å§‹ `isValid` 就会返回 false,而当å‰å¸§å†… `isValid` ä»ç„¶ä¼šæ˜¯ true。如果希望判æ–当å‰å¸§æ˜¯å¦è°ƒç”¨è¿‡ `destroy`,请使用 `cc.isValid(obj, true)`,ä¸è¿‡è¿™å¾€å¾€æ˜¯ç‰¹æ®Šçš„业务需求引起的,通常情况下ä¸éœ€è¦è¿™æ ·ã€‚ + @param value value + @param strictMode If true, Object called destroy() in this frame will also treated as invalid. + + @example + ```js + var node = new cc.Node(); + cc.log(cc.isValid(node)); // true + node.destroy(); + cc.log(cc.isValid(node)); // true, still valid in this frame + // after a frame... + cc.log(cc.isValid(node)); // false, destroyed in the end of last frame + ``` + */ + export function isValid(value: any, strictMode?: boolean): boolean; + /** !#en cc.view is the shared view object. + !#zh cc.view 是全局的视图对象。 */ + export var view: View; + /** !#en cc.winSize is the alias object for the size of the current game window. + !#zh cc.winSize 为当å‰çš„æ¸¸æˆçª—å£çš„大å°ã€‚ */ + export var winSize: Size; + /** Specify that the input value must be integer in Inspector. + Also used to indicates that the elements in array should be type integer. */ + export var Integer: string; + /** Indicates that the elements in array should be type double. */ + export var Float: string; + /** Indicates that the elements in array should be type boolean. */ + export var Boolean: string; + /** Indicates that the elements in array should be type string. */ + export var String: string; + /** + !#en Deserialize json to cc.Asset + !#zh å°† JSON ååºåˆ—化为对象实例。 + @param data the serialized cc.Asset json string or json object. + @param details additional loading result + @param options options + */ + export function deserialize(data: string|any, details?: Details, options?: any): any; + /** + !#en Clones the object `original` and returns the clone, or instantiate a node from the Prefab. + !#zh 克隆指定的任æ„类型的对象,或者从 Prefab 实例化出新节点。 + + (Instantiate 时,function å’Œ dom ç‰éžå¯åºåˆ—化对象会直接ä¿ç•™åŽŸæœ‰å¼•ç”¨ï¼ŒAsset 会直接进行浅拷è´ï¼Œå¯åºåˆ—化类型会进行深拷è´ã€‚) + @param original An existing object that you want to make a copy of. + + @example + ```js + // instantiate node from prefab + var scene = cc.director.getScene(); + var node = cc.instantiate(prefabAsset); + node.parent = scene; + // clone node + var scene = cc.director.getScene(); + var node = cc.instantiate(targetNode); + node.parent = scene; + ``` + */ + export function instantiate(original: Prefab): Node; + export function instantiate<T>(original: T): T; + /** + Finds a node by hierarchy path, the path is case-sensitive. + It will traverse the hierarchy by splitting the path using '/' character. + This function will still returns the node even if it is inactive. + It is recommended to not use this function every frame instead cache the result at startup. + @param path path + @param referenceNode referenceNode + */ + export function find(path: string, referenceNode?: Node): Node; + /** + !#en + The convenience method to create a new {{#crossLink "Color/Color:method"}}cc.Color{{/crossLink}} + Alpha channel is optional. Default value is 255. + + !#zh + 通过该方法æ¥åˆ›å»ºä¸€ä¸ªæ–°çš„ {{#crossLink "Color/Color:method"}}cc.Color{{/crossLink}} 对象。 + Alpha é€šé“æ˜¯å¯é€‰çš„。默认值是 255。 + @param r r + @param g g + @param b b + @param a a + + @example + ```js + ----------------------- + // 1. All channels seperately as parameters + var color1 = new cc.Color(255, 255, 255, 255); + // 2. Convert a hex string to a color + var color2 = new cc.Color("#000000"); + // 3. An color object as parameter + var color3 = new cc.Color({r: 255, g: 255, b: 255, a: 255}); + + ``` + */ + export function color(r?: number, g?: number, b?: number, a?: number): Color; + /** + !#en The convenience method to create a new {{#crossLink "Mat4"}}cc.Mat4{{/crossLink}}. + !#zh 通过该简便的函数进行创建 {{#crossLink "Mat4"}}cc.Mat4{{/crossLink}} 对象。 + @param m00 Component in column 0, row 0 position (index 0) + @param m01 Component in column 0, row 1 position (index 1) + @param m02 Component in column 0, row 2 position (index 2) + @param m03 Component in column 0, row 3 position (index 3) + @param m10 Component in column 1, row 0 position (index 4) + @param m11 Component in column 1, row 1 position (index 5) + @param m12 Component in column 1, row 2 position (index 6) + @param m13 Component in column 1, row 3 position (index 7) + @param m20 Component in column 2, row 0 position (index 8) + @param m21 Component in column 2, row 1 position (index 9) + @param m22 Component in column 2, row 2 position (index 10) + @param m23 Component in column 2, row 3 position (index 11) + @param m30 Component in column 3, row 0 position (index 12) + @param m31 Component in column 3, row 1 position (index 13) + @param m32 Component in column 3, row 2 position (index 14) + @param m33 Component in column 3, row 3 position (index 15) + */ + export function mat4(m00?: number, m01?: number, m02?: number, m03?: number, m10?: number, m11?: number, m12?: number, m13?: number, m20?: number, m21?: number, m22?: number, m23?: number, m30?: number, m31?: number, m32?: number, m33?: number): Mat4; + /** + !#en The convenience method to create a new {{#crossLink "Quat"}}cc.Quat{{/crossLink}}. + !#zh 通过该简便的函数进行创建 {{#crossLink "Quat"}}cc.Quat{{/crossLink}} 对象。 + @param x x + @param y y + @param z z + @param w w + */ + export function quat(x?: number|any, y?: number, z?: number, w?: number): Quat; + /** + !#en + The convenience method to create a new Rect. + see {{#crossLink "Rect/Rect:method"}}cc.Rect{{/crossLink}} + !#zh + 该方法用æ¥å¿«é€Ÿåˆ›å»ºä¸€ä¸ªæ–°çš„矩形。{{#crossLink "Rect/Rect:method"}}cc.Rect{{/crossLink}} + @param x x + @param y y + @param w w + @param h h + + @example + ```js + var a = new cc.Rect(0 , 0, 10, 0); + ``` + */ + export function rect(x?: number, y?: number, w?: number, h?: number): Rect; + /** + !#en + Helper function that creates a cc.Size.<br/> + Please use cc.p or cc.v2 instead, it will soon replace cc.Size. + !#zh + 创建一个 cc.Size 对象的帮助函数。<br/> + 注æ„:å¯ä»¥ä½¿ç”¨ cc.p 或者是 cc.v2 代替,它们将很快å–代 cc.Size。 + @param w width or a size object + @param h height + + @example + ```js + var size1 = cc.size(); + var size2 = cc.size(100,100); + var size3 = cc.size(size2); + var size4 = cc.size({width: 100, height: 100}); + + ``` + */ + export function size(w: number|Size, h?: number): Size; + export var EPSILON: number; + /** + Clamps a value between a minimum float and maximum float value. + @param val val + @param min min + @param max max + */ + export function clamp(val: number, min: number, max: number): number; + /** + Clamps a value between 0 and 1. + @param val val + */ + export function clamp01(val: number): number; + /** + + @param from from + @param to to + @param ratio the interpolation coefficient + */ + export function lerp(from: number, to: number, ratio: number): number; + export function random(): void; + /** + Returns a floating-point random number between min (inclusive) and max (exclusive). + @param min min + @param max max + */ + export function randomRange(min: number, max: number): number; + /** + Returns a random integer between min (inclusive) and max (exclusive). + @param min min + @param max max + */ + export function randomRangeInt(min: number, max: number): number; + /** + Linear congruential generator using Hull-Dobell Theorem. + @param seed the random seed + */ + export function pseudoRandom(seed: number): number; + /** + Returns a floating-point pseudo-random number between min (inclusive) and max (exclusive). + @param seed seed + @param min min + @param max max + */ + export function pseudoRandomRange(seed: number, min: number, max: number): number; + /** + Returns a pseudo-random integer between min (inclusive) and max (exclusive). + @param seed seed + @param min min + @param max max + */ + export function pseudoRandomRangeInt(seed: number, min: number, max: number): number; + /** + Returns the next power of two for the value + @param val val + */ + export function nextPow2(val: number): number; + /** + Returns float remainder for t / length + @param t time start at 0 + @param length time of one cycle + */ + export function repeat(t: number, length: number): number; + /** + Returns time wrapped in ping-pong mode + @param t time start at 0 + @param length time of one cycle + */ + export function repeat(t: number, length: number): number; + /** + Returns ratio of a value within a given range + @param from start value + @param to end value + @param value given value + */ + export function repeat(from: number, to: number, value: number): number; + /** + Returns -1, 0, +1 depending on sign of x. + @param v v + */ + export function sign(v: number): void; + /** + !#en The convenience method to create a new {{#crossLink "Vec2"}}cc.Vec2{{/crossLink}}. + !#zh 通过该简便的函数进行创建 {{#crossLink "Vec2"}}cc.Vec2{{/crossLink}} 对象。 + @param x x + @param y y + + @example + ```js + var v1 = cc.v2(); + var v2 = cc.v2(0, 0); + var v3 = cc.v2(v2); + var v4 = cc.v2({x: 100, y: 100}); + ``` + */ + export function v2(x?: number|any, y?: number): Vec2; + /** + !#en The convenience method to create a new {{#crossLink "Vec3"}}cc.Vec3{{/crossLink}}. + !#zh 通过该简便的函数进行创建 {{#crossLink "Vec3"}}cc.Vec3{{/crossLink}} 对象。 + @param x x + @param y y + @param z z + + @example + ```js + var v1 = cc.v3(); + var v2 = cc.v3(0, 0, 0); + var v3 = cc.v3(v2); + var v4 = cc.v3({x: 100, y: 100, z: 0}); + ``` + */ + export function v3(x?: number|any, y?: number, z?: number): Vec3; + export var dynamicAtlasManager: DynamicAtlasManager; + /** !#en The matrix storage */ + export var matrix: any[]; + /** + !#en Get an element + @param i i + @param j j + */ + export function get(i: number, j: number): number; + /** + !#en Set an element + @param i i + @param j j + @param value value + */ + export function set(i: number, j: number, value: boolean): void; + /** + !#en Sets all elements to zero + */ + export function reset(): void; + /** !#en Base class cc.Action for action classes. + !#zh Action 类是所有动作类型的基类。 */ + export class Action { + /** + !#en + to copy object with deep copy. + returns a clone of action. + !#zh 返回一个克隆的动作。 + */ + clone(): Action; + /** + !#en + return true if the action has finished. + !#zh 如果动作已完æˆå°±è¿”回 true。 + */ + isDone(): boolean; + /** + !#en get the target. + !#zh 获å–当å‰ç›®æ ‡èŠ‚ç‚¹ã€‚ + */ + getTarget(): Node; + /** + !#en The action will modify the target properties. + !#zh è®¾ç½®ç›®æ ‡èŠ‚ç‚¹ã€‚ + @param target target + */ + setTarget(target: Node): void; + /** + !#en get the original target. + !#zh 获å–åŽŸå§‹ç›®æ ‡èŠ‚ç‚¹ã€‚ + */ + getOriginalTarget(): Node; + /** + !#en get tag number. + !#zh 获å–ç”¨äºŽè¯†åˆ«åŠ¨ä½œçš„æ ‡ç¾ã€‚ + */ + getTag(): number; + /** + !#en set tag number. + !#zh è®¾ç½®æ ‡ç¾ï¼Œç”¨äºŽè¯†åˆ«åŠ¨ä½œã€‚ + @param tag tag + */ + setTag(tag: number): void; + /** !#en Default Action tag. + !#zh é»˜è®¤åŠ¨ä½œæ ‡ç¾ã€‚ */ + static TAG_INVALID: number; + } + /** !#en + Base class actions that do have a finite time duration. <br/> + Possible actions: <br/> + - An action with a duration of 0 seconds. <br/> + - An action with a duration of 35.5 seconds. + + Infinite time actions are valid + !#zh æœ‰é™æ—¶é—´åŠ¨ä½œï¼Œè¿™ç§åŠ¨ä½œæ‹¥æœ‰æ—¶é•¿ duration 属性。 */ + export class FiniteTimeAction extends Action { + /** + !#en get duration of the action. (seconds). + !#zh 获å–动作以秒为å•ä½çš„æŒç»æ—¶é—´ã€‚ + */ + getDuration(): number; + /** + !#en set duration of the action. (seconds). + !#zh 设置动作以秒为å•ä½çš„æŒç»æ—¶é—´ã€‚ + @param duration duration + */ + setDuration(duration: number): void; + /** + !#en + Returns a reversed action. <br /> + For example: <br /> + - The action will be x coordinates of 0 move to 100. <br /> + - The reversed action will be x of 100 move to 0. + - Will be rewritten + !#zh 返回一个新的动作,执行与原动作完全相å的动作。 + */ + reverse(): void; + /** + !#en + to copy object with deep copy. + returns a clone of action. + !#zh 返回一个克隆的动作。 + */ + clone(): FiniteTimeAction; + } + /** !#en Instant actions are immediate actions. They don't have a duration like the ActionInterval actions. + !#zh 峿—¶åŠ¨ä½œï¼Œè¿™ç§åŠ¨ä½œç«‹å³å°±ä¼šæ‰§è¡Œï¼Œç»§æ‰¿è‡ª FiniteTimeAction。 */ + export class ActionInstant extends FiniteTimeAction { + } + /** !#en + <p> An interval action is an action that takes place within a certain period of time. <br/> + It has an start time, and a finish time. The finish time is the parameter<br/> + duration plus the start time.</p> + + <p>These CCActionInterval actions have some interesting properties, like:<br/> + - They can run normally (default) <br/> + - They can run reversed with the reverse method <br/> + - They can run with the time altered with the Accelerate, AccelDeccel and Speed actions. </p> + + <p>For example, you can simulate a Ping Pong effect running the action normally and<br/> + then running it again in Reverse mode. </p> + !#zh 时间间隔动作,这ç§åŠ¨ä½œåœ¨å·²å®šæ—¶é—´å†…å®Œæˆï¼Œç»§æ‰¿ FiniteTimeAction。 */ + export class ActionInterval extends FiniteTimeAction { + /** + !#en Implementation of ease motion. + !#zh 缓动è¿åŠ¨ã€‚ + @param easeObj easeObj + + @example + ```js + action.easing(cc.easeIn(3.0)); + ``` + */ + easing(easeObj: any): ActionInterval; + /** + !#en + Repeats an action a number of times. + To repeat an action forever use the CCRepeatForever action. + !#zh é‡å¤åŠ¨ä½œå¯ä»¥æŒ‰ä¸€å®šæ¬¡æ•°é‡å¤ä¸€ä¸ªåŠ¨ä½œï¼Œä½¿ç”¨ RepeatForever åŠ¨ä½œæ¥æ°¸è¿œé‡å¤ä¸€ä¸ªåŠ¨ä½œã€‚ + @param times times + */ + repeat(times: number): ActionInterval; + /** + !#en + Repeats an action for ever. <br/> + To repeat the an action for a limited number of times use the Repeat action. <br/> + !#zh 永远地é‡å¤ä¸€ä¸ªåŠ¨ä½œï¼Œæœ‰é™æ¬¡æ•°å†…é‡å¤ä¸€ä¸ªåŠ¨ä½œè¯·ä½¿ç”¨ Repeat 动作。 + */ + repeatForever(): ActionInterval; + } + /** !#en + cc.ActionManager is a class that can manage actions.<br/> + Normally you won't need to use this class directly. 99% of the cases you will use the CCNode interface, + which uses this class's singleton object. + But there are some cases where you might need to use this class. <br/> + Examples:<br/> + - When you want to run an action where the target is different from a CCNode.<br/> + - When you want to pause / resume the actions<br/> + !#zh + cc.ActionManager 是å¯ä»¥ç®¡ç†åŠ¨ä½œçš„å•例类。<br/> + é€šå¸¸ä½ å¹¶ä¸éœ€è¦ç›´æŽ¥ä½¿ç”¨è¿™ä¸ªç±»ï¼Œ99%的情况您将使用 CCNode 的接å£ã€‚<br/> + 但也有一些情况下,您å¯èƒ½éœ€è¦ä½¿ç”¨è¿™ä¸ªç±»ã€‚ <br/> + 例如: + - å½“ä½ æƒ³è¦è¿è¡Œä¸€ä¸ªåŠ¨ä½œï¼Œä½†ç›®æ ‡ä¸æ˜¯ CCNode 类型时。 <br/> + - å½“ä½ æƒ³è¦æš‚åœ/æ¢å¤åŠ¨ä½œæ—¶ã€‚ <br/> */ + export class ActionManager { + /** + !#en + Adds an action with a target.<br/> + If the target is already present, then the action will be added to the existing target. + If the target is not present, a new instance of this target will be created either paused or not, and the action will be added to the newly created target. + When the target is paused, the queued actions won't be 'ticked'. + !#zh + å¢žåŠ ä¸€ä¸ªåŠ¨ä½œï¼ŒåŒæ—¶è¿˜éœ€è¦æä¾›åŠ¨ä½œçš„ç›®æ ‡å¯¹è±¡ï¼Œç›®æ ‡å¯¹è±¡æ˜¯å¦æš‚åœä½œä¸ºå‚数。<br/> + å¦‚æžœç›®æ ‡å·²å˜åœ¨ï¼ŒåŠ¨ä½œå°†ä¼šè¢«ç›´æŽ¥æ·»åŠ åˆ°çŽ°æœ‰çš„èŠ‚ç‚¹ä¸ã€‚<br/> + å¦‚æžœç›®æ ‡ä¸å˜åœ¨ï¼Œå°†ä¸ºè¿™ä¸€ç›®æ ‡åˆ›å»ºä¸€ä¸ªæ–°çš„å®žä¾‹ï¼Œå¹¶å°†åŠ¨ä½œæ·»åŠ è¿›åŽ»ã€‚<br/> + å½“ç›®æ ‡çŠ¶æ€çš„ paused 为 true,动作将ä¸ä¼šè¢«æ‰§è¡Œ + @param action action + @param target target + @param paused paused + */ + addAction(action: Action, target: Node, paused: boolean): void; + /** + !#en Removes all actions from all the targets. + !#zh 移除所有对象的所有动作。 + */ + removeAllActions(): void; + /** + !#en + Removes all actions from a certain target. <br/> + All the actions that belongs to the target will be removed. + !#zh + 移除指定对象上的所有动作。<br/> + å±žäºŽè¯¥ç›®æ ‡çš„æ‰€æœ‰çš„åŠ¨ä½œå°†è¢«åˆ é™¤ã€‚ + @param target target + @param forceDelete forceDelete + */ + removeAllActionsFromTarget(target: Node, forceDelete: boolean): void; + /** + !#en Removes an action given an action reference. + !#zh 移除指定的动作。 + @param action action + */ + removeAction(action: Action): void; + /** + !#en Removes an action given its tag and the target. + !#zh åˆ é™¤æŒ‡å®šå¯¹è±¡ä¸‹ç‰¹å®šæ ‡ç¾çš„ä¸€ä¸ªåŠ¨ä½œï¼Œå°†åˆ é™¤é¦–ä¸ªåŒ¹é…到的动作。 + @param tag tag + @param target target + */ + removeActionByTag(tag: number, target?: Node): void; + /** + !#en Gets an action given its tag an a target. + !#zh é€šè¿‡ç›®æ ‡å¯¹è±¡å’Œæ ‡ç¾èŽ·å–一个动作。 + @param tag tag + @param target target + */ + getActionByTag(tag: number, target: Node): Action; + /** + !#en + Returns the numbers of actions that are running in a certain target. <br/> + Composable actions are counted as 1 action. <br/> + Example: <br/> + - If you are running 1 Sequence of 7 actions, it will return 1. <br/> + - If you are running 7 Sequences of 2 actions, it will return 7. + !#zh + 返回指定对象下所有æ£åœ¨è¿è¡Œçš„动作数é‡ã€‚ <br/> + 组åˆåŠ¨ä½œè¢«ç®—ä½œä¸€ä¸ªåŠ¨ä½œã€‚<br/> + 例如:<br/> + - 如果您æ£åœ¨è¿è¡Œ 7 个动作组æˆçš„åºåˆ—动作(Sequence),这个函数将返回 1。<br/> + - å¦‚æžœä½ æ£åœ¨è¿è¡Œ 2 个åºåˆ—动作(Sequence)和 5 个普通动作,这个函数将返回 7。<br/> + @param target target + */ + getNumberOfRunningActionsInTarget(target: Node): number; + /** + !#en Pauses the target: all running actions and newly added actions will be paused. + !#zh æš‚åœæŒ‡å®šå¯¹è±¡ï¼šæ‰€æœ‰æ£åœ¨è¿è¡Œçš„åŠ¨ä½œå’Œæ–°æ·»åŠ çš„åŠ¨ä½œéƒ½å°†ä¼šæš‚åœã€‚ + @param target target + */ + pauseTarget(target: Node): void; + /** + !#en Resumes the target. All queued actions will be resumed. + !#zh è®©æŒ‡å®šç›®æ ‡æ¢å¤è¿è¡Œã€‚在执行åºåˆ—䏿‰€æœ‰è¢«æš‚åœçš„åŠ¨ä½œå°†é‡æ–°æ¢å¤è¿è¡Œã€‚ + @param target target + */ + resumeTarget(target: Node): void; + /** + !#en Pauses all running actions, returning a list of targets whose actions were paused. + !#zh æš‚åœæ‰€æœ‰æ£åœ¨è¿è¡Œçš„动作,返回一个包å«äº†é‚£äº›åŠ¨ä½œè¢«æš‚åœäº†çš„ç›®æ ‡å¯¹è±¡çš„åˆ—è¡¨ã€‚ + */ + pauseAllRunningActions(): any[]; + /** + !#en Resume a set of targets (convenience function to reverse a pauseAllRunningActions or pauseTargets call). + !#zh 让一组指定对象æ¢å¤è¿è¡Œï¼ˆç”¨æ¥é€†è½¬ pauseAllRunningActions 效果的便æ·å‡½æ•°ï¼‰ã€‚ + @param targetsToResume targetsToResume + */ + resumeTargets(targetsToResume: any[]): void; + /** + !#en Pause a set of targets. + !#zh æš‚åœä¸€ç»„指定对象。 + @param targetsToPause targetsToPause + */ + pauseTargets(targetsToPause: any[]): void; + /** + !#en + purges the shared action manager. It releases the retained instance. <br/> + because it uses this, so it can not be static. + !#zh + 清除共用的动作管ç†å™¨ã€‚å®ƒé‡Šæ”¾äº†æŒæœ‰çš„实例。 <br/> + å› ä¸ºå®ƒä½¿ç”¨ thisï¼Œå› æ¤å®ƒä¸èƒ½æ˜¯é™æ€çš„。 + */ + purgeSharedManager(): void; + /** + !#en The ActionManager update。 + !#zh ActionManager 主循环。 + @param dt delta time in seconds + */ + update(dt: number): void; + } + /** !#en + Tween provide a simple and flexible way to create action. + Tween's api is more flexible than cc.Action: + - Support creating an action sequence in chained api, + - Support animate any objects' any properties, not limited to node's properties. + By contrast, cc.Action needs to create a new action class to support new node property. + - Support working with cc.Action, + - Support easing and progress function. + !#zh + Tween æä¾›äº†ä¸€ä¸ªç®€å•çµæ´»çš„æ–¹æ³•æ¥åˆ›å»º action。 + 相对于 Cocos ä¼ ç»Ÿçš„ cc.Action,cc.Tween 在创建动画上è¦çµæ´»éžå¸¸å¤šï¼š + - 支æŒä»¥é“¾å¼ç»“构的方å¼åˆ›å»ºä¸€ä¸ªåŠ¨ç”»åºåˆ—。 + - 支æŒå¯¹ä»»æ„对象的任æ„属性进行缓动,ä¸å†å±€é™äºŽèŠ‚ç‚¹ä¸Šçš„å±žæ€§ï¼Œè€Œ cc.Action æ·»åŠ ä¸€ä¸ªå±žæ€§çš„æ”¯æŒæ—¶è¿˜éœ€è¦æ·»åŠ ä¸€ä¸ªæ–°çš„ action 类型。 + - 支æŒä¸Ž cc.Action 混用 + - 支æŒè®¾ç½® {{#crossLink "Easing"}}{{/crossLink}} 或者 progress 函数 */ + export class Tween<T = any> { + /** + + @param target target + */ + constructor(target?: any); + /** + !#en Stop all tweens + !#zh åœæ¢æ‰€æœ‰ç¼“动 + */ + static stopAll(): void; + /** + !#en Stop all tweens by tag + !#zh åœæ¢æ‰€æœ‰æŒ‡å®šæ ‡ç¾çš„缓动 + @param tag tag + */ + static stopAllByTag(tag: number): void; + /** + !#en Stop all tweens by target + !#zh åœæ¢æ‰€æœ‰æŒ‡å®šå¯¹è±¡çš„缓动 + @param target target + */ + static stopAllByTarget(target: any): void; + /** + !#en + Insert an action or tween to this sequence + !#zh + æ’入一个 action 或者 tween åˆ°é˜Ÿåˆ—ä¸ + @param other other + */ + then(other: Action|Tween<T>): Tween<T>; + /** + !#en + Set tween target + !#zh + 设置 tween çš„ target + @param target target + */ + target(target: any): Tween<T>; + /** + !#en + Start this tween + !#zh + è¿è¡Œå½“å‰ tween + */ + start(): Tween<T>; + /** + !#en + Stop this tween + !#zh + åœæ¢å½“å‰ tween + */ + stop(): Tween<T>; + /** + !#en Sets tween tag + !#zh è®¾ç½®ç¼“åŠ¨çš„æ ‡ç¾ + @param tag tag + */ + tag(tag: number): Tween<T>; + /** + !#en + Clone a tween + !#zh + å…‹éš†å½“å‰ tween + @param target target + */ + clone(target?: any): Tween<T>; + /** + !#en + Integrate all previous actions to an action. + !#zh + 将之剿‰€æœ‰çš„ action æ•´åˆä¸ºä¸€ä¸ª action。 + */ + union(): Tween; + /** + !#en Sets target's position property according to the bezier curve. + !#zh 按照è´å¡žå°”è·¯å¾„è®¾ç½®ç›®æ ‡çš„ position 属性。 + @param duration duration + @param c1 c1 + @param c2 c2 + @param to to + */ + bezierTo(duration: number, c1: Vec2, c2: Vec2, to: Vec2): Tween<T>; + /** + !#en Sets target's position property according to the bezier curve. + !#zh 按照è´å¡žå°”è·¯å¾„è®¾ç½®ç›®æ ‡çš„ position 属性。 + @param duration duration + @param c1 c1 + @param c2 c2 + @param to to + */ + bezierBy(duration: number, c1: Vec2, c2: Vec2, to: Vec2): Tween<T>; + /** + !#en Flips target's scaleX + !#zh ç¿»è½¬ç›®æ ‡çš„ scaleX 属性 + */ + flipX(): Tween<T>; + /** + !#en Flips target's scaleY + !#zh ç¿»è½¬ç›®æ ‡çš„ scaleY 属性 + */ + flipY(): Tween<T>; + /** + !#en Blinks target by set target's opacity property + !#zh é€šè¿‡è®¾ç½®ç›®æ ‡çš„ opacity å±žæ€§è¾¾åˆ°é—ªçƒæ•ˆæžœ + @param duration duration + @param times times + @param opts opts + */ + blink(duration: number, times: number, opts?: {progress?: Function; easing?: Function|string; }): Tween<T>; + /** + !#en + Add an action which calculate with absolute value + !#zh + æ·»åŠ ä¸€ä¸ªå¯¹å±žæ€§è¿›è¡Œç»å¯¹å€¼è®¡ç®—çš„ action + @param duration duration + @param props {scale: 2, position: cc.v3(100, 100, 100)} + @param opts opts + */ + to <OPTS extends Partial<{progress: Function, easing: Function|String}>> (duration: number, props: ConstructorType<T>, opts?: OPTS) : Tween<T>; + /** + !#en + Add an action which calculate with relative value + !#zh + æ·»åŠ ä¸€ä¸ªå¯¹å±žæ€§è¿›è¡Œç›¸å¯¹å€¼è®¡ç®—çš„ action + @param duration duration + @param props {scale: 2, position: cc.v3(100, 100, 100)} + @param opts opts + */ + by <OPTS extends Partial<{progress: Function, easing: Function|String}>> (duration: number, props: ConstructorType<T>, opts?: OPTS) : Tween<T>; + /** + !#en + Directly set target properties + !#zh + 直接设置 target 的属性 + @param props props + */ + set (props: ConstructorType<T>) : Tween<T>; + /** + !#en + Add an delay action + !#zh + æ·»åŠ ä¸€ä¸ªå»¶æ—¶ action + @param duration duration + */ + delay(duration: number): Tween<T>; + /** + !#en + Add an callback action + !#zh + æ·»åŠ ä¸€ä¸ªå›žè°ƒ action + @param callback callback + */ + call(callback: Function): Tween<T>; + /** + !#en + Add an hide action + !#zh + æ·»åŠ ä¸€ä¸ªéšè— action + */ + hide(): Tween<T>; + /** + !#en + Add an show action + !#zh + æ·»åŠ ä¸€ä¸ªæ˜¾ç¤º action + */ + show(): Tween<T>; + /** + !#en + Add an removeSelf action + !#zh + æ·»åŠ ä¸€ä¸ªç§»é™¤è‡ªå·± action + */ + removeSelf(): Tween<T>; + /** + !#en + Add an sequence action + !#zh + æ·»åŠ ä¸€ä¸ªé˜Ÿåˆ— action + @param action action + @param actions actions + */ + sequence(action: Action|Tween<T>, ...actions: (Action|Tween<T>)[]): Tween<T>; + /** + !#en + Add an parallel action + !#zh + æ·»åŠ ä¸€ä¸ªå¹¶è¡Œ action + @param action action + @param actions actions + */ + parallel(action: Action|Tween<T>, ...actions: (Action|Tween<T>)[]): Tween<T>; + /** + !#en + Add an repeat action. + This action will integrate before actions to a sequence action as their parameters. + !#zh + æ·»åŠ ä¸€ä¸ªé‡å¤ action,这个 action 会将å‰ä¸€ä¸ªåŠ¨ä½œä½œä¸ºä»–çš„å‚æ•°ã€‚ + @param repeatTimes repeatTimes + @param action action + */ + repeat(repeatTimes: number, action?: Action|Tween<T>): Tween<T>; + /** + !#en + Add an repeat forever action + This action will integrate before actions to a sequence action as their parameters. + !#zh + æ·»åŠ ä¸€ä¸ªæ°¸ä¹…é‡å¤ action,这个 action 会将å‰ä¸€ä¸ªåŠ¨ä½œä½œä¸ºä»–çš„å‚æ•°ã€‚ + @param action action + */ + repeatForever(action?: Action|Tween<T>): Tween<T>; + /** + !#en + Add an reverse time action. + This action will integrate before actions to a sequence action as their parameters. + !#zh + æ·»åŠ ä¸€ä¸ªå€’ç½®æ—¶é—´ action,这个 action 会将å‰ä¸€ä¸ªåŠ¨ä½œä½œä¸ºä»–çš„å‚æ•°ã€‚ + @param action action + */ + reverseTime(action?: Action|Tween<T>): Tween<T>; + } + /** cc.TMXLayerInfo contains the information about the layers like: + - Layer name + - Layer size + - Layer opacity at creation time (it can be modified at runtime) + - Whether the layer is visible (if it's not visible, then the CocosNode won't be created) + This information is obtained from the TMX file. */ + export class TMXLayerInfo { + /** Properties of the layer info. */ + properties: any; + } + /** cc.TMXImageLayerInfo contains the information about the image layers. + This information is obtained from the TMX file. */ + export class TMXImageLayerInfo { + } + /** <p>cc.TMXObjectGroupInfo contains the information about the object group like: + - group name + - group size + - group opacity at creation time (it can be modified at runtime) + - Whether the group is visible + + This information is obtained from the TMX file.</p> */ + export class TMXObjectGroupInfo { + /** Properties of the ObjectGroup info. */ + properties: any[]; + } + /** <p>cc.TMXTilesetInfo contains the information about the tilesets like: <br /> + - Tileset name<br /> + - Tileset spacing<br /> + - Tileset margin<br /> + - size of the tiles<br /> + - Image used for the tiles<br /> + - Image size<br /> + + This information is obtained from the TMX file. </p> */ + export class TMXTilesetInfo { + /** Tileset name */ + name: string; + /** First grid */ + firstGid: number; + /** Spacing */ + spacing: number; + /** Margin */ + margin: number; + /** Texture containing the tiles (should be sprite sheet / texture atlas) */ + sourceImage: any; + /** Size in pixels of the image */ + imageSize: Size; + } + /** <p>cc.TMXMapInfo contains the information about the map like: <br/> + - Map orientation (hexagonal, isometric or orthogonal)<br/> + - Tile size<br/> + - Map size</p> + + <p>And it also contains: <br/> + - Layers (an array of TMXLayerInfo objects)<br/> + - Tilesets (an array of TMXTilesetInfo objects) <br/> + - ObjectGroups (an array of TMXObjectGroupInfo objects) </p> + + <p>This information is obtained from the TMX file. </p> */ + export class TMXMapInfo { + /** Properties of the map info. */ + properties: any[]; + /** Map orientation. */ + orientation: number; + /** Parent element. */ + parentElement: any; + /** Parent GID. */ + parentGID: number; + /** Layer attributes. */ + layerAttrs: any; + /** Is reading storing characters stream. */ + storingCharacters: boolean; + /** Current string stored from characters stream. */ + currentString: string; + /** Width of the map */ + mapWidth: number; + /** Height of the map */ + mapHeight: number; + /** Width of a tile */ + tileWidth: number; + /** Height of a tile */ + tileHeight: number; + static ATTRIB_NONE: number; + static ATTRIB_BASE64: number; + static ATTRIB_GZIP: number; + static ATTRIB_ZLIB: number; + } + /** !#en Render the TMX layer. + !#zh 渲染 TMX layer。 */ + export class TiledLayer extends Component { + /** + !#en enable or disable culling + !#zh 开坿ˆ–å…³é—è£å‰ªã€‚ + @param value value + */ + enableCulling(value: any): void; + /** + !#en Adds user's node into layer. + !#zh æ·»åŠ ç”¨æˆ·èŠ‚ç‚¹ã€‚ + @param node node + */ + addUserNode(node: Node): boolean; + /** + !#en Removes user's node. + !#zh 移除用户节点。 + @param node node + */ + removeUserNode(node: Node): boolean; + /** + !#en Destroy user's node. + !#zh 销æ¯ç”¨æˆ·èŠ‚ç‚¹ã€‚ + @param node node + */ + destroyUserNode(node: Node): void; + /** + !#en Gets the layer name. + !#zh 获å–层的å称。 + + @example + ```js + let layerName = tiledLayer.getLayerName(); + cc.log(layerName); + ``` + */ + getLayerName(): string; + /** + !#en Set the layer name. + !#zh 设置层的åç§° + @param layerName layerName + + @example + ```js + tiledLayer.setLayerName("New Layer"); + ``` + */ + SetLayerName(layerName: string): void; + /** + !#en Return the value for the specific property name. + !#zh èŽ·å–æŒ‡å®šå±žæ€§å的值。 + @param propertyName propertyName + + @example + ```js + let property = tiledLayer.getProperty("info"); + cc.log(property); + ``` + */ + getProperty(propertyName: string): any; + /** + !#en Returns the position in pixels of a given tile coordinate. + !#zh èŽ·å–æŒ‡å®š tile çš„åƒç´ åæ ‡ã€‚ + @param pos position or x + @param y y + + @example + ```js + let pos = tiledLayer.getPositionAt(cc.v2(0, 0)); + cc.log("Pos: " + pos); + let pos = tiledLayer.getPositionAt(0, 0); + cc.log("Pos: " + pos); + ``` + */ + getPositionAt(pos: Vec2|number, y?: number): Vec2; + /** + !#en + Sets the tiles gid (gid = tile global id) at a given tiles rect. + !#zh + 设置给定区域的 tile çš„ gid (gid = tile 全局 id), + @param gids an array contains gid + @param beginCol begin col number + @param beginRow begin row number + @param totalCols count of column + + @example + ```js + tiledLayer.setTilesGIDAt([1, 1, 1, 1], 10, 10, 2) + ``` + */ + setTilesGIDAt(gids: any[], beginCol: number, beginRow: number, totalCols: number): void; + /** + !#en + Sets the tile gid (gid = tile global id) at a given tile coordinate.<br /> + The Tile GID can be obtained by using the method "tileGIDAt" or by using the TMX editor . Tileset Mgr +1.<br /> + If a tile is already placed at that position, then it will be removed. + !#zh + è®¾ç½®ç»™å®šåæ ‡çš„ tile çš„ gid (gid = tile 全局 id), + tile çš„ GID å¯ä»¥ä½¿ç”¨æ–¹æ³• “tileGIDAt†æ¥èŽ·å¾—ã€‚<br /> + 如果一个 tile å·²ç»æ”¾åœ¨é‚£ä¸ªä½ç½®ï¼Œé‚£ä¹ˆå®ƒå°†è¢«åˆ 除。 + @param gid gid + @param posOrX position or x + @param flagsOrY flags or y + @param flags flags + + @example + ```js + tiledLayer.setTileGIDAt(1001, 10, 10, 1) + ``` + */ + setTileGIDAt(gid: number, posOrX: Vec2|number, flagsOrY: number, flags?: number): void; + /** + !#en + Returns the tile gid at a given tile coordinate. <br /> + if it returns 0, it means that the tile is empty. <br /> + !#zh + 通过给定的 tile åæ ‡ã€flags(å¯é€‰ï¼‰è¿”回 tile çš„ GID. <br /> + 如果它返回 0,则表示该 tile 为空。<br /> + @param pos or x + @param y y + + @example + ```js + let tileGid = tiledLayer.getTileGIDAt(0, 0); + ``` + */ + getTileGIDAt(pos: Vec2|number, y?: number): number; + /** + !#en Layer orientation, which is the same as the map orientation. + !#zh èŽ·å– Layer æ–¹å‘(åŒåœ°å›¾æ–¹å‘)。 + + @example + ```js + let orientation = tiledLayer.getLayerOrientation(); + cc.log("Layer Orientation: " + orientation); + ``` + */ + getLayerOrientation(): number; + /** + !#en properties from the layer. They can be added using Tiled. + !#zh èŽ·å– layer 的属性,å¯ä»¥ä½¿ç”¨ Tiled ç¼–è¾‘å™¨æ·»åŠ å±žæ€§ã€‚ + + @example + ```js + let properties = tiledLayer.getProperties(); + cc.log("Properties: " + properties); + ``` + */ + getProperties(): any; + /** + !#en + Get the TiledTile with the tile coordinate.<br/> + If there is no tile in the specified coordinate and forceCreate parameter is true, <br/> + then will create a new TiledTile at the coordinate. + The renderer will render the tile with the rotation, scale, position and color property of the TiledTile. + !#zh + 通过指定的 tile åæ ‡èŽ·å–对应的 TiledTile。 <br/> + å¦‚æžœæŒ‡å®šçš„åæ ‡æ²¡æœ‰ tile,并且设置了 forceCreate é‚£ä¹ˆå°†ä¼šåœ¨æŒ‡å®šçš„åæ ‡åˆ›å»ºä¸€ä¸ªæ–°çš„ TiledTile 。<br/> + 在渲染这个 tile 的时候,将会使用 TiledTile 的节点的旋转ã€ç¼©æ”¾ã€ä½ç§»ã€é¢œè‰²å±žæ€§ã€‚<br/> + @param x x + @param y y + @param forceCreate forceCreate + + @example + ```js + let tile = tiledLayer.getTiledTileAt(100, 100, true); + cc.log(tile); + ``` + */ + getTiledTileAt(x: number, y: number, forceCreate: boolean): TiledTile; + /** + !#en + Change tile to TiledTile at the specified coordinate. + !#zh + 将指定的 tile åæ ‡æ›¿æ¢ä¸ºæŒ‡å®šçš„ TiledTile。 + @param x x + @param y y + @param tiledTile tiledTile + */ + setTiledTileAt(x: number, y: number, tiledTile: TiledTile): TiledTile; + /** + !#en Return texture. + !#zh 获å–纹ç†ã€‚ + @param index The index of textures + */ + getTexture(index: any): Texture2D; + /** + !#en Return texture. + !#zh 获å–纹ç†ã€‚ + */ + getTextures(): Texture2D; + /** + !#en Set the texture. + !#zh 设置纹ç†ã€‚ + @param texture texture + */ + setTexture(texture: Texture2D): void; + /** + !#en Set the texture. + !#zh 设置纹ç†ã€‚ + @param textures textures + */ + setTexture(textures: Texture2D): void; + /** + !#en Gets layer size. + !#zh 获得层大å°ã€‚ + + @example + ```js + let size = tiledLayer.getLayerSize(); + cc.log("layer size: " + size); + ``` + */ + getLayerSize(): Size; + /** + !#en Size of the map's tile (could be different from the tile's size). + !#zh èŽ·å– tile 的大å°( tile 的大å°å¯èƒ½ä¼šæœ‰æ‰€ä¸åŒ)。 + + @example + ```js + let mapTileSize = tiledLayer.getMapTileSize(); + cc.log("MapTile size: " + mapTileSize); + ``` + */ + getMapTileSize(): Size; + /** + !#en Gets Tile set first information for the layer. + !#zh èŽ·å– layer 索引ä½ç½®ä¸º0çš„ Tileset ä¿¡æ¯ã€‚ + @param index The index of tilesets + */ + getTileSet(index: any): TMXTilesetInfo; + /** + !#en Gets tile set all information for the layer. + !#zh èŽ·å– layer 所有的 Tileset ä¿¡æ¯ã€‚ + */ + getTileSet(): TMXTilesetInfo; + /** + !#en Sets tile set information for the layer. + !#zh 设置 layer çš„ tileset ä¿¡æ¯ã€‚ + @param tileset tileset + */ + setTileSet(tileset: TMXTilesetInfo): void; + /** + !#en Sets Tile set information for the layer. + !#zh 设置 layer çš„ Tileset ä¿¡æ¯ã€‚ + @param tilesets tilesets + */ + setTileSets(tilesets: TMXTilesetInfo): void; + } + /** Class for tiled map asset handling. */ + export class TiledMapAsset extends Asset { + textures: Texture2D[]; + textureNames: string[]; + textureSizes: Size[]; + imageLayerTextures: Texture2D[]; + imageLayerTextureNames: string[]; + } + /** !#en Renders the TMX object group. + !#zh 渲染 tmx object group。 */ + export class TiledObjectGroup extends Component { + /** + !#en Offset position of child objects. + !#zh 获å–å对象的åç§»ä½ç½®ã€‚ + + @example + ```js + let offset = tMXObjectGroup.getPositionOffset(); + ``` + */ + getPositionOffset(): Vec2; + /** + !#en List of properties stored in a dictionary. + !#zh ä»¥æ˜ å°„çš„å½¢å¼èŽ·å–属性列表。 + + @example + ```js + let offset = tMXObjectGroup.getProperties(); + ``` + */ + getProperties(): any; + /** + !#en Gets the Group name. + !#zh 获å–组å称。 + + @example + ```js + let groupName = tMXObjectGroup.getGroupName; + ``` + */ + getGroupName(): string; + /** + !#en + Return the object for the specific object name. <br /> + It will return the 1st object found on the array for the given name. + !#zh èŽ·å–æŒ‡å®šçš„对象。 + @param objectName objectName + + @example + ```js + let object = tMXObjectGroup.getObject("Group"); + ``` + */ + getObject(objectName: string): any; + /** + !#en Gets the objects. + !#zh 获å–对象数组。 + + @example + ```js + let objects = tMXObjectGroup.getObjects(); + ``` + */ + getObjects(): any[]; + } + /** !#en Renders a TMX Tile Map in the scene. + !#zh åœ¨åœºæ™¯ä¸æ¸²æŸ“一个 tmx æ ¼å¼çš„ Tile Map。 */ + export class TiledMap extends Component { + /** !#en The TiledMap Asset. + !#zh TiledMap 资æºã€‚ */ + tmxAsset: TiledMapAsset; + /** + !#en Gets the map size. + !#zh 获å–地图大å°ã€‚ + + @example + ```js + let mapSize = tiledMap.getMapSize(); + cc.log("Map Size: " + mapSize); + ``` + */ + getMapSize(): Size; + /** + !#en Gets the tile size. + !#zh 获å–åœ°å›¾èƒŒæ™¯ä¸ tile å…ƒç´ çš„å¤§å°ã€‚ + + @example + ```js + let tileSize = tiledMap.getTileSize(); + cc.log("Tile Size: " + tileSize); + ``` + */ + getTileSize(): Size; + /** + !#en map orientation. + !#zh 获å–地图方å‘。 + + @example + ```js + let mapOrientation = tiledMap.getMapOrientation(); + cc.log("Map Orientation: " + mapOrientation); + ``` + */ + getMapOrientation(): number; + /** + !#en object groups. + !#zh èŽ·å–æ‰€æœ‰çš„对象层。 + + @example + ```js + let objGroups = titledMap.getObjectGroups(); + for (let i = 0; i < objGroups.length; ++i) { + cc.log("obj: " + objGroups[i]); + } + ``` + */ + getObjectGroups(): TiledObjectGroup[]; + /** + !#en Return the TMXObjectGroup for the specific group. + !#zh èŽ·å–æŒ‡å®šçš„ TMXObjectGroup。 + @param groupName groupName + + @example + ```js + let group = titledMap.getObjectGroup("Players"); + cc.log("ObjectGroup: " + group); + ``` + */ + getObjectGroup(groupName: string): TiledObjectGroup; + /** + !#en enable or disable culling + !#zh 开坿ˆ–å…³é—è£å‰ªã€‚ + @param value value + */ + enableCulling(value: any): void; + /** + !#en Gets the map properties. + !#zh 获å–地图的属性。 + + @example + ```js + let properties = titledMap.getProperties(); + for (let i = 0; i < properties.length; ++i) { + cc.log("Properties: " + properties[i]); + } + ``` + */ + getProperties(): any[]; + /** + !#en Return All layers array. + !#zh è¿”å›žåŒ…å«æ‰€æœ‰ layer 的数组。 + + @example + ```js + let layers = titledMap.getLayers(); + for (let i = 0; i < layers.length; ++i) { + cc.log("Layers: " + layers[i]); + } + ``` + */ + getLayers(): TiledLayer[]; + /** + !#en return the cc.TiledLayer for the specific layer. + !#zh èŽ·å–æŒ‡å®šåç§°çš„ layer。 + @param layerName layerName + + @example + ```js + let layer = titledMap.getLayer("Player"); + cc.log(layer); + ``` + */ + getLayer(layerName: string): TiledLayer; + /** + !#en Return the value for the specific property name. + !#zh 通过属性åç§°ï¼ŒèŽ·å–æŒ‡å®šçš„属性。 + @param propertyName propertyName + + @example + ```js + let property = titledMap.getProperty("info"); + cc.log("Property: " + property); + ``` + */ + getProperty(propertyName: string): string; + /** + !#en Return properties dictionary for tile GID. + !#zh 通过 GID ï¼ŒèŽ·å–æŒ‡å®šçš„属性。 + @param GID GID + + @example + ```js + let properties = titledMap.getPropertiesForGID(GID); + cc.log("Properties: " + properties); + ``` + */ + getPropertiesForGID(GID: number): any; + } + /** !#en TiledTile can control the specified map tile. + It will apply the node rotation, scale, translate to the map tile. + You can change the TiledTile's gid to change the map tile's style. + !#zh TiledTile å¯ä»¥å•独对æŸä¸€ä¸ªåœ°å›¾å—进行æ“作。 + 他会将节点的旋转,缩放,平移æ“作应用在这个地图å—上,并å¯ä»¥é€šè¿‡æ›´æ¢å½“å‰åœ°å›¾å—çš„ gid æ¥æ›´æ¢åœ°å›¾å—çš„æ˜¾ç¤ºæ ·å¼ã€‚ */ + export class TiledTile extends Component { + /** !#en Specify the TiledTile horizontal coordinate,use map tile as the unit. + !#zh 指定 TiledTile 的横å‘åæ ‡ï¼Œä»¥åœ°å›¾å—为å•ä½ */ + x: number; + /** !#en Specify the TiledTile vertical coordinate,use map tile as the unit. + !#zh 指定 TiledTile 的纵å‘åæ ‡ï¼Œä»¥åœ°å›¾å—为å•ä½ */ + y: number; + /** !#en Specify the TiledTile gid. + !#zh 指定 TiledTile çš„ gid 值 */ + gid: number; + } + /** !#en Class for animation data handling. + !#zh 动画剪辑,用于å˜å‚¨åŠ¨ç”»æ•°æ®ã€‚ */ + export class AnimationClip extends Asset { + /** !#en Duration of this animation. + !#zh 动画的æŒç»æ—¶é—´ã€‚ */ + duration: number; + /** !#en FrameRate of this animation. + !#zh 动画的帧速率。 */ + sample: number; + /** !#en Speed of this animation. + !#zh åŠ¨ç”»çš„æ’æ”¾é€Ÿåº¦ã€‚ */ + speed: number; + /** !#en WrapMode of this animation. + !#zh 动画的循环模å¼ã€‚ */ + wrapMode: WrapMode; + /** !#en Curve data. + !#zh 曲线数æ®ã€‚ */ + curveData: any; + /** !#en Event data. + !#zh 事件数æ®ã€‚ */ + events: {frame: number, func: string, params: string[]}[]; + /** + !#en Crate clip with a set of sprite frames + !#zh 使用一组åºåˆ—帧图片æ¥åˆ›å»ºåŠ¨ç”»å‰ªè¾‘ + @param spriteFrames spriteFrames + @param sample sample + + @example + ```js + var clip = cc.AnimationClip.createWithSpriteFrames(spriteFrames, 10); + ``` + */ + static createWithSpriteFrames(spriteFrames: SpriteFrame[], sample: number): AnimationClip; + } + /** !#en + The AnimationState gives full control over animation playback process. + In most cases the Animation Component is sufficient and easier to use. Use the AnimationState if you need full control. + !#zh + AnimationState å®Œå…¨æŽ§åˆ¶åŠ¨ç”»æ’æ”¾è¿‡ç¨‹ã€‚<br/> + 大多数情况下 动画组件 æ˜¯è¶³å¤Ÿå’Œæ˜“äºŽä½¿ç”¨çš„ã€‚å¦‚æžœæ‚¨éœ€è¦æ›´å¤šçš„动画控制接å£ï¼Œè¯·ä½¿ç”¨ AnimationState。 */ + export class AnimationState extends Playable { + /** + + @param clip clip + @param name name + */ + constructor(clip: AnimationClip, name?: string); + /** !#en The curves list. + !#zh 曲线列表。 */ + curves: any[]; + /** !#en The start delay which represents the number of seconds from an animation's start time to the start of + the active interval. + !#zh å»¶è¿Ÿå¤šå°‘ç§’æ’æ”¾ã€‚ */ + delay: number; + /** !#en The animation's iteration count property. + + A real number greater than or equal to zero (including positive infinity) representing the number of times + to repeat the animation node. + + Values less than zero and NaN values are treated as the value 1.0 for the purpose of timing model + calculations. + + !#zh è¿ä»£æ¬¡æ•°ï¼ŒæŒ‡åŠ¨ç”»æ’æ”¾å¤šå°‘次åŽç»“æŸ, normalize time。 如 2.5(2次åŠï¼‰ */ + repeatCount: number; + /** !#en The iteration duration of this animation in seconds. (length) + !#zh 啿¬¡åŠ¨ç”»çš„æŒç»æ—¶é—´ï¼Œç§’。 */ + duration: number; + /** !#en The animation's playback speed. 1 is normal playback speed. + !#zh æ’æ”¾é€ŸçŽ‡ã€‚ */ + speed: number; + /** !#en + Wrapping mode of the playing animation. + Notice : dynamic change wrapMode will reset time and repeatCount property + !#zh + 动画循环方å¼ã€‚ + éœ€è¦æ³¨æ„的是,动æ€ä¿®æ”¹ wrapMode 时,会é‡ç½® time ä»¥åŠ repeatCount */ + wrapMode: WrapMode; + /** !#en The current time of this animation in seconds. + !#zh 动画当å‰çš„æ—¶é—´ï¼Œç§’。 */ + time: number; + /** !#en The clip that is being played by this animation state. + !#zh æ¤åŠ¨ç”»çŠ¶æ€æ£åœ¨æ’放的剪辑。 */ + clip: AnimationClip; + /** !#en The name of the playing animation. + !#zh 动画的åå— */ + name: string; + } + /** !#en + This class provide easing methods for {{#crossLink "tween"}}{{/crossLink}} class.<br> + Demonstratio: https://easings.net/ + !#zh + 缓动函数类,为 {{#crossLink "Tween"}}{{/crossLink}} æä¾›ç¼“动效果函数。<br> + 函数效果演示: https://easings.net/ */ + export class Easing { + /** + !#en Easing in with quadratic formula. From slow to fast. + !#zh 平方曲线缓入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + quadIn(t: number): number; + /** + !#en Easing out with quadratic formula. From fast to slow. + !#zh 平方曲线缓出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + quadOut(t: number): number; + /** + !#en Easing in and out with quadratic formula. From slow to fast, then back to slow. + !#zh 平方曲线缓入缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + quadInOut(t: number): number; + /** + !#en Easing in with cubic formula. From slow to fast. + !#zh 立方曲线缓入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + cubicIn(t: number): number; + /** + !#en Easing out with cubic formula. From slow to fast. + !#zh 立方曲线缓出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + cubicOut(t: number): number; + /** + !#en Easing in and out with cubic formula. From slow to fast, then back to slow. + !#zh 立方曲线缓入缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + cubicInOut(t: number): number; + /** + !#en Easing in with quartic formula. From slow to fast. + !#zh 四次方曲线缓入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + quartIn(t: number): number; + /** + !#en Easing out with quartic formula. From fast to slow. + !#zh 四次方曲线缓出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + quartOut(t: number): number; + /** + !#en Easing in and out with quartic formula. From slow to fast, then back to slow. + !#zh 四次方曲线缓入缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + quartInOut(t: number): number; + /** + !#en Easing in with quintic formula. From slow to fast. + !#zh 五次方曲线缓入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + quintIn(t: number): number; + /** + !#en Easing out with quintic formula. From fast to slow. + !#zh 五次方曲线缓出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + quintOut(t: number): number; + /** + !#en Easing in and out with quintic formula. From slow to fast, then back to slow. + !#zh 五次方曲线缓入缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + quintInOut(t: number): number; + /** + !#en Easing in and out with sine formula. From slow to fast. + !#zh æ£å¼¦æ›²çº¿ç¼“入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + sineIn(t: number): number; + /** + !#en Easing in and out with sine formula. From fast to slow. + !#zh æ£å¼¦æ›²çº¿ç¼“出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + sineOut(t: number): number; + /** + !#en Easing in and out with sine formula. From slow to fast, then back to slow. + !#zh æ£å¼¦æ›²çº¿ç¼“入缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + sineInOut(t: number): number; + /** + !#en Easing in and out with exponential formula. From slow to fast. + !#zh 指数曲线缓入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + expoIn(t: number): number; + /** + !#en Easing in and out with exponential formula. From fast to slow. + !#zh 指数曲线缓出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + expoOut(t: number): number; + /** + !#en Easing in and out with exponential formula. From slow to fast. + !#zh 指数曲线缓入和缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¾ˆå¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time, then back to slow. + */ + expoInOut(t: number): number; + /** + !#en Easing in and out with circular formula. From slow to fast. + !#zh 循环公å¼ç¼“入函数。è¿åŠ¨ç”±æ…¢åˆ°å¿«ã€‚ + @param t The current time as a percentage of the total time. + */ + circIn(t: number): number; + /** + !#en Easing in and out with circular formula. From fast to slow. + !#zh 循环公å¼ç¼“出函数。è¿åŠ¨ç”±å¿«åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time. + */ + circOut(t: number): number; + /** + !#en Easing in and out with circular formula. From slow to fast. + !#zh 指数曲线缓入缓出函数。è¿åŠ¨ç”±æ…¢åˆ°å¾ˆå¿«å†åˆ°æ…¢ã€‚ + @param t The current time as a percentage of the total time, then back to slow. + */ + circInOut(t: number): number; + /** + !#en Easing in action with a spring oscillating effect. + !#zh 弹簧回震效果的缓入函数。 + @param t The current time as a percentage of the total time. + */ + elasticIn(t: number): number; + /** + !#en Easing out action with a spring oscillating effect. + !#zh 弹簧回震效果的缓出函数。 + @param t The current time as a percentage of the total time. + */ + elasticOut(t: number): number; + /** + !#en Easing in and out action with a spring oscillating effect. + !#zh 弹簧回震效果的缓入缓出函数。 + @param t The current time as a percentage of the total time. + */ + elasticInOut(t: number): number; + /** + !#en Easing in action with "back up" behavior. + !#zh 回退效果的缓入函数。 + @param t The current time as a percentage of the total time. + */ + backIn(t: number): number; + /** + !#en Easing out action with "back up" behavior. + !#zh 回退效果的缓出函数。 + @param t The current time as a percentage of the total time. + */ + backOut(t: number): number; + /** + !#en Easing in and out action with "back up" behavior. + !#zh 回退效果的缓入缓出函数。 + @param t The current time as a percentage of the total time. + */ + backInOut(t: number): number; + /** + !#en Easing in action with bouncing effect. + !#zh 弹跳效果的缓入函数。 + @param t The current time as a percentage of the total time. + */ + bounceIn(t: number): number; + /** + !#en Easing out action with bouncing effect. + !#zh 弹跳效果的缓出函数。 + @param t The current time as a percentage of the total time. + */ + bounceOut(t: number): number; + /** + !#en Easing in and out action with bouncing effect. + !#zh 弹跳效果的缓入缓出函数。 + @param t The current time as a percentage of the total time. + */ + bounceInOut(t: number): number; + /** + !#en Target will run action with smooth effect. + !#zh 平滑效果函数。 + @param t The current time as a percentage of the total time. + */ + smooth(t: number): number; + /** + !#en Target will run action with fade effect. + !#zh æ¸è¤ªæ•ˆæžœå‡½æ•°ã€‚ + @param t The current time as a percentage of the total time. + */ + fade(t: number): number; + } + /** undefined */ + export class Playable { + /** !#en Is playing or paused in play mode? + !#zh 当剿˜¯å¦æ£åœ¨æ’放。 */ + isPlaying: boolean; + /** !#en Is currently paused? This can be true even if in edit mode(isPlaying == false). + !#zh 当剿˜¯å¦æ£åœ¨æš‚åœ */ + isPaused: boolean; + /** + !#en Play this animation. + !#zh æ’æ”¾åŠ¨ç”»ã€‚ + */ + play(): void; + /** + !#en Stop this animation. + !#zh åœæ¢åŠ¨ç”»æ’æ”¾ã€‚ + */ + stop(): void; + /** + !#en Pause this animation. + !#zh æš‚åœåŠ¨ç”»ã€‚ + */ + pause(): void; + /** + !#en Resume this animation. + !#zh 釿–°æ’放动画。 + */ + resume(): void; + /** + !#en Perform a single frame step. + !#zh 执行一帧动画。 + */ + step(): void; + } + /** !#en Specifies how time is treated when it is outside of the keyframe range of an Animation. + !#zh 动画使用的循环模å¼ã€‚ */ + export enum WrapMode { + Default = 0, + Normal = 0, + Reverse = 0, + Loop = 0, + LoopReverse = 0, + PingPong = 0, + PingPongReverse = 0, + } + /** Class for particle asset handling. */ + export class ParticleAsset extends Asset { + } + /** Particle System base class. <br/> + Attributes of a Particle System:<br/> + - emmision rate of the particles<br/> + - Gravity Mode (Mode A): <br/> + - gravity <br/> + - direction <br/> + - speed +- variance <br/> + - tangential acceleration +- variance<br/> + - radial acceleration +- variance<br/> + - Radius Mode (Mode B): <br/> + - startRadius +- variance <br/> + - endRadius +- variance <br/> + - rotate +- variance <br/> + - Properties common to all modes: <br/> + - life +- life variance <br/> + - start spin +- variance <br/> + - end spin +- variance <br/> + - start size +- variance <br/> + - end size +- variance <br/> + - start color +- variance <br/> + - end color +- variance <br/> + - life +- variance <br/> + - blending function <br/> + - texture <br/> + <br/> + cocos2d also supports particles generated by Particle Designer (http://particledesigner.71squared.com/).<br/> + 'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d, <br/> + cocos2d uses a another approach, but the results are almost identical.<br/> + cocos2d supports all the variables used by Particle Designer plus a bit more: <br/> + - spinning particles (supported when using ParticleSystem) <br/> + - tangential acceleration (Gravity mode) <br/> + - radial acceleration (Gravity mode) <br/> + - radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only) <br/> + It is possible to customize any of the above mentioned properties in runtime. Example: <br/> */ + export class ParticleSystem extends RenderComponent implements BlendFunc { + /** !#en Play particle in edit mode. + !#zh 在编辑器模å¼ä¸‹é¢„览粒å,å¯ç”¨åŽé€‰ä¸ç²’åæ—¶ï¼Œç²’åå°†è‡ªåŠ¨æ’æ”¾ã€‚ */ + preview: boolean; + /** !#en + If set custom to true, then use custom properties insteadof read particle file. + !#zh 是å¦è‡ªå®šä¹‰ç²’å属性。 */ + custom: boolean; + /** !#en The plist file. + !#zh plist æ ¼å¼çš„ç²’åé…置文件。 */ + file: ParticleAsset; + /** !#en SpriteFrame used for particles display + !#zh 用于粒å呈现的 SpriteFrame */ + spriteFrame: SpriteFrame; + /** !#en Texture of Particle System, readonly, please use spriteFrame to setup new texture。 + !#zh ç²’å贴图,åªè¯»å±žæ€§ï¼Œè¯·ä½¿ç”¨ spriteFrame å±žæ€§æ¥æ›¿æ¢è´´å›¾ã€‚ */ + texture: string; + /** !#en Current quantity of particles that are being simulated. + !#zh 当剿’æ”¾çš„ç²’åæ•°é‡ã€‚ */ + particleCount: number; + /** !#en Indicate whether the system simulation have stopped. + !#zh æŒ‡ç¤ºç²’åæ’æ”¾æ˜¯å¦å®Œæ¯•。 */ + stopped: boolean; + /** !#en If set to true, the particle system will automatically start playing on onLoad. + !#zh 如果设置为 true è¿è¡Œæ—¶ä¼šè‡ªåЍå‘å°„ç²’å。 */ + playOnLoad: boolean; + /** !#en Indicate whether the owner node will be auto-removed when it has no particles left. + !#zh ç²’åæ’æ”¾å®Œæ¯•åŽè‡ªåŠ¨é”€æ¯æ‰€åœ¨çš„节点。 */ + autoRemoveOnFinish: boolean; + /** !#en Indicate whether the particle system is activated. + !#zh æ˜¯å¦æ¿€æ´»ç²’å。 */ + active: boolean; + /** !#en Maximum particles of the system. + !#zh ç²’åæœ€å¤§æ•°é‡ã€‚ */ + totalParticles: number; + /** !#en How many seconds the emitter wil run. -1 means 'forever'. + !#zh å‘å°„å™¨ç”Ÿå˜æ—¶é—´ï¼Œå•ä½ç§’,-1表示æŒç»å‘射。 */ + duration: number; + /** !#en Emission rate of the particles. + !#zh æ¯ç§’å‘å°„çš„ç²’åæ•°ç›®ã€‚ */ + emissionRate: number; + /** !#en Life of each particle setter. + !#zh ç²’åçš„è¿è¡Œæ—¶é—´ã€‚ */ + life: number; + /** !#en Variation of life. + !#zh ç²’åçš„è¿è¡Œæ—¶é—´å˜åŒ–范围。 */ + lifeVar: number; + /** !#en Start color of each particle. + !#zh ç²’ååˆå§‹é¢œè‰²ã€‚ */ + startColor: Color; + /** !#en Variation of the start color. + !#zh ç²’ååˆå§‹é¢œè‰²å˜åŒ–范围。 */ + startColorVar: Color; + /** !#en Ending color of each particle. + !#zh ç²’å结æŸé¢œè‰²ã€‚ */ + endColor: Color; + /** !#en Variation of the end color. + !#zh ç²’å结æŸé¢œè‰²å˜åŒ–范围。 */ + endColorVar: Color; + /** !#en Angle of each particle setter. + !#zh ç²’å角度。 */ + angle: number; + /** !#en Variation of angle of each particle setter. + !#zh ç²’å角度å˜åŒ–范围。 */ + angleVar: number; + /** !#en Start size in pixels of each particle. + !#zh ç²’åçš„åˆå§‹å¤§å°ã€‚ */ + startSize: number; + /** !#en Variation of start size in pixels. + !#zh ç²’ååˆå§‹å¤§å°çš„å˜åŒ–范围。 */ + startSizeVar: number; + /** !#en End size in pixels of each particle. + !#zh ç²’åç»“æŸæ—¶çš„大å°ã€‚ */ + endSize: number; + /** !#en Variation of end size in pixels. + !#zh ç²’å结æŸå¤§å°çš„å˜åŒ–范围。 */ + endSizeVar: number; + /** !#en Start angle of each particle. + !#zh ç²’å开始自旋角度。 */ + startSpin: number; + /** !#en Variation of start angle. + !#zh ç²’å开始自旋角度å˜åŒ–范围。 */ + startSpinVar: number; + /** !#en End angle of each particle. + !#zh ç²’å结æŸè‡ªæ—‹è§’度。 */ + endSpin: number; + /** !#en Variation of end angle. + !#zh ç²’å结æŸè‡ªæ—‹è§’度å˜åŒ–范围。 */ + endSpinVar: number; + /** !#en Source position of the emitter. + !#zh å‘射器ä½ç½®ã€‚ */ + sourcePos: Vec2; + /** !#en Variation of source position. + !#zh å‘射器ä½ç½®çš„å˜åŒ–范围。(横å‘和纵å‘) */ + posVar: Vec2; + /** !#en Particles movement type. + !#zh ç²’åä½ç½®ç±»åž‹ã€‚ */ + positionType: ParticleSystem.PositionType; + /** !#en Particles emitter modes. + !#zh å‘射器类型。 */ + emitterMode: ParticleSystem.EmitterMode; + /** !#en Gravity of the emitter. + !#zh é‡åŠ›ã€‚ */ + gravity: Vec2; + /** !#en Speed of the emitter. + !#zh 速度。 */ + speed: number; + /** !#en Variation of the speed. + !#zh 速度å˜åŒ–范围。 */ + speedVar: number; + /** !#en Tangential acceleration of each particle. Only available in 'Gravity' mode. + !#zh æ¯ä¸ªç²’å的切å‘åŠ é€Ÿåº¦ï¼Œå³åž‚直于é‡åŠ›æ–¹å‘çš„åŠ é€Ÿåº¦ï¼Œåªæœ‰åœ¨é‡åŠ›æ¨¡å¼ä¸‹å¯ç”¨ã€‚ */ + tangentialAccel: number; + /** !#en Variation of the tangential acceleration. + !#zh æ¯ä¸ªç²’å的切å‘åŠ é€Ÿåº¦å˜åŒ–范围。 */ + tangentialAccelVar: number; + /** !#en Acceleration of each particle. Only available in 'Gravity' mode. + !#zh ç²’å径å‘åŠ é€Ÿåº¦ï¼Œå³å¹³è¡ŒäºŽé‡åŠ›æ–¹å‘çš„åŠ é€Ÿåº¦ï¼Œåªæœ‰åœ¨é‡åŠ›æ¨¡å¼ä¸‹å¯ç”¨ã€‚ */ + radialAccel: number; + /** !#en Variation of the radial acceleration. + !#zh ç²’å径å‘åŠ é€Ÿåº¦å˜åŒ–范围。 */ + radialAccelVar: number; + /** !#en Indicate whether the rotation of each particle equals to its direction. Only available in 'Gravity' mode. + !#zh æ¯ä¸ªç²’å的旋转是å¦ç‰äºŽå…¶æ–¹å‘ï¼Œåªæœ‰åœ¨é‡åŠ›æ¨¡å¼ä¸‹å¯ç”¨ã€‚ */ + rotationIsDir: boolean; + /** !#en Starting radius of the particles. Only available in 'Radius' mode. + !#zh åˆå§‹åŠå¾„,表示粒å出生时相对å‘射器的è·ç¦»ï¼Œåªæœ‰åœ¨åŠå¾„模å¼ä¸‹å¯ç”¨ã€‚ */ + startRadius: number; + /** !#en Variation of the starting radius. + !#zh åˆå§‹åŠå¾„å˜åŒ–范围。 */ + startRadiusVar: number; + /** !#en Ending radius of the particles. Only available in 'Radius' mode. + !#zh 结æŸåŠå¾„ï¼Œåªæœ‰åœ¨åŠå¾„模å¼ä¸‹å¯ç”¨ã€‚ */ + endRadius: number; + /** !#en Variation of the ending radius. + !#zh 结æŸåŠå¾„å˜åŒ–范围。 */ + endRadiusVar: number; + /** !#en Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode. + !#zh ç²’åæ¯ç§’å›´ç»•èµ·å§‹ç‚¹çš„æ—‹è½¬è§’åº¦ï¼Œåªæœ‰åœ¨åŠå¾„模å¼ä¸‹å¯ç”¨ã€‚ */ + rotatePerS: number; + /** !#en Variation of the degress to rotate a particle around the source pos per second. + !#zh ç²’åæ¯ç§’å›´ç»•èµ·å§‹ç‚¹çš„æ—‹è½¬è§’åº¦å˜åŒ–范围。 */ + rotatePerSVar: number; + /** !#en The Particle emitter lives forever. + !#zh 表示å‘射器永久å˜åœ¨ */ + static DURATION_INFINITY: number; + /** !#en The starting size of the particle is equal to the ending size. + !#zh 表示粒å的起始大å°ç‰äºŽç»“æŸå¤§å°ã€‚ */ + static START_SIZE_EQUAL_TO_END_SIZE: number; + /** !#en The starting radius of the particle is equal to the ending radius. + !#zh 表示粒å的起始åŠå¾„ç‰äºŽç»“æŸåŠå¾„。 */ + static START_RADIUS_EQUAL_TO_END_RADIUS: number; + /** + !#en Stop emitting particles. Running particles will continue to run until they die. + !#zh åœæ¢å‘射器å‘å°„ç²’å,å‘射出去的粒å将继ç»è¿è¡Œï¼Œç›´è‡³ç²’å生命结æŸã€‚ + + @example + ```js + // stop particle system. + myParticleSystem.stopSystem(); + ``` + */ + stopSystem(): void; + /** + !#en Kill all living particles. + !#zh æ€æ»æ‰€æœ‰å˜åœ¨çš„ç²’å,然åŽé‡æ–°å¯åŠ¨ç²’åå‘射器。 + + @example + ```js + // play particle system. + myParticleSystem.resetSystem(); + ``` + */ + resetSystem(): void; + /** + !#en Whether or not the system is full. + !#zh å‘射器ä¸ç²’åæ˜¯å¦å¤§äºŽç‰äºŽè®¾ç½®çš„æ€»ç²’åæ•°é‡ã€‚ + */ + isFull(): boolean; + /** + !#en Sets a new texture with a rect. The rect is in texture position and size. + Please use spriteFrame property instead, this function is deprecated since v1.9 + !#zh è®¾ç½®ä¸€å¼ æ–°è´´å›¾å’Œå…³è”的矩形。 + 请直接设置 spriteFrame 属性,这个函数从 v1.9 版本开始已ç»è¢«åºŸå¼ƒ + @param texture texture + @param rect rect + */ + setTextureWithRect(texture: Texture2D, rect: Rect): void; + /** !#en specify the source Blend Factor, this will generate a custom material object, please pay attention to the memory cost. + !#zh æŒ‡å®šåŽŸå›¾çš„æ··åˆæ¨¡å¼ï¼Œè¿™ä¼šå…‹éš†ä¸€ä¸ªæ–°çš„æè´¨å¯¹è±¡ï¼Œæ³¨æ„这带æ¥çš„开销 */ + srcBlendFactor: macro.BlendFactor; + /** !#en specify the destination Blend Factor. + !#zh æŒ‡å®šç›®æ ‡çš„æ··åˆæ¨¡å¼ */ + dstBlendFactor: macro.BlendFactor; + } + /** !#en cc.audioEngine is the singleton object, it provide simple audio APIs. + !#zh + cc.audioengine是å•例对象。<br/> + 主è¦ç”¨æ¥æ’æ”¾éŸ³é¢‘ï¼Œæ’æ”¾çš„æ—¶å€™ä¼šè¿”回一个 audioID,之åŽéƒ½å¯ä»¥é€šè¿‡è¿™ä¸ª audioID æ¥æ“作这个音频对象。<br/> + ä¸ä½¿ç”¨çš„æ—¶å€™ï¼Œè¯·ä½¿ç”¨ cc.audioEngine.uncache(filePath); 进行资æºé‡Šæ”¾ <br/> + 注æ„:<br/> + 在 Android 系统æµè§ˆå™¨ä¸Šï¼Œä¸åŒæµè§ˆå™¨ï¼Œä¸åŒç‰ˆæœ¬çš„æ•ˆæžœä¸å°½ç›¸åŒã€‚<br/> + 比如说:大多数æµè§ˆå™¨éƒ½éœ€è¦ç”¨æˆ·ç‰©ç†äº¤äº’æ‰å¯ä»¥å¼€å§‹æ’æ”¾éŸ³æ•ˆï¼Œæœ‰ä¸€äº›ä¸æ”¯æŒ WebAudio,<br/> + æœ‰ä¸€äº›ä¸æ”¯æŒå¤šéŸ³è½¨æ’放。总之如果对音ä¹ä¾èµ–比较强,请åšå°½å¯èƒ½å¤šçš„æµ‹è¯•。 */ + export class audioEngine { + /** + !#en Play audio. + !#zh æ’æ”¾éŸ³é¢‘ + @param clip The audio clip to play. + @param loop Whether the music loop or not. + @param volume Volume size. + + @example + ```js + cc.resources.load(path, cc.AudioClip, null, function (err, clip) { + var audioID = cc.audioEngine.play(clip, false, 0.5); + }); + ``` + */ + static play(clip: AudioClip, loop: boolean, volume: number): number; + /** + !#en Set audio loop. + !#zh 设置音频是å¦å¾ªçŽ¯ã€‚ + @param audioID audio id. + @param loop Whether cycle. + + @example + ```js + cc.audioEngine.setLoop(id, true); + ``` + */ + static setLoop(audioID: number, loop: boolean): void; + /** + !#en Get audio cycle state. + !#zh 获å–音频的循环状æ€ã€‚ + @param audioID audio id. + + @example + ```js + cc.audioEngine.isLoop(id); + ``` + */ + static isLoop(audioID: number): boolean; + /** + !#en Set the volume of audio. + !#zh 设置音é‡ï¼ˆ0.0 ~ 1.0)。 + @param audioID audio id. + @param volume Volume must be in 0.0~1.0 . + + @example + ```js + cc.audioEngine.setVolume(id, 0.5); + ``` + */ + static setVolume(audioID: number, volume: number): void; + /** + !#en The volume of the music max value is 1.0,the min value is 0.0 . + !#zh 获å–音é‡ï¼ˆ0.0 ~ 1.0)。 + @param audioID audio id. + + @example + ```js + var volume = cc.audioEngine.getVolume(id); + ``` + */ + static getVolume(audioID: number): number; + /** + !#en Set current time + !#zh 设置当å‰çš„音频时间。 + @param audioID audio id. + @param sec current time. + + @example + ```js + cc.audioEngine.setCurrentTime(id, 2); + ``` + */ + static setCurrentTime(audioID: number, sec: number): boolean; + /** + !#en Get current time + !#zh 获å–当å‰çš„éŸ³é¢‘æ’æ”¾æ—¶é—´ã€‚ + @param audioID audio id. + + @example + ```js + var time = cc.audioEngine.getCurrentTime(id); + ``` + */ + static getCurrentTime(audioID: number): number; + /** + !#en Get audio duration + !#zh 获å–音频总时长。 + @param audioID audio id. + + @example + ```js + var time = cc.audioEngine.getDuration(id); + ``` + */ + static getDuration(audioID: number): number; + /** + !#en Get audio state + !#zh 获å–音频状æ€ã€‚ + @param audioID audio id. + + @example + ```js + var state = cc.audioEngine.getState(id); + ``` + */ + static getState(audioID: number): audioEngine.AudioState; + /** + !#en Set Audio finish callback + !#zh 设置一个音频结æŸåŽçš„回调 + @param audioID audio id. + @param callback loaded callback. + + @example + ```js + cc.audioEngine.setFinishCallback(id, function () {}); + ``` + */ + static setFinishCallback(audioID: number, callback: Function): void; + /** + !#en Pause playing audio. + !#zh æš‚åœæ£åœ¨æ’放音频。 + @param audioID The return value of function play. + + @example + ```js + cc.audioEngine.pause(audioID); + ``` + */ + static pause(audioID: number): void; + /** + !#en Pause all playing audio + !#zh æš‚åœçŽ°åœ¨æ£åœ¨æ’放的所有音频。 + + @example + ```js + cc.audioEngine.pauseAll(); + ``` + */ + static pauseAll(): void; + /** + !#en Resume playing audio. + !#zh æ¢å¤æ’放指定的音频。 + @param audioID The return value of function play. + + @example + ```js + cc.audioEngine.resume(audioID); + ``` + */ + static resume(audioID: number): void; + /** + !#en Resume all playing audio. + !#zh æ¢å¤æ’æ”¾æ‰€æœ‰ä¹‹å‰æš‚åœçš„æ‰€æœ‰éŸ³é¢‘。 + + @example + ```js + cc.audioEngine.resumeAll(); + ``` + */ + static resumeAll(): void; + /** + !#en Stop playing audio. + !#zh åœæ¢æ’放指定音频。 + @param audioID The return value of function play. + + @example + ```js + cc.audioEngine.stop(audioID); + ``` + */ + static stop(audioID: number): void; + /** + !#en Stop all playing audio. + !#zh åœæ¢æ£åœ¨æ’放的所有音频。 + + @example + ```js + cc.audioEngine.stopAll(); + ``` + */ + static stopAll(): void; + /** + !#en Set up an audio can generate a few examples. + !#zh 设置一个音频å¯ä»¥è®¾ç½®å‡ 个实例 + @param num a number of instances to be created from within an audio + + @example + ```js + cc.audioEngine.setMaxAudioInstance(20); + ``` + */ + static setMaxAudioInstance(num: number): void; + /** + !#en Getting audio can produce several examples. + !#zh 获å–一个音频å¯ä»¥è®¾ç½®å‡ 个实例 + + @example + ```js + cc.audioEngine.getMaxAudioInstance(); + ``` + */ + static getMaxAudioInstance(): number; + /** + !#en Unload the preloaded audio from internal buffer. + !#zh å¸è½½é¢„åŠ è½½çš„éŸ³é¢‘ã€‚ + @param clip clip + + @example + ```js + cc.audioEngine.uncache(filePath); + ``` + */ + static uncache(clip: AudioClip): void; + /** + !#en Unload all audio from internal buffer. + !#zh å¸è½½æ‰€æœ‰éŸ³é¢‘。 + + @example + ```js + cc.audioEngine.uncacheAll(); + ``` + */ + static uncacheAll(): void; + /** + !#en Play background music + !#zh æ’æ”¾èƒŒæ™¯éŸ³ä¹ + @param clip The audio clip to play. + @param loop Whether the music loop or not. + + @example + ```js + cc.resources.load(path, cc.AudioClip, null, function (err, clip) { + var audioID = cc.audioEngine.playMusic(clip, false); + }); + ``` + */ + static playMusic(clip: AudioClip, loop: boolean): number; + /** + !#en Stop background music. + !#zh åœæ¢æ’放背景音ä¹ã€‚ + + @example + ```js + cc.audioEngine.stopMusic(); + ``` + */ + static stopMusic(): void; + /** + !#en Pause the background music. + !#zh æš‚åœæ’放背景音ä¹ã€‚ + + @example + ```js + cc.audioEngine.pauseMusic(); + ``` + */ + static pauseMusic(): void; + /** + !#en Resume playing background music. + !#zh æ¢å¤æ’放背景音ä¹ã€‚ + + @example + ```js + cc.audioEngine.resumeMusic(); + ``` + */ + static resumeMusic(): void; + /** + !#en Get the volume(0.0 ~ 1.0). + !#zh 获å–音é‡ï¼ˆ0.0 ~ 1.0)。 + + @example + ```js + var volume = cc.audioEngine.getMusicVolume(); + ``` + */ + static getMusicVolume(): number; + /** + !#en Set the background music volume. + !#zh 设置背景音ä¹éŸ³é‡ï¼ˆ0.0 ~ 1.0)。 + @param volume Volume must be in 0.0~1.0. + + @example + ```js + cc.audioEngine.setMusicVolume(0.5); + ``` + */ + static setMusicVolume(volume: number): void; + /** + !#en Background music playing state + !#zh èƒŒæ™¯éŸ³ä¹æ˜¯å¦æ£åœ¨æ’放 + + @example + ```js + cc.audioEngine.isMusicPlaying(); + ``` + */ + static isMusicPlaying(): boolean; + /** + !#en Play effect audio. + !#zh æ’æ”¾éŸ³æ•ˆ + @param clip The audio clip to play. + @param loop Whether the music loop or not. + + @example + ```js + cc.resources.load(path, cc.AudioClip, null, function (err, clip) { + var audioID = cc.audioEngine.playEffect(clip, false); + }); + ``` + */ + static playEffect(clip: AudioClip, loop: boolean): number; + /** + !#en Set the volume of effect audio. + !#zh 设置音效音é‡ï¼ˆ0.0 ~ 1.0)。 + @param volume Volume must be in 0.0~1.0. + + @example + ```js + cc.audioEngine.setEffectsVolume(0.5); + ``` + */ + static setEffectsVolume(volume: number): void; + /** + !#en The volume of the effect audio max value is 1.0,the min value is 0.0 . + !#zh 获å–音效音é‡ï¼ˆ0.0 ~ 1.0)。 + + @example + ```js + var volume = cc.audioEngine.getEffectsVolume(); + ``` + */ + static getEffectsVolume(): number; + /** + !#en Pause effect audio. + !#zh æš‚åœæ’放音效。 + @param audioID audio id. + + @example + ```js + cc.audioEngine.pauseEffect(audioID); + ``` + */ + static pauseEffect(audioID: number): void; + /** + !#en Stop playing all the sound effects. + !#zh æš‚åœæ’放所有音效。 + + @example + ```js + cc.audioEngine.pauseAllEffects(); + ``` + */ + static pauseAllEffects(): void; + /** + !#en Resume effect audio. + !#zh æ¢å¤æ’放音效音频。 + @param audioID The return value of function play. + + @example + ```js + cc.audioEngine.resumeEffect(audioID); + ``` + */ + static resumeEffect(audioID: number): void; + /** + !#en Resume all effect audio. + !#zh æ¢å¤æ’æ”¾æ‰€æœ‰ä¹‹å‰æš‚åœçš„音效。 + + @example + ```js + cc.audioEngine.resumeAllEffects(); + ``` + */ + static resumeAllEffects(): void; + /** + !#en Stop playing the effect audio. + !#zh åœæ¢æ’放音效。 + @param audioID audio id. + + @example + ```js + cc.audioEngine.stopEffect(id); + ``` + */ + static stopEffect(audioID: number): void; + /** + !#en Stop playing all the effects. + !#zh åœæ¢æ’放所有音效。 + + @example + ```js + cc.audioEngine.stopAllEffects(); + ``` + */ + static stopAllEffects(): void; + } + /** !#en cc.WebView is a component for display web pages in the game. Because different platforms have different authorization, API and control methods for WebView component. And have not yet formed a unified standard, only Web, iOS, and Android platforms are currently supported. + !#zh WebView 组件,用于在游æˆä¸æ˜¾ç¤ºç½‘页。由于ä¸åŒå¹³å°å¯¹äºŽ WebView 组件的授æƒã€APIã€æŽ§åˆ¶æ–¹å¼éƒ½ä¸åŒï¼Œè¿˜æ²¡æœ‰å½¢æˆç»Ÿä¸€çš„æ ‡å‡†ï¼Œæ‰€ä»¥ç›®å‰åªæ”¯æŒ Webã€iOS å’Œ Android å¹³å°ã€‚ */ + export class WebView extends Component { + /** !#en A given URL to be loaded by the WebView, it should have a http or https prefix. + !#zh 指定 WebView åŠ è½½çš„ç½‘å€ï¼Œå®ƒåº”该是一个 http 或者 https 开头的å—符串 */ + url: string; + /** !#en The webview's event callback , it will be triggered when certain webview event occurs. + !#zh WebView çš„å›žè°ƒäº‹ä»¶ï¼Œå½“ç½‘é¡µåŠ è½½è¿‡ç¨‹ä¸ï¼ŒåŠ è½½å®ŒæˆåŽæˆ–è€…åŠ è½½å‡ºé”™æ—¶éƒ½ä¼šå›žè°ƒæ¤å‡½æ•° */ + webviewLoadedEvents: Component.EventHandler[]; + /** + !#en + Set javascript interface scheme (see also setOnJSCallback). <br/> + Note: Supports only on the Android and iOS. For HTML5, please refer to the official documentation.<br/> + Please refer to the official documentation for more details. + !#zh + 设置 JavaScript æŽ¥å£æ–¹æ¡ˆï¼ˆä¸Ž 'setOnJSCallback' é…套使用)。<br/> + 注æ„ï¼šåªæ”¯æŒ Android å’Œ iOS ,Web 端用法请å‰å¾€å®˜æ–¹æ–‡æ¡£æŸ¥çœ‹ã€‚<br/> + 详情请å‚阅官方文档 + @param scheme scheme + */ + setJavascriptInterfaceScheme(scheme: string): void; + /** + !#en + This callback called when load URL that start with javascript + interface scheme (see also setJavascriptInterfaceScheme). <br/> + Note: Supports only on the Android and iOS. For HTML5, please refer to the official documentation.<br/> + Please refer to the official documentation for more details. + !#zh + å½“åŠ è½½ URL 以 JavaScript æŽ¥å£æ–¹æ¡ˆå¼€å§‹æ—¶è°ƒç”¨è¿™ä¸ªå›žè°ƒå‡½æ•°ã€‚<br/> + 注æ„ï¼šåªæ”¯æŒ Android å’Œ iOS,Web 端用法请å‰å¾€å®˜æ–¹æ–‡æ¡£æŸ¥çœ‹ã€‚ + 详情请å‚阅官方文档 + @param callback callback + */ + setOnJSCallback(callback: Function): void; + /** + !#en + Evaluates JavaScript in the context of the currently displayed page. <br/> + Please refer to the official document for more details <br/> + Note: Cross domain issues need to be resolved by yourself <br/> + !#zh + 执行 WebView 内部页é¢è„šæœ¬ï¼ˆè¯¦æƒ…è¯·å‚阅官方文档) <br/> + 注æ„:需è¦è‡ªè¡Œè§£å†³è·¨åŸŸé—®é¢˜ + @param str str + */ + evaluateJS(str: string): void; + /** + !#en if you don't need the WebView and it isn't in any running Scene, you should + call the destroy method on this component or the associated node explicitly. + Otherwise, the created DOM element won't be removed from web page. + !#zh + å¦‚æžœä½ ä¸å†ä½¿ç”¨ WebViewï¼Œå¹¶ä¸”ç»„ä»¶æœªæ·»åŠ åˆ°åœºæ™¯ä¸ï¼Œé‚£ä¹ˆä½ 必须手动对组件或所在节点调用 destroy。 + è¿™æ ·æ‰èƒ½ç§»é™¤ç½‘页上的 DOM 节点,é¿å… Web å¹³å°å†…å˜æ³„露。 + + @example + ```js + webview.node.parent = null; // or webview.node.removeFromParent(false); + // when you don't need webview anymore + webview.node.destroy(); + ``` + */ + destroy(): boolean; + } + /** !#en cc.VideoPlayer is a component for playing videos, you can use it for showing videos in your game. Because different platforms have different authorization, API and control methods for VideoPlayer component. And have not yet formed a unified standard, only Web, iOS, and Android platforms are currently supported. + !#zh Video 组件,用于在游æˆä¸æ’放视频。由于ä¸åŒå¹³å°å¯¹äºŽ VideoPlayer 组件的授æƒã€APIã€æŽ§åˆ¶æ–¹å¼éƒ½ä¸åŒï¼Œè¿˜æ²¡æœ‰å½¢æˆç»Ÿä¸€çš„æ ‡å‡†ï¼Œæ‰€ä»¥ç›®å‰åªæ”¯æŒ Webã€iOS å’Œ Android å¹³å°ã€‚ */ + export class VideoPlayer extends Component { + /** !#en The resource type of videoplayer, REMOTE for remote url and LOCAL for local file path. + !#zh è§†é¢‘æ¥æºï¼šREMOTE 表示远程视频 URL,LOCAL 表示本地视频地å€ã€‚ */ + resourceType: VideoPlayer.ResourceType; + /** !#en The remote URL of video. + !#zh 远程视频的 URL */ + remoteURL: string; + /** !#en The local video full path. + !#zh 本地视频的 URL */ + clip: string; + /** !#en The current playback time of the now playing item in seconds, you could also change the start playback time. + !#zh æŒ‡å®šè§†é¢‘ä»Žä»€ä¹ˆæ—¶é—´ç‚¹å¼€å§‹æ’æ”¾ï¼Œå•使˜¯ç§’,也å¯ä»¥ç”¨æ¥èŽ·å–当å‰è§†é¢‘æ’æ”¾çš„æ—¶é—´è¿›åº¦ã€‚ */ + currentTime: number; + /** !#en The volume of the video. + !#zh 视频的音é‡ï¼ˆ0.0 ~ 1.0) */ + volume: number; + /** !#en Mutes the VideoPlayer. Mute sets the volume=0, Un-Mute restore the original volume. + !#zh 是å¦é™éŸ³è§†é¢‘。é™éŸ³æ—¶è®¾ç½®éŸ³é‡ä¸º 0ï¼Œå–æ¶ˆé™éŸ³æ˜¯æ¢å¤åŽŸæ¥çš„音é‡ã€‚ */ + mute: boolean; + /** !#en Whether keep the aspect ration of the original video. + !#zh 是å¦ä¿æŒè§†é¢‘原æ¥çš„宽高比 */ + keepAspectRatio: boolean; + /** !#en Whether play video in fullscreen mode. + !#zh 是å¦å…¨å±æ’放视频 */ + isFullscreen: boolean; + /** !#en Always below the game view (only useful on Web. Note: The specific effects are not guaranteed to be consistent, depending on whether each browser supports or restricts). + !#zh 永远在游æˆè§†å›¾æœ€åº•å±‚ï¼ˆè¿™ä¸ªå±žæ€§åªæœ‰åœ¨ Web å¹³å°ä¸Šæœ‰æ•ˆæžœã€‚注æ„ï¼šå…·ä½“æ•ˆæžœæ— æ³•ä¿è¯ä¸€è‡´ï¼Œè·Ÿå„个æµè§ˆå™¨æ˜¯å¦æ”¯æŒä¸Žé™åˆ¶æœ‰å…³ï¼‰ */ + stayOnBottom: boolean; + /** !#en the video player's callback, it will be triggered when certain event occurs, like: playing, paused, stopped and completed. + !#zh è§†é¢‘æ’æ”¾å›žè°ƒå‡½æ•°ï¼Œè¯¥å›žè°ƒå‡½æ•°ä¼šåœ¨ç‰¹å®šæƒ…况被触å‘ï¼Œæ¯”å¦‚æ’æ”¾ä¸ï¼Œæš‚æ—¶ï¼Œåœæ¢å’Œå®Œæˆæ’放。 */ + videoPlayerEvent: Component.EventHandler[]; + /** + !#en If a video is paused, call this method could resume playing. If a video is stopped, call this method to play from scratch. + !#zh å¦‚æžœè§†é¢‘è¢«æš‚åœæ’放了,调用这个接å£å¯ä»¥ç»§ç»æ’æ”¾ã€‚å¦‚æžœè§†é¢‘è¢«åœæ¢æ’放了,调用这个接å£å¯ä»¥ä»Žå¤´å¼€å§‹æ’放。 + */ + play(): void; + /** + !#en If a video is paused, call this method to resume playing. + !#zh å¦‚æžœä¸€ä¸ªè§†é¢‘æ’æ”¾è¢«æš‚åœæ’放了,调用这个接å£å¯ä»¥ç»§ç»æ’放。 + */ + resume(): void; + /** + !#en If a video is playing, call this method to pause playing. + !#zh 如果一个视频æ£åœ¨æ’放,调用这个接å£å¯ä»¥æš‚åœæ’放。 + */ + pause(): void; + /** + !#en If a video is playing, call this method to stop playing immediately. + !#zh 如果一个视频æ£åœ¨æ’放,调用这个接å£å¯ä»¥ç«‹é©¬åœæ¢æ’放。 + */ + stop(): void; + /** + !#en Gets the duration of the video + !#zh 获å–è§†é¢‘æ–‡ä»¶çš„æ’æ”¾æ€»æ—¶é•¿ + */ + getDuration(): number; + /** + !#en Determine whether video is playing or not. + !#zh 判æ–当å‰è§†é¢‘是å¦å¤„äºŽæ’æ”¾çŠ¶æ€ + */ + isPlaying(): boolean; + /** + !#en if you don't need the VideoPlayer and it isn't in any running Scene, you should + call the destroy method on this component or the associated node explicitly. + Otherwise, the created DOM element won't be removed from web page. + !#zh + å¦‚æžœä½ ä¸å†ä½¿ç”¨ VideoPlayerï¼Œå¹¶ä¸”ç»„ä»¶æœªæ·»åŠ åˆ°åœºæ™¯ä¸ï¼Œé‚£ä¹ˆä½ 必须手动对组件或所在节点调用 destroy。 + è¿™æ ·æ‰èƒ½ç§»é™¤ç½‘页上的 DOM 节点,é¿å… Web å¹³å°å†…å˜æ³„露。 + + @example + ```js + videoplayer.node.parent = null; // or videoplayer.node.removeFromParent(false); + // when you don't need videoplayer anymore + videoplayer.node.destroy(); + ``` + */ + destroy(): boolean; + } + /** !#en + cc.NodePool is the cache pool designed for node type.<br/> + It can helps you to improve your game performance for objects which need frequent release and recreate operations<br/> + + It's recommended to create cc.NodePool instances by node type, the type corresponds to node type in game design, not the class, + for example, a prefab is a specific node type. <br/> + When you create a node pool, you can pass a Component which contains `unuse`, `reuse` functions to control the content of node.<br/> + + Some common use case is :<br/> + 1. Bullets in game (die very soon, massive creation and recreation, no side effect on other objects)<br/> + 2. Blocks in candy crash (massive creation and recreation)<br/> + etc... + !#zh + cc.NodePool 是用于管ç†èŠ‚ç‚¹å¯¹è±¡çš„å¯¹è±¡ç¼“å˜æ± 。<br/> + 它å¯ä»¥å¸®åŠ©æ‚¨æé«˜æ¸¸æˆæ€§èƒ½ï¼Œé€‚用于优化对象的åå¤åˆ›å»ºå’Œé”€æ¯<br/> + ä»¥å‰ cocos2d-x ä¸çš„ cc.pool 和新的节点事件注册系统ä¸å…¼å®¹ï¼Œå› æ¤è¯·ä½¿ç”¨ cc.NodePool æ¥ä»£æ›¿ã€‚ + + æ–°çš„ NodePool 需è¦å®žä¾‹åŒ–ä¹‹åŽæ‰èƒ½ä½¿ç”¨ï¼Œæ¯ç§ä¸åŒçš„èŠ‚ç‚¹å¯¹è±¡æ± éœ€è¦ä¸€ä¸ªä¸åŒçš„å¯¹è±¡æ± å®žä¾‹ï¼Œè¿™é‡Œçš„ç§ç±»å¯¹åº”于游æˆä¸çš„节点设计,一个 prefab 相当于一个ç§ç±»çš„节点。<br/> + åœ¨åˆ›å»ºç¼“å†²æ± æ—¶ï¼Œå¯ä»¥ä¼ å…¥ä¸€ä¸ªåŒ…å« unuse, reuse 函数的组件类型用于节点的回收和å¤ç”¨é€»è¾‘。<br/> + + 一些常è§çš„用例是:<br/> + 1.在游æˆä¸çš„å弹(æ»äº¡å¾ˆå¿«ï¼Œé¢‘ç¹åˆ›å»ºï¼Œå¯¹å…¶ä»–å¯¹è±¡æ— å‰¯ä½œç”¨ï¼‰<br/> + 2.ç³–æžœç²‰ç¢Žä¼ å¥‡ä¸çš„æœ¨å—(频ç¹åˆ›å»ºï¼‰ã€‚ + ç‰ç‰.... */ + export class NodePool { + /** + !#en + Constructor for creating a pool for a specific node template (usually a prefab). You can pass a component (type or name) argument for handling event for reusing and recycling node. + !#zh + ä½¿ç”¨æž„é€ å‡½æ•°æ¥åˆ›å»ºä¸€ä¸ªèŠ‚ç‚¹ä¸“ç”¨çš„å¯¹è±¡æ± ï¼Œæ‚¨å¯ä»¥ä¼ 递一个组件类型或å称,用于处ç†èŠ‚ç‚¹å›žæ”¶å’Œå¤ç”¨æ—¶çš„事件逻辑。 + @param poolHandlerComp !#en The constructor or the class name of the component to control the unuse/reuse logic. !#zh 处ç†èŠ‚ç‚¹å›žæ”¶å’Œå¤ç”¨äº‹ä»¶é€»è¾‘的组件类型或å称。 + + @example + ```js + properties: { + template: cc.Prefab + }, + onLoad () { + // MyTemplateHandler is a component with 'unuse' and 'reuse' to handle events when node is reused or recycled. + this.myPool = new cc.NodePool('MyTemplateHandler'); + } + ``` + */ + constructor(poolHandlerComp?: {prototype: Component}|string); + /** !#en The pool handler component, it could be the class name or the constructor. + !#zh ç¼“å†²æ± å¤„ç†ç»„件,用于节点的回收和å¤ç”¨é€»è¾‘,这个属性å¯ä»¥æ˜¯ç»„ä»¶ç±»åæˆ–ç»„ä»¶çš„æž„é€ å‡½æ•°ã€‚ */ + poolHandlerComp: Function|string; + /** + !#en The current available size in the pool + !#zh 获å–当å‰ç¼“å†²æ± çš„å¯ç”¨å¯¹è±¡æ•°é‡ + */ + size(): number; + /** + !#en Destroy all cached nodes in the pool + !#zh 销æ¯å¯¹è±¡æ± ä¸ç¼“å˜çš„æ‰€æœ‰èŠ‚ç‚¹ + */ + clear(): void; + /** + !#en Put a new Node into the pool. + It will automatically remove the node from its parent without cleanup. + It will also invoke unuse method of the poolHandlerComp if exist. + !#zh å‘ç¼“å†²æ± ä¸å˜å…¥ä¸€ä¸ªä¸å†éœ€è¦çš„节点对象。 + è¿™ä¸ªå‡½æ•°ä¼šè‡ªåŠ¨å°†ç›®æ ‡èŠ‚ç‚¹ä»Žçˆ¶èŠ‚ç‚¹ä¸Šç§»é™¤ï¼Œä½†æ˜¯ä¸ä¼šè¿›è¡Œ cleanup æ“作。 + 这个函数会调用 poolHandlerComp çš„ unuse 函数,如果组件和函数都å˜åœ¨çš„è¯ã€‚ + @param obj obj + + @example + ```js + let myNode = cc.instantiate(this.template); + this.myPool.put(myNode); + ``` + */ + put(obj: Node): void; + /** + !#en Get a obj from pool, if no available object in pool, null will be returned. + This function will invoke the reuse function of poolHandlerComp if exist. + !#zh 获å–å¯¹è±¡æ± ä¸çš„å¯¹è±¡ï¼Œå¦‚æžœå¯¹è±¡æ± æ²¡æœ‰å¯ç”¨å¯¹è±¡ï¼Œåˆ™è¿”回空。 + 这个函数会调用 poolHandlerComp çš„ reuse 函数,如果组件和函数都å˜åœ¨çš„è¯ã€‚ + @param params !#en Params to pass to 'reuse' method in poolHandlerComp !#zh å‘ poolHandlerComp ä¸çš„ 'reuse' å‡½æ•°ä¼ é€’çš„å‚æ•° + + @example + ```js + let newNode = this.myPool.get(); + ``` + */ + get(...params: any[]): Node; + } + /** !#en An object to boot the game. + !#zh åŒ…å«æ¸¸æˆä¸»ä½“ä¿¡æ¯å¹¶è´Ÿè´£é©±åŠ¨æ¸¸æˆçš„æ¸¸æˆå¯¹è±¡ã€‚ */ + export class debug { + /** + !#en Gets error message with the error id and possible parameters. + !#zh 通过 error id 和必è¦çš„傿•°æ¥èŽ·å–错误信æ¯ã€‚ + @param errorId errorId + @param param param + */ + static getError(errorId: string, param?: any): string; + /** + !#en Returns whether or not to display the FPS informations. + !#zh æ˜¯å¦æ˜¾ç¤º FPS ä¿¡æ¯ã€‚ + */ + static isDisplayStats(): boolean; + /** + !#en Sets whether display the FPS on the bottom-left corner. + !#zh 设置是å¦åœ¨å·¦ä¸‹è§’显示 FPS。 + @param displayStats displayStats + */ + static setDisplayStats(displayStats: boolean): void; + } + /** !#en + <p> + ATTENTION: USE cc.director INSTEAD OF cc.Director.<br/> + cc.director is a singleton object which manage your game's logic flow.<br/> + Since the cc.director is a singleton, you don't need to call any constructor or create functions,<br/> + the standard way to use it is by calling:<br/> + - cc.director.methodName(); <br/> + + It creates and handle the main Window and manages how and when to execute the Scenes.<br/> + <br/> + The cc.director is also responsible for:<br/> + - initializing the OpenGL context<br/> + - setting the OpenGL pixel format (default on is RGB565)<br/> + - setting the OpenGL buffer depth (default on is 0-bit)<br/> + - setting the color for clear screen (default one is BLACK)<br/> + - setting the projection (default one is 3D)<br/> + - setting the orientation (default one is Portrait)<br/> + <br/> + <br/> + The cc.director also sets the default OpenGL context:<br/> + - GL_TEXTURE_2D is enabled<br/> + - GL_VERTEX_ARRAY is enabled<br/> + - GL_COLOR_ARRAY is enabled<br/> + - GL_TEXTURE_COORD_ARRAY is enabled<br/> + </p> + <p> + cc.director also synchronizes timers with the refresh rate of the display.<br/> + Features and Limitations:<br/> + - Scheduled timers & drawing are synchronizes with the refresh rate of the display<br/> + - Only supports animation intervals of 1/60 1/30 & 1/15<br/> + </p> + + !#zh + <p> + 注æ„:用 cc.director 代替 cc.Director。<br/> + cc.director 一个管ç†ä½ 的游æˆçš„逻辑æµç¨‹çš„å•例对象。<br/> + 由于 cc.director 是一个å•ä¾‹ï¼Œä½ ä¸éœ€è¦è°ƒç”¨ä»»ä½•æž„é€ å‡½æ•°æˆ–åˆ›å»ºå‡½æ•°ï¼Œ<br/> + ä½¿ç”¨å®ƒçš„æ ‡å‡†æ–¹æ³•æ˜¯é€šè¿‡è°ƒç”¨ï¼š<br/> + - cc.director.methodName(); + <br/> + 它创建和处ç†ä¸»çª—å£å¹¶ä¸”管ç†ä»€ä¹ˆæ—¶å€™æ‰§è¡Œåœºæ™¯ã€‚<br/> + <br/> + cc.director 还负责:<br/> + - åˆå§‹åŒ– OpenGL 环境。<br/> + - 设置OpenGLåƒç´ æ ¼å¼ã€‚(默认是 RGB565)<br/> + - 设置OpenGL缓冲区深度 (默认是 0-bit)<br/> + - 设置空白场景的颜色 (默认是 黑色)<br/> + - 设置投影 (默认是 3D)<br/> + - è®¾ç½®æ–¹å‘ (默认是 Portrait)<br/> + <br/> + cc.director 设置了 OpenGL 默认环境 <br/> + - GL_TEXTURE_2D å¯ç”¨ã€‚<br/> + - GL_VERTEX_ARRAY å¯ç”¨ã€‚<br/> + - GL_COLOR_ARRAY å¯ç”¨ã€‚<br/> + - GL_TEXTURE_COORD_ARRAY å¯ç”¨ã€‚<br/> + </p> + <p> + cc.director ä¹ŸåŒæ¥å®šæ—¶å™¨ä¸Žæ˜¾ç¤ºå™¨çš„刷新速率。 + <br/> + ç‰¹ç‚¹å’Œå±€é™æ€§: <br/> + - 将计时器 & æ¸²æŸ“ä¸Žæ˜¾ç¤ºå™¨çš„åˆ·æ–°é¢‘çŽ‡åŒæ¥ã€‚<br/> + - åªæ”¯æŒåŠ¨ç”»çš„é—´éš” 1/60 1/30 & 1/15。<br/> + </p> */ + export class Director extends EventTarget { + /** + !#en + Converts a view coordinate to an WebGL coordinate<br/> + Useful to convert (multi) touches coordinates to the current layout (portrait or landscape)<br/> + Implementation can be found in CCDirectorWebGL. + !#zh 将触摸点的å±å¹•åæ ‡è½¬æ¢ä¸º WebGL View ä¸‹çš„åæ ‡ã€‚ + @param uiPoint uiPoint + */ + convertToGL(uiPoint: Vec2): Vec2; + /** + !#en + Converts an OpenGL coordinate to a view coordinate<br/> + Useful to convert node points to window points for calls such as glScissor<br/> + Implementation can be found in CCDirectorWebGL. + !#zh 将触摸点的 WebGL View åæ ‡è½¬æ¢ä¸ºå±å¹•åæ ‡ã€‚ + @param glPoint glPoint + */ + convertToUI(glPoint: Vec2): Vec2; + /** + End the life of director in the next frame + */ + end(): void; + /** + !#en + Returns the size of the WebGL view in points.<br/> + It takes into account any possible rotation (device orientation) of the window. + !#zh 获å–视图的大å°ï¼Œä»¥ç‚¹ä¸ºå•ä½ã€‚ + */ + getWinSize(): Size; + /** + !#en + Returns the size of the OpenGL view in pixels.<br/> + It takes into account any possible rotation (device orientation) of the window.<br/> + On Mac winSize and winSizeInPixels return the same value. + (The pixel here refers to the resource resolution. If you want to get the physics resolution of device, you need to use cc.view.getFrameSize()) + !#zh + 获å–视图大å°ï¼Œä»¥åƒç´ 为å•ä½ï¼ˆè¿™é‡Œçš„åƒç´ 指的是资æºåˆ†è¾¨çŽ‡ã€‚ + 如果è¦èŽ·å–å±å¹•物ç†åˆ†è¾¨çŽ‡ï¼Œéœ€è¦ç”¨ cc.view.getFrameSize()) + */ + getWinSizeInPixels(): Size; + /** + !#en Pause the director's ticker, only involve the game logic execution. + It won't pause the rendering process nor the event manager. + If you want to pause the entier game including rendering, audio and event, + please use {{#crossLink "Game.pause"}}cc.game.pause{{/crossLink}} + !#zh æš‚åœæ£åœ¨è¿è¡Œçš„场景,该暂åœåªä¼šåœæ¢æ¸¸æˆé€»è¾‘执行,但是ä¸ä¼šåœæ¢æ¸²æŸ“å’Œ UI å“应。 + å¦‚æžœæƒ³è¦æ›´å½»åº•å¾—æš‚åœæ¸¸æˆï¼ŒåŒ…嫿¸²æŸ“,音频和事件,请使用 {{#crossLink "Game.pause"}}cc.game.pause{{/crossLink}}。 + */ + pause(): void; + /** + !#en + Run a scene. Replaces the running scene with a new one or enter the first scene.<br/> + The new scene will be launched immediately. + !#zh ç«‹åˆ»åˆ‡æ¢æŒ‡å®šåœºæ™¯ã€‚ + @param scene The need run scene. + @param onBeforeLoadScene The function invoked at the scene before loading. + @param onLaunched The function invoked at the scene after launch. + */ + runSceneImmediate(scene: Scene|SceneAsset, onBeforeLoadScene?: Function, onLaunched?: Function): void; + /** + !#en + Run a scene. Replaces the running scene with a new one or enter the first scene. + The new scene will be launched at the end of the current frame. + !#zh è¿è¡ŒæŒ‡å®šåœºæ™¯ã€‚ + @param scene The need run scene. + @param onBeforeLoadScene The function invoked at the scene before loading. + @param onLaunched The function invoked at the scene after launch. + */ + runScene(scene: Scene|SceneAsset, onBeforeLoadScene?: Function, onLaunched?: Function): void; + /** + !#en Loads the scene by its name. + !#zh 通过场景åç§°è¿›è¡ŒåŠ è½½åœºæ™¯ã€‚ + @param sceneName The name of the scene to load. + @param onLaunched callback, will be called after scene launched. + */ + loadScene(sceneName: string, onLaunched?: Function): boolean; + /** + !#en + Preloads the scene to reduces loading time. You can call this method at any time you want. + After calling this method, you still need to launch the scene by `cc.director.loadScene`. + It will be totally fine to call `cc.director.loadScene` at any time even if the preloading is not + yet finished, the scene will be launched after loaded automatically. + !#zh é¢„åŠ è½½åœºæ™¯ï¼Œä½ å¯ä»¥åœ¨ä»»ä½•时候调用这个方法。 + 调用完åŽï¼Œä½ ä»ç„¶éœ€è¦é€šè¿‡ `cc.director.loadScene` æ¥å¯åŠ¨åœºæ™¯ï¼Œå› ä¸ºè¿™ä¸ªæ–¹æ³•ä¸ä¼šæ‰§è¡Œåœºæ™¯åŠ è½½æ“作。 + å°±ç®—é¢„åŠ è½½è¿˜æ²¡å®Œæˆï¼Œä½ 也å¯ä»¥ç›´æŽ¥è°ƒç”¨ `cc.director.loadScene`ï¼ŒåŠ è½½å®ŒæˆåŽåœºæ™¯å°±ä¼šå¯åŠ¨ã€‚ + @param sceneName The name of the scene to preload. + @param onProgress callback, will be called when the load progression change. + @param onLoaded callback, will be called after scene loaded. + */ + preloadScene(sceneName: string, onProgress?: (completedCount: number, totalCount: number, item: any) => void, onLoaded?: (error: Error) => void): void; + /** + !#en Resume game logic execution after pause, if the current scene is not paused, nothing will happen. + !#zh æ¢å¤æš‚åœåœºæ™¯çš„æ¸¸æˆé€»è¾‘,如果当å‰åœºæ™¯æ²¡æœ‰æš‚åœå°†æ²¡ä»»ä½•事情å‘生。 + */ + resume(): void; + /** + !#en + Enables or disables WebGL depth test.<br/> + Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js + !#zh å¯ç”¨/ç¦ç”¨æ·±åº¦æµ‹è¯•(在 Canvas 渲染模å¼ä¸‹ä¸ä¼šç”Ÿæ•ˆï¼‰ã€‚ + @param on on + */ + setDepthTest(on: boolean): void; + /** + !#en + Set color for clear screen.<br/> + (Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js) + !#zh + 设置场景的默认擦除颜色。<br/> + 支æŒå…¨é€æ˜Žï¼Œä½†ä¸æ”¯æŒé€æ˜Žåº¦ä¸ºä¸é—´å€¼ã€‚è¦æ”¯æŒå…¨é€æ˜Žéœ€æ‰‹å·¥å¼€å¯ cc.macro.ENABLE_TRANSPARENT_CANVAS。 + @param clearColor clearColor + */ + setClearColor(clearColor: Color): void; + /** + !#en Returns current logic Scene. + !#zh 获å–当å‰é€»è¾‘场景。 + + @example + ```js + // This will help you to get the Canvas node in scene + cc.director.getScene().getChildByName('Canvas'); + ``` + */ + getScene(): Scene; + /** + !#en Returns the FPS value. Please use {{#crossLink "Game.setFrameRate"}}cc.game.setFrameRate{{/crossLink}} to control animation interval. + !#zh 获å–å•ä½å¸§æ‰§è¡Œæ—¶é—´ã€‚请使用 {{#crossLink "Game.setFrameRate"}}cc.game.setFrameRate{{/crossLink}} æ¥æŽ§åˆ¶æ¸¸æˆå¸§çŽ‡ã€‚ + */ + getAnimationInterval(): number; + /** + Sets animation interval, this doesn't control the main loop. + To control the game's frame rate overall, please use {{#crossLink "Game.setFrameRate"}}cc.game.setFrameRate{{/crossLink}} + @param value The animation interval desired. + */ + setAnimationInterval(value: number): void; + /** + !#en Returns the delta time since last frame. + !#zh 获å–ä¸Šä¸€å¸§çš„å¢žé‡æ—¶é—´ã€‚ + */ + getDeltaTime(): number; + /** + !#en Returns the total passed time since game start, unit: ms + !#zh 获å–从游æˆå¼€å§‹åˆ°çŽ°åœ¨æ€»å…±ç»è¿‡çš„æ—¶é—´ï¼Œå•ä½ä¸º ms + */ + getTotalTime(): number; + /** + !#en Returns how many frames were called since the director started. + !#zh èŽ·å– director å¯åŠ¨ä»¥æ¥æ¸¸æˆè¿è¡Œçš„æ€»å¸§æ•°ã€‚ + */ + getTotalFrames(): number; + /** + !#en Returns whether or not the Director is paused. + !#zh 是å¦å¤„于暂åœçжæ€ã€‚ + */ + isPaused(): boolean; + /** + !#en Returns the cc.Scheduler associated with this director. + !#zh 获å–å’Œ director 相关è”çš„ cc.Scheduler。 + */ + getScheduler(): Scheduler; + /** + !#en Sets the cc.Scheduler associated with this director. + !#zh 设置和 director 相关è”çš„ cc.Scheduler。 + @param scheduler scheduler + */ + setScheduler(scheduler: Scheduler): void; + /** + !#en Returns the cc.ActionManager associated with this director. + !#zh 获å–å’Œ director 相关è”çš„ cc.ActionManager(动作管ç†å™¨ï¼‰ã€‚ + */ + getActionManager(): ActionManager; + /** + !#en Sets the cc.ActionManager associated with this director. + !#zh 设置和 director 相关è”çš„ cc.ActionManager(动作管ç†å™¨ï¼‰ã€‚ + @param actionManager actionManager + */ + setActionManager(actionManager: ActionManager): void; + /** + !#en Returns the cc.CollisionManager associated with this director. + !#zh 获å–å’Œ director 相关è”çš„ cc.CollisionManager (碰撞管ç†å™¨ï¼‰ã€‚ + */ + getCollisionManager(): CollisionManager; + /** + !#en Returns the cc.PhysicsManager associated with this director. + !#zh 返回与 director 相关è”çš„ cc.PhysicsManager (物ç†ç®¡ç†å™¨ï¼‰ã€‚ + */ + getPhysicsManager(): PhysicsManager; + /** + !#en Returns the cc.Physics3DManager associated with this director. + !#zh 返回与 director 相关è”çš„ cc.Physics3DManager (物ç†ç®¡ç†å™¨ï¼‰ã€‚ + */ + getPhysics3DManager(): Physics3DManager; + /** !#en The event projection changed of cc.Director. This event will not get triggered since v2.0 + !#zh cc.Director 投影å˜åŒ–的事件。从 v2.0 开始这个事件ä¸ä¼šå†è¢«è§¦å‘ */ + static EVENT_PROJECTION_CHANGED: string; + /** !#en The event which will be triggered before loading a new scene. + !#zh åŠ è½½æ–°åœºæ™¯ä¹‹å‰æ‰€è§¦å‘的事件。 */ + static EVENT_BEFORE_SCENE_LOADING: string; + /** !#en The event which will be triggered before launching a new scene. + !#zh è¿è¡Œæ–°åœºæ™¯ä¹‹å‰æ‰€è§¦å‘的事件。 */ + static EVENT_BEFORE_SCENE_LAUNCH: string; + /** !#en The event which will be triggered after launching a new scene. + !#zh è¿è¡Œæ–°åœºæ™¯ä¹‹åŽæ‰€è§¦å‘的事件。 */ + static EVENT_AFTER_SCENE_LAUNCH: string; + /** !#en The event which will be triggered at the beginning of every frame. + !#zh æ¯ä¸ªå¸§çš„开始时所触å‘的事件。 */ + static EVENT_BEFORE_UPDATE: string; + /** !#en The event which will be triggered after engine and components update logic. + !#zh 将在引擎和组件 “updateâ€ é€»è¾‘ä¹‹åŽæ‰€è§¦å‘的事件。 */ + static EVENT_AFTER_UPDATE: string; + /** !#en The event is deprecated since v2.0, please use cc.Director.EVENT_BEFORE_DRAW instead + !#zh 这个事件从 v2.0 开始被废弃,请直接使用 cc.Director.EVENT_BEFORE_DRAW */ + static EVENT_BEFORE_VISIT: string; + /** !#en The event is deprecated since v2.0, please use cc.Director.EVENT_BEFORE_DRAW instead + !#zh 这个事件从 v2.0 开始被废弃,请直接使用 cc.Director.EVENT_BEFORE_DRAW */ + static EVENT_AFTER_VISIT: string; + /** !#en The event which will be triggered before the rendering process. + !#zh æ¸²æŸ“è¿‡ç¨‹ä¹‹å‰æ‰€è§¦å‘的事件。 */ + static EVENT_BEFORE_DRAW: string; + /** !#en The event which will be triggered after the rendering process. + !#zh æ¸²æŸ“è¿‡ç¨‹ä¹‹åŽæ‰€è§¦å‘的事件。 */ + static EVENT_AFTER_DRAW: string; + /** Constant for 2D projection (orthogonal projection) */ + static PROJECTION_2D: number; + /** Constant for 3D projection with a fovy=60, znear=0.5f and zfar=1500. */ + static PROJECTION_3D: number; + /** Constant for custom projection, if cc.Director's projection set to it, it calls "updateProjection" on the projection delegate. */ + static PROJECTION_CUSTOM: number; + /** Constant for default projection of cc.Director, default projection is 2D projection */ + static PROJECTION_DEFAULT: number; + } + /** !#en An object to boot the game. + !#zh åŒ…å«æ¸¸æˆä¸»ä½“ä¿¡æ¯å¹¶è´Ÿè´£é©±åŠ¨æ¸¸æˆçš„æ¸¸æˆå¯¹è±¡ã€‚ */ + export class Game extends EventTarget { + /** !#en Event triggered when game hide to background. + Please note that this event is not 100% guaranteed to be fired on Web platform, + on native platforms, it corresponds to enter background event, os status bar or notification center may not trigger this event. + !#zh 游æˆè¿›å…¥åŽå°æ—¶è§¦å‘的事件。 + 请注æ„,在 WEB å¹³å°ï¼Œè¿™ä¸ªäº‹ä»¶ä¸ä¸€å®šä¼š 100% 触å‘,这完全å–决于æµè§ˆå™¨çš„回调行为。 + 在原生平å°ï¼Œå®ƒå¯¹åº”的是应用被切æ¢åˆ°åŽå°äº‹ä»¶ï¼Œä¸‹æ‹‰èœå•å’Œä¸Šæ‹‰çŠ¶æ€æ ç‰ä¸ä¸€å®šä¼šè§¦å‘这个事件,这å–决于系统行为。 */ + EVENT_HIDE: string; + /** !#en Event triggered when game back to foreground + Please note that this event is not 100% guaranteed to be fired on Web platform, + on native platforms, it corresponds to enter foreground event. + !#zh 游æˆè¿›å…¥å‰å°è¿è¡Œæ—¶è§¦å‘的事件。 + 请注æ„,在 WEB å¹³å°ï¼Œè¿™ä¸ªäº‹ä»¶ä¸ä¸€å®šä¼š 100% 触å‘,这完全å–决于æµè§ˆå™¨çš„回调行为。 + 在原生平å°ï¼Œå®ƒå¯¹åº”的是应用被切æ¢åˆ°å‰å°äº‹ä»¶ã€‚ */ + EVENT_SHOW: string; + /** !#en Event triggered when game restart + !#zh 调用restartåŽï¼Œè§¦å‘事件。 */ + EVENT_RESTART: string; + /** Event triggered after game inited, at this point all engine objects and game scripts are loaded */ + EVENT_GAME_INITED: string; + /** Event triggered after engine inited, at this point you will be able to use all engine classes. + It was defined as EVENT_RENDERER_INITED in cocos creator v1.x and renamed in v2.0 */ + EVENT_ENGINE_INITED: string; + /** Web Canvas 2d API as renderer backend */ + RENDER_TYPE_CANVAS: number; + /** WebGL API as renderer backend */ + RENDER_TYPE_WEBGL: number; + /** OpenGL API as renderer backend */ + RENDER_TYPE_OPENGL: number; + /** !#en The outer frame of the game canvas, parent of game container. + !#zh 游æˆç”»å¸ƒçš„外框,container 的父容器。 */ + frame: any; + /** !#en The container of game canvas. + !#zh 游æˆç”»å¸ƒçš„容器。 */ + container: HTMLDivElement; + /** !#en The canvas of the game. + !#zh 游æˆçš„画布。 */ + canvas: HTMLCanvasElement; + /** !#en The renderer backend of the game. + !#zh 游æˆçš„æ¸²æŸ“器类型。 */ + renderType: number; + /** !#en + The current game configuration, including:<br/> + 1. debugMode<br/> + "debugMode" possible values :<br/> + 0 - No message will be printed. <br/> + 1 - cc.error, cc.assert, cc.warn, cc.log will print in console. <br/> + 2 - cc.error, cc.assert, cc.warn will print in console. <br/> + 3 - cc.error, cc.assert will print in console. <br/> + 4 - cc.error, cc.assert, cc.warn, cc.log will print on canvas, available only on web.<br/> + 5 - cc.error, cc.assert, cc.warn will print on canvas, available only on web. <br/> + 6 - cc.error, cc.assert will print on canvas, available only on web. <br/> + 2. showFPS<br/> + Left bottom corner fps information will show when "showFPS" equals true, otherwise it will be hide.<br/> + 3. exposeClassName<br/> + Expose class name to chrome debug tools, the class intantiate performance is a little bit slower when exposed.<br/> + 4. frameRate<br/> + "frameRate" set the wanted frame rate for your game, but the real fps depends on your game implementation and the running environment.<br/> + 5. id<br/> + "gameCanvas" sets the id of your canvas element on the web page, it's useful only on web.<br/> + 6. renderMode<br/> + "renderMode" sets the renderer type, only useful on web :<br/> + 0 - Automatically chosen by engine<br/> + 1 - Forced to use canvas renderer<br/> + 2 - Forced to use WebGL renderer, but this will be ignored on mobile browsers<br/> + <br/> + Please DO NOT modify this object directly, it won't have any effect.<br/> + !#zh + 当å‰çš„æ¸¸æˆé…置,包括: <br/> + 1. debugMode(debug 模å¼ï¼Œä½†æ˜¯åœ¨æµè§ˆå™¨ä¸è¿™ä¸ªé€‰é¡¹ä¼šè¢«å¿½ç•¥ï¼‰ <br/> + "debugMode" å„ç§è®¾ç½®é€‰é¡¹çš„æ„ä¹‰ã€‚ <br/> + 0 - 没有消æ¯è¢«æ‰“å°å‡ºæ¥ã€‚ <br/> + 1 - cc.error,cc.assert,cc.warn,cc.log 将打å°åœ¨ console ä¸ã€‚ <br/> + 2 - cc.error,cc.assert,cc.warn 将打å°åœ¨ console ä¸ã€‚ <br/> + 3 - cc.error,cc.assert 将打å°åœ¨ console ä¸ã€‚ <br/> + 4 - cc.error,cc.assert,cc.warn,cc.log 将打å°åœ¨ canvas ä¸ï¼ˆä»…适用于 web 端)。 <br/> + 5 - cc.error,cc.assert,cc.warn 将打å°åœ¨ canvas ä¸ï¼ˆä»…适用于 web 端)。 <br/> + 6 - cc.error,cc.assert 将打å°åœ¨ canvas ä¸ï¼ˆä»…适用于 web 端)。 <br/> + 2. showFPS(显示 FPS) <br/> + 当 showFPS 为 true 的时候界é¢çš„左下角将显示 fps 的信æ¯ï¼Œå¦åˆ™è¢«éšè—。 <br/> + 3. exposeClassName <br/> + 暴露类å让 Chrome DevTools å¯ä»¥è¯†åˆ«ï¼Œå¦‚果开å¯ä¼šç¨ç¨é™ä½Žç±»çš„åˆ›å»ºè¿‡ç¨‹çš„æ€§èƒ½ï¼Œä½†å¯¹å¯¹è±¡æž„é€ æ²¡æœ‰å½±å“。 <br/> + 4. frameRate (帧率) <br/> + “frameRate†设置想è¦çš„å¸§çŽ‡ä½ çš„æ¸¸æˆï¼Œä½†çœŸæ£çš„FPSå–å†³äºŽä½ çš„æ¸¸æˆå®žçŽ°å’Œè¿è¡ŒçŽ¯å¢ƒã€‚ <br/> + 5. id <br/> + "gameCanvas" Web 页é¢ä¸Šçš„ Canvas Element ID,仅适用于 web 端。 <br/> + 6. renderMode(渲染模å¼ï¼‰ <br/> + “renderMode†设置渲染器类型,仅适用于 web 端: <br/> + 0 - 通过引擎自动选择。 <br/> + 1 - 强制使用 canvas 渲染。 + 2 - 强制使用 WebGL 渲染,但是在部分 Android æµè§ˆå™¨ä¸è¿™ä¸ªé€‰é¡¹ä¼šè¢«å¿½ç•¥ã€‚ <br/> + <br/> + 注æ„:请ä¸è¦ç›´æŽ¥ä¿®æ”¹è¿™ä¸ªå¯¹è±¡ï¼Œå®ƒä¸ä¼šæœ‰ä»»ä½•效果。 */ + config: any; + /** + !#en Callback when the scripts of engine have been load. + !#zh 当引擎完æˆå¯åЍåŽçš„回调函数。 + */ + onStart(): void; + /** + !#en Set frame rate of game. + !#zh 设置游æˆå¸§çŽ‡ã€‚ + @param frameRate frameRate + */ + setFrameRate(frameRate: number): void; + /** + !#en Get frame rate set for the game, it doesn't represent the real frame rate. + !#zh 获å–设置的游æˆå¸§çŽ‡ï¼ˆä¸ç‰åŒäºŽå®žé™…帧率)。 + */ + getFrameRate(): number; + /** + !#en Run the game frame by frame. + !#zh 执行一帧游æˆå¾ªçŽ¯ã€‚ + */ + step(): void; + /** + !#en Pause the game main loop. This will pause: + game logic execution, rendering process, event manager, background music and all audio effects. + This is different with cc.director.pause which only pause the game logic execution. + !#zh æš‚åœæ¸¸æˆä¸»å¾ªçŽ¯ã€‚åŒ…å«ï¼šæ¸¸æˆé€»è¾‘,渲染,事件处ç†ï¼ŒèƒŒæ™¯éŸ³ä¹å’Œæ‰€æœ‰éŸ³æ•ˆã€‚è¿™ç‚¹å’Œåªæš‚åœæ¸¸æˆé€»è¾‘çš„ cc.director.pause ä¸åŒã€‚ + */ + pause(): void; + /** + !#en Resume the game from pause. This will resume: + game logic execution, rendering process, event manager, background music and all audio effects. + !#zh æ¢å¤æ¸¸æˆä¸»å¾ªçŽ¯ã€‚åŒ…å«ï¼šæ¸¸æˆé€»è¾‘,渲染,事件处ç†ï¼ŒèƒŒæ™¯éŸ³ä¹å’Œæ‰€æœ‰éŸ³æ•ˆã€‚ + */ + resume(): void; + /** + !#en Check whether the game is paused. + !#zh åˆ¤æ–æ¸¸æˆæ˜¯å¦æš‚åœã€‚ + */ + isPaused(): boolean; + /** + !#en Restart game. + !#zh 釿–°å¼€å§‹æ¸¸æˆ + */ + restart(): void; + /** + !#en End game, it will close the game window + !#zh é€€å‡ºæ¸¸æˆ + */ + end(): void; + /** + !#en + Register an callback of a specific event type on the game object. + This type of event should be triggered via `emit`. + !#zh + 注册 game 的特定事件类型回调。这ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Register an callback of a specific event type on the game object, + the callback will remove itself after the first time it is triggered. + !#zh + 注册 game 的特定事件类型回调,回调会在第一时间被触å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en Prepare game. + !#zh 准备引擎,请ä¸è¦ç›´æŽ¥è°ƒç”¨è¿™ä¸ªå‡½æ•°ã€‚ + @param cb cb + */ + prepare(cb: Function): void; + /** + !#en Run game with configuration object and onStart function. + !#zh è¿è¡Œæ¸¸æˆï¼Œå¹¶ä¸”指定引擎é…置和 onStart 的回调。 + @param config Pass configuration object or onStart function + @param onStart function to be executed after game initialized + */ + run(config: any, onStart: Function): void; + /** + !#en + Add a persistent root node to the game, the persistent node won't be destroyed during scene transition.<br/> + The target node must be placed in the root level of hierarchy, otherwise this API won't have any effect. + !#zh + å£°æ˜Žå¸¸é©»æ ¹èŠ‚ç‚¹ï¼Œè¯¥èŠ‚ç‚¹ä¸ä¼šè¢«åœ¨åœºæ™¯åˆ‡æ¢ä¸è¢«é”€æ¯ã€‚<br/> + ç›®æ ‡èŠ‚ç‚¹å¿…é¡»ä½äºŽä¸ºå±‚çº§çš„æ ¹èŠ‚ç‚¹ï¼Œå¦åˆ™æ— 效。 + @param node The node to be made persistent + */ + addPersistRootNode(node: Node): void; + /** + !#en Remove a persistent root node. + !#zh å–æ¶ˆå¸¸é©»æ ¹èŠ‚ç‚¹ã€‚ + @param node The node to be removed from persistent node list + */ + removePersistRootNode(node: Node): void; + /** + !#en Check whether the node is a persistent root node. + !#zh æ£€æŸ¥èŠ‚ç‚¹æ˜¯å¦æ˜¯å¸¸é©»æ ¹èŠ‚ç‚¹ã€‚ + @param node The node to be checked + */ + isPersistRootNode(node: Node): boolean; + } + /** !#en + Class of all entities in Cocos Creator scenes.<br/> + For events supported by Node, please refer to {{#crossLink "Node.EventType"}}{{/crossLink}} + !#zh + Cocos Creator 场景ä¸çš„æ‰€æœ‰èŠ‚ç‚¹ç±»ã€‚<br/> + 支æŒçš„节点事件,请å‚阅 {{#crossLink "Node.EventType"}}{{/crossLink}}。 */ + export class Node extends _BaseNode { + /** !#en + Group index of node.<br/> + Which Group this node belongs to will resolve that this node's collision components can collide with which other collision componentns.<br/> + !#zh + 节点的分组索引。<br/> + 节点的分组将关系到节点的碰撞组件å¯ä»¥ä¸Žå“ªäº›ç¢°æ’žç»„件相碰撞。<br/> */ + groupIndex: number; + /** !#en + Group of node.<br/> + Which Group this node belongs to will resolve that this node's collision components can collide with which other collision componentns.<br/> + !#zh + 节点的分组。<br/> + 节点的分组将关系到节点的碰撞组件å¯ä»¥ä¸Žå“ªäº›ç¢°æ’žç»„件相碰撞。<br/> */ + group: string; + /** !#en The position (x, y) of the node in its parent's coordinates. + !#zh èŠ‚ç‚¹åœ¨çˆ¶èŠ‚ç‚¹åæ ‡ç³»ä¸çš„ä½ç½®ï¼ˆx, y)。 */ + position: Vec3; + /** !#en x axis position of node. + !#zh 节点 X è½´åæ ‡ã€‚ */ + x: number; + /** !#en y axis position of node. + !#zh 节点 Y è½´åæ ‡ã€‚ */ + y: number; + /** !#en z axis position of node. + !#zh 节点 Z è½´åæ ‡ã€‚ */ + z: number; + /** !#en Rotation of node. + !#zh 该节点旋转角度。 */ + rotation: number; + /** !#en + Angle of node, the positive value is anti-clockwise direction. + !#zh + 该节点的旋转角度,æ£å€¼ä¸ºé€†æ—¶é’ˆæ–¹å‘。 */ + angle: number; + /** !#en The rotation as Euler angles in degrees, used in 3D node. + !#zh 该节点的欧拉角度,用于 3D 节点。 */ + eulerAngles: Vec3; + /** !#en Rotation on x axis. + !#zh 该节点 X 轴旋转角度。 */ + rotationX: number; + /** !#en Rotation on y axis. + !#zh 该节点 Y 轴旋转角度。 */ + rotationY: number; + /** !#en The local scale relative to the parent. + !#zh 节点相对父节点的缩放。 */ + scale: number; + /** !#en Scale on x axis. + !#zh 节点 X 轴缩放。 */ + scaleX: number; + /** !#en Scale on y axis. + !#zh 节点 Y 轴缩放。 */ + scaleY: number; + /** !#en Scale on z axis. + !#zh 节点 Z 轴缩放。 */ + scaleZ: number; + /** !#en Skew x + !#zh 该节点 X 轴倾斜角度。 */ + skewX: number; + /** !#en Skew y + !#zh 该节点 Y 轴倾斜角度。 */ + skewY: number; + /** !#en Opacity of node, default value is 255. + !#zh èŠ‚ç‚¹é€æ˜Žåº¦ï¼Œé»˜è®¤å€¼ä¸º 255。 */ + opacity: number; + /** !#en Color of node, default value is white: (255, 255, 255). + !#zh 节点颜色。默认为白色,数值为:(255,255,255)。 */ + color: Color; + /** !#en Anchor point's position on x axis. + !#zh 节点 X 轴锚点ä½ç½®ã€‚ */ + anchorX: number; + /** !#en Anchor point's position on y axis. + !#zh 节点 Y 轴锚点ä½ç½®ã€‚ */ + anchorY: number; + /** !#en Width of node. + !#zh 节点宽度。 */ + width: number; + /** !#en Height of node. + !#zh 节点高度。 */ + height: number; + /** !#en zIndex is the 'key' used to sort the node relative to its siblings.<br/> + The value of zIndex should be in the range between cc.macro.MIN_ZINDEX and cc.macro.MAX_ZINDEX.<br/> + The Node's parent will sort all its children based on the zIndex value and the arrival order.<br/> + Nodes with greater zIndex will be sorted after nodes with smaller zIndex.<br/> + If two nodes have the same zIndex, then the node that was added first to the children's array will be in front of the other node in the array.<br/> + Node's order in children list will affect its rendering order. Parent is always rendering before all children. + !#zh zIndex 是用æ¥å¯¹èŠ‚ç‚¹è¿›è¡ŒæŽ’åºçš„关键属性,它决定一个节点在兄弟节点之间的ä½ç½®ã€‚<br/> + zIndex çš„å–值应该介于 cc.macro.MIN_ZINDEX å’Œ cc.macro.MAX_ZINDEX 之间 + çˆ¶èŠ‚ç‚¹ä¸»è¦æ ¹æ®èŠ‚ç‚¹çš„ zIndex å’Œæ·»åŠ æ¬¡åºæ¥æŽ’åºï¼Œæ‹¥æœ‰æ›´é«˜ zIndex 的节点将被排在åŽé¢ï¼Œå¦‚果两个节点的 zIndex ä¸€è‡´ï¼Œå…ˆæ·»åŠ çš„èŠ‚ç‚¹ä¼šç¨³å®šæŽ’åœ¨å¦ä¸€ä¸ªèŠ‚ç‚¹ä¹‹å‰ã€‚<br/> + 节点在 children ä¸çš„顺åºå†³å®šäº†å…¶æ¸²æŸ“顺åºã€‚父节点永远在所有å节点之å‰è¢«æ¸²æŸ“ */ + zIndex: number; + /** !#en + Switch 2D/3D node. The 2D nodes will run faster. + !#zh + åˆ‡æ¢ 2D/3D 节点,2D 节点会有更高的è¿è¡Œæ•ˆçއ */ + is3DNode: boolean; + /** !#en Returns a normalized vector representing the up direction (Y axis) of the node in world space. + !#zh 获å–节点æ£ä¸Šæ–¹ï¼ˆy 轴)é¢å¯¹çš„æ–¹å‘ï¼Œè¿”å›žå€¼ä¸ºä¸–ç•Œåæ ‡ç³»ä¸‹çš„归一化å‘é‡ */ + up: Vec3; + /** !#en Returns a normalized vector representing the right direction (X axis) of the node in world space. + !#zh 获å–节点æ£å³æ–¹ï¼ˆx 轴)é¢å¯¹çš„æ–¹å‘ï¼Œè¿”å›žå€¼ä¸ºä¸–ç•Œåæ ‡ç³»ä¸‹çš„归一化å‘é‡ */ + right: Vec3; + /** !#en Returns a normalized vector representing the forward direction (Z axis) of the node in world space. + !#zh 获å–节点æ£å‰æ–¹ï¼ˆz 轴)é¢å¯¹çš„æ–¹å‘ï¼Œè¿”å›žå€¼ä¸ºä¸–ç•Œåæ ‡ç³»ä¸‹çš„归一化å‘é‡ */ + forward: Vec3; + /** + + @param name name + */ + constructor(name?: string); + /** + !#en + Register a callback of a specific event type on Node.<br/> + Use this method to register touch or mouse event permit propagation based on scene graph,<br/> + These kinds of event are triggered with dispatchEvent, the dispatch process has three steps:<br/> + 1. Capturing phase: dispatch in capture targets (`_getCapturingTargets`), e.g. parents in node tree, from root to the real target<br/> + 2. At target phase: dispatch to the listeners of the real target<br/> + 3. Bubbling phase: dispatch in bubble targets (`_getBubblingTargets`), e.g. parents in node tree, from the real target to root<br/> + In any moment of the dispatching process, it can be stopped via `event.stopPropagation()` or `event.stopPropagationImmidiate()`.<br/> + It's the recommended way to register touch/mouse event for Node,<br/> + please do not use cc.eventManager directly for Node.<br/> + You can also register custom event and use `emit` to trigger custom event on Node.<br/> + For such events, there won't be capturing and bubbling phase, your event will be dispatched directly to its listeners registered on the same node.<br/> + You can also pass event callback parameters with `emit` by passing parameters after `type`. + !#zh + 在节点上注册指定类型的回调函数,也å¯ä»¥è®¾ç½® target 用于绑定å“应函数的 this 对象。<br/> + é¼ æ ‡æˆ–è§¦æ‘¸äº‹ä»¶ä¼šè¢«ç³»ç»Ÿè°ƒç”¨ dispatchEvent 方法触å‘,触å‘的过程包å«ä¸‰ä¸ªé˜¶æ®µï¼š<br/> + 1. æ•获阶段:派å‘事件给æ•èŽ·ç›®æ ‡ï¼ˆé€šè¿‡ `_getCapturingTargets` 获å–ï¼‰ï¼Œæ¯”å¦‚ï¼ŒèŠ‚ç‚¹æ ‘ä¸æ³¨å†Œäº†æ•èŽ·é˜¶æ®µçš„çˆ¶èŠ‚ç‚¹ï¼Œä»Žæ ¹èŠ‚ç‚¹å¼€å§‹æ´¾å‘ç›´åˆ°ç›®æ ‡èŠ‚ç‚¹ã€‚<br/> + 2. ç›®æ ‡é˜¶æ®µï¼šæ´¾å‘ç»™ç›®æ ‡èŠ‚ç‚¹çš„ç›‘å¬å™¨ã€‚<br/> + 3. 冒泡阶段:派å‘äº‹ä»¶ç»™å†’æ³¡ç›®æ ‡ï¼ˆé€šè¿‡ `_getBubblingTargets` 获å–ï¼‰ï¼Œæ¯”å¦‚ï¼ŒèŠ‚ç‚¹æ ‘ä¸æ³¨å†Œäº†å†’æ³¡é˜¶æ®µçš„çˆ¶èŠ‚ç‚¹ï¼Œä»Žç›®æ ‡èŠ‚ç‚¹å¼€å§‹æ´¾å‘ç›´åˆ°æ ¹èŠ‚ç‚¹ã€‚<br/> + åŒæ—¶æ‚¨å¯ä»¥å°†äº‹ä»¶æ´¾å‘到父节点或者通过调用 stopPropagation 拦截它。<br/> + 推èä½¿ç”¨è¿™ç§æ–¹å¼æ¥ç›‘å¬èŠ‚ç‚¹ä¸Šçš„è§¦æ‘¸æˆ–é¼ æ ‡äº‹ä»¶ï¼Œè¯·ä¸è¦åœ¨èŠ‚ç‚¹ä¸Šç›´æŽ¥ä½¿ç”¨ cc.eventManager。<br/> + ä½ ä¹Ÿå¯ä»¥æ³¨å†Œè‡ªå®šä¹‰äº‹ä»¶åˆ°èŠ‚ç‚¹ä¸Šï¼Œå¹¶é€šè¿‡ emit æ–¹æ³•è§¦å‘æ¤ç±»äº‹ä»¶ï¼Œå¯¹äºŽè¿™ç±»äº‹ä»¶ï¼Œä¸ä¼šå‘生æ•获冒泡阶段,åªä¼šç›´æŽ¥æ´¾å‘给注册在该节点上的监å¬å™¨<br/> + ä½ å¯ä»¥é€šè¿‡åœ¨ emit 方法调用时在 type 之åŽä¼ 递é¢å¤–çš„å‚æ•°ä½œä¸ºäº‹ä»¶å›žè°ƒçš„傿•°åˆ—表 + @param type A string representing the event type to listen for.<br>See {{#crossLink "Node/EventTyupe/POSITION_CHANGED"}}Node Events{{/crossLink}} for all builtin events. + @param callback The callback that will be invoked when the event is dispatched. The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + @param useCapture When set to true, the listener will be triggered at capturing phase which is ahead of the final target emit, otherwise it will be triggered during bubbling phase. + + @example + ```js + this.node.on(cc.Node.EventType.TOUCH_START, this.memberFunction, this); // if "this" is component and the "memberFunction" declared in CCClass. + node.on(cc.Node.EventType.TOUCH_START, callback, this); + node.on(cc.Node.EventType.TOUCH_MOVE, callback, this); + node.on(cc.Node.EventType.TOUCH_END, callback, this); + node.on(cc.Node.EventType.TOUCH_CANCEL, callback, this); + node.on(cc.Node.EventType.ANCHOR_CHANGED, callback); + node.on(cc.Node.EventType.COLOR_CHANGED, callback); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Register an callback of a specific event type on the Node, + the callback will remove itself after the first time it is triggered. + !#zh + 注册节点的特定事件类型回调,回调会在第一时间被触å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + node.once(cc.Node.EventType.ANCHOR_CHANGED, callback); + ``` + */ + once<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the callback previously registered with the same type, callback, target and or useCapture. + This method is merely an alias to removeEventListener. + !#zh åˆ é™¤ä¹‹å‰ä¸ŽåŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的回调。 + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + @param useCapture When set to true, the listener will be triggered at capturing phase which is ahead of the final target emit, otherwise it will be triggered during bubbling phase. + + @example + ```js + this.node.off(cc.Node.EventType.TOUCH_START, this.memberFunction, this); + node.off(cc.Node.EventType.TOUCH_START, callback, this.node); + node.off(cc.Node.EventType.ANCHOR_CHANGED, callback, this); + ``` + */ + off(type: string, callback?: Function, target?: any, useCapture?: boolean): void; + /** + !#en Removes all callbacks previously registered with the same target. + !#zh ç§»é™¤ç›®æ ‡ä¸Šçš„æ‰€æœ‰æ³¨å†Œäº‹ä»¶ã€‚ + @param target The target to be searched for all related callbacks + + @example + ```js + node.targetOff(target); + ``` + */ + targetOff(target: any): void; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Trigger an event directly with the event name and necessary arguments. + !#zh + 通过事件åå‘é€è‡ªå®šä¹‰äº‹ä»¶ + @param type event type + @param arg1 First argument in callback + @param arg2 Second argument in callback + @param arg3 Third argument in callback + @param arg4 Fourth argument in callback + @param arg5 Fifth argument in callback + + @example + ```js + eventTarget.emit('fire', event); + eventTarget.emit('fire', message, emitter); + ``` + */ + emit(type: string, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any): void; + /** + !#en + Dispatches an event into the event flow. + The event target is the EventTarget object upon which the dispatchEvent() method is called. + !#zh 分å‘事件到事件æµä¸ã€‚ + @param event The Event object that is dispatched into the event flow + */ + dispatchEvent(event: Event): void; + /** + !#en Pause node related system events registered with the current Node. Node system events includes touch and mouse events. + If recursive is set to true, then this API will pause the node system events for the node and all nodes in its sub node tree. + Reference: http://docs.cocos2d-x.org/editors_and_tools/creator-chapters/scripting/internal-events/ + !#zh æš‚åœå½“å‰èŠ‚ç‚¹ä¸Šæ³¨å†Œçš„æ‰€æœ‰èŠ‚ç‚¹ç³»ç»Ÿäº‹ä»¶ï¼ŒèŠ‚ç‚¹ç³»ç»Ÿäº‹ä»¶åŒ…å«è§¦æ‘¸å’Œé¼ æ ‡äº‹ä»¶ã€‚ + å¦‚æžœä¼ é€’ recursive 为 true,那么这个 API å°†æš‚åœæœ¬èŠ‚ç‚¹å’Œå®ƒçš„åæ ‘上所有节点的节点系统事件。 + å‚考:https://www.cocos.com/docs/creator/scripting/internal-events.html + @param recursive Whether to pause node system events on the sub node tree. + + @example + ```js + node.pauseSystemEvents(true); + ``` + */ + pauseSystemEvents(recursive: boolean): void; + /** + !#en Resume node related system events registered with the current Node. Node system events includes touch and mouse events. + If recursive is set to true, then this API will resume the node system events for the node and all nodes in its sub node tree. + Reference: http://docs.cocos2d-x.org/editors_and_tools/creator-chapters/scripting/internal-events/ + !#zh æ¢å¤å½“å‰èŠ‚ç‚¹ä¸Šæ³¨å†Œçš„æ‰€æœ‰èŠ‚ç‚¹ç³»ç»Ÿäº‹ä»¶ï¼ŒèŠ‚ç‚¹ç³»ç»Ÿäº‹ä»¶åŒ…å«è§¦æ‘¸å’Œé¼ æ ‡äº‹ä»¶ã€‚ + å¦‚æžœä¼ é€’ recursive 为 true,那么这个 API å°†æ¢å¤æœ¬èŠ‚ç‚¹å’Œå®ƒçš„åæ ‘上所有节点的节点系统事件。 + å‚考:https://www.cocos.com/docs/creator/scripting/internal-events.html + @param recursive Whether to resume node system events on the sub node tree. + + @example + ```js + node.resumeSystemEvents(true); + ``` + */ + resumeSystemEvents(recursive: boolean): void; + /** + !#en + Executes an action, and returns the action that is executed.<br/> + The node becomes the action's target. Refer to cc.Action's getTarget() <br/> + Calling runAction while the node is not active won't have any effect. <br/> + Note:You shouldn't modify the action after runAction, that won't take any effect.<br/> + if you want to modify, when you define action plus. + !#zh + æ‰§è¡Œå¹¶è¿”å›žè¯¥æ‰§è¡Œçš„åŠ¨ä½œã€‚è¯¥èŠ‚ç‚¹å°†ä¼šå˜æˆåŠ¨ä½œçš„ç›®æ ‡ã€‚<br/> + 调用 runAction æ—¶ï¼ŒèŠ‚ç‚¹è‡ªèº«å¤„äºŽä¸æ¿€æ´»çжæ€å°†ä¸ä¼šæœ‰ä»»ä½•效果。<br/> + 注æ„ï¼šä½ ä¸åº”该修改 runAction åŽçš„åŠ¨ä½œï¼Œå°†æ— æ³•å‘æŒ¥ä½œç”¨ï¼Œå¦‚果想进行修改,请在定义 action æ—¶åŠ å…¥ã€‚ + @param action action + + @example + ```js + var action = cc.scaleTo(0.2, 1, 0.6); + node.runAction(action); + node.runAction(action).repeatForever(); // fail + node.runAction(action.repeatForever()); // right + ``` + */ + runAction(action: Action): Action; + /** + !#en Pause all actions running on the current node. Equals to `cc.director.getActionManager().pauseTarget(node)`. + !#zh æš‚åœæœ¬èŠ‚ç‚¹ä¸Šæ‰€æœ‰æ£åœ¨è¿è¡Œçš„动作。和 `cc.director.getActionManager().pauseTarget(node);` ç‰ä»·ã€‚ + + @example + ```js + node.pauseAllActions(); + ``` + */ + pauseAllActions(): void; + /** + !#en Resume all paused actions on the current node. Equals to `cc.director.getActionManager().resumeTarget(node)`. + !#zh æ¢å¤è¿è¡Œæœ¬èŠ‚ç‚¹ä¸Šæ‰€æœ‰æš‚åœçš„动作。和 `cc.director.getActionManager().resumeTarget(node);` ç‰ä»·ã€‚ + + @example + ```js + node.resumeAllActions(); + ``` + */ + resumeAllActions(): void; + /** + !#en Stops and removes all actions from the running action list . + !#zh åœæ¢å¹¶ä¸”移除所有æ£åœ¨è¿è¡Œçš„动作列表。 + + @example + ```js + node.stopAllActions(); + ``` + */ + stopAllActions(): void; + /** + !#en Stops and removes an action from the running action list. + !#zh åœæ¢å¹¶ç§»é™¤æŒ‡å®šçš„动作。 + @param action An action object to be removed. + + @example + ```js + var action = cc.scaleTo(0.2, 1, 0.6); + node.stopAction(action); + ``` + */ + stopAction(action: Action): void; + /** + !#en Removes an action from the running action list by its tag. + !#zh åœæ¢å¹¶ä¸”ç§»é™¤æŒ‡å®šæ ‡ç¾çš„动作。 + @param tag A tag that indicates the action to be removed. + + @example + ```js + node.stopActionByTag(1); + ``` + */ + stopActionByTag(tag: number): void; + /** + !#en Returns an action from the running action list by its tag. + !#zh é€šè¿‡æ ‡ç¾èŽ·å–æŒ‡å®šåŠ¨ä½œã€‚ + @param tag tag + + @example + ```js + var action = node.getActionByTag(1); + ``` + */ + getActionByTag(tag: number): Action; + /** + !#en + Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays).<br/> + Composable actions are counted as 1 action. Example:<br/> + If you are running 1 Sequence of 7 actions, it will return 1. <br/> + If you are running 7 Sequences of 2 actions, it will return 7.</p> + !#zh + 获å–è¿è¡Œç€çš„åŠ¨ä½œåŠ ä¸Šæ£åœ¨è°ƒåº¦è¿è¡Œçš„动作的总数。<br/> + 例如:<br/> + - å¦‚æžœä½ æ£åœ¨è¿è¡Œ 7 个动作ä¸çš„ 1 个 Sequence,它将返回 1。<br/> + - å¦‚æžœä½ æ£åœ¨è¿è¡Œ 2 个动作ä¸çš„ 7 个 Sequence,它将返回 7。<br/> + + @example + ```js + var count = node.getNumberOfRunningActions(); + cc.log("Running Action Count: " + count); + ``` + */ + getNumberOfRunningActions(): number; + /** + !#en + Returns a copy of the position (x, y, z) of the node in its parent's coordinates. + You can pass a cc.Vec2 or cc.Vec3 as the argument to receive the return values. + !#zh + 获å–èŠ‚ç‚¹åœ¨çˆ¶èŠ‚ç‚¹åæ ‡ç³»ä¸çš„ä½ç½®ï¼ˆx, y, z)。 + ä½ å¯ä»¥ä¼ 一个 cc.Vec2 或者 cc.Vec3 ä½œä¸ºå‚æ•°æ¥æŽ¥æ”¶è¿”回值。 + @param out The return value to receive position + + @example + ```js + cc.log("Node Position: " + node.getPosition()); + ``` + */ + getPosition(out?: Vec2|Vec3): Vec2; + /** + !#en + Sets the position (x, y, z) of the node in its parent's coordinates.<br/> + Usually we use cc.v2(x, y) to compose cc.Vec2 object,<br/> + and passing two numbers (x, y) is more efficient than passing cc.Vec2 object. + For 3D node we can use cc.v3(x, y, z) to compose cc.Vec3 object,<br/> + and passing three numbers (x, y, z) is more efficient than passing cc.Vec3 object. + !#zh + è®¾ç½®èŠ‚ç‚¹åœ¨çˆ¶èŠ‚ç‚¹åæ ‡ç³»ä¸çš„ä½ç½®ã€‚<br/> + å¯ä»¥é€šè¿‡ä¸‹é¢çš„æ–¹å¼è®¾ç½®åæ ‡ç‚¹ï¼š<br/> + 1. ä¼ å…¥ 2 个数值 x, y。<br/> + 2. ä¼ å…¥ cc.v2(x, y) 类型为 cc.Vec2 的对象。 + 3. 对于 3D 节点å¯ä»¥ä¼ å…¥ 3 个数值 x, y, z。<br/> + 4. 对于 3D 节点å¯ä»¥ä¼ å…¥ cc.v3(x, y, z) 类型为 cc.Vec3 的对象。 + @param newPosOrX X coordinate for position or the position (x, y, z) of the node in coordinates + @param y Y coordinate for position + @param z Z coordinate for position + */ + setPosition(newPosOrX: Vec2|Vec3|number, y?: number, z?: number): void; + /** + !#en + Returns the scale factor of the node. + Need pass a cc.Vec2 or cc.Vec3 as the argument to receive the return values. + !#zh 获å–节点的缩放,需è¦ä¼ 一个 cc.Vec2 或者 cc.Vec3 ä½œä¸ºå‚æ•°æ¥æŽ¥æ”¶è¿”回值。 + @param out out + + @example + ```js + cc.log("Node Scale: " + node.getScale(cc.v3())); + ``` + */ + getScale(out: Vec2|Vec3): Vec2; + /** + !#en + Sets the scale of axis in local coordinates of the node. + You can operate 2 axis in 2D node, and 3 axis in 3D node. + !#zh + è®¾ç½®èŠ‚ç‚¹åœ¨æœ¬åœ°åæ ‡ç³»ä¸åæ ‡è½´ä¸Šçš„ç¼©æ”¾æ¯”ä¾‹ã€‚ + 2D 节点å¯ä»¥æ“ä½œä¸¤ä¸ªåæ ‡è½´ï¼Œè€Œ 3D 节点å¯ä»¥æ“ä½œä¸‰ä¸ªåæ ‡è½´ã€‚ + @param x scaleX or scale object + @param y y + @param z z + + @example + ```js + node.setScale(cc.v2(2, 2)); + node.setScale(cc.v3(2, 2, 2)); // for 3D node + node.setScale(2); + ``` + */ + setScale(x: number|Vec2|Vec3, y?: number, z?: number): void; + /** + !#en + Get rotation of node (in quaternion). + Need pass a cc.Quat as the argument to receive the return values. + !#zh + 获å–该节点的 quaternion 旋转角度,需è¦ä¼ 一个 cc.Quat ä½œä¸ºå‚æ•°æ¥æŽ¥æ”¶è¿”回值。 + @param out out + */ + getRotation(out: Quat): Quat; + /** + !#en Set rotation of node (in quaternion). + !#zh 设置该节点的 quaternion 旋转角度。 + @param quat Quaternion object represents the rotation or the x value of quaternion + @param y y value of quternion + @param z z value of quternion + @param w w value of quternion + */ + setRotation(quat: Quat|number, y?: number, z?: number, w?: number): void; + /** + !#en + Returns a copy the untransformed size of the node. <br/> + The contentSize remains the same no matter the node is scaled or rotated.<br/> + All nodes has a size. Layer and Scene has the same size of the screen by default. <br/> + !#zh 获å–节点自身大å°ï¼Œä¸å—该节点是å¦è¢«ç¼©æ”¾æˆ–者旋转的影å“。 + + @example + ```js + cc.log("Content Size: " + node.getContentSize()); + ``` + */ + getContentSize(): Size; + /** + !#en + Sets the untransformed size of the node.<br/> + The contentSize remains the same no matter the node is scaled or rotated.<br/> + All nodes has a size. Layer and Scene has the same size of the screen. + !#zh 设置节点原始大å°ï¼Œä¸å—该节点是å¦è¢«ç¼©æ”¾æˆ–者旋转的影å“。 + @param size The untransformed size of the node or The untransformed size's width of the node. + @param height The untransformed size's height of the node. + + @example + ```js + node.setContentSize(cc.size(100, 100)); + node.setContentSize(100, 100); + ``` + */ + setContentSize(size: Size|number, height?: number): void; + /** + !#en + Returns a copy of the anchor point.<br/> + Anchor point is the point around which all transformations and positioning manipulations take place.<br/> + It's like a pin in the node where it is "attached" to its parent. <br/> + The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner. <br/> + But you can use values higher than (1,1) and lower than (0,0) too. <br/> + The default anchor point is (0.5,0.5), so it starts at the center of the node. + !#zh + 获å–节点锚点,用百分比表示。<br/> + é”šç‚¹åº”ç”¨äºŽæ‰€æœ‰å˜æ¢å’Œåæ ‡ç‚¹çš„æ“作,它就åƒåœ¨èŠ‚ç‚¹ä¸Šè¿žæŽ¥å…¶çˆ¶èŠ‚ç‚¹çš„å¤§å¤´é’ˆã€‚<br/> + é”šç‚¹æ˜¯æ ‡å‡†åŒ–çš„ï¼Œå°±åƒç™¾åˆ†æ¯”ä¸€æ ·ã€‚(0,0) 表示左下角,(1,1) 表示å³ä¸Šè§’。<br/> + ä½†æ˜¯ä½ å¯ä»¥ä½¿ç”¨æ¯”(1,1)更高的值或者比(0,0)更低的值。<br/> + 默认的锚点是(0.5,0.5ï¼‰ï¼Œå› æ¤å®ƒå¼€å§‹äºŽèŠ‚ç‚¹çš„ä¸å¿ƒä½ç½®ã€‚<br/> + 注æ„:Creator ä¸çš„é”šç‚¹ä»…ç”¨äºŽå®šä½æ‰€åœ¨çš„节点,å节点的定ä½ä¸å—å½±å“。 + + @example + ```js + cc.log("Node AnchorPoint: " + node.getAnchorPoint()); + ``` + */ + getAnchorPoint(): Vec2; + /** + !#en + Sets the anchor point in percent. <br/> + anchor point is the point around which all transformations and positioning manipulations take place. <br/> + It's like a pin in the node where it is "attached" to its parent. <br/> + The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner.<br/> + But you can use values higher than (1,1) and lower than (0,0) too.<br/> + The default anchor point is (0.5,0.5), so it starts at the center of the node. + !#zh + 设置锚点的百分比。<br/> + é”šç‚¹åº”ç”¨äºŽæ‰€æœ‰å˜æ¢å’Œåæ ‡ç‚¹çš„æ“作,它就åƒåœ¨èŠ‚ç‚¹ä¸Šè¿žæŽ¥å…¶çˆ¶èŠ‚ç‚¹çš„å¤§å¤´é’ˆã€‚<br/> + é”šç‚¹æ˜¯æ ‡å‡†åŒ–çš„ï¼Œå°±åƒç™¾åˆ†æ¯”ä¸€æ ·ã€‚(0,0) 表示左下角,(1,1) 表示å³ä¸Šè§’。<br/> + ä½†æ˜¯ä½ å¯ä»¥ä½¿ç”¨æ¯”(1,1)更高的值或者比(0,0)更低的值。<br/> + 默认的锚点是(0.5,0.5ï¼‰ï¼Œå› æ¤å®ƒå¼€å§‹äºŽèŠ‚ç‚¹çš„ä¸å¿ƒä½ç½®ã€‚<br/> + 注æ„:Creator ä¸çš„é”šç‚¹ä»…ç”¨äºŽå®šä½æ‰€åœ¨çš„节点,å节点的定ä½ä¸å—å½±å“。 + @param point The anchor point of node or The x axis anchor of node. + @param y The y axis anchor of node. + + @example + ```js + node.setAnchorPoint(cc.v2(1, 1)); + node.setAnchorPoint(1, 1); + ``` + */ + setAnchorPoint(point: Vec2|number, y?: number): void; + /** + !#en Set rotation by lookAt target point, normally used by Camera Node + !#zh é€šè¿‡è§‚å¯Ÿç›®æ ‡æ¥è®¾ç½® rotation,一般用于 Camera Node 上 + @param pos pos + @param up default is (0,1,0) + */ + lookAt(pos: Vec3, up?: Vec3): void; + /** + !#en + Get the local transform matrix (4x4), based on parent node coordinates + !#zh è¿”å›žå±€éƒ¨ç©ºé—´åæ ‡ç³»çš„çŸ©é˜µï¼ŒåŸºäºŽçˆ¶èŠ‚ç‚¹åæ ‡ç³»ã€‚ + @param out The matrix object to be filled with data + + @example + ```js + let mat4 = cc.mat4(); + node.getLocalMatrix(mat4); + ``` + */ + getLocalMatrix(out: Mat4): Mat4; + /** + !#en + Get the world transform matrix (4x4) + !#zh è¿”å›žä¸–ç•Œç©ºé—´åæ ‡ç³»çš„矩阵。 + @param out The matrix object to be filled with data + + @example + ```js + let mat4 = cc.mat4(); + node.getWorldMatrix(mat4); + ``` + */ + getWorldMatrix(out: Mat4): Mat4; + /** + !#en + Converts a Point to node (local) space coordinates. + !#zh + 将一个点转æ¢åˆ°èŠ‚ç‚¹ (局部) ç©ºé—´åæ ‡ç³»ã€‚ + @param worldPoint worldPoint + @param out out + + @example + ```js + var newVec2 = node.convertToNodeSpaceAR(cc.v2(100, 100)); + var newVec3 = node.convertToNodeSpaceAR(cc.v3(100, 100, 100)); + ``` + */ + convertToNodeSpaceAR<T extends cc.Vec2 | cc.Vec3>(worldPoint: T, out?: T): T; + /** + !#en + Converts a Point in node coordinates to world space coordinates. + !#zh + å°†èŠ‚ç‚¹åæ ‡ç³»ä¸‹çš„一个点转æ¢åˆ°ä¸–ç•Œç©ºé—´åæ ‡ç³»ã€‚ + @param nodePoint nodePoint + @param out out + + @example + ```js + var newVec2 = node.convertToWorldSpaceAR(cc.v2(100, 100)); + var newVec3 = node.convertToWorldSpaceAR(cc.v3(100, 100, 100)); + ``` + */ + convertToWorldSpaceAR<T extends cc.Vec2 | cc.Vec3>(nodePoint: T, out?: T): T; + /** + !#en Converts a Point to node (local) space coordinates then add the anchor point position. + So the return position will be related to the left bottom corner of the node's bounding box. + This equals to the API behavior of cocos2d-x, you probably want to use convertToNodeSpaceAR instead + !#zh 将一个点转æ¢åˆ°èŠ‚ç‚¹ (局部) åæ ‡ç³»ï¼Œå¹¶åŠ ä¸Šé”šç‚¹çš„åæ ‡ã€‚<br/> + ä¹Ÿå°±æ˜¯è¯´è¿”å›žçš„åæ ‡æ˜¯ç›¸å¯¹äºŽèŠ‚ç‚¹åŒ…å›´ç›’å·¦ä¸‹è§’çš„åæ ‡ã€‚<br/> + 这个 API 的设计是为了和 cocos2d-x ä¸è¡Œä¸ºä¸€è‡´ï¼Œæ›´å¤šæƒ…å†µä¸‹ä½ å¯èƒ½éœ€è¦ä½¿ç”¨ convertToNodeSpaceAR。 + @param worldPoint worldPoint + + @example + ```js + var newVec2 = node.convertToNodeSpace(cc.v2(100, 100)); + ``` + */ + convertToNodeSpace(worldPoint: Vec2): Vec2; + /** + !#en Converts a Point related to the left bottom corner of the node's bounding box to world space coordinates. + This equals to the API behavior of cocos2d-x, you probably want to use convertToWorldSpaceAR instead + !#zh å°†ä¸€ä¸ªç›¸å¯¹äºŽèŠ‚ç‚¹å·¦ä¸‹è§’çš„åæ ‡ä½ç½®è½¬æ¢åˆ°ä¸–ç•Œç©ºé—´åæ ‡ç³»ã€‚ + 这个 API 的设计是为了和 cocos2d-x ä¸è¡Œä¸ºä¸€è‡´ï¼Œæ›´å¤šæƒ…å†µä¸‹ä½ å¯èƒ½éœ€è¦ä½¿ç”¨ convertToWorldSpaceAR + @param nodePoint nodePoint + + @example + ```js + var newVec2 = node.convertToWorldSpace(cc.v2(100, 100)); + ``` + */ + convertToWorldSpace(nodePoint: Vec2): Vec2; + /** + !#en + Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.<br/> + The matrix is in Pixels. + !#zh è¿”å›žè¿™ä¸ªå°†èŠ‚ç‚¹ï¼ˆå±€éƒ¨ï¼‰çš„ç©ºé—´åæ ‡ç³»è½¬æ¢æˆçˆ¶èŠ‚ç‚¹çš„ç©ºé—´åæ ‡ç³»çš„矩阵。这个矩阵以åƒç´ 为å•ä½ã€‚ + @param out The affine transform object to be filled with data + + @example + ```js + let affineTransform = cc.AffineTransform.create(); + node.getNodeToParentTransform(affineTransform); + ``` + */ + getNodeToParentTransform(out?: AffineTransform): AffineTransform; + /** + !#en + Returns the matrix that transform the node's (local) space coordinates into the parent's space coordinates.<br/> + The matrix is in Pixels.<br/> + This method is AR (Anchor Relative). + !#zh + è¿”å›žè¿™ä¸ªå°†èŠ‚ç‚¹ï¼ˆå±€éƒ¨ï¼‰çš„ç©ºé—´åæ ‡ç³»è½¬æ¢æˆçˆ¶èŠ‚ç‚¹çš„ç©ºé—´åæ ‡ç³»çš„矩阵。<br/> + 这个矩阵以åƒç´ 为å•ä½ã€‚<br/> + è¯¥æ–¹æ³•åŸºäºŽèŠ‚ç‚¹åæ ‡ã€‚ + @param out The affine transform object to be filled with data + + @example + ```js + let affineTransform = cc.AffineTransform.create(); + node.getNodeToParentTransformAR(affineTransform); + ``` + */ + getNodeToParentTransformAR(out?: AffineTransform): AffineTransform; + /** + !#en Returns the world affine transform matrix. The matrix is in Pixels. + !#zh è¿”å›žèŠ‚ç‚¹åˆ°ä¸–ç•Œåæ ‡ç³»çš„ä»¿å°„å˜æ¢çŸ©é˜µã€‚矩阵å•使˜¯åƒç´ 。 + @param out The affine transform object to be filled with data + + @example + ```js + let affineTransform = cc.AffineTransform.create(); + node.getNodeToWorldTransform(affineTransform); + ``` + */ + getNodeToWorldTransform(out?: AffineTransform): AffineTransform; + /** + !#en + Returns the world affine transform matrix. The matrix is in Pixels.<br/> + This method is AR (Anchor Relative). + !#zh + è¿”å›žèŠ‚ç‚¹åˆ°ä¸–ç•Œåæ ‡ä»¿å°„å˜æ¢çŸ©é˜µã€‚矩阵å•使˜¯åƒç´ 。<br/> + è¯¥æ–¹æ³•åŸºäºŽèŠ‚ç‚¹åæ ‡ã€‚ + @param out The affine transform object to be filled with data + + @example + ```js + let affineTransform = cc.AffineTransform.create(); + node.getNodeToWorldTransformAR(affineTransform); + ``` + */ + getNodeToWorldTransformAR(out?: AffineTransform): AffineTransform; + /** + !#en + Returns the matrix that transform parent's space coordinates to the node's (local) space coordinates.<br/> + The matrix is in Pixels. The returned transform is readonly and cannot be changed. + !#zh + è¿”å›žå°†çˆ¶èŠ‚ç‚¹çš„åæ ‡ç³»è½¬æ¢æˆèŠ‚ç‚¹ï¼ˆå±€éƒ¨ï¼‰çš„ç©ºé—´åæ ‡ç³»çš„矩阵。<br/> + 该矩阵以åƒç´ 为å•ä½ã€‚返回的矩阵是åªè¯»çš„,ä¸èƒ½æ›´æ”¹ã€‚ + @param out The affine transform object to be filled with data + + @example + ```js + let affineTransform = cc.AffineTransform.create(); + node.getParentToNodeTransform(affineTransform); + ``` + */ + getParentToNodeTransform(out?: AffineTransform): AffineTransform; + /** + !#en Returns the inverse world affine transform matrix. The matrix is in Pixels. + !#en è¿”å›žä¸–ç•Œåæ ‡ç³»åˆ°èŠ‚ç‚¹åæ ‡ç³»çš„逆矩阵。 + @param out The affine transform object to be filled with data + + @example + ```js + let affineTransform = cc.AffineTransform.create(); + node.getWorldToNodeTransform(affineTransform); + ``` + */ + getWorldToNodeTransform(out?: AffineTransform): AffineTransform; + /** + !#en convenience methods which take a cc.Touch instead of cc.Vec2. + !#zh å°†è§¦æ‘¸ç‚¹è½¬æ¢æˆæœ¬åœ°åæ ‡ç³»ä¸ä½ç½®ã€‚ + @param touch The touch object + + @example + ```js + var newVec2 = node.convertTouchToNodeSpace(touch); + ``` + */ + convertTouchToNodeSpace(touch: Touch): Vec2; + /** + !#en converts a cc.Touch (world coordinates) into a local coordinate. This method is AR (Anchor Relative). + !#zh 转æ¢ä¸€ä¸ª cc.Touchï¼ˆä¸–ç•Œåæ ‡ï¼‰åˆ°ä¸€ä¸ªå±€éƒ¨åæ ‡ï¼Œè¯¥æ–¹æ³•åŸºäºŽèŠ‚ç‚¹åæ ‡ã€‚ + @param touch The touch object + + @example + ```js + var newVec2 = node.convertTouchToNodeSpaceAR(touch); + ``` + */ + convertTouchToNodeSpaceAR(touch: Touch): Vec2; + /** + !#en + Returns a "local" axis aligned bounding box of the node. <br/> + The returned box is relative only to its parent. + !#zh è¿”å›žçˆ¶èŠ‚åæ ‡ç³»ä¸‹çš„è½´å‘对é½çš„包围盒。 + + @example + ```js + var boundingBox = node.getBoundingBox(); + ``` + */ + getBoundingBox(): Rect; + /** + !#en + Returns a "world" axis aligned bounding box of the node.<br/> + The bounding box contains self and active children's world bounding box. + !#zh + è¿”å›žèŠ‚ç‚¹åœ¨ä¸–ç•Œåæ ‡ç³»ä¸‹çš„对é½è½´å‘的包围盒(AABB)。<br/> + 该边框包å«è‡ªèº«å’Œå·²æ¿€æ´»çš„å节点的世界边框。 + + @example + ```js + var newRect = node.getBoundingBoxToWorld(); + ``` + */ + getBoundingBoxToWorld(): Rect; + /** + !#en + Adds a child to the node with z order and name. + !#zh + æ·»åŠ å节点,并且å¯ä»¥ä¿®æ”¹è¯¥èŠ‚ç‚¹çš„ 局部 Z 顺åºå’Œåå—。 + @param child A child node + @param zIndex Z order for drawing priority. Please refer to zIndex property + @param name A name to identify the node easily. Please refer to name property + + @example + ```js + node.addChild(newNode, 1, "node"); + ``` + */ + addChild(child: Node, zIndex?: number, name?: string): void; + /** + !#en Stops all running actions and schedulers. + !#zh åœæ¢æ‰€æœ‰æ£åœ¨æ’放的动作和计时器。 + + @example + ```js + node.cleanup(); + ``` + */ + cleanup(): void; + /** + !#en Sorts the children array depends on children's zIndex and arrivalOrder, + normally you won't need to invoke this function. + !#zh æ ¹æ®å节点的 zIndex å’Œ arrivalOrder 进行排åºï¼Œæ£å¸¸æƒ…况下开å‘者ä¸éœ€è¦æ‰‹åŠ¨è°ƒç”¨è¿™ä¸ªå‡½æ•°ã€‚ + */ + sortAllChildren(): void; + /** + !#en + Returns the displayed opacity of Node, + the difference between displayed opacity and opacity is that displayed opacity is calculated based on opacity and parent node's opacity when cascade opacity enabled. + !#zh + 获å–èŠ‚ç‚¹æ˜¾ç¤ºé€æ˜Žåº¦ï¼Œ + æ˜¾ç¤ºé€æ˜Žåº¦å’Œé€æ˜Žåº¦ä¹‹é—´çš„ä¸åŒä¹‹å¤„在于当å¯ç”¨çº§è¿žé€æ˜Žåº¦æ—¶ï¼Œ + æ˜¾ç¤ºé€æ˜Žåº¦æ˜¯åŸºäºŽè‡ªèº«é€æ˜Žåº¦å’Œçˆ¶èŠ‚ç‚¹é€æ˜Žåº¦è®¡ç®—的。 + */ + getDisplayedOpacity(): number; + /** + !#en + Returns the displayed color of Node, + the difference between displayed color and color is that displayed color is calculated based on color and parent node's color when cascade color enabled. + !#zh + 获å–节点的显示颜色, + 显示颜色和颜色之间的ä¸åŒä¹‹å¤„在于当å¯ç”¨çº§è¿žé¢œè‰²æ—¶ï¼Œ + 显示颜色是基于自身颜色和父节点颜色计算的。 + */ + getDisplayedColor(): Color; + /** !#en Cascade opacity is removed from v2.0 + Indicate whether node's opacity value affect its child nodes, default value is true. + !#zh 逿˜Žåº¦çº§è”功能从 v2.0 开始已移除 + 节点的ä¸é€æ˜Žåº¦å€¼æ˜¯å¦å½±å“å…¶å节点,默认值为 true。 */ + cascadeOpacity: boolean; + /** + !#en Cascade opacity is removed from v2.0 + Returns whether node's opacity value affect its child nodes. + !#zh 逿˜Žåº¦çº§è”功能从 v2.0 开始已移除 + 返回节点的ä¸é€æ˜Žåº¦å€¼æ˜¯å¦å½±å“å…¶å节点。 + */ + isCascadeOpacityEnabled(): boolean; + /** + !#en Cascade opacity is removed from v2.0 + Enable or disable cascade opacity, if cascade enabled, child nodes' opacity will be the multiplication of parent opacity and its own opacity. + !#zh 逿˜Žåº¦çº§è”功能从 v2.0 开始已移除 + å¯ç”¨æˆ–ç¦ç”¨çº§è¿žä¸é€æ˜Žåº¦ï¼Œå¦‚果级连å¯ç”¨ï¼Œå节点的ä¸é€æ˜Žåº¦å°†æ˜¯çˆ¶ä¸é€æ˜Žåº¦ä¹˜ä¸Šå®ƒè‡ªå·±çš„ä¸é€æ˜Žåº¦ã€‚ + @param cascadeOpacityEnabled cascadeOpacityEnabled + */ + setCascadeOpacityEnabled(cascadeOpacityEnabled: boolean): void; + /** + !#en Opacity modify RGB have been removed since v2.0 + Set whether color should be changed with the opacity value, + useless in ccsg.Node, but this function is override in some class to have such behavior. + !#zh 逿˜Žåº¦å½±å“颜色é…置已ç»è¢«åºŸå¼ƒ + è®¾ç½®æ›´æ”¹é€æ˜Žåº¦æ—¶æ˜¯å¦ä¿®æ”¹RGB值, + @param opacityValue opacityValue + */ + setOpacityModifyRGB(opacityValue: boolean): void; + /** + !#en Opacity modify RGB have been removed since v2.0 + Get whether color should be changed with the opacity value. + !#zh 逿˜Žåº¦å½±å“颜色é…置已ç»è¢«åºŸå¼ƒ + èŽ·å–æ›´æ”¹é€æ˜Žåº¦æ—¶æ˜¯å¦ä¿®æ”¹RGB值。 + */ + isOpacityModifyRGB(): boolean; + } + /** !#en + cc.Scene is a subclass of cc.Node that is used only as an abstract concept.<br/> + cc.Scene and cc.Node are almost identical with the difference that users can not modify cc.Scene manually. + !#zh + cc.Scene 是 cc.Node çš„å类,仅作为一个抽象的概念。<br/> + cc.Scene å’Œ cc.Node 有点ä¸åŒï¼Œç”¨æˆ·ä¸åº”直接修改 cc.Scene。 */ + export class Scene extends Node { + /** !#en Indicates whether all (directly or indirectly) static referenced assets of this scene are releasable by default after scene unloading. + !#zh 指示该场景ä¸ç›´æŽ¥æˆ–é—´æŽ¥é™æ€å¼•ç”¨åˆ°çš„æ‰€æœ‰èµ„æºæ˜¯å¦é»˜è®¤åœ¨åœºæ™¯åˆ‡æ¢åŽè‡ªåŠ¨é‡Šæ”¾ã€‚ */ + autoReleaseAssets: boolean; + } + /** !#en + Class of private entities in Cocos Creator scenes.<br/> + The PrivateNode is hidden in editor, and completely transparent to users.<br/> + It's normally used as Node's private content created by components in parent node.<br/> + So in theory private nodes are not children, they are part of the parent node.<br/> + Private node have two important characteristics:<br/> + 1. It has the minimum z index and cannot be modified, because they can't be displayed over real children.<br/> + 2. The positioning of private nodes is also special, they will consider the left bottom corner of the parent node's bounding box as the origin of local coordinates.<br/> + In this way, they can be easily kept inside the bounding box.<br/> + Currently, it's used by RichText component and TileMap component. + !#zh + Cocos Creator 场景ä¸çš„ç§æœ‰èŠ‚ç‚¹ç±»ã€‚<br/> + ç§æœ‰èŠ‚ç‚¹åœ¨ç¼–è¾‘å™¨ä¸ä¸å¯è§ï¼Œå¯¹ç”¨æˆ·é€æ˜Žã€‚<br/> + é€šå¸¸ç§æœ‰èŠ‚ç‚¹æ˜¯è¢«ä¸€äº›ç‰¹æ®Šçš„ç»„ä»¶åˆ›å»ºå‡ºæ¥ä½œä¸ºçˆ¶èŠ‚ç‚¹çš„ä¸€éƒ¨åˆ†è€Œå˜åœ¨çš„,ç†è®ºä¸Šæ¥è¯´ï¼Œå®ƒä»¬ä¸æ˜¯å节点,而是父节点的组æˆéƒ¨åˆ†ã€‚<br/> + ç§æœ‰èŠ‚ç‚¹æœ‰ä¸¤ä¸ªéžå¸¸é‡è¦çš„特性:<br/> + 1. å®ƒæœ‰ç€æœ€å°çš„æ¸²æŸ“排åºçš„ Z è½´æ·±åº¦ï¼Œå¹¶ä¸”æ— æ³•è¢«æ›´æ”¹ï¼Œå› ä¸ºå®ƒä»¬ä¸èƒ½è¢«æ˜¾ç¤ºåœ¨å…¶ä»–æ£å¸¸å节点之上。<br/> + 2. 它的定ä½ä¹Ÿæ˜¯ç‰¹æ®Šçš„ï¼Œå¯¹äºŽç§æœ‰èŠ‚ç‚¹æ¥è¯´ï¼Œçˆ¶èŠ‚ç‚¹åŒ…å›´ç›’çš„å·¦ä¸‹è§’æ˜¯å®ƒçš„å±€éƒ¨åæ ‡ç³»åŽŸç‚¹ï¼Œè¿™ä¸ªåŽŸç‚¹ç›¸å½“äºŽçˆ¶èŠ‚ç‚¹çš„ä½ç½®å‡åŽ»å®ƒé”šç‚¹çš„åç§»ã€‚è¿™æ ·ç§æœ‰èŠ‚ç‚¹å¯ä»¥æ¯”较容易被控制在包围盒之ä¸ã€‚<br/> + ç›®å‰åœ¨å¼•擎ä¸ï¼ŒRichText å’Œ TileMap 都有å¯èƒ½ç”Ÿæˆç§æœ‰èŠ‚ç‚¹ã€‚ */ + export class PrivateNode extends Node { + /** + + @param name name + */ + constructor(name?: string); + } + /** !#en + Scheduler is responsible of triggering the scheduled callbacks.<br/> + You should not use NSTimer. Instead use this class.<br/> + <br/> + There are 2 different types of callbacks (selectors):<br/> + - update callback: the 'update' callback will be called every frame. You can customize the priority.<br/> + - custom callback: A custom callback will be called every frame, or with a custom interval of time<br/> + <br/> + The 'custom selectors' should be avoided when possible. It is faster, + and consumes less memory to use the 'update callback'. * + !#zh + Scheduler 是负责触å‘回调函数的类。<br/> + 通常情况下,建议使用 cc.director.getScheduler() æ¥èŽ·å–系统定时器。<br/> + 有两ç§ä¸åŒç±»åž‹çš„定时器:<br/> + - update 定时器:æ¯ä¸€å¸§éƒ½ä¼šè§¦å‘。您å¯ä»¥è‡ªå®šä¹‰ä¼˜å…ˆçº§ã€‚<br/> + - 自定义定时器:自定义定时器å¯ä»¥æ¯ä¸€å¸§æˆ–者自定义的时间间隔触å‘。<br/> + 如果希望æ¯å¸§éƒ½è§¦å‘,应该使用 update 定时器,使用 update 定时器更快,而且消耗更少的内å˜ã€‚ */ + export class Scheduler { + /** + !#en This method should be called for any target which needs to schedule tasks, and this method should be called before any scheduler API usage. + This method will add a `_id` property if it doesn't exist. + !#zh 任何需è¦ç”¨ Scheduler 管ç†ä»»åŠ¡çš„å¯¹è±¡ä¸»ä½“éƒ½åº”è¯¥è°ƒç”¨è¿™ä¸ªæ–¹æ³•ï¼Œå¹¶ä¸”åº”è¯¥åœ¨è°ƒç”¨ä»»ä½• Scheduler API 之å‰è°ƒç”¨è¿™ä¸ªæ–¹æ³•。 + è¿™ä¸ªæ–¹æ³•ä¼šç»™å¯¹è±¡æ·»åŠ ä¸€ä¸ª `_id` 属性,如果这个属性ä¸å˜åœ¨çš„è¯ã€‚ + @param target target + */ + enableForTarget(target: any): void; + /** + !#en + Modifies the time of all scheduled callbacks.<br/> + You can use this property to create a 'slow motion' or 'fast forward' effect.<br/> + Default is 1.0. To create a 'slow motion' effect, use values below 1.0.<br/> + To create a 'fast forward' effect, use values higher than 1.0.<br/> + Note:It will affect EVERY scheduled selector / action. + !#zh + 设置时间间隔的缩放比例。<br/> + 您å¯ä»¥ä½¿ç”¨è¿™ä¸ªæ–¹æ³•æ¥åˆ›å»ºä¸€ä¸ª “slow motion(慢动作)†或 “fast forward(快进)†的效果。<br/> + 默认是 1.0。è¦åˆ›å»ºä¸€ä¸ª “slow motion(慢动作)†效果,使用值低于 1.0。<br/> + è¦ä½¿ç”¨ “fast forward(快进)†效果,使用值大于 1.0。<br/> + 注æ„:它影å“该 Scheduler 下管ç†çš„æ‰€æœ‰å®šæ—¶å™¨ã€‚ + @param timeScale timeScale + */ + setTimeScale(timeScale: number): void; + /** + !#en Returns time scale of scheduler. + !#zh èŽ·å–æ—¶é—´é—´éš”的缩放比例。 + */ + getTimeScale(): number; + /** + !#en 'update' the scheduler. (You should NEVER call this method, unless you know what you are doing.) + !#zh update 调度函数。(ä¸åº”该直接调用这个方法,除éžå®Œå…¨äº†è§£è¿™ä¹ˆåšçš„结果) + @param dt delta time + */ + update(dt: number): void; + /** + !#en + <p> + The scheduled method will be called every 'interval' seconds.<br/> + If paused is YES, then it won't be called until it is resumed.<br/> + If 'interval' is 0, it will be called every frame, but if so, it recommended to use 'scheduleUpdateForTarget:' instead.<br/> + If the callback function is already scheduled, then only the interval parameter will be updated without re-scheduling it again.<br/> + repeat let the action be repeated repeat + 1 times, use cc.macro.REPEAT_FOREVER to let the action run continuously<br/> + delay is the amount of time the action will wait before it'll start<br/> + </p> + !#zh + 指定回调函数,调用对象ç‰ä¿¡æ¯æ¥æ·»åŠ ä¸€ä¸ªæ–°çš„å®šæ—¶å™¨ã€‚<br/> + 如果 paused 值为 true,那么直到 resume 被调用æ‰å¼€å§‹è®¡æ—¶ã€‚<br/> + 当时间间隔达到指定值时,设置的回调函数将会被调用。<br/> + 如果 interval 值为 0,那么回调函数æ¯ä¸€å¸§éƒ½ä¼šè¢«è°ƒç”¨ï¼Œä½†å¦‚æžœæ˜¯è¿™æ ·ï¼Œ + 建议使用 scheduleUpdateForTarget 代替。<br/> + 如果回调函数已ç»è¢«å®šæ—¶å™¨ä½¿ç”¨ï¼Œé‚£ä¹ˆåªä¼šæ›´æ–°ä¹‹å‰å®šæ—¶å™¨çš„æ—¶é—´é—´éš”傿•°ï¼Œä¸ä¼šè®¾ç½®æ–°çš„定时器。<br/> + repeat 值å¯ä»¥è®©å®šæ—¶å™¨è§¦å‘ repeat + 1 次,使用 cc.macro.REPEAT_FOREVER + å¯ä»¥è®©å®šæ—¶å™¨ä¸€ç›´å¾ªçŽ¯è§¦å‘。<br/> + delay 值指定延迟时间,定时器会在延迟指定的时间之åŽå¼€å§‹è®¡æ—¶ã€‚ + @param callback callback + @param target target + @param interval interval + @param repeat repeat + @param delay delay + @param paused paused + + @example + ```js + //register a schedule to scheduler + cc.director.getScheduler().schedule(callback, this, interval, !this._isRunning); + + ``` + */ + schedule(callback: Function, target: any, interval: number, repeat: number, delay: number, paused?: boolean): void; + schedule(callback: Function, target: any, interval: number, paused?: boolean): void; + /** + !#en + Schedules the update callback for a given target, + During every frame after schedule started, the "update" function of target will be invoked. + !#zh + 使用指定的优先级为指定的对象设置 update 定时器。 + update 定时器æ¯ä¸€å¸§éƒ½ä¼šè¢«è§¦å‘ï¼Œè§¦å‘æ—¶è‡ªåŠ¨è°ƒç”¨æŒ‡å®šå¯¹è±¡çš„ "update" 函数。 + 优先级的值越低,定时器被触å‘的越早。 + @param target target + @param priority priority + @param paused paused + */ + scheduleUpdate(target: any, priority: number, paused: boolean): void; + /** + !#en + Unschedules a callback for a callback and a given target. + If you want to unschedule the "update", use `unscheduleUpdate()` + !#zh + å–æ¶ˆæŒ‡å®šå¯¹è±¡å®šæ—¶å™¨ã€‚ + 如果需è¦å–消 update 定时器,请使用 unscheduleUpdate()。 + @param callback The callback to be unscheduled + @param target The target bound to the callback. + */ + unschedule(callback: Function, target: any): void; + /** + !#en Unschedules the update callback for a given target. + !#zh å–æ¶ˆæŒ‡å®šå¯¹è±¡çš„ update 定时器。 + @param target The target to be unscheduled. + */ + unscheduleUpdate(target: any): void; + /** + !#en + Unschedules all scheduled callbacks for a given target. + This also includes the "update" callback. + !#zh å–æ¶ˆæŒ‡å®šå¯¹è±¡çš„æ‰€æœ‰å®šæ—¶å™¨ï¼ŒåŒ…括 update 定时器。 + @param target The target to be unscheduled. + */ + unscheduleAllForTarget(target: any): void; + /** + !#en + Unschedules all scheduled callbacks from all targets including the system callbacks.<br/> + You should NEVER call this method, unless you know what you are doing. + !#zh + å–æ¶ˆæ‰€æœ‰å¯¹è±¡çš„æ‰€æœ‰å®šæ—¶å™¨ï¼ŒåŒ…括系统定时器。<br/> + ä¸è¦è°ƒç”¨æ¤å‡½æ•°ï¼Œé™¤éžä½ ç¡®å®šä½ åœ¨åšä»€ä¹ˆã€‚ + */ + unscheduleAll(): void; + /** + !#en + Unschedules all callbacks from all targets with a minimum priority.<br/> + You should only call this with `PRIORITY_NON_SYSTEM_MIN` or higher. + !#zh + å–æ¶ˆæ‰€æœ‰ä¼˜å…ˆçº§çš„值大于指定优先级的定时器。<br/> + ä½ åº”è¯¥åªå–消优先级的值大于 PRIORITY_NON_SYSTEM_MIN 的定时器。 + @param minPriority The minimum priority of selector to be unscheduled. Which means, all selectors which + priority is higher than minPriority will be unscheduled. + */ + unscheduleAllWithMinPriority(minPriority: number): void; + /** + !#en Checks whether a callback for a given target is scheduled. + !#zh æ£€æŸ¥æŒ‡å®šçš„å›žè°ƒå‡½æ•°å’Œå›žè°ƒå¯¹è±¡ç»„åˆæ˜¯å¦å˜åœ¨å®šæ—¶å™¨ã€‚ + @param callback The callback to check. + @param target The target of the callback. + */ + isScheduled(callback: Function, target: any): boolean; + /** + !#en + Pause all selectors from all targets.<br/> + You should NEVER call this method, unless you know what you are doing. + !#zh + æš‚åœæ‰€æœ‰å¯¹è±¡çš„æ‰€æœ‰å®šæ—¶å™¨ã€‚<br/> + ä¸è¦è°ƒç”¨è¿™ä¸ªæ–¹æ³•,除éžä½ 知é“ä½ æ£åœ¨åšä»€ä¹ˆã€‚ + */ + pauseAllTargets(): void; + /** + !#en + Pause all selectors from all targets with a minimum priority. <br/> + You should only call this with kCCPriorityNonSystemMin or higher. + !#zh + æš‚åœæ‰€æœ‰ä¼˜å…ˆçº§çš„值大于指定优先级的定时器。<br/> + ä½ åº”è¯¥åªæš‚åœä¼˜å…ˆçº§çš„值大于 PRIORITY_NON_SYSTEM_MIN 的定时器。 + @param minPriority minPriority + */ + pauseAllTargetsWithMinPriority(minPriority: number): void; + /** + !#en + Resume selectors on a set of targets.<br/> + This can be useful for undoing a call to pauseAllCallbacks. + !#zh + æ¢å¤æŒ‡å®šæ•°ç»„䏿‰€æœ‰å¯¹è±¡çš„定时器。<br/> + 这个函数是 pauseAllCallbacks 的逆æ“作。 + @param targetsToResume targetsToResume + */ + resumeTargets(targetsToResume: any[]): void; + /** + !#en + Pauses the target.<br/> + All scheduled selectors/update for a given target won't be 'ticked' until the target is resumed.<br/> + If the target is not present, nothing happens. + !#zh + æš‚åœæŒ‡å®šå¯¹è±¡çš„定时器。<br/> + 指定对象的所有定时器都会被暂åœã€‚<br/> + 如果指定的对象没有定时器,什么也ä¸ä¼šå‘生。 + @param target target + */ + pauseTarget(target: any): void; + /** + !#en + Resumes the target.<br/> + The 'target' will be unpaused, so all schedule selectors/update will be 'ticked' again.<br/> + If the target is not present, nothing happens. + !#zh + æ¢å¤æŒ‡å®šå¯¹è±¡çš„æ‰€æœ‰å®šæ—¶å™¨ã€‚<br/> + 指定对象的所有定时器将继ç»å·¥ä½œã€‚<br/> + 如果指定的对象没有定时器,什么也ä¸ä¼šå‘生。 + @param target target + */ + resumeTarget(target: any): void; + /** + !#en Returns whether or not the target is paused. + !#zh è¿”å›žæŒ‡å®šå¯¹è±¡çš„å®šæ—¶å™¨æ˜¯å¦æš‚åœäº†ã€‚ + @param target target + */ + isTargetPaused(target: any): boolean; + /** !#en Priority level reserved for system services. + !#zh 系统æœåŠ¡çš„ä¼˜å…ˆçº§ã€‚ */ + static PRIORITY_SYSTEM: number; + /** !#en Minimum priority level for user scheduling. + !#zh 用户调度最低优先级。 */ + static PRIORITY_NON_SYSTEM: number; + } + /** !#en The Light Component + + !#zh å…‰æºç»„ä»¶ */ + export class Light extends Component { + } + /** !#en + This module controls asset's behaviors and information, include loading, releasing etc. it is a singleton + All member can be accessed with `cc.assetManager`. + + !#zh + æ¤æ¨¡å—管ç†èµ„æºçš„行为和信æ¯ï¼ŒåŒ…æ‹¬åŠ è½½ï¼Œé‡Šæ”¾ç‰ï¼Œè¿™æ˜¯ä¸€ä¸ªå•例,所有æˆå‘˜èƒ½å¤Ÿé€šè¿‡ `cc.assetManager` 调用 */ + export class AssetManager { + /** !#en + Normal loading pipeline + + !#zh + æ£å¸¸åŠ è½½ç®¡çº¿ */ + pipeline: cc.AssetManager.Pipeline; + /** !#en + Fetching pipeline + + !#zh + 下载管线 */ + fetchPipeline: cc.AssetManager.Pipeline; + /** !#en + Url transformer + + !#zh + Url 转æ¢å™¨ */ + transformPipeline: cc.AssetManager.Pipeline; + /** !#en + The collection of bundle which is already loaded, you can remove cache with {{#crossLink "AssetManager/removeBundle:method"}}{{/crossLink}} + + !#zh + å·²åŠ è½½ bundle 的集åˆï¼Œ ä½ èƒ½é€šè¿‡ {{#crossLink "AssetManager/removeBundle:method"}}{{/crossLink}} æ¥ç§»é™¤ç¼“å˜ */ + bundles: AssetManager.Cache<AssetManager.Bundle>; + /** !#en + The collection of asset which is already loaded, you can remove cache with {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} + + !#zh + å·²åŠ è½½èµ„æºçš„集åˆï¼Œ ä½ èƒ½é€šè¿‡ {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} æ¥ç§»é™¤ç¼“å˜ */ + assets: AssetManager.Cache<cc.Asset>; + /** !#en + Manage relationship between asset and its dependencies + + !#zh + 管ç†èµ„æºä¾èµ–关系 */ + dependUtil: cc.AssetManager.DependUtil; + /** !#en + Whether or not cache the loaded asset + + !#zh + 是å¦ç¼“å˜å·²åŠ è½½çš„èµ„æº */ + cacheAsset: boolean; + /** !#en + Whether or not load asset forcely, if it is true, asset will be loaded regardless of error + + !#zh + 是å¦å¼ºåˆ¶åŠ è½½èµ„æº, 如果为 true ï¼ŒåŠ è½½èµ„æºå°†ä¼šå¿½ç•¥æŠ¥é”™ */ + force: boolean; + /** !#en + Some useful function + + !#zh + 一些有用的方法 */ + utils: cc.AssetManager.Helper; + /** !#en + Manage all downloading task + + !#zh + ç®¡ç†æ‰€æœ‰ä¸‹è½½ä»»åŠ¡ */ + downloader: cc.AssetManager.Downloader; + /** !#en + Manage all parsing task + + !#zh + ç®¡ç†æ‰€æœ‰è§£æžä»»åŠ¡ */ + parser: cc.AssetManager.Parser; + /** !#en + Manage internal asset + + !#zh + 管ç†å†…ç½®èµ„æº */ + builtins: cc.AssetManager.Builtins; + /** !#en + Manage all packed asset + + !#zh + ç®¡ç†æ‰€æœ‰åˆå¹¶åŽçš„èµ„æº */ + packManager: cc.AssetManager.PackManager; + /** !#en + Cache manager is a module which controls all caches downloaded from server in non-web platform. + + !#zh + 缓å˜ç®¡ç†å™¨æ˜¯ä¸€ä¸ªæ¨¡å—ï¼Œåœ¨éž WEB å¹³å°ä¸Šï¼Œç”¨äºŽç®¡ç†æ‰€æœ‰ä»ŽæœåŠ¡å™¨ä¸Šä¸‹è½½ä¸‹æ¥çš„ç¼“å˜ */ + cacheManager: cc.AssetManager.CacheManager|null; + /** !#en + The preset of options + + !#zh + å¯é€‰å‚数的预设集 */ + presets: Record<string, Record<string, any>>; + /** !#en + The builtin 'main' bundle + + !#zh + 内置 main 包 */ + main: cc.AssetManager.Bundle; + /** !#en + The builtin 'resources' bundle + + !#zh + 内置 resources 包 */ + resources: cc.AssetManager.Bundle; + /** !#en + The builtin 'internal' bundle + + !#zh + 内置 internal 包 */ + internal: cc.AssetManager.Bundle; + /** + !#en + Initialize assetManager with options + + !#zh + åˆå§‹åŒ–资æºç®¡ç†å™¨ + @param options options + */ + init(options: Record<string, any>): void; + /** + !#en + Get the bundle which has been loaded + + !#zh + 获å–å·²åŠ è½½çš„åˆ†åŒ… + @param name The name of bundle + + @example + ```js + // ${project}/assets/test1 + cc.assetManager.getBundle('test1'); + + cc.assetManager.getBundle('resources'); + ``` + */ + getBundle (name: string): cc.AssetManager.Bundle; + /** + !#en + Remove this bundle. NOTE: The asset whthin this bundle will not be released automatically, you can call {{#crossLink "Bundle/releaseAll:method"}}{{/crossLink}} manually before remove it if you need + + !#zh + 移除æ¤åŒ…, 注æ„:这个包内的资æºä¸ä¼šè‡ªåŠ¨é‡Šæ”¾, 如果需è¦çš„è¯ä½ å¯ä»¥åœ¨æ‘§æ¯ä¹‹å‰æ‰‹åŠ¨è°ƒç”¨ {{#crossLink "Bundle/releaseAll:method"}}{{/crossLink}} 进行释放 + @param bundle The bundle to be removed + */ + removeBundle(bundle: cc.AssetManager.Bundle): void; + /** + !#en + General interface used to load assets with a progression callback and a complete callback. You can achieve almost all effect you want with combination of `requests` and `options`. + It is highly recommended that you use more simple API, such as `load`, `loadDir` etc. Every custom parameter in `options` will be distribute to each of `requests`. + if request already has same one, the parameter in request will be given priority. Besides, if request has dependencies, `options` will distribute to dependencies too. + Every custom parameter in `requests` will be tranfered to handler of `downloader` and `parser` as `options`. + You can register you own handler downloader or parser to collect these custom parameters for some effect. + + Reserved Keyword: `uuid`, `url`, `path`, `dir`, `scene`, `type`, `priority`, `preset`, `audioLoadMode`, `ext`, `bundle`, `onFileProgress`, `maxConcurrency`, `maxRequestsPerFrame` + `maxRetryCount`, `version`, `responseType`, `withCredentials`, `mimeType`, `timeout`, `header`, `reload`, `cacheAsset`, `cacheEnabled`, + Please DO NOT use these words as custom options! + + !#zh + é€šç”¨åŠ è½½èµ„æºæŽ¥å£ï¼Œå¯ä¼ 入进度回调以åŠå®Œæˆå›žè°ƒï¼Œé€šè¿‡ç»„åˆ `request` å’Œ `options` 傿•°ï¼Œå‡ 乎å¯ä»¥å®žçŽ°å’Œæ‰©å±•æ‰€æœ‰æƒ³è¦çš„åŠ è½½æ•ˆæžœã€‚éžå¸¸å»ºè®®ä½ 使用更简å•çš„API,例如 `load`ã€`loadDir` ç‰ã€‚ + `options` ä¸çš„è‡ªå®šä¹‰å‚æ•°å°†ä¼šåˆ†å‘到 `requests` çš„æ¯ä¸€é¡¹ä¸ï¼Œå¦‚æžœrequestä¸å·²å˜åœ¨åŒåçš„å‚æ•°åˆ™ä»¥ `requests` ä¸ä¸ºå‡†ï¼ŒåŒæ—¶å¦‚果有其他 + ä¾èµ–资æºï¼Œåˆ™ `options` ä¸çš„傿•°ä¼šç»§ç»å‘ä¾èµ–项ä¸åˆ†å‘。requestä¸çš„è‡ªå®šä¹‰å‚æ•°éƒ½ä¼šä»¥ `options` å½¢å¼ä¼ å…¥åŠ è½½æµç¨‹ä¸çš„ `downloader`, `parser` 的方法ä¸, ä½ å¯ä»¥ + 扩展 `downloader`, `parser` æ”¶é›†å‚æ•°å®Œæˆæƒ³å®žçŽ°çš„æ•ˆæžœã€‚ + + ä¿ç•™å…³é”®å—: `uuid`, `url`, `path`, `dir`, `scene`, `type`, `priority`, `preset`, `audioLoadMode`, `ext`, `bundle`, `onFileProgress`, `maxConcurrency`, `maxRequestsPerFrame` + `maxRetryCount`, `version`, `responseType`, `withCredentials`, `mimeType`, `timeout`, `header`, `reload`, `cacheAsset`, `cacheEnabled`, + 请ä¸è¦ä½¿ç”¨è¿™äº›å—æ®µä¸ºè‡ªå®šä¹‰å‚æ•°! + @param requests The request you want to load + @param options Optional parameters + @param onProgress Callback invoked when progression change + @param onComplete Callback invoked when finish loading + + @example + ```js + cc.assetManager.loadAny({url: 'http://example.com/a.png'}, (err, img) => cc.log(img)); + cc.assetManager.loadAny(['60sVXiTH1D/6Aft4MRt9VC'], (err, assets) => cc.log(assets)); + cc.assetManager.loadAny([{ uuid: '0cbZa5Y71CTZAccaIFluuZ'}, {url: 'http://example.com/a.png'}], (err, assets) => cc.log(assets)); + cc.assetManager.downloader.register('.asset', (url, options, onComplete) => { + url += '?userName=' + options.userName + "&password=" + options.password; + cc.assetManager.downloader.downloadFile(url, null, onComplete); + }); + cc.assetManager.parser.register('.asset', (file, options, onComplete) => { + var json = JSON.parse(file); + var skin = json[options.skin]; + var model = json[options.model]; + onComplete(null, {skin, model}); + }); + cc.assetManager.loadAny({ url: 'http://example.com/my.asset', skin: 'xxx', model: 'xxx', userName: 'xxx', password: 'xxx' }); + ``` + */ + loadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], options: Record<string, any>, onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, data: any) => void): void; + loadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], options: Record<string, any>, onComplete: (err: Error, data: any) => void): void; + loadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], options: Record<string, any>): void; + loadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, data: any) => void): void; + loadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], onComplete: (err: Error, data: any) => void): void; + loadAny(requests: string | string[] | Record<string, any> | Record<string, any>[]): void; + /** + !#en + General interface used to preload assets with a progression callback and a complete callback.It is highly recommended that you use more simple API, such as `preloadRes`, `preloadResDir` etc. + Everything about preload is just likes `cc.assetManager.loadAny`, the difference is `cc.assetManager.preloadAny` will only download asset but not parse asset. You need to invoke `cc.assetManager.loadAny(preloadTask)` + to finish loading asset + + !#zh + é€šç”¨é¢„åŠ è½½èµ„æºæŽ¥å£ï¼Œå¯ä¼ 入进度回调以åŠå®Œæˆå›žè°ƒï¼Œéžå¸¸å»ºè®®ä½ 使用更简å•çš„ API ,例如 `preloadRes`, `preloadResDir` ç‰ã€‚`preloadAny` å’Œ `loadAny` å‡ ä¹Žä¸€æ ·ï¼ŒåŒºåˆ«åœ¨äºŽ `preloadAny` åªä¼šä¸‹è½½èµ„æºï¼Œä¸ä¼šåŽ»è§£æžèµ„æºï¼Œä½ 需è¦è°ƒç”¨ `cc.assetManager.loadAny(preloadTask)` + æ¥å®Œæˆèµ„æºåŠ è½½ã€‚ + @param requests The request you want to preload + @param options Optional parameters + @param onProgress Callback invoked when progression change + @param onComplete Callback invoked when finish preloading + + @example + ```js + cc.assetManager.preloadAny('0cbZa5Y71CTZAccaIFluuZ', (err) => cc.assetManager.loadAny('0cbZa5Y71CTZAccaIFluuZ')); + ``` + */ + preloadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], options: Record<string, any>, onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void; + preloadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], options: Record<string, any>, onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void; + preloadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void; + preloadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void; + preloadAny(requests: string | string[] | Record<string, any> | Record<string, any>[], options: Record<string, any>): void; + preloadAny(requests: string | string[] | Record<string, any> | Record<string, any>[]): void; + /** + !#en + Load native file of asset, if you check the option 'Async Load Assets', you may need to load native file with this before you use the asset + + !#zh + åŠ è½½èµ„æºçš„åŽŸç”Ÿæ–‡ä»¶ï¼Œå¦‚æžœä½ å‹¾é€‰äº†'å»¶è¿ŸåŠ è½½èµ„æº'é€‰é¡¹ï¼Œä½ å¯èƒ½éœ€è¦åœ¨ä½¿ç”¨èµ„æºä¹‹å‰è°ƒç”¨æ¤æ–¹æ³•æ¥åŠ è½½åŽŸç”Ÿæ–‡ä»¶ + @param asset The asset + @param options Some optional parameters + @param onComplete Callback invoked when finish loading + + @example + ```js + cc.assetManager.postLoadNative(texture, (err) => console.log(err)); + ``` + */ + postLoadNative(asset: cc.Asset, options: Record<string, any>, onComplete: (err: Error) => void): void; + postLoadNative(asset: cc.Asset, options: Record<string, any>): void; + postLoadNative(asset: cc.Asset, onComplete: (err: Error) => void): void; + postLoadNative(asset: cc.Asset): void; + /** + !#en + Load remote asset with url, such as audio, image, text and so on. + + !#zh + 使用 url åŠ è½½è¿œç¨‹èµ„æºï¼Œä¾‹å¦‚音频,图片,文本ç‰ç‰ã€‚ + @param url The url of asset + @param options Some optional parameters + @param onComplete Callback invoked when finish loading + + @example + ```js + cc.assetManager.loadRemote('http://www.cloud.com/test1.jpg', (err, texture) => console.log(err)); + cc.assetManager.loadRemote('http://www.cloud.com/test2.mp3', (err, audioClip) => console.log(err)); + ``` + */ + loadRemote<T extends cc.Asset>(url: string, options: Record<string, any>, onComplete: (err: Error, asset: T) => void): void; + loadRemote<T extends cc.Asset>(url: string, options: Record<string, any>): void; + loadRemote<T extends cc.Asset>(url: string, onComplete: (err: Error, asset: T) => void): void; + loadRemote<T extends cc.Asset>(url: string): void; + /** + !#en + Load script + + !#zh + åŠ è½½è„šæœ¬ + @param url Url of the script + @param options Some optional paramters + @param onComplete Callback when script loaded or failed + + @example + ```js + loadScript('http://localhost:8080/index.js', null, (err) => console.log(err)); + ``` + */ + loadScript(url: string|string[], options: Record<string, any>, onComplete: (err: Error) => void): void;; + loadScript(url: string|string[], options: Record<string, any>): void;; + loadScript(url: string|string[], onComplete: (err: Error) => void): void;; + loadScript(url: string|string[]): void;; + /** + !#en + load bundle + + !#zh + åŠ è½½èµ„æºåŒ… + @param nameOrUrl The name or root path of bundle + @param options Some optional paramter, same like downloader.downloadFile + @param onComplete Callback when bundle loaded or failed + + @example + ```js + loadBundle('http://localhost:8080/test', null, (err, bundle) => console.log(err)); + ``` + */ + loadBundle(nameOrUrl: string, options: Record<string, any>, onComplete: (err: Error, bundle: cc.AssetManager.Bundle) => void): void; + loadBundle(nameOrUrl: string, options: Record<string, any>): void; + loadBundle(nameOrUrl: string, onComplete: (err: Error, bundle: cc.AssetManager.Bundle) => void): void; + loadBundle(nameOrUrl: string): void; + /** + !#en + Release asset and it's dependencies. + This method will not only remove the cache of the asset in assetManager, but also clean up its content. + For example, if you release a texture, the texture asset and its gl texture data will be freed up. + Notice, this method may cause the texture to be unusable, if there are still other nodes use the same texture, they may turn to black and report gl errors. + + !#zh + 释放资æºä»¥åŠå…¶ä¾èµ–资æº, 这个方法ä¸ä»…会从 assetManager ä¸åˆ 除资æºçš„缓å˜å¼•用,还会清ç†å®ƒçš„资æºå†…容。 + æ¯”å¦‚è¯´ï¼Œå½“ä½ é‡Šæ”¾ä¸€ä¸ª texture 资æºï¼Œè¿™ä¸ª texture 和它的 gl 贴图数æ®éƒ½ä¼šè¢«é‡Šæ”¾ã€‚ + 注æ„,这个函数å¯èƒ½ä¼šå¯¼è‡´èµ„æºè´´å›¾æˆ–èµ„æºæ‰€ä¾èµ–的贴图ä¸å¯ç”¨ï¼Œå¦‚果场景ä¸å˜åœ¨èŠ‚ç‚¹ä»ç„¶ä¾èµ–åŒæ ·çš„贴图,它们å¯èƒ½ä¼šå˜é»‘并报 GL 错误。 + @param asset The asset to be released + + @example + ```js + // release a texture which is no longer need + cc.assetManager.releaseAsset(texture); + ``` + */ + releaseAsset(asset: cc.Asset): void; + /** + !#en + Release all assets. Refer to {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} for detailed informations. + + !#zh + 释放所有资æºã€‚详细信æ¯è¯·å‚考 {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} + */ + releaseAll(): void; + } + /** `cc.loader` is deprecated, please backup your project and upgrade to {{#crossLink "AssetManager"}}{{/crossLink}} */ + export class loader { + /** `cc.loader.onProgress` is deprecated, please transfer onProgress to API as a parameter */ + static onProgress: any; + /** + `cc.loader.load` is deprecated, please use {{#crossLink "AssetManager/loadAny:method"}}{{/crossLink}} instead + @param resources Url list in an array + @param progressCallback Callback invoked when progression change + @param completeCallback Callback invoked when all resources loaded + */ + static load(resources: string|string[]|{uuid?: string, url?: string, type?: string}, completeCallback?: Function): void; + static load(resources: string|string[]|{uuid?: string, url?: string, type?: string}, progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: Function|null): void; + /** + `cc.loader.getXMLHttpRequest` is deprecated, please use `XMLHttpRequest` directly + */ + static getXMLHttpRequest(): XMLHttpRequest; + /** + `cc.loader.getItem` is deprecated, please use `cc.assetManager.asset.get` instead + @param id The id of the item + */ + static getItem(id: any): any; + /** + `cc.loader.loadRes` is deprecated, please use {{#crossLink "Bundle/load:method"}}{{/crossLink}} instead + @param url Url of the target resource. + The url is relative to the "resources" folder, extensions must be omitted. + @param type Only asset of type will be loaded if this argument is supplied. + @param progressCallback Callback invoked when progression change. + @param completeCallback Callback invoked when the resource loaded. + */ + static loadRes(url: string, type: typeof cc.Asset, progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: ((error: Error, resource: any) => void)|null): void; + static loadRes(url: string, type: typeof cc.Asset, completeCallback: (error: Error, resource: any) => void): void; + static loadRes(url: string, type: typeof cc.Asset): void; + static loadRes(url: string, progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: ((error: Error, resource: any) => void)|null): void; + static loadRes(url: string, completeCallback: (error: Error, resource: any) => void): void; + static loadRes(url: string): void; + /** + `cc.loader.loadResArray` is deprecated, please use {{#crossLink "Bundle/load:method"}}{{/crossLink}} instead + @param urls Array of URLs of the target resource. + The url is relative to the "resources" folder, extensions must be omitted. + @param type Only asset of type will be loaded if this argument is supplied. + @param progressCallback Callback invoked when progression change. + @param completeCallback A callback which is called when all assets have been loaded, or an error occurs. + */ + static loadResArray(url: string[], type: typeof cc.Asset, progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: ((error: Error, resource: any[]) => void)|null): void; + static loadResArray(url: string[], type: typeof cc.Asset, completeCallback: (error: Error, resource: any[]) => void): void; + static loadResArray(url: string[], type: typeof cc.Asset): void; + static loadResArray(url: string[], progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: ((error: Error, resource: any[]) => void)|null): void; + static loadResArray(url: string[], completeCallback: (error: Error, resource: any[]) => void): void; + static loadResArray(url: string[]): void; + static loadResArray(url: string[], type: typeof cc.Asset[]): void; + /** + `cc.loader.loadResDir` is deprecated, please use {{#crossLink "Bundle/loadDir:method"}}{{/crossLink}} instead + @param url Url of the target folder. + The url is relative to the "resources" folder, extensions must be omitted. + @param type Only asset of type will be loaded if this argument is supplied. + @param progressCallback Callback invoked when progression change. + @param completeCallback A callback which is called when all assets have been loaded, or an error occurs. + */ + static loadResDir(url: string, type: typeof cc.Asset, progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: ((error: Error, resource: any[], urls: string[]) => void)|null): void; + static loadResDir(url: string, type: typeof cc.Asset, completeCallback: (error: Error, resource: any[], urls: string[]) => void): void; + static loadResDir(url: string, type: typeof cc.Asset): void; + static loadResDir(url: string, progressCallback: (completedCount: number, totalCount: number, item: any) => void, completeCallback: ((error: Error, resource: any[], urls: string[]) => void)|null): void; + static loadResDir(url: string, completeCallback: (error: Error, resource: any[], urls: string[]) => void): void; + static loadResDir(url: string): void; + /** + `cc.loader.getRes` is deprecated, please use {{#crossLink "Bundle/get:method"}}{{/crossLink}} instead + @param url url + @param type Only asset of type will be returned if this argument is supplied. + */ + static getRes(url: string, type?: Function): any; + /** + `cc.loader.getDependsRecursively` is deprecated, please use use {{#crossLink "DependUtil/getDepsRecursively:method"}}{{/crossLink}} instead + @param owner The owner asset or the resource url or the asset's uuid + */ + static getDependsRecursively(owner: Asset|string): any[]; + /** `cc.loader.assetLoader` was removed, assetLoader and md5Pipe were merged into {{#crossLink "AssetManager/transformPipeline:property"}}{{/crossLink}} */ + static assetLoader: any; + /** `cc.loader.md5Pipe` is deprecated, assetLoader and md5Pipe were merged into {{#crossLink "AssetManager/transformPipeline:property"}}{{/crossLink}} */ + static md5Pipe: any; + /** `cc.loader.downloader` is deprecated, please use {{#crossLink "AssetManager/downloader:property"}}{{/crossLink}} instead */ + static downloader: any; + /** `cc.loader.loader` is deprecated, please use {{#crossLink "AssetManager/parser:property"}}{{/crossLink}} instead */ + static loader: any; + /** + `cc.loader.addDownloadHandlers` is deprecated, please use `cc.assetManager.downloader.register` instead + @param extMap Custom supported types with corresponded handler + */ + static addDownloadHandlers(extMap: any): void; + /** + `cc.loader.addLoadHandlers` is deprecated, please use `cc.assetManager.parser.register` instead + @param extMap Custom supported types with corresponded handler + */ + static addLoadHandlers(extMap: any): void; + /** + `cc.loader.release` is deprecated, please use {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} instead + @param asset asset + */ + static release(asset: Asset|string|any[]): void; + /** + `cc.loader.releaseAsset` is deprecated, please use {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} instead + @param asset asset + */ + static releaseAsset(asset: Asset): void; + /** + `cc.loader.releaseRes` is deprecated, please use {{#crossLink "AssetManager/releaseRes:method"}}{{/crossLink}} instead + @param url url + @param type Only asset of type will be released if this argument is supplied. + */ + static releaseRes(url: string, type?: Function): void; + /** + `cc.loader.releaseResDir` was removed, please use {{#crossLink "AssetManager/releaseRes:method"}}{{/crossLink}} instead + */ + static releaseResDir(): void; + /** + `cc.loader.releaseAll` is deprecated, please use {{#crossLink "AssetManager/releaseAll:method"}}{{/crossLink}} instead + */ + static releaseAll(): void; + /** + `cc.loader.removeItem` is deprecated, please use `cc.assetManager.assets.remove` instead + @param id The id of the item + */ + static removeItem(id: any): boolean; + /** + `cc.loader.setAutoRelease` is deprecated, if you want to prevent some asset from auto releasing, please use {{#crossLink "Asset/addRef:method"}}{{/crossLink}} instead + @param assetOrUrlOrUuid asset object or the raw asset's url or uuid + @param autoRelease indicates whether should release automatically + */ + static setAutoRelease(assetOrUrlOrUuid: Asset|string, autoRelease: boolean): void; + /** + `cc.loader.setAutoReleaseRecursively` is deprecated, if you want to prevent some asset from auto releasing, please use {{#crossLink "Asset/addRef:method"}}{{/crossLink}} instead + @param assetOrUrlOrUuid asset object or the raw asset's url or uuid + @param autoRelease indicates whether should release automatically + */ + static setAutoReleaseRecursively(assetOrUrlOrUuid: Asset|string, autoRelease: boolean): void; + /** + `cc.loader.isAutoRelease` is deprecated + @param assetOrUrl asset object or the raw asset's url + */ + static isAutoRelease(assetOrUrl: Asset|string): boolean; + } + /** `cc.url` is deprecated */ + export class url { + /** + `cc.url.raw` is deprecated, please use `cc.resources.load` directly, or use `Asset.nativeUrl` instead. + @param url url + */ + static raw(url: string): string; + } + /** `cc.LoadingItems` was removed, please use {{#crossLink "Task"}}{{/crossLink}} instead */ + export class LoadingItems { + } + /** !#en + Base class for handling assets used in Creator.<br/> + + You may want to override:<br/> + - createNode<br/> + - getset functions of _nativeAsset<br/> + - cc.Object._serialize<br/> + - cc.Object._deserialize<br/> + !#zh + Creator ä¸çš„资æºåŸºç±»ã€‚<br/> + + 您å¯èƒ½éœ€è¦é‡å†™ï¼š<br/> + - createNode <br/> + - _nativeAsset çš„ getset 方法<br/> + - cc.Object._serialize<br/> + - cc.Object._deserialize<br/> */ + export class Asset extends Object { + /** `cc.Asset.url` is deprecated, please use {{#crossLink "Asset/nativeUrl:property"}}{{/crossLink}} instead */ + url: string; + /** !#en + Whether the asset is loaded or not. + !#zh + è¯¥èµ„æºæ˜¯å¦å·²ç»æˆåŠŸåŠ è½½ã€‚ */ + loaded: boolean; + /** !#en + Returns the url of this asset's native object, if none it will returns an empty string. + !#zh + 返回该资æºå¯¹åº”çš„ç›®æ ‡å¹³å°èµ„æºçš„ URL,如果没有将返回一个空å—符串。 */ + nativeUrl: string; + /** !#en + The number of reference + + !#zh + å¼•ç”¨çš„æ•°é‡ */ + refCount: number; + /** !#en Indicates whether its dependent raw assets can support deferred load if the owner scene (or prefab) is marked as `asyncLoadAssets`. + !#zh 当场景或 Prefab è¢«æ ‡è®°ä¸º `asyncLoadAssets`ï¼Œç¦æ¢å»¶è¿ŸåŠ è½½è¯¥èµ„æºæ‰€ä¾èµ–的其它原始资æºã€‚ */ + static preventDeferredLoadDependents: boolean; + /** !#en Indicates whether its native object should be preloaded from native url. + !#zh ç¦æ¢é¢„åŠ è½½åŽŸç”Ÿå¯¹è±¡ã€‚ */ + static preventPreloadNativeObject: boolean; + /** + !#en + Returns the asset's url. + + The `Asset` object overrides the `toString()` method of the `Object` object. + For `Asset` objects, the `toString()` method returns a string representation of the object. + JavaScript calls the `toString()` method automatically when an asset is to be represented as a text value or when a texture is referred to in a string concatenation. + !#zh + 返回资æºçš„ URL。 + + Asset 对象将会é‡å†™ Object 对象的 `toString()` 方法。 + 对于 Asset 对象,`toString()` 方法返回该对象的å—符串表示形å¼ã€‚ + 当资æºè¦è¡¨ç¤ºä¸ºæ–‡æœ¬å€¼æ—¶æˆ–在å—符串连接时引用时,JavaScript 会自动调用 `toString()` 方法。 + */ + toString(): string; + /** + !#en + Create a new node using this asset in the scene.<br/> + If this type of asset dont have its corresponding node type, this method should be null. + !#zh + 使用该资æºåœ¨åœºæ™¯ä¸åˆ›å»ºä¸€ä¸ªæ–°èŠ‚ç‚¹ã€‚<br/> + å¦‚æžœè¿™ç±»èµ„æºæ²¡æœ‰ç›¸åº”的节点类型,该方法应该是空的。 + @param callback callback + */ + createNode(callback: (error: string, node: any) => void): void; + /** + !#en + Add references of asset + + !#zh + å¢žåŠ èµ„æºçš„引用 + */ + addRef(): cc.Asset; + /** + !#en + Reduce references of asset and it will be auto released when refCount equals 0. + + !#zh + å‡å°‘资æºçš„引用并å°è¯•进行自动释放。 + */ + decRef(): cc.Asset; + } + /** Predefined constants */ + export class macro { + /** `cc.macro.DOWNLOAD_MAX_CONCURRENT` is deprecated now, please use {{#crossLink "Downloader/maxConcurrency:property"}}{{/crossLink}} instead */ + static DOWNLOAD_MAX_CONCURRENT: number; + /** PI / 180 */ + static RAD: number; + /** One degree */ + static DEG: number; + static REPEAT_FOREVER: number; + static FLT_EPSILON: number; + /** Minimum z index value for node */ + static MIN_ZINDEX: number; + /** Maximum z index value for node */ + static MAX_ZINDEX: number; + static ONE: number; + static ZERO: number; + static SRC_ALPHA: number; + static SRC_ALPHA_SATURATE: number; + static SRC_COLOR: number; + static DST_ALPHA: number; + static DST_COLOR: number; + static ONE_MINUS_SRC_ALPHA: number; + static ONE_MINUS_SRC_COLOR: number; + static ONE_MINUS_DST_ALPHA: number; + static ONE_MINUS_DST_COLOR: number; + static ONE_MINUS_CONSTANT_ALPHA: number; + static ONE_MINUS_CONSTANT_COLOR: number; + /** Oriented vertically */ + static ORIENTATION_PORTRAIT: number; + /** Oriented horizontally */ + static ORIENTATION_LANDSCAPE: number; + /** Oriented automatically */ + static ORIENTATION_AUTO: number; + /** <p> + If enabled, the texture coordinates will be calculated by using this formula: <br/> + - texCoord.left = (rect.x*2+1) / (texture.wide*2); <br/> + - texCoord.right = texCoord.left + (rect.width*2-2)/(texture.wide*2); <br/> + <br/> + The same for bottom and top. <br/> + <br/> + This formula prevents artifacts by using 99% of the texture. <br/> + The "correct" way to prevent artifacts is by expand the texture's border with the same color by 1 pixel<br/> + <br/> + Affected component: <br/> + - cc.TMXLayer <br/> + <br/> + Enabled by default. To disabled set it to 0. <br/> + To modify it, in Web engine please refer to CCMacro.js, in JSB please refer to CCConfig.h + </p> */ + static FIX_ARTIFACTS_BY_STRECHING_TEXEL_TMX: number; + /** Position of the FPS (Default: 0,0 (bottom-left corner))<br/> + To modify it, in Web engine please refer to CCMacro.js, in JSB please refer to CCConfig.h */ + static DIRECTOR_STATS_POSITION: Vec2; + /** <p> + If enabled, actions that alter the position property (eg: CCMoveBy, CCJumpBy, CCBezierBy, etc..) will be stacked. <br/> + If you run 2 or more 'position' actions at the same time on a node, then end position will be the sum of all the positions. <br/> + If disabled, only the last run action will take effect. + </p> */ + static ENABLE_STACKABLE_ACTIONS: number; + /** !#en + The timeout to determine whether a touch is no longer active and should be removed. + The reason to add this timeout is due to an issue in X5 browser core, + when X5 is presented in wechat on Android, if a touch is glissed from the bottom up, and leave the page area, + no touch cancel event is triggered, and the touch will be considered active forever. + After multiple times of this action, our maximum touches number will be reached and all new touches will be ignored. + So this new mechanism can remove the touch that should be inactive if it's not updated during the last 5000 milliseconds. + Though it might remove a real touch if it's just not moving for the last 5 seconds which is not easy with the sensibility of mobile touch screen. + You can modify this value to have a better behavior if you find it's not enough. + !#zh + 用于甄别一个触点对象是å¦å·²ç»å¤±æ•ˆå¹¶ä¸”å¯ä»¥è¢«ç§»é™¤çš„å»¶æ—¶æ—¶é•¿ + æ·»åŠ è¿™ä¸ªæ—¶é•¿çš„åŽŸå› æ˜¯ X5 å†…æ ¸åœ¨å¾®ä¿¡æµè§ˆå™¨ä¸å‡ºçŽ°çš„ä¸€ä¸ª bug。 + 在这个环境下,如果用户将一个触点从底å‘上移出页é¢åŒºåŸŸï¼Œå°†ä¸ä¼šè§¦å‘任何 touch cancel 或 touch end 事件,而这个触点会被永远当作åœç•™åœ¨é¡µé¢ä¸Šçš„æœ‰æ•ˆè§¦ç‚¹ã€‚ + é‡å¤è¿™æ ·æ“ä½œå‡ æ¬¡ä¹‹åŽï¼Œå±å¹•上的触点数é‡å°†è¾¾åˆ°æˆ‘们的事件系统所支æŒçš„æœ€é«˜è§¦ç‚¹æ•°é‡ï¼Œä¹‹åŽæ‰€æœ‰çš„触摸事件都将被忽略。 + 所以这个新的机制å¯ä»¥åœ¨è§¦ç‚¹åœ¨ä¸€å®šæ—¶é—´å†…没有任何更新的情况下视为失效触点并从事件系统ä¸ç§»é™¤ã€‚ + 当然,这也å¯èƒ½ç§»é™¤ä¸€ä¸ªçœŸå®žçš„è§¦ç‚¹ï¼Œå¦‚æžœç”¨æˆ·çš„è§¦ç‚¹çœŸçš„åœ¨ä¸€å®šæ—¶é—´æ®µå†…å®Œå…¨æ²¡æœ‰ç§»åŠ¨ï¼ˆè¿™åœ¨å½“å‰æ‰‹æœºå±å¹•çš„çµæ•度下会很难)。 + ä½ å¯ä»¥ä¿®æ”¹è¿™ä¸ªå€¼æ¥èŽ·å¾—ä½ éœ€è¦çš„æ•ˆæžœï¼Œé»˜è®¤å€¼æ˜¯ 5000 毫秒。 */ + static TOUCH_TIMEOUT: number; + /** !#en + The maximum vertex count for a single batched draw call. + !#zh + 最大å¯ä»¥è¢«å•æ¬¡æ‰¹å¤„ç†æ¸²æŸ“的顶点数é‡ã€‚ */ + static BATCH_VERTEX_COUNT: number; + /** !#en + Whether or not enabled tiled map auto culling. If you set the TiledMap skew or rotation, then need to manually disable this, otherwise, the rendering will be wrong. + !#zh + 是å¦å¼€å¯ç“¦ç‰‡åœ°å›¾çš„自动è£å‡åŠŸèƒ½ã€‚ç“¦ç‰‡åœ°å›¾å¦‚æžœè®¾ç½®äº† skew, rotation æˆ–è€…é‡‡ç”¨äº†æ‘„åƒæœºçš„è¯ï¼Œéœ€è¦æ‰‹åЍ关é—,å¦åˆ™æ¸²æŸ“会出错。 */ + static ENABLE_TILEDMAP_CULLING: boolean; + /** !#en + Boolean that indicates if the canvas contains an alpha channel, default sets to false for better performance. + Though if you want to make your canvas background transparent and show other dom elements at the background, + you can set it to true before `cc.game.run`. + Web only. + !#zh + 用于设置 Canvas èƒŒæ™¯æ˜¯å¦æ”¯æŒ alpha 通é“,默认为 falseï¼Œè¿™æ ·å¯ä»¥æœ‰æ›´é«˜çš„æ€§èƒ½è¡¨çŽ°ã€‚ + å¦‚æžœä½ å¸Œæœ› Canvas èƒŒæ™¯æ˜¯é€æ˜Žçš„,并显示背åŽçš„å…¶ä»– DOM å…ƒç´ ï¼Œä½ å¯ä»¥åœ¨ `cc.game.run` 之å‰å°†è¿™ä¸ªå€¼è®¾ä¸º true。 + ä»…æ”¯æŒ Web */ + static ENABLE_TRANSPARENT_CANVAS: boolean; + /** !#en + Boolean that indicates if the WebGL context is created with `antialias` option turned on, default value is false. + Set it to true could make your game graphics slightly smoother, like texture hard edges when rotated. + Whether to use this really depend on your game design and targeted platform, + device with retina display usually have good detail on graphics with or without this option, + you probably don't want antialias if your game style is pixel art based. + Also, it could have great performance impact with some browser / device using software MSAA. + You can set it to true before `cc.game.run`. + Web only. + !#zh + 用于设置在创建 WebGL Context 时是å¦å¼€å¯æŠ—锯齿选项,默认值是 false。 + 将这个选项设置为 true ä¼šè®©ä½ çš„æ¸¸æˆç”»é¢ç¨ç¨å¹³æ»‘一些,比如旋转硬边贴图时的锯齿。是å¦å¼€å¯è¿™ä¸ªé€‰é¡¹å¾ˆå¤§ç¨‹åº¦ä¸Šå–å†³äºŽä½ çš„æ¸¸æˆå’Œé¢å‘的平å°ã€‚ + 在大多数拥有 retina 级别å±å¹•çš„è®¾å¤‡ä¸Šç”¨æˆ·å¾€å¾€æ— æ³•åŒºåˆ†è¿™ä¸ªé€‰é¡¹å¸¦æ¥çš„å˜åŒ–ï¼›å¦‚æžœä½ çš„æ¸¸æˆé€‰æ‹©åƒç´ è‰ºæœ¯é£Žæ ¼ï¼Œä½ ä¹Ÿå¤šåŠä¸ä¼šæƒ³å¼€å¯è¿™ä¸ªé€‰é¡¹ã€‚ + åŒæ—¶ï¼Œåœ¨å°‘部分使用软件级别抗锯齿算法的设备或æµè§ˆå™¨ä¸Šï¼Œè¿™ä¸ªé€‰é¡¹ä¼šå¯¹æ€§èƒ½äº§ç”Ÿæ¯”较大的影å“。 + ä½ å¯ä»¥åœ¨ `cc.game.run` 之å‰è®¾ç½®è¿™ä¸ªå€¼ï¼Œå¦åˆ™å®ƒä¸ä¼šç”Ÿæ•ˆã€‚ + ä»…æ”¯æŒ Web */ + static ENABLE_WEBGL_ANTIALIAS: boolean; + /** !#en + Whether or not enable auto culling. + This feature have been removed in v2.0 new renderer due to overall performance consumption. + We have no plan currently to re-enable auto culling. + If your game have more dynamic objects, we suggest to disable auto culling. + If your game have more static objects, we suggest to enable auto culling. + !#zh + 是å¦å¼€å¯è‡ªåЍè£å‡åŠŸèƒ½ï¼Œå¼€å¯è£å‡åŠŸèƒ½å°†ä¼šæŠŠåœ¨å±å¹•外的物体从渲染队列ä¸åŽ»é™¤æŽ‰ã€‚ + 这个功能在 v2.0 的新渲染器ä¸è¢«ç§»é™¤äº†ï¼Œå› 为它在大多数游æˆä¸æ‰€å¸¦æ¥çš„æŸè€—è¦é«˜äºŽæ€§èƒ½çš„æå‡ï¼Œç›®å‰æˆ‘ä»¬æ²¡æœ‰è®¡åˆ’é‡æ–°æ”¯æŒè‡ªåЍè£å‰ªã€‚ + 如果游æˆä¸çš„动æ€ç‰©ä½“比较多的è¯ï¼Œå»ºè®®å°†æ¤é€‰é¡¹å…³é—。 + 如果游æˆä¸çš„陿€ç‰©ä½“比较多的è¯ï¼Œå»ºè®®å°†æ¤é€‰é¡¹æ‰“开。 */ + static ENABLE_CULLING: boolean; + /** !#en + Whether to clear the original image cache after uploaded a texture to GPU. If cleared, [Dynamic Atlas](https://docs.cocos.com/creator/manual/en/advanced-topics/dynamic-atlas.html) will not be supported. + Normally you don't need to enable this option on the web platform, because Image object doesn't consume too much memory. + But on WeChat Game platform, the current version cache decoded data in Image object, which has high memory usage. + So we enabled this option by default on WeChat, so that we can release Image cache immediately after uploaded to GPU. + !#zh + 是å¦åœ¨å°†è´´å›¾ä¸Šä¼ 至 GPU 之åŽåˆ 除原始图片缓å˜ï¼Œåˆ 除之åŽå›¾ç‰‡å°†æ— 法进行 [动æ€åˆå›¾](https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html)。 + 在 Web å¹³å°ï¼Œä½ 通常ä¸éœ€è¦å¼€å¯è¿™ä¸ªé€‰é¡¹ï¼Œå› 为在 Web å¹³å° Image 对象所å 用的内å˜å¾ˆå°ã€‚ + ä½†æ˜¯åœ¨å¾®ä¿¡å°æ¸¸æˆå¹³å°çš„当å‰ç‰ˆæœ¬ï¼ŒImage 对象会缓å˜è§£ç åŽçš„图片数æ®ï¼Œå®ƒæ‰€å 用的内å˜ç©ºé—´å¾ˆå¤§ã€‚ + 所以我们在微信平å°é»˜è®¤å¼€å¯äº†è¿™ä¸ªé€‰é¡¹ï¼Œè¿™æ ·æˆ‘们就å¯ä»¥åœ¨ä¸Šä¼ GL 贴图之åŽç«‹å³é‡Šæ”¾ Image 对象的内å˜ï¼Œé¿å…过高的内å˜å 用。 */ + static CLEANUP_IMAGE_CACHE: boolean; + /** !#en + Whether or not show mesh wire frame. + !#zh + æ˜¯å¦æ˜¾ç¤ºç½‘æ ¼çš„çº¿æ¡†ã€‚ */ + static SHOW_MESH_WIREFRAME: boolean; + /** !#en + Whether or not show mesh normal. + !#zh + æ˜¯å¦æ˜¾ç¤ºç½‘æ ¼çš„æ³•çº¿ã€‚ */ + static SHOW_MESH_NORMAL: boolean; + /** !#en + Whether to enable multi-touch. + !#zh + 是å¦å¼€å¯å¤šç‚¹è§¦æ‘¸ */ + static ENABLE_MULTI_TOUCH: boolean; + /** References: + https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap + https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/createImageBitmap + + !#en + Whether to use image bitmap first. + + !#zh + 是å¦ä¼˜å…ˆä½¿ç”¨ image bitmap */ + static ALLOW_IMAGE_BITMAP: boolean; + /** !#en + The image format supported by the engine defaults, and the supported formats may differ in different build platforms and device types. + Currently all platform and device support ['.webp', '.jpg', '.jpeg', '.bmp', '.png'], The iOS mobile platform also supports the PVR format。 + !#zh + 引擎默认支æŒçš„å›¾ç‰‡æ ¼å¼ï¼Œæ”¯æŒçš„æ ¼å¼å¯èƒ½åœ¨ä¸åŒçš„æž„建平å°å’Œè®¾å¤‡ç±»åž‹ä¸Šæœ‰æ‰€å·®åˆ«ã€‚ + ç›®å‰æ‰€æœ‰å¹³å°å’Œè®¾å¤‡æ”¯æŒçš„æ ¼å¼æœ‰ ['.webp', '.jpg', '.jpeg', '.bmp', '.png']. å¦å¤– Ios 手机平å°è¿˜é¢å¤–支æŒäº† PVR æ ¼å¼ã€‚ */ + static SUPPORT_TEXTURE_FORMATS: string[]; + } + /** !#en Box Collider. + !#zh 包围盒碰撞组件 */ + export class BoxCollider extends Collider implements Collider.Box { + /** !#en + Collider info in world coordinate. + !#zh + ç¢°æ’žä½“çš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„ä¿¡æ¯ã€‚ */ + world: ColliderInfo; + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Box size + !#zh åŒ…å›´ç›’å¤§å° */ + size: Size; + } + /** !#en Circle Collider. + !#zh 圆形碰撞组件 */ + export class CircleCollider extends Collider implements Collider.Circle { + /** !#en + Collider info in world coordinate. + !#zh + ç¢°æ’žä½“çš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„ä¿¡æ¯ã€‚ */ + world: ColliderInfo; + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Circle radius + !#zh 圆形åŠå¾„ */ + radius: number; + } + /** !#en Collider component base class. + !#zh 碰撞组件基类 */ + export class Collider extends Component { + /** !#en Tag. If a node has several collider components, you can judge which type of collider is collided according to the tag. + !#zh æ ‡ç¾ã€‚当一个节点上有多个碰撞组件时,在å‘生碰撞åŽï¼Œå¯ä»¥ä½¿ç”¨æ¤æ ‡ç¾æ¥åˆ¤æ–是节点上的哪个碰撞组件被碰撞了。 */ + tag: number; + } + /** !#en + Collider Info. + !#zh + 碰撞体信æ¯ã€‚ */ + export class ColliderInfo { + /** !#en + Collider aabb information of last frame + !#zh + 碰撞体上一帧的 aabb ä¿¡æ¯ */ + preAabb: Rect; + /** !#en + Collider aabb information of current frame + !#zh + 碰撞体当å‰å¸§çš„ aabb ä¿¡æ¯ */ + aabb: Rect; + /** !#en + Collider matrix + !#zh + ç¢°æ’žä½“çš„çŸ©é˜µä¿¡æ¯ */ + matrix: Mat4; + /** !#en + Collider radius (for CircleCollider) + !#zh + 碰撞体的åŠå¾„(åªå¯¹ CircleCollider 有效) */ + radius: number; + /** !#en + Collider position (for CircleCollider) + !#zh + 碰撞体的ä½ç½®ï¼ˆåªå¯¹ CircleCollider 有效) */ + position: Vec2; + /** !#en + Collider points (for BoxCollider and PolygonCollider) + !#zh + 碰撞体的顶点信æ¯ï¼ˆåªå¯¹ BoxCollider å’Œ PolygonCollider 有效) */ + points: Vec2[]; + } + /** !#en + A simple collision manager class. + It will calculate whether the collider collides other colliders, if collides then call the callbacks. + !#zh + 一个简å•的碰撞组件管ç†ç±»ï¼Œç”¨äºŽå¤„ç†èŠ‚ç‚¹ä¹‹é—´çš„ç¢°æ’žç»„ä»¶æ˜¯å¦äº§ç”Ÿäº†ç¢°æ’žï¼Œå¹¶è°ƒç”¨ç›¸åº”回调函数。 */ + export class CollisionManager implements EventTarget { + /** !#en + !#zh + 是å¦å¼€å¯ç¢°æ’žç®¡ç†ï¼Œé»˜è®¤ä¸ºä¸å¼€å¯ */ + enabled: boolean; + /** !#en + !#zh + 是å¦ç»˜åˆ¶ç¢°æ’žç»„件的包围盒,默认为ä¸ç»˜åˆ¶ */ + enabledDrawBoundingBox: boolean; + /** !#en + !#zh + 是å¦ç»˜åˆ¶ç¢°æ’žç»„件的形状,默认为ä¸ç»˜åˆ¶ */ + enabledDebugDraw: boolean; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en Intersection helper class + !#zh 辅助类,用于测试形状与形状是å¦ç›¸äº¤ */ + export class Intersection { + /** + !#en Test line and line + !#zh 测试线段与线段是å¦ç›¸äº¤ + @param a1 The start point of the first line + @param a2 The end point of the first line + @param b1 The start point of the second line + @param b2 The end point of the second line + */ + static lineLine(a1: Vec2, a2: Vec2, b1: Vec2, b2: Vec2): boolean; + /** + !#en Test line and rect + !#zh 测试线段与矩形是å¦ç›¸äº¤ + @param a1 The start point of the line + @param a2 The end point of the line + @param b The rect + */ + static lineRect(a1: Vec2, a2: Vec2, b: Rect): boolean; + /** + !#en Test line and polygon + !#zh 测试线段与多边形是å¦ç›¸äº¤ + @param a1 The start point of the line + @param a2 The end point of the line + @param b The polygon, a set of points + */ + static linePolygon(a1: Vec2, a2: Vec2, b: Vec2[]): boolean; + /** + !#en Test rect and rect + !#zh 测试矩形与矩形是å¦ç›¸äº¤ + @param a The first rect + @param b The second rect + */ + static rectRect(a: Rect, b: Rect): boolean; + /** + !#en Test rect and polygon + !#zh 测试矩形与多边形是å¦ç›¸äº¤ + @param a The rect + @param b The polygon, a set of points + */ + static rectPolygon(a: Rect, b: Vec2[]): boolean; + /** + !#en Test polygon and polygon + !#zh 测试多边形与多边形是å¦ç›¸äº¤ + @param a The first polygon, a set of points + @param b The second polygon, a set of points + */ + static polygonPolygon(a: Vec2[], b: Vec2[]): boolean; + /** + !#en Test circle and circle + !#zh 测试圆形与圆形是å¦ç›¸äº¤ + @param a Object contains position and radius + @param b Object contains position and radius + */ + static circleCircle(a: {position: Vec2, radius: number}, b: {position: Vec2, radius: number}): boolean; + /** + !#en Test polygon and circle + !#zh 测试矩形与圆形是å¦ç›¸äº¤ + @param polygon The Polygon, a set of points + @param circle Object contains position and radius + */ + static polygonCircle(polygon: Vec2[], circle: {position: Vec2, radius: number}): boolean; + /** + !#en Test whether the point is in the polygon + !#zh 测试一个点是å¦åœ¨ä¸€ä¸ªå¤šè¾¹å½¢ä¸ + @param point The point + @param polygon The polygon, a set of points + */ + static pointInPolygon(point: Vec2, polygon: Vec2[]): boolean; + /** + !#en Calculate the distance of point to line. + !#zh 计算点到直线的è·ç¦»ã€‚如果这是一æ¡çº¿æ®µå¹¶ä¸”垂足ä¸åœ¨çº¿æ®µå†…,则会计算点到线段端点的è·ç¦»ã€‚ + @param point The point + @param start The start point of line + @param end The end point of line + @param isSegment whether this line is a segment + */ + static pointLineDistance(point: Vec2, start: Vec2, end: Vec2, isSegment: boolean): number; + } + /** !#en Polygon Collider. + !#zh 多边形碰撞组件 */ + export class PolygonCollider extends Collider implements Collider.Polygon { + /** !#en + Collider info in world coordinate. + !#zh + ç¢°æ’žä½“çš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„ä¿¡æ¯ã€‚ */ + world: ColliderInfo; + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Polygon points + !#zh 多边形顶点数组 */ + points: Vec2[]; + } + /** !#en Class for audio data handling. + !#zh 音频资æºç±»ã€‚ */ + export class AudioClip extends Asset implements EventTarget { + /** !#en Get the audio clip duration + !#zh 获å–音频剪辑的长度 */ + duration: number; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en Class for BitmapFont handling. + !#zh ä½å›¾å—体资æºç±»ã€‚ */ + export class BitmapFont extends Font { + } + /** undefined */ + export class BufferAsset extends Asset { + } + /** !#en Class for Font handling. + !#zh å—体资æºç±»ã€‚ */ + export class Font extends Asset { + } + /** !#en + Class for JSON file. When the JSON file is loaded, this object is returned. + The parsed JSON object can be accessed through the `json` attribute in it.<br> + If you want to get the original JSON text, you should modify the extname to `.txt` + so that it is loaded as a `TextAsset` instead of a `JsonAsset`. + + !#zh + JSON 资æºç±»ã€‚JSON æ–‡ä»¶åŠ è½½åŽï¼Œå°†ä¼šè¿”回该对象。å¯ä»¥é€šè¿‡å…¶ä¸çš„ `json` 属性访问解æžåŽçš„ JSON 对象。<br> + å¦‚æžœä½ æƒ³è¦èŽ·å¾— JSON çš„åŽŸå§‹æ–‡æœ¬ï¼Œé‚£ä¹ˆåº”è¯¥ä¿®æ”¹æºæ–‡ä»¶çš„åŽç¼€ä¸º `.txt`ï¼Œè¿™æ ·å°±ä¼šåŠ è½½ä¸ºä¸€ä¸ª `TextAsset` è€Œä¸æ˜¯ `JsonAsset`。 */ + export class JsonAsset extends Asset { + /** The loaded JSON object. */ + json: any; + } + /** !#en Class for LabelAtlas handling. + !#zh 艺术数å—å—体资æºç±»ã€‚ */ + export class LabelAtlas extends BitmapFont { + } + /** !#en Class for prefab handling. + !#zh 预制资æºç±»ã€‚ */ + export class Prefab extends Asset { + /** the main cc.Node in the prefab */ + data: Node; + /** !#zh + 设置实例化这个 prefab 时所用的优化ç–ç•¥ã€‚æ ¹æ®ä½¿ç”¨æƒ…况设置为åˆé€‚的值,能优化该 prefab 实例化所用的时间。 + !#en + Indicates the optimization policy for instantiating this prefab. + Set to a suitable value based on usage, can optimize the time it takes to instantiate this prefab. */ + optimizationPolicy: Prefab.OptimizationPolicy; + /** !#en Indicates the raw assets of this prefab can be load after prefab loaded. + !#zh 指示该 Prefab ä¾èµ–的资æºå¯å¦åœ¨ Prefab åŠ è½½åŽå†å»¶è¿ŸåŠ è½½ã€‚ */ + asyncLoadAssets: boolean; + readonly: boolean; + /** + Dynamically translation prefab data into minimized code.<br/> + This method will be called automatically before the first time the prefab being instantiated, + but you can re-call to refresh the create function once you modified the original prefab data in script. + */ + compileCreateFunction(): void; + } + /** Render textures are textures that can be rendered to. */ + export class RenderTexture extends Texture2D { + /** + !#en + Init the render texture with size. + !#zh + åˆå§‹åŒ– render texture + @param width width + @param height height + @param depthStencilFormat depthStencilFormat + */ + initWithSize(width?: number, height?: number, depthStencilFormat?: number): void; + /** + !#en + Get pixels from render texture, the pixels data stores in a RGBA Uint8Array. + It will return a new (width * height * 4) length Uint8Array by default。 + You can specify a data to store the pixels to reuse the data, + you and can specify other params to specify the texture region to read. + !#zh + 从 render texture 读å–åƒç´ æ•°æ®ï¼Œæ•°æ®ç±»åž‹ä¸º RGBA æ ¼å¼çš„ Uint8Array 数组。 + é»˜è®¤æ¯æ¬¡è°ƒç”¨æ¤å‡½æ•°ä¼šç”Ÿæˆä¸€ä¸ªå¤§å°ä¸º (长 x 高 x 4) çš„ Uint8Array。 + ä½ å¯ä»¥é€šè¿‡ä¼ å…¥ data æ¥æŽ¥æ”¶åƒç´ æ•°æ®ï¼Œä¹Ÿå¯ä»¥é€šè¿‡ä¼ 傿¥æŒ‡å®šéœ€è¦è¯»å–的区域的åƒç´ 。 + @param data data + @param x x + @param y y + @param w w + @param h h + */ + readPixels(data?: Uint8Array, x?: number, y?: number, w?: number, h?: number): Uint8Array; + } + /** !#en Class for scene handling. + !#zh 场景资æºç±»ã€‚ */ + export class SceneAsset extends Asset { + scene: Scene; + /** !#en Indicates the raw assets of this scene can be load after scene launched. + !#zh 指示该场景ä¾èµ–的资æºå¯å¦åœ¨åœºæ™¯åˆ‡æ¢åŽå†å»¶è¿ŸåŠ è½½ã€‚ */ + asyncLoadAssets: boolean; + } + /** !#en Class for script handling. + !#zh Script 资æºç±»ã€‚ */ + export class _Script extends Asset { + } + /** !#en Class for JavaScript handling. + !#zh JavaScript 资æºç±»ã€‚ */ + export class _JavaScript extends Asset { + } + /** !#en Class for TypeScript handling. + !#zh TypeScript 资æºç±»ã€‚ */ + export class TypeScript extends Asset { + } + /** !#en Class for sprite atlas handling. + !#zh ç²¾çµå›¾é›†èµ„æºç±»ã€‚ */ + export class SpriteAtlas extends Asset { + /** + Returns the texture of the sprite atlas + */ + getTexture(): Texture2D; + /** + Returns the sprite frame correspond to the given key in sprite atlas. + @param key key + */ + getSpriteFrame(key: string): SpriteFrame; + /** + Returns the sprite frames in sprite atlas. + */ + getSpriteFrames(): SpriteFrame[]; + } + /** !#en + A cc.SpriteFrame has:<br/> + - texture: A cc.Texture2D that will be used by render components<br/> + - rectangle: A rectangle of the texture + + !#zh + 一个 SpriteFrame 包å«ï¼š<br/> + - 纹ç†ï¼šä¼šè¢«æ¸²æŸ“组件使用的 Texture2D 对象。<br/> + - 矩形:在纹ç†ä¸çš„矩形区域。 */ + export class SpriteFrame extends Asset implements EventTarget { + /** !#en Top border of the sprite + !#zh sprite 的顶部边框 */ + insetTop: number; + /** !#en Bottom border of the sprite + !#zh sprite 的底部边框 */ + insetBottom: number; + /** !#en Left border of the sprite + !#zh sprite 的左边边框 */ + insetLeft: number; + /** !#en Right border of the sprite + !#zh sprite 的左边边框 */ + insetRight: number; + /** + !#en + Constructor of SpriteFrame class. + !#zh + SpriteFrame ç±»çš„æž„é€ å‡½æ•°ã€‚ + @param filename filename + @param rect rect + @param rotated Whether the frame is rotated in the texture + @param offset The offset of the frame in the texture + @param originalSize The size of the frame in the texture + */ + constructor(filename?: string|Texture2D, rect?: Rect, rotated?: boolean, offset?: Vec2, originalSize?: Size); + /** + !#en Returns whether the texture have been loaded + !#zh 返回是å¦å·²åŠ è½½çº¹ç† + */ + textureLoaded(): boolean; + /** + !#en Returns whether the sprite frame is rotated in the texture. + !#zh èŽ·å– SpriteFrame æ˜¯å¦æ—‹è½¬ + */ + isRotated(): boolean; + /** + !#en Set whether the sprite frame is rotated in the texture. + !#zh 设置 SpriteFrame æ˜¯å¦æ—‹è½¬ + @param bRotated bRotated + */ + setRotated(bRotated: boolean): void; + /** + !#en Returns whether the sprite frame is flip x axis in the texture. + !#zh èŽ·å– SpriteFrame 是å¦å转 x è½´ + */ + isFlipX(): boolean; + /** + !#en Returns whether the sprite frame is flip y axis in the texture. + !#zh èŽ·å– SpriteFrame 是å¦å转 y è½´ + */ + isFlipY(): boolean; + /** + !#en Set whether the sprite frame is flip x axis in the texture. + !#zh 设置 SpriteFrame 是å¦ç¿»è½¬ x è½´ + @param flipX flipX + */ + setFlipX(flipX: boolean): void; + /** + !#en Set whether the sprite frame is flip y axis in the texture. + !#zh 设置 SpriteFrame 是å¦ç¿»è½¬ y è½´ + @param flipY flipY + */ + setFlipY(flipY: boolean): void; + /** + !#en Returns the rect of the sprite frame in the texture. + !#zh èŽ·å– SpriteFrame 的纹ç†çŸ©å½¢åŒºåŸŸ + */ + getRect(): Rect; + /** + !#en Sets the rect of the sprite frame in the texture. + !#zh 设置 SpriteFrame 的纹ç†çŸ©å½¢åŒºåŸŸ + @param rect rect + */ + setRect(rect: Rect): void; + /** + !#en Returns the original size of the trimmed image. + !#zh 获å–修剪å‰çš„åŽŸå§‹å¤§å° + */ + getOriginalSize(): Size; + /** + !#en Sets the original size of the trimmed image. + !#zh 设置修剪å‰çš„åŽŸå§‹å¤§å° + @param size size + */ + setOriginalSize(size: Size): void; + /** + !#en Returns the texture of the frame. + !#zh 获å–使用的纹ç†å®žä¾‹ + */ + getTexture(): Texture2D; + /** + !#en Returns the offset of the frame in the texture. + !#zh 获å–åç§»é‡ + */ + getOffset(): Vec2; + /** + !#en Sets the offset of the frame in the texture. + !#zh 设置åç§»é‡ + @param offsets offsets + */ + setOffset(offsets: Vec2): void; + /** + !#en Clone the sprite frame. + !#zh 克隆 SpriteFrame + */ + clone(): SpriteFrame; + /** + !#en Set SpriteFrame with Texture, rect, rotated, offset and originalSize.<br/> + !#zh 通过 Texture,rect,rotated,offset å’Œ originalSize 设置 SpriteFrame。 + @param texture texture + @param rect rect + @param rotated rotated + @param offset offset + @param originalSize originalSize + */ + setTexture(texture: Texture2D, rect?: Rect, rotated?: boolean, offset?: Vec2, originalSize?: Size): boolean; + /** + !#en If a loading scene (or prefab) is marked as `asyncLoadAssets`, all the textures of the SpriteFrame which + associated by user's custom Components in the scene, will not preload automatically. + These textures will be load when Sprite component is going to render the SpriteFrames. + You can call this method if you want to load the texture early. + !#zh å½“åŠ è½½ä¸çš„场景或 Prefab è¢«æ ‡è®°ä¸º `asyncLoadAssets` 时,用户在场景ä¸ç”±è‡ªå®šä¹‰ç»„ä»¶å…³è”到的所有 SpriteFrame 的贴图都ä¸ä¼šè¢«æå‰åŠ è½½ã€‚ + åªæœ‰å½“ Sprite ç»„ä»¶è¦æ¸²æŸ“这些 SpriteFrame 时,æ‰ä¼šæ£€æŸ¥è´´å›¾æ˜¯å¦åŠ è½½ã€‚å¦‚æžœä½ å¸Œæœ›åŠ è½½è¿‡ç¨‹æå‰ï¼Œä½ å¯ä»¥æ‰‹å·¥è°ƒç”¨è¿™ä¸ªæ–¹æ³•。 + + @example + ```js + if (spriteFrame.textureLoaded()) { + this._onSpriteFrameLoaded(); + } + else { + spriteFrame.once('load', this._onSpriteFrameLoaded, this); + spriteFrame.ensureLoadTexture(); + } + ``` + */ + ensureLoadTexture(): void; + /** + !#en + If you do not need to use the SpriteFrame temporarily, you can call this method so that its texture could be garbage collected. Then when you need to render the SpriteFrame, you should call `ensureLoadTexture` manually to reload texture. + !#zh + å½“ä½ æš‚æ—¶ä¸å†ä½¿ç”¨è¿™ä¸ª SpriteFrame 时,å¯ä»¥è°ƒç”¨è¿™ä¸ªæ–¹æ³•æ¥ä¿è¯å¼•用的贴图对象能被 GC。然åŽå½“ä½ è¦æ¸²æŸ“ SpriteFrame æ—¶ï¼Œä½ éœ€è¦æ‰‹åŠ¨è°ƒç”¨ `ensureLoadTexture` æ¥é‡æ–°åŠ è½½è´´å›¾ã€‚ + */ + clearTexture(): void; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en Class for TTFFont handling. + !#zh TTF å—体资æºç±»ã€‚ */ + export class TTFFont extends Font { + } + /** !#en Class for text file. + !#zh 文本资æºç±»ã€‚ */ + export class TextAsset extends Asset { + /** The text contents of the resource. */ + text: string; + } + /** This class allows to easily create OpenGL or Canvas 2D textures from images or raw data. */ + export class Texture2D extends Asset implements EventTarget { + /** !#en Sets whether generate mipmaps for the texture + !#zh 是å¦ä¸ºçº¹ç†è®¾ç½®ç”Ÿæˆ mipmaps。 */ + genMipmaps: boolean; + /** !#en + Sets whether texture can be packed into texture atlas. + If need use texture uv in custom Effect, please sets packable to false. + !#zh + è®¾ç½®çº¹ç†æ˜¯å¦å…许å‚与åˆå›¾ã€‚ + 如果需è¦åœ¨è‡ªå®šä¹‰ Effect ä¸ä½¿ç”¨çº¹ç† UV,需è¦ç¦æ¢è¯¥é€‰é¡¹ã€‚ */ + packable: boolean; + /** !#en + Whether the texture is loaded or not + !#zh + 贴图是å¦å·²ç»æˆåŠŸåŠ è½½ */ + loaded: boolean; + /** !#en + Texture width in pixel + !#zh + 贴图åƒç´ 宽度 */ + width: number; + /** !#en + Texture height in pixel + !#zh + 贴图åƒç´ 高度 */ + height: number; + /** + !#en + Get renderer texture implementation object + extended from render.Texture2D + !#zh 返回渲染器内部贴图对象 + */ + getImpl(): void; + /** + Update texture options, not available in Canvas render mode. + image, format, premultiplyAlpha can not be updated in native. + @param options options + */ + update(options: {image: DOMImageElement; genMipmaps: boolean; format: Texture2D.PixelFormat; minFilter: Texture2D.Filter; magFilter: Texture2D.Filter; wrapS: WrapMode; wrapT: WrapMode; premultiplyAlpha: boolean; }): void; + /** + !#en + Init with HTML element. + !#zh 用 HTML Image 或 Canvas 对象åˆå§‹åŒ–贴图。 + @param element element + + @example + ```js + var img = new Image(); + img.src = dataURL; + texture.initWithElement(img); + ``` + */ + initWithElement(element: HTMLImageElement|HTMLCanvasElement): void; + /** + !#en + Intializes with texture data in ArrayBufferView. + !#zh 使用一个å˜å‚¨åœ¨ ArrayBufferView ä¸çš„å›¾åƒæ•°æ®ï¼ˆraw data)åˆå§‹åŒ–æ•°æ®ã€‚ + @param data data + @param pixelFormat pixelFormat + @param pixelsWidth pixelsWidth + @param pixelsHeight pixelsHeight + */ + initWithData(data: ArrayBufferView, pixelFormat: number, pixelsWidth: number, pixelsHeight: number): boolean; + /** + !#en + HTMLElement Object getter, available only on web.<br/> + Note: texture is packed into texture atlas by default<br/> + you should set texture.packable as false before getting Html element object. + !#zh 获å–当å‰è´´å›¾å¯¹åº”çš„ HTML Image 或 Canvas 对象,åªåœ¨ Web å¹³å°ä¸‹æœ‰æ•ˆã€‚<br/> + 注æ„:<br/> + texture 默认å‚与动æ€åˆå›¾ï¼Œå¦‚果需è¦èŽ·å–到æ£ç¡®çš„ Html å…ƒç´ å¯¹è±¡ï¼Œéœ€è¦å…ˆè®¾ç½® texture.packable 为 false + */ + getHtmlElementObj(): HTMLImageElement; + /** + !#en + Destory this texture and immediately release its video memory. (Inherit from cc.Object.destroy)<br> + After destroy, this object is not usable anymore. + You can use cc.isValid(obj) to check whether the object is destroyed before accessing it. + !#zh + 销æ¯è¯¥è´´å›¾ï¼Œå¹¶ç«‹å³é‡Šæ”¾å®ƒå¯¹åº”的显å˜ã€‚(继承自 cc.Object.destroy)<br/> + 销æ¯åŽï¼Œè¯¥å¯¹è±¡ä¸å†å¯ç”¨ã€‚您å¯ä»¥åœ¨è®¿é—®å¯¹è±¡ä¹‹å‰ä½¿ç”¨ cc.isValid(obj) æ¥æ£€æŸ¥å¯¹è±¡æ˜¯å¦å·²è¢«é”€æ¯ã€‚ + */ + destroy(): boolean; + /** + !#en + Pixel format of the texture. + !#zh 获å–纹ç†çš„åƒç´ æ ¼å¼ã€‚ + */ + getPixelFormat(): number; + /** + !#en + Whether or not the texture has their Alpha premultiplied. + !#zh 检查纹ç†åœ¨ä¸Šä¼ GPU 时预乘选项是å¦å¼€å¯ã€‚ + */ + hasPremultipliedAlpha(): boolean; + /** + !#en + Handler of texture loaded event. + Since v2.0, you don't need to invoke this function, it will be invoked automatically after texture loaded. + !#zh è´´å›¾åŠ è½½äº‹ä»¶å¤„ç†å™¨ã€‚v2.0 之åŽä½ å°†ä¸åœ¨éœ€è¦æ‰‹åŠ¨æ‰§è¡Œè¿™ä¸ªå‡½æ•°ï¼Œå®ƒä¼šåœ¨è´´å›¾åŠ è½½æˆåŠŸä¹‹åŽè‡ªåŠ¨æ‰§è¡Œã€‚ + @param premultiplied premultiplied + */ + handleLoadedTexture(premultiplied?: boolean): void; + /** + !#en + Description of cc.Texture2D. + !#zh cc.Texture2D æè¿°ã€‚ + */ + description(): string; + /** + !#en + Release texture, please use destroy instead. + !#zh 释放纹ç†ï¼Œè¯·ä½¿ç”¨ destroy 替代。 + */ + releaseTexture(): void; + /** + !#en Sets the wrap s and wrap t options. <br/> + If the texture size is NPOT (non power of 2), then in can only use gl.CLAMP_TO_EDGE in gl.TEXTURE_WRAP_{S,T}. + !#zh 设置纹ç†åŒ…装模å¼ã€‚ + 若纹ç†è´´å›¾å°ºå¯¸æ˜¯ NPOT(non power of 2),则åªèƒ½ä½¿ç”¨ Texture2D.WrapMode.CLAMP_TO_EDGE。 + @param wrapS wrapS + @param wrapT wrapT + */ + setTexParameters(wrapS: Texture2D.WrapMode, wrapT: Texture2D.WrapMode): void; + /** + !#en Sets the minFilter and magFilter options + !#zh 设置纹ç†è´´å›¾ç¼©å°å’Œæ”¾å¤§è¿‡æ»¤å™¨ç®—法选项。 + @param minFilter minFilter + @param magFilter magFilter + */ + setFilters(minFilter: Texture2D.Filter, magFilter: Texture2D.Filter): void; + /** + !#en + Sets the flipY options + !#zh 设置贴图的纵å‘翻转选项。 + @param flipY flipY + */ + setFlipY(flipY: boolean): void; + /** + !#en + Sets the premultiply alpha options + !#zh 设置贴图的预乘选项。 + @param premultiply premultiply + */ + setPremultiplyAlpha(premultiply: boolean): void; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en + Camera is usefull when making reel game or other games which need scroll screen. + Using camera will be more efficient than moving node to scroll screen. + Camera + !#zh + æ‘„åƒæœºåœ¨åˆ¶ä½œå·è½´æˆ–是其他需è¦ç§»åЍå±å¹•çš„æ¸¸æˆæ—¶æ¯”è¾ƒæœ‰ç”¨ï¼Œä½¿ç”¨æ‘„åƒæœºå°†ä¼šæ¯”移动节点æ¥ç§»åЍå±å¹•æ›´åŠ é«˜æ•ˆã€‚ */ + export class Camera extends Component { + /** !#en + The camera zoom ratio, only support 2D camera. + !#zh + æ‘„åƒæœºç¼©æ”¾æ¯”率, åªæ”¯æŒ 2D camera。 */ + zoomRatio: number; + /** !#en + Field of view. The width of the Camera’s view angle, measured in degrees along the local Y axis. + !#zh + å†³å®šæ‘„åƒæœºè§†è§’çš„å®½åº¦ï¼Œå½“æ‘„åƒæœºå¤„于é€è§†æŠ•影模å¼ä¸‹è¿™ä¸ªå±žæ€§æ‰ä¼šç”Ÿæ•ˆã€‚ */ + fov: number; + /** !#en + The viewport size of the Camera when set to orthographic projection. + !#zh + æ‘„åƒæœºåœ¨æ£äº¤æŠ•影模å¼ä¸‹çš„视窗大å°ã€‚ */ + orthoSize: number; + /** !#en + The near clipping plane. + !#zh + æ‘„åƒæœºçš„近剪è£é¢ã€‚ */ + nearClip: number; + /** !#en + The far clipping plane. + !#zh + æ‘„åƒæœºçš„远剪è£é¢ã€‚ */ + farClip: number; + /** !#en + Is the camera orthographic (true) or perspective (false)? + !#zh + è®¾ç½®æ‘„åƒæœºçš„æŠ•å½±æ¨¡å¼æ˜¯æ£äº¤è¿˜æ˜¯é€è§†æ¨¡å¼ã€‚ */ + ortho: boolean; + /** !#en + Four values (0 ~ 1) that indicate where on the screen this camera view will be drawn. + !#zh + å†³å®šæ‘„åƒæœºç»˜åˆ¶åœ¨å±å¹•上哪个ä½ç½®ï¼Œå€¼ä¸ºï¼ˆ0 ~ 1)。 */ + rect: Rect; + /** !#en + This is used to render parts of the scene selectively. + !#zh + å†³å®šæ‘„åƒæœºä¼šæ¸²æŸ“场景的哪一部分。 */ + cullingMask: number; + /** !#en + Determining what to clear when camera rendering. + !#zh + å†³å®šæ‘„åƒæœºæ¸²æŸ“时会清除哪些状æ€ã€‚ */ + clearFlags: Camera.ClearFlags; + /** !#en + The color with which the screen will be cleared. + !#zh + æ‘„åƒæœºç”¨äºŽæ¸…除å±å¹•的背景色。 */ + backgroundColor: Color; + /** !#en + Camera's depth in the camera rendering order. Cameras with higher depth are rendered after cameras with lower depth. + !#zh + æ‘„åƒæœºæ·±åº¦ã€‚ç”¨äºŽå†³å®šæ‘„åƒæœºçš„æ¸²æŸ“顺åºï¼Œå€¼è¶Šå¤§æ¸²æŸ“在越上层。 */ + depth: number; + /** !#en + Destination render texture. + Usually cameras render directly to screen, but for some effects it is useful to make a camera render into a texture. + !#zh + æ‘„åƒæœºæ¸²æŸ“çš„ç›®æ ‡ RenderTexture。 + ä¸€èˆ¬æ‘„åƒæœºä¼šç›´æŽ¥æ¸²æŸ“到å±å¹•上,但是有一些效果å¯ä»¥ä½¿ç”¨æ‘„åƒæœºæ¸²æŸ“到 RenderTexture 上å†å¯¹ RenderTexture è¿›è¡Œå¤„ç†æ¥å®žçŽ°ã€‚ */ + targetTexture: RenderTexture; + /** !#en + Sets the camera's render stages. + !#zh + è®¾ç½®æ‘„åƒæœºæ¸²æŸ“的阶段 */ + renderStages: number; + /** !#en Whether auto align camera viewport to screen + !#zh 是å¦è‡ªåŠ¨å°†æ‘„åƒæœºçš„视å£å¯¹å‡†å±å¹• */ + alignWithScreen: boolean; + /** !#en + The primary camera in the scene. Returns the rear most rendered camera, which is the camera with the lowest depth. + !#zh + 当å‰åœºæ™¯ä¸æ¿€æ´»çš„ä¸»æ‘„åƒæœºã€‚将会返回渲染在å±å¹•最底层,也就是 depth 最å°çš„æ‘„åƒæœºã€‚ */ + static main: Camera; + /** !#en + All enabled cameras. + !#zh + 当剿¿€æ´»çš„æ‰€æœ‰æ‘„åƒæœºã€‚ */ + static cameras: Camera[]; + /** + !#en + Get the first camera which the node belong to. + !#zh + 获å–èŠ‚ç‚¹æ‰€åœ¨çš„ç¬¬ä¸€ä¸ªæ‘„åƒæœºã€‚ + @param node node + */ + static findCamera(node: Node): Camera; + /** + !#en + Get the screen to world matrix, only support 2D camera which alignWithScreen is true. + !#zh + 获å–å±å¹•åæ ‡ç³»åˆ°ä¸–ç•Œåæ ‡ç³»çš„矩阵,åªé€‚用于 alignWithScreen 为 true çš„ 2D æ‘„åƒæœºã€‚ + @param out the matrix to receive the result + */ + getScreenToWorldMatrix2D(out: Mat4): Mat4; + /** + !#en + Get the world to camera matrix, only support 2D camera which alignWithScreen is true. + !#zh + 获å–ä¸–ç•Œåæ ‡ç³»åˆ°æ‘„åƒæœºåæ ‡ç³»çš„çŸ©é˜µï¼Œåªé€‚用于 alignWithScreen 为 true çš„ 2D æ‘„åƒæœºã€‚ + @param out the matrix to receive the result + */ + getWorldToScreenMatrix2D(out: Mat4): Mat4; + /** + !#en + Convert point from screen to world. + !#zh + å°†åæ ‡ä»Žå±å¹•åæ ‡ç³»è½¬æ¢åˆ°ä¸–ç•Œåæ ‡ç³»ã€‚ + @param screenPosition screenPosition + @param out out + */ + getScreenToWorldPoint(screenPosition: Vec3|Vec2, out?: Vec3|Vec2): Vec3; + /** + !#en + Convert point from world to screen. + !#zh + å°†åæ ‡ä»Žä¸–ç•Œåæ ‡ç³»è½¬åŒ–到å±å¹•åæ ‡ç³»ã€‚ + @param worldPosition worldPosition + @param out out + */ + getWorldToScreenPoint(worldPosition: Vec3|Vec2, out?: Vec3|Vec2): Vec3; + /** + !#en + Get a ray from screen position + !#zh + 从å±å¹•åæ ‡èŽ·å–一æ¡å°„线 + @param screenPos screenPos + */ + getRay(screenPos: Vec2): geomUtils.Ray; + /** + !#en + Check whether the node is in the camera. + !#zh + 检测节点是å¦è¢«æ¤æ‘„åƒæœºå½±å“ + @param node the node which need to check + */ + containsNode(node: Node): boolean; + /** + !#en + Render the camera manually. + !#zh + æ‰‹åŠ¨æ¸²æŸ“æ‘„åƒæœºã€‚ + @param rootNode rootNode + */ + render(rootNode?: Node): void; + /** + !#en + Returns the matrix that transform the node's (local) space coordinates into the camera's space coordinates. + !#zh + è¿”å›žä¸€ä¸ªå°†èŠ‚ç‚¹åæ ‡ç³»è½¬æ¢åˆ°æ‘„åƒæœºåæ ‡ç³»ä¸‹çš„çŸ©é˜µ + @param node the node which should transform + */ + getNodeToCameraTransform(node: Node): AffineTransform; + /** + !#en + Conver a camera coordinates point to world coordinates. + !#zh + å°†ä¸€ä¸ªæ‘„åƒæœºåæ ‡ç³»ä¸‹çš„ç‚¹è½¬æ¢åˆ°ä¸–ç•Œåæ ‡ç³»ä¸‹ã€‚ + @param point the point which should transform + @param out the point to receive the result + */ + getCameraToWorldPoint(point: Vec2, out?: Vec2): Vec2; + /** + !#en + Conver a world coordinates point to camera coordinates. + !#zh + å°†ä¸€ä¸ªä¸–ç•Œåæ ‡ç³»ä¸‹çš„点转æ¢åˆ°æ‘„åƒæœºåæ ‡ç³»ä¸‹ã€‚ + @param point point + @param out the point to receive the result + */ + getWorldToCameraPoint(point: Vec2, out?: Vec2): Vec2; + /** + !#en + Get the camera to world matrix + !#zh + èŽ·å–æ‘„åƒæœºåæ ‡ç³»åˆ°ä¸–ç•Œåæ ‡ç³»çš„矩阵 + @param out the matrix to receive the result + */ + getCameraToWorldMatrix(out: Mat4): Mat4; + /** + !#en + Get the world to camera matrix + !#zh + 获å–ä¸–ç•Œåæ ‡ç³»åˆ°æ‘„åƒæœºåæ ‡ç³»çš„çŸ©é˜µ + @param out the matrix to receive the result + */ + getWorldToCameraMatrix(out: Mat4): Mat4; + } + /** !#en The touch event class + !#zh å°è£…了触摸相关的信æ¯ã€‚ */ + export class Touch { + /** + !#en Returns the current touch location in OpenGL coordinates.〠+ !#zh 获å–当å‰è§¦ç‚¹ä½ç½®ã€‚ + */ + getLocation(): Vec2; + /** + !#en Returns X axis location value. + !#zh 获å–当å‰è§¦ç‚¹ X è½´ä½ç½®ã€‚ + */ + getLocationX(): number; + /** + !#en Returns Y axis location value. + !#zh 获å–当å‰è§¦ç‚¹ Y è½´ä½ç½®ã€‚ + */ + getLocationY(): number; + /** + !#en Returns the previous touch location in OpenGL coordinates. + !#zh 获å–触点在上一次事件时的ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getPreviousLocation(): Vec2; + /** + !#en Returns the start touch location in OpenGL coordinates. + !#zh 获å–触点è½ä¸‹æ—¶çš„ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getStartLocation(): Vec2; + /** + !#en Returns the delta distance from the previous touche to the current one in screen coordinates. + !#zh 获å–触点è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„è·ç¦»å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getDelta(): Vec2; + /** + !#en Returns the current touch location in screen coordinates. + !#zh 获å–当å‰äº‹ä»¶åœ¨æ¸¸æˆçª—å£å†…çš„åæ ‡ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getLocationInView(): Vec2; + /** + !#en Returns the previous touch location in screen coordinates. + !#zh 获å–触点在上一次事件时在游æˆçª—å£ä¸çš„ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getPreviousLocationInView(): Vec2; + /** + !#en Returns the start touch location in screen coordinates. + !#zh 获å–触点è½ä¸‹æ—¶åœ¨æ¸¸æˆçª—å£ä¸çš„ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getStartLocationInView(): Vec2; + /** + !#en Returns the id of cc.Touch. + !#zh è§¦ç‚¹çš„æ ‡è¯† ID,å¯ä»¥ç”¨æ¥åœ¨å¤šç‚¹è§¦æ‘¸ä¸è·Ÿè¸ªè§¦ç‚¹ã€‚ + */ + getID(): number; + /** + !#en Sets information to touch. + !#zh 设置触摸相关的信æ¯ã€‚用于监控触摸事件。 + @param id id + @param x x + @param y y + */ + setTouchInfo(id: number, x: number, y: number): void; + } + /** !#en Mesh Asset. + !#zh ç½‘æ ¼èµ„æºã€‚ */ + export class Mesh extends Asset implements EventTarget { + /** !#en Get ir set the sub meshes. + !#zh 设置或者获å–åç½‘æ ¼ã€‚ */ + subMeshes: InputAssembler[]; + /** + !#en + Init vertex buffer according to the vertex format. + !#zh + æ ¹æ®é¡¶ç‚¹æ ¼å¼åˆå§‹åŒ–顶点内å˜ã€‚ + @param vertexFormat vertex format + @param vertexCount how much vertex should be create in this buffer. + @param dynamic whether or not to use dynamic buffer. + @param index index + */ + init(vertexFormat: gfx.VertexFormat, vertexCount: number, dynamic?: boolean, index?: boolean): void; + /** + !#en + Set the vertex values. + !#zh + è®¾ç½®é¡¶ç‚¹æ•°æ® + @param name the attribute name, e.g. gfx.ATTR_POSITION + @param values the vertex values + */ + setVertices(name: string, values: Vec2[]|Vec3[]|Color[]|number[]|Uint8Array|Float32Array): void; + /** + !#en + Set the sub mesh indices. + !#zh + 设置åç½‘æ ¼ç´¢å¼•ã€‚ + @param indices the sub mesh indices. + @param index sub mesh index. + @param dynamic whether or not to use dynamic buffer. + */ + setIndices(indices: number[]|Uint16Array|Uint8Array, index?: number, dynamic?: boolean): void; + /** + !#en + Set the sub mesh primitive type. + !#zh + 设置åç½‘æ ¼ç»˜åˆ¶çº¿æ¡çš„æ–¹å¼ã€‚ + @param type type + @param index index + */ + setPrimitiveType(type: number, index: number): void; + /** + !#en + Clear the buffer data. + !#zh + æ¸…é™¤ç½‘æ ¼åˆ›å»ºçš„å†…å˜æ•°æ®ã€‚ + */ + clear(): void; + /** + !#en Set mesh bounding box + !#zh è®¾ç½®ç½‘æ ¼çš„åŒ…å›´ç›’ + @param min min + @param max max + */ + setBoundingBox(min: Vec3, max: Vec3): void; + /** + !#en Read the specified attributes of the subgrid into the target buffer. + !#zh 读å–åç½‘æ ¼çš„æŒ‡å®šå±žæ€§åˆ°ç›®æ ‡ç¼“å†²åŒºä¸ã€‚ + @param primitiveIndex The subgrid index. + @param attributeName attribute name. + @param buffer The target buffer. + @param stride The byte interval between adjacent attributes in the target buffer. + @param offset The offset of the first attribute in the target buffer. + */ + copyAttribute(primitiveIndex: number, attributeName: string, buffer: ArrayBuffer, stride: number, offset: number): boolean; + /** + !#en Read the index data of the subgrid into the target array. + !#zh 读å–åç½‘æ ¼çš„ç´¢å¼•æ•°æ®åˆ°ç›®æ ‡æ•°ç»„ä¸ã€‚ + @param primitiveIndex The subgrid index. + @param outputArray The target array. + */ + copyIndices(primitiveIndex: number, outputArray: DataView): boolean; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en + Mesh Renderer Component + !#zh + ç½‘æ ¼æ¸²æŸ“ç»„ä»¶ */ + export class MeshRenderer extends RenderComponent { + /** !#en + The mesh which the renderer uses. + !#zh + è®¾ç½®ä½¿ç”¨çš„ç½‘æ ¼ */ + mesh: Mesh; + /** !#en + Whether the mesh should receive shadows. + !#zh + ç½‘æ ¼æ˜¯å¦æŽ¥å—å…‰æºæŠ•å°„çš„é˜´å½± */ + receiveShadows: boolean; + /** !#en + Shadow Casting Mode + !#zh + ç½‘æ ¼æŠ•å°„é˜´å½±çš„æ¨¡å¼ */ + shadowCastingMode: MeshRenderer.ShadowCastingMode; + /** !#en + Enable auto merge mesh, only support when mesh's VertexFormat, PrimitiveType, materials are all the same + !#zh + å¼€å¯è‡ªåЍåˆå¹¶ mesh åŠŸèƒ½ï¼Œåªæœ‰åœ¨ç½‘æ ¼çš„ é¡¶ç‚¹æ ¼å¼ï¼ŒPrimitiveType, 使用的æè´¨ 都一致的情况下æ‰ä¼šæœ‰æ•ˆ */ + enableAutoBatch: boolean; + } + /** The class BufferRange denotes a range of the buffer. */ + export class BufferRange { + /** The offset of the range. */ + offset: number; + /** The length of the range. */ + length: number; + } + /** undefined */ + export class VertexFormat { + /** The data range of this bundle. + This range of data is essentially mapped to a GPU vertex buffer. */ + data: BufferRange; + /** The attribute formats. */ + formats: VertexFormat; + /** The vertex bundle that the primitive use. */ + vertexBundleIndices: number[]; + /** The data range of the primitive. + This range of data is essentially mapped to a GPU indices buffer. */ + data: BufferRange; + /** The type of this primitive's indices. */ + indexUnit: number; + /** The primitive's topology. */ + topology: number; + } + /** !#en The animation component is used to play back animations. + + Animation provide several events to register: + - play : Emit when begin playing animation + - stop : Emit when stop playing animation + - pause : Emit when pause animation + - resume : Emit when resume animation + - lastframe : If animation repeat count is larger than 1, emit when animation play to the last frame + - finished : Emit when finish playing animation + + !#zh Animation ç»„ä»¶ç”¨äºŽæ’æ”¾åŠ¨ç”»ã€‚ + + Animation æä¾›äº†ä¸€ç³»åˆ—坿³¨å†Œçš„事件: + - play : å¼€å§‹æ’æ”¾æ—¶ + - stop : åœæ¢æ’放时 + - pause : æš‚åœæ’放时 + - resume : æ¢å¤æ’放时 + - lastframe : å‡å¦‚动画循环次数大于 1ï¼Œå½“åŠ¨ç”»æ’æ”¾åˆ°æœ€åŽä¸€å¸§æ—¶ + - finished : åŠ¨ç”»æ’æ”¾å®Œæˆæ—¶ */ + export class Animation extends Component implements EventTarget { + /** !#en Animation will play the default clip when start game. + !#zh åœ¨å‹¾é€‰è‡ªåŠ¨æ’æ”¾æˆ–调用 play() æ—¶é»˜è®¤æ’æ”¾çš„动画剪辑。 */ + defaultClip: AnimationClip; + /** !#en Current played clip. + !#zh 当剿’放的动画剪辑。 */ + currentClip: AnimationClip; + /** !#en Whether the animation should auto play the default clip when start game. + !#zh 是å¦åœ¨è¿è¡Œæ¸¸æˆåŽè‡ªåŠ¨æ’æ”¾é»˜è®¤åŠ¨ç”»å‰ªè¾‘ã€‚ */ + playOnLoad: boolean; + /** + !#en Get all the clips used in this animation. + !#zh 获å–动画组件上的所有动画剪辑。 + */ + getClips(): AnimationClip[]; + /** + !#en Plays an animation and stop other animations. + !#zh æ’æ”¾æŒ‡å®šçš„åŠ¨ç”»ï¼Œå¹¶ä¸”åœæ¢å½“剿£åœ¨æ’æ”¾åŠ¨ç”»ã€‚å¦‚æžœæ²¡æœ‰æŒ‡å®šåŠ¨ç”»ï¼Œåˆ™æ’æ”¾é»˜è®¤åŠ¨ç”»ã€‚ + @param name The name of animation to play. If no name is supplied then the default animation will be played. + @param startTime play an animation from startTime + + @example + ```js + var animCtrl = this.node.getComponent(cc.Animation); + animCtrl.play("linear"); + ``` + */ + play(name?: string, startTime?: number): AnimationState; + /** + !#en + Plays an additive animation, it will not stop other animations. + If there are other animations playing, then will play several animations at the same time. + !#zh æ’æ”¾æŒ‡å®šçš„动画(将ä¸ä¼šåœæ¢å½“剿’æ”¾çš„åŠ¨ç”»ï¼‰ã€‚å¦‚æžœæ²¡æœ‰æŒ‡å®šåŠ¨ç”»ï¼Œåˆ™æ’æ”¾é»˜è®¤åŠ¨ç”»ã€‚ + @param name The name of animation to play. If no name is supplied then the default animation will be played. + @param startTime play an animation from startTime + + @example + ```js + // linear_1 and linear_2 at the same time playing. + var animCtrl = this.node.getComponent(cc.Animation); + animCtrl.playAdditive("linear_1"); + animCtrl.playAdditive("linear_2"); + ``` + */ + playAdditive(name?: string, startTime?: number): AnimationState; + /** + !#en Stops an animation named name. If no name is supplied then stops all playing animations that were started with this Animation. <br/> + Stopping an animation also Rewinds it to the Start. + !#zh åœæ¢æŒ‡å®šçš„动画。如果没有指定åå—ï¼Œåˆ™åœæ¢å½“剿£åœ¨æ’放的动画。 + @param name The animation to stop, if not supplied then stops all playing animations. + */ + stop(name?: string): void; + /** + !#en Pauses an animation named name. If no name is supplied then pauses all playing animations that were started with this Animation. + !#zh æš‚åœå½“剿ˆ–者指定的动画。如果没有指定åå—,则暂åœå½“剿£åœ¨æ’放的动画。 + @param name The animation to pauses, if not supplied then pauses all playing animations. + */ + pause(name?: string): void; + /** + !#en Resumes an animation named name. If no name is supplied then resumes all paused animations that were started with this Animation. + !#zh 釿–°æ’放指定的动画,如果没有指定åå—ï¼Œåˆ™é‡æ–°æ’æ”¾å½“å‰æ£åœ¨æ’放的动画。 + @param name The animation to resumes, if not supplied then resumes all paused animations. + */ + resume(name?: string): void; + /** + !#en Make an animation named name go to the specified time. If no name is supplied then make all animations go to the specified time. + !#zh è®¾ç½®æŒ‡å®šåŠ¨ç”»çš„æ’æ”¾æ—¶é—´ã€‚如果没有指定åå—ï¼Œåˆ™è®¾ç½®å½“å‰æ’æ”¾åŠ¨ç”»çš„æ’æ”¾æ—¶é—´ã€‚ + @param time The time to go to + @param name Specified animation name, if not supplied then make all animations go to the time. + */ + setCurrentTime(time?: number, name?: string): void; + /** + !#en Returns the animation state named name. If no animation with the specified name, the function will return null. + !#zh 获å–当剿ˆ–者指定的动画状æ€ï¼Œå¦‚果未找到指定动画剪辑则返回 null。 + @param name name + */ + getAnimationState(name: string): AnimationState; + /** + !#en Adds a clip to the animation with name newName. If a clip with that name already exists it will be replaced with the new clip. + !#zh æ·»åŠ åŠ¨ç”»å‰ªè¾‘ï¼Œå¹¶ä¸”å¯ä»¥é‡æ–°è®¾ç½®è¯¥åŠ¨ç”»å‰ªè¾‘çš„å称。 + @param clip the clip to add + @param newName newName + */ + addClip(clip: AnimationClip, newName?: string): AnimationState; + /** + !#en + Remove clip from the animation list. This will remove the clip and any animation states based on it. + If there are animation states depand on the clip are playing or clip is defaultClip, it will not delete the clip. + But if force is true, then will always remove the clip and any animation states based on it. If clip is defaultClip, defaultClip will be reset to null + !#zh + 从动画列表ä¸ç§»é™¤æŒ‡å®šçš„动画剪辑,<br/> + 如果ä¾èµ–于 clip çš„ AnimationState æ£åœ¨æ’放或者 clip 是 defaultClip çš„è¯ï¼Œé»˜è®¤æ˜¯ä¸ä¼šåˆ 除 clip 的。 + 但是如果 force 傿•°ä¸º trueï¼Œåˆ™ä¼šå¼ºåˆ¶åœæ¢è¯¥åŠ¨ç”»ï¼Œç„¶åŽç§»é™¤è¯¥åŠ¨ç”»å‰ªè¾‘å’Œç›¸å…³çš„åŠ¨ç”»ã€‚è¿™æ—¶å€™å¦‚æžœ clip 是 defaultClip,defaultClip 将会被é‡ç½®ä¸º null。 + @param clip clip + @param force If force is true, then will always remove the clip and any animation states based on it. + */ + removeClip(clip: AnimationClip, force?: boolean): void; + /** + !#en + Samples animations at the current state.<br/> + This is useful when you explicitly want to set up some animation state, and sample it once. + !#zh 对指定或当å‰åŠ¨ç”»è¿›è¡Œé‡‡æ ·ã€‚ä½ å¯ä»¥æ‰‹åŠ¨å°†åŠ¨ç”»è®¾ç½®åˆ°æŸä¸€ä¸ªçжæ€ï¼Œç„¶åŽé‡‡æ ·ä¸€æ¬¡ã€‚ + @param name name + */ + sample(name: string): void; + /** + !#en + Register animation event callback. + The event arguments will provide the AnimationState which emit the event. + When play an animation, will auto register the event callback to the AnimationState, and unregister the event callback from the AnimationState when animation stopped. + !#zh + 注册动画事件回调。 + 回调的事件里将会附上å‘é€äº‹ä»¶çš„ AnimationState。 + å½“æ’æ”¾ä¸€ä¸ªåŠ¨ç”»æ—¶ï¼Œä¼šè‡ªåŠ¨å°†äº‹ä»¶æ³¨å†Œåˆ°å¯¹åº”çš„ AnimationState ä¸Šï¼Œåœæ¢æ’放时会将事件从这个 AnimationState ä¸Šå–æ¶ˆæ³¨å†Œã€‚ + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param state state + @param target The target (this object) to invoke the callback, can be null + @param useCapture When set to true, the capture argument prevents callback + from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. + When false, callback will NOT be invoked when event's eventPhase attribute value is CAPTURING_PHASE. + Either way, callback will be invoked when event's eventPhase attribute value is AT_TARGET. + + @example + ```js + onPlay: function (type, state) { + // callback + } + + // register event to all animation + animation.on('play', this.onPlay, this); + ``` + */ + on(type: string, callback: (event: Event.EventCustom) => void, target?: any, useCapture?: boolean): (event: Event.EventCustom) => void; + on<T>(type: string, callback: (event: T) => void, target?: any, useCapture?: boolean): (event: T) => void; + on(type: string, callback: (type: string, state: cc.AnimationState) => void, target?: any, useCapture?: boolean): (type: string, state: cc.AnimationState) => void; + /** + !#en + Unregister animation event callback. + !#zh + å–æ¶ˆæ³¨å†ŒåŠ¨ç”»äº‹ä»¶å›žè°ƒã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + @param useCapture Specifies whether the callback being removed was registered as a capturing callback or not. + If not specified, useCapture defaults to false. If a callback was registered twice, + one with capture and one without, each must be removed separately. Removal of a capturing callback + does not affect a non-capturing version of the same listener, and vice versa. + + @example + ```js + // unregister event to all animation + animation.off('play', this.onPlay, this); + ``` + */ + off(type: string, callback?: Function, target?: any, useCapture?: boolean): void; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en Audio Source. + !#zh 音频æºç»„件,能对音频剪辑。 */ + export class AudioSource extends Component { + /** !#en + Is the audio source playing (Read Only). <br/> + Note: isPlaying is not supported for Native platforms. + !#zh + è¯¥éŸ³é¢‘å‰ªè¾‘æ˜¯å¦æ£æ’放(åªè¯»ï¼‰ã€‚<br/> + 注æ„:Native å¹³å°æš‚æ—¶ä¸æ”¯æŒ isPlaying。 */ + isPlaying: boolean; + /** !#en The clip of the audio source to play. + !#zh è¦æ’放的音频剪辑。 */ + clip: AudioClip; + /** !#en The volume of the audio source. + !#zh 音频æºçš„音é‡ï¼ˆ0.0 ~ 1.0)。 */ + volume: number; + /** !#en Is the audio source mute? + !#zh 是å¦é™éŸ³éŸ³é¢‘æºã€‚Mute 是设置音é‡ä¸º 0ï¼Œå–æ¶ˆé™éŸ³æ˜¯æ¢å¤åŽŸæ¥çš„音é‡ã€‚ */ + mute: boolean; + /** !#en Is the audio source looping? + !#zh éŸ³é¢‘æºæ˜¯å¦å¾ªçŽ¯æ’æ”¾ï¼Ÿ */ + loop: boolean; + /** !#en If set to true, the audio source will automatically start playing on onEnable. + !#zh 如果设置为 true,音频æºå°†åœ¨ onEnable æ—¶è‡ªåŠ¨æ’æ”¾ã€‚ */ + playOnLoad: boolean; + /** + !#en Plays the clip. + !#zh æ’æ”¾éŸ³é¢‘剪辑。 + */ + play(): void; + /** + !#en Stops the clip. + !#zh åœæ¢å½“å‰éŸ³é¢‘剪辑。 + */ + stop(): void; + /** + !#en Pause the clip. + !#zh æš‚åœå½“å‰éŸ³é¢‘剪辑。 + */ + pause(): void; + /** + !#en Resume the clip. + !#zh æ¢å¤æ’放。 + */ + resume(): void; + /** + !#en Rewind playing music. + !#zh ä»Žå¤´å¼€å§‹æ’æ”¾ã€‚ + */ + rewind(): void; + /** + !#en Get current time + !#zh 获å–当å‰çš„æ’æ”¾æ—¶é—´ + */ + getCurrentTime(): number; + /** + !#en Set current time + !#zh 设置当å‰çš„æ’æ”¾æ—¶é—´ + @param time time + */ + setCurrentTime(time: number): number; + /** + !#en Get audio duration + !#zh 获å–当å‰éŸ³é¢‘的长度 + */ + getDuration(): number; + } + /** !#en + This component will block all input events (mouse and touch) within the bounding box of the node, preventing the input from penetrating into the underlying node, typically for the background of the top UI.<br> + This component does not have any API interface and can be added directly to the scene to take effect. + !#zh + 该组件将拦截所属节点 bounding box å†…çš„æ‰€æœ‰è¾“å…¥äº‹ä»¶ï¼ˆé¼ æ ‡å’Œè§¦æ‘¸ï¼‰ï¼Œé˜²æ¢è¾“入穿é€åˆ°ä¸‹å±‚节点,一般用于上层 UI 的背景。<br> + 该组件没有任何 API 接å£ï¼Œç›´æŽ¥æ·»åŠ åˆ°åœºæ™¯å³å¯ç”Ÿæ•ˆã€‚ */ + export class BlockInputEvents extends Component { + } + /** !#en + Button has 4 Transition types<br/> + When Button state changed:<br/> + If Transition type is Button.Transition.NONE, Button will do nothing<br/> + If Transition type is Button.Transition.COLOR, Button will change target's color<br/> + If Transition type is Button.Transition.SPRITE, Button will change target Sprite's sprite<br/> + If Transition type is Button.Transition.SCALE, Button will change target node's scale<br/> + + Button will trigger 5 events:<br/> + Button.EVENT_TOUCH_DOWN<br/> + Button.EVENT_TOUCH_UP<br/> + Button.EVENT_HOVER_IN<br/> + Button.EVENT_HOVER_MOVE<br/> + Button.EVENT_HOVER_OUT<br/> + User can get the current clicked node with 'event.target' from event object which is passed as parameter in the callback function of click event. + + !#zh + 按钮组件。å¯ä»¥è¢«æŒ‰ä¸‹ï¼Œæˆ–者点击。 + + 按钮å¯ä»¥é€šè¿‡ä¿®æ”¹ Transition æ¥è®¾ç½®æŒ‰é’®çжæ€è¿‡æ¸¡çš„æ–¹å¼ï¼š + + - Button.Transition.NONE // ä¸åšä»»ä½•过渡 + - Button.Transition.COLOR // 进行颜色之间过渡 + - Button.Transition.SPRITE // 进行精çµä¹‹é—´è¿‡æ¸¡ + - Button.Transition.SCALE // 进行缩放过渡 + + 按钮å¯ä»¥ç»‘定事件(但是必须è¦åœ¨æŒ‰é’®çš„ Node 上æ‰èƒ½ç»‘定事件):<br/> + 以下事件å¯ä»¥åœ¨å…¨å¹³å°ä¸Šéƒ½è§¦å‘: + + - cc.Node.EventType.TOUCH_START // 按下时事件 + - cc.Node.EventType.TOUCH_Move // 按ä½ç§»åЍåŽäº‹ä»¶ + - cc.Node.EventType.TOUCH_END // æŒ‰ä¸‹åŽæ¾å¼€åŽäº‹ä»¶ + - cc.Node.EventType.TOUCH_CANCEL // æŒ‰ä¸‹å–æ¶ˆäº‹ä»¶ + + 以下事件åªåœ¨ PC å¹³å°ä¸Šè§¦å‘: + + - cc.Node.EventType.MOUSE_DOWN // é¼ æ ‡æŒ‰ä¸‹æ—¶äº‹ä»¶ + - cc.Node.EventType.MOUSE_MOVE // é¼ æ ‡æŒ‰ä½ç§»åЍåŽäº‹ä»¶ + - cc.Node.EventType.MOUSE_ENTER // é¼ æ ‡è¿›å…¥ç›®æ ‡äº‹ä»¶ + - cc.Node.EventType.MOUSE_LEAVE // é¼ æ ‡ç¦»å¼€ç›®æ ‡äº‹ä»¶ + - cc.Node.EventType.MOUSE_UP // é¼ æ ‡æ¾å¼€äº‹ä»¶ + - cc.Node.EventType.MOUSE_WHEEL // é¼ æ ‡æ»šè½®äº‹ä»¶ + + 用户å¯ä»¥é€šè¿‡èŽ·å– __点击事件__ å›žè°ƒå‡½æ•°çš„å‚æ•° event çš„ target 属性获å–当å‰ç‚¹å‡»å¯¹è±¡ã€‚ */ + export class Button extends Component implements GraySpriteState { + /** !#en + Whether the Button is disabled. + If true, the Button will trigger event and do transition. + !#zh + 按钮事件是å¦è¢«å“应,如果为 false,则按钮将被ç¦ç”¨ã€‚ */ + interactable: boolean; + /** !#en When this flag is true, Button target sprite will turn gray when interactable is false. + !#zh å¦‚æžœè¿™ä¸ªæ ‡è®°ä¸º true,当 button çš„ interactable 属性为 false 的时候,会使用内置 shader 让 button çš„ target 节点的 sprite 组件å˜ç° */ + enableAutoGrayEffect: boolean; + /** !#en Transition type + !#zh æŒ‰é’®çŠ¶æ€æ”¹å˜æ—¶è¿‡æ¸¡æ–¹å¼ã€‚ */ + transition: Button.Transition; + /** !#en Normal state color. + !#zh 普通状æ€ä¸‹æŒ‰é’®æ‰€æ˜¾ç¤ºçš„颜色。 */ + normalColor: Color; + /** !#en Pressed state color + !#zh æŒ‰ä¸‹çŠ¶æ€æ—¶æŒ‰é’®æ‰€æ˜¾ç¤ºçš„颜色。 */ + pressedColor: Color; + /** !#en Hover state color + !#zh 悬åœçжæ€ä¸‹æŒ‰é’®æ‰€æ˜¾ç¤ºçš„颜色。 */ + hoverColor: Color; + /** !#en Disabled state color + !#zh ç¦ç”¨çжæ€ä¸‹æŒ‰é’®æ‰€æ˜¾ç¤ºçš„颜色。 */ + disabledColor: Color; + /** !#en Color and Scale transition duration + !#zh 颜色过渡和缩放过渡时所需时间 */ + duration: number; + /** !#en When user press the button, the button will zoom to a scale. + The final scale of the button equals (button original scale * zoomScale) + !#zh 当用户点击按钮åŽï¼ŒæŒ‰é’®ä¼šç¼©æ”¾åˆ°ä¸€ä¸ªå€¼ï¼Œè¿™ä¸ªå€¼ç‰äºŽ Button 原始 scale * zoomScale */ + zoomScale: number; + /** !#en Normal state sprite + !#zh 普通状æ€ä¸‹æŒ‰é’®æ‰€æ˜¾ç¤ºçš„ Sprite 。 */ + normalSprite: SpriteFrame; + /** !#en Pressed state sprite + !#zh æŒ‰ä¸‹çŠ¶æ€æ—¶æŒ‰é’®æ‰€æ˜¾ç¤ºçš„ Sprite 。 */ + pressedSprite: SpriteFrame; + /** !#en Hover state sprite + !#zh 悬åœçжæ€ä¸‹æŒ‰é’®æ‰€æ˜¾ç¤ºçš„ Sprite 。 */ + hoverSprite: SpriteFrame; + /** !#en Disabled state sprite + !#zh ç¦ç”¨çжæ€ä¸‹æŒ‰é’®æ‰€æ˜¾ç¤ºçš„ Sprite 。 */ + disabledSprite: SpriteFrame; + /** !#en + Transition target. + When Button state changed: + If Transition type is Button.Transition.NONE, Button will do nothing + If Transition type is Button.Transition.COLOR, Button will change target's color + If Transition type is Button.Transition.SPRITE, Button will change target Sprite's sprite + !#zh + 需è¦è¿‡æ¸¡çš„ç›®æ ‡ã€‚ + 当剿Œ‰é’®çŠ¶æ€æ”¹å˜è§„则: + -如果 Transition type 选择 Button.Transition.NONE,按钮ä¸åšä»»ä½•过渡。 + -如果 Transition type 选择 Button.Transition.COLORï¼ŒæŒ‰é’®ä¼šå¯¹ç›®æ ‡é¢œè‰²è¿›è¡Œé¢œè‰²ä¹‹é—´çš„è¿‡æ¸¡ã€‚ + -如果 Transition type 选择 Button.Transition.Spriteï¼ŒæŒ‰é’®ä¼šå¯¹ç›®æ ‡ Sprite 进行 Sprite 之间的过渡。 */ + target: Node; + /** !#en If Button is clicked, it will trigger event's handler + !#zh 按钮的点击事件列表。 */ + clickEvents: Component.EventHandler[]; + /** !#en The normal material. + !#zh æ£å¸¸çжæ€çš„æè´¨ã€‚ */ + normalMaterial: Material; + /** !#en The gray material. + !#zh ç½®ç°çжæ€çš„æè´¨ã€‚ */ + grayMaterial: Material; + } + /** !#zh: 作为 UI æ ¹èŠ‚ç‚¹ï¼Œä¸ºæ‰€æœ‰å节点æä¾›è§†çª—四边的ä½ç½®ä¿¡æ¯ä»¥ä¾›å¯¹é½ï¼Œå¦å¤–æä¾›å±å¹•适é…ç–略接å£ï¼Œæ–¹ä¾¿ä»Žç¼–辑器设置。 + 注:由于本节点的尺寸会跟éšå±å¹•拉伸,所以 anchorPoint åªæ”¯æŒ (0.5, 0.5),å¦åˆ™é€‚é…ä¸åŒå±å¹•æ—¶åæ ‡ä¼šæœ‰å差。 */ + export class Canvas extends Component { + /** !#en Current active canvas, the scene should only have one active canvas at the same time. + !#zh 当剿¿€æ´»çš„画布组件,场景åŒä¸€æ—¶é—´åªèƒ½æœ‰ä¸€ä¸ªæ¿€æ´»çš„画布。 */ + static instance: Canvas; + /** !#en The desigin resolution for current scene. + !#zh 当å‰åœºæ™¯è®¾è®¡åˆ†è¾¨çŽ‡ã€‚ */ + designResolution: Size; + /** !#en TODO + !#zh: 是å¦ä¼˜å…ˆå°†è®¾è®¡åˆ†è¾¨çŽ‡é«˜åº¦æ’‘æ»¡è§†å›¾é«˜åº¦ã€‚ */ + fitHeight: boolean; + /** !#en TODO + !#zh: 是å¦ä¼˜å…ˆå°†è®¾è®¡åˆ†è¾¨çŽ‡å®½åº¦æ’‘æ»¡è§†å›¾å®½åº¦ã€‚ */ + fitWidth: boolean; + } + /** !#en + Base class for everything attached to Node(Entity).<br/> + <br/> + NOTE: Not allowed to use construction parameters for Component's subclasses, + because Component is created by the engine. + !#zh + æ‰€æœ‰é™„åŠ åˆ°èŠ‚ç‚¹çš„åŸºç±»ã€‚<br/> + <br/> + 注æ„:ä¸å…许使用组件的åç±»æž„é€ å‚æ•°ï¼Œå› 为组件是由引擎创建的。 */ + export class Component extends Object { + /** !#en The node this component is attached to. A component is always attached to a node. + !#zh è¯¥ç»„ä»¶è¢«é™„åŠ åˆ°çš„èŠ‚ç‚¹ã€‚ç»„ä»¶æ€»ä¼šé™„åŠ åˆ°ä¸€ä¸ªèŠ‚ç‚¹ã€‚ */ + node: Node; + /** !#en The uuid for editor. + !#zh 组件的 uuid,用于编辑器。 */ + uuid: string; + /** !#en indicates whether this component is enabled or not. + !#zh 表示该组件自身是å¦å¯ç”¨ã€‚ */ + enabled: boolean; + /** !#en indicates whether this component is enabled and its node is also active in the hierarchy. + !#zh 表示该组件是å¦è¢«å¯ç”¨å¹¶ä¸”所在的节点也处于激活状æ€ã€‚ */ + enabledInHierarchy: boolean; + /** !#en Returns a value which used to indicate the onLoad get called or not. + !#zh 返回一个值用æ¥åˆ¤æ– onLoad 是å¦è¢«è°ƒç”¨è¿‡ï¼Œä¸ç‰äºŽ 0 时调用过,ç‰äºŽ 0 时未调用。 */ + _isOnLoadCalled: number; + /** + !#en Update is called every frame, if the Component is enabled.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh 如果该组件å¯ç”¨ï¼Œåˆ™æ¯å¸§è°ƒç”¨ update。<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + @param dt the delta time in seconds it took to complete the last frame + */ + protected update(dt: number): void; + /** + !#en LateUpdate is called every frame, if the Component is enabled.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh 如果该组件å¯ç”¨ï¼Œåˆ™æ¯å¸§è°ƒç”¨ LateUpdate。<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + @param dt the delta time in seconds it took to complete the last frame + */ + protected lateUpdate(dt: number): void; + /** + !#en + When attaching to an active node or its node first activated. + onLoad is always called before any start functions, this allows you to order initialization of scripts.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh + å½“é™„åŠ åˆ°ä¸€ä¸ªæ¿€æ´»çš„èŠ‚ç‚¹ä¸Šæˆ–è€…å…¶èŠ‚ç‚¹ç¬¬ä¸€æ¬¡æ¿€æ´»æ—¶å€™è°ƒç”¨ã€‚onLoad 总是会在任何 start æ–¹æ³•è°ƒç”¨å‰æ‰§è¡Œï¼Œè¿™èƒ½ç”¨äºŽå®‰æŽ’脚本的åˆå§‹åŒ–顺åºã€‚<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + */ + protected onLoad(): void; + /** + !#en + Called before all scripts' update if the Component is enabled the first time. + Usually used to initialize some logic which need to be called after all components' `onload` methods called.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh + 如果该组件第一次å¯ç”¨ï¼Œåˆ™åœ¨æ‰€æœ‰ç»„ä»¶çš„ update 之å‰è°ƒç”¨ã€‚通常用于需è¦åœ¨æ‰€æœ‰ç»„ä»¶çš„ onLoad åˆå§‹åŒ–å®Œæ¯•åŽæ‰§è¡Œçš„逻辑。<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + */ + protected start(): void; + /** + !#en Called when this component becomes enabled and its node is active.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh 当该组件被å¯ç”¨ï¼Œå¹¶ä¸”它的节点也激活时。<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + */ + protected onEnable(): void; + /** + !#en Called when this component becomes disabled or its node becomes inactive.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh 当该组件被ç¦ç”¨æˆ–节点å˜ä¸ºæ— 效时调用。<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + */ + protected onDisable(): void; + /** + !#en Called when this component will be destroyed.<br/> + This is a lifecycle method. It may not be implemented in the super class. You can only call its super class method inside it. It should not be called manually elsewhere. + !#zh å½“è¯¥ç»„ä»¶è¢«é”€æ¯æ—¶è°ƒç”¨<br/> + è¯¥æ–¹æ³•ä¸ºç”Ÿå‘½å‘¨æœŸæ–¹æ³•ï¼Œçˆ¶ç±»æœªå¿…ä¼šæœ‰å®žçŽ°ã€‚å¹¶ä¸”ä½ åªèƒ½åœ¨è¯¥æ–¹æ³•内部调用父类的实现,ä¸å¯åœ¨å…¶å®ƒåœ°æ–¹ç›´æŽ¥è°ƒç”¨è¯¥æ–¹æ³•。 + */ + protected onDestroy(): void; + protected onFocusInEditor(): void; + protected onLostFocusInEditor(): void; + /** + !#en Called to initialize the component or node’s properties when adding the component the first time or when the Reset command is used. This function is only called in editor. + !#zh 用æ¥åˆå§‹åŒ–ç»„ä»¶æˆ–èŠ‚ç‚¹çš„ä¸€äº›å±žæ€§ï¼Œå½“è¯¥ç»„ä»¶è¢«ç¬¬ä¸€æ¬¡æ·»åŠ åˆ°èŠ‚ç‚¹ä¸Šæˆ–ç”¨æˆ·ç‚¹å‡»äº†å®ƒçš„ Reset èœå•时调用。这个回调åªä¼šåœ¨ç¼–辑器下调用。 + */ + protected resetInEditor(): void; + /** + !#en Adds a component class to the node. You can also add component to node by passing in the name of the script. + !#zh å‘èŠ‚ç‚¹æ·»åŠ ä¸€ä¸ªç»„ä»¶ç±»ï¼Œä½ è¿˜å¯ä»¥é€šè¿‡ä¼ 入脚本的åç§°æ¥æ·»åŠ ç»„ä»¶ã€‚ + @param typeOrClassName the constructor or the class name of the component to add + + @example + ```js + var sprite = node.addComponent(cc.Sprite); + var test = node.addComponent("Test"); + ``` + */ + addComponent<T extends Component>(type: {new(): T}): T; + addComponent(className: string): any; + /** + !#en + Returns the component of supplied type if the node has one attached, null if it doesn't.<br/> + You can also get component in the node by passing in the name of the script. + !#zh + 获å–èŠ‚ç‚¹ä¸ŠæŒ‡å®šç±»åž‹çš„ç»„ä»¶ï¼Œå¦‚æžœèŠ‚ç‚¹æœ‰é™„åŠ æŒ‡å®šç±»åž‹çš„ç»„ä»¶ï¼Œåˆ™è¿”å›žï¼Œå¦‚æžœæ²¡æœ‰åˆ™ä¸ºç©ºã€‚<br/> + ä¼ å…¥å‚æ•°ä¹Ÿå¯ä»¥æ˜¯è„šæœ¬çš„å称。 + @param typeOrClassName typeOrClassName + + @example + ```js + // get sprite component. + var sprite = node.getComponent(cc.Sprite); + // get custom test calss. + var test = node.getComponent("Test"); + ``` + */ + getComponent<T extends Component>(type: {prototype: T}): T; + getComponent(className: string): any; + /** + !#en Returns all components of supplied Type in the node. + !#zh 返回节点上指定类型的所有组件。 + @param typeOrClassName typeOrClassName + + @example + ```js + var sprites = node.getComponents(cc.Sprite); + var tests = node.getComponents("Test"); + ``` + */ + getComponents<T extends Component>(type: {prototype: T}): T[]; + getComponents(className: string): any[]; + /** + !#en Returns the component of supplied type in any of its children using depth first search. + !#zh 递归查找所有å节点ä¸ç¬¬ä¸€ä¸ªåŒ¹é…指定类型的组件。 + @param typeOrClassName typeOrClassName + + @example + ```js + var sprite = node.getComponentInChildren(cc.Sprite); + var Test = node.getComponentInChildren("Test"); + ``` + */ + getComponentInChildren<T extends Component>(type: {prototype: T}): T; + getComponentInChildren(className: string): any; + /** + !#en Returns the components of supplied type in self or any of its children using depth first search. + !#zh 递归查找自身或所有åèŠ‚ç‚¹ä¸æŒ‡å®šç±»åž‹çš„组件 + @param typeOrClassName typeOrClassName + + @example + ```js + var sprites = node.getComponentsInChildren(cc.Sprite); + var tests = node.getComponentsInChildren("Test"); + ``` + */ + getComponentsInChildren<T extends Component>(type: {prototype: T}): T[]; + getComponentsInChildren(className: string): any[]; + /** + !#en + If the component's bounding box is different from the node's, you can implement this method to supply + a custom axis aligned bounding box (AABB), so the editor's scene view can perform hit test properly. + !#zh + 如果组件的包围盒与节点ä¸åŒï¼Œæ‚¨å¯ä»¥å®žçŽ°è¯¥æ–¹æ³•ä»¥æä¾›è‡ªå®šä¹‰çš„è½´å‘对é½çš„包围盒(AABB), + 以便编辑器的场景视图å¯ä»¥æ£ç¡®åœ°æ‰§è¡Œç‚¹é€‰æµ‹è¯•。 + @param out_rect the Rect to receive the bounding box + */ + _getLocalBounds(out_rect: Rect): void; + /** + !#en + onRestore is called after the user clicks the Reset item in the Inspector's context menu or performs + an undo operation on this component.<br/> + <br/> + If the component contains the "internal state", short for "temporary member variables which not included<br/> + in its CCClass properties", then you may need to implement this function.<br/> + <br/> + The editor will call the getset accessors of your component to record/restore the component's state<br/> + for undo/redo operation. However, in extreme cases, it may not works well. Then you should implement<br/> + this function to manually synchronize your component's "internal states" with its public properties.<br/> + Once you implement this function, all the getset accessors of your component will not be called when<br/> + the user performs an undo/redo operation. Which means that only the properties with default value<br/> + will be recorded or restored by editor.<br/> + <br/> + Similarly, the editor may failed to reset your component correctly in extreme cases. Then if you need<br/> + to support the reset menu, you should manually synchronize your component's "internal states" with its<br/> + properties in this function. Once you implement this function, all the getset accessors of your component<br/> + will not be called during reset operation. Which means that only the properties with default value<br/> + will be reset by editor. + + This function is only called in editor mode. + !#zh + onRestore 是用户在检查器èœå•点击 Reset 时,对æ¤ç»„件执行撤消æ“作åŽè°ƒç”¨çš„。<br/> + <br/> + 如果组件包å«äº†â€œå†…部状æ€â€ï¼ˆä¸åœ¨ CCClass 属性ä¸å®šä¹‰çš„临时æˆå‘˜å˜é‡ï¼‰ï¼Œé‚£ä¹ˆä½ å¯èƒ½éœ€è¦å®žçŽ°è¯¥æ–¹æ³•ã€‚<br/> + <br/> + 编辑器执行撤销/é‡åšæ“作时,将调用组件的 get set æ¥å½•制和还原组件的状æ€ã€‚然而,在æžç«¯çš„æƒ…况下,它å¯èƒ½æ— 法良好è¿ä½œã€‚<br/> + é‚£ä¹ˆä½ å°±åº”è¯¥å®žçŽ°è¿™ä¸ªæ–¹æ³•ï¼Œæ‰‹åŠ¨æ ¹æ®ç»„ä»¶çš„å±žæ€§åŒæ¥â€œå†…部状æ€â€ã€‚ä¸€æ—¦ä½ å®žçŽ°è¿™ä¸ªæ–¹æ³•ï¼Œå½“ç”¨æˆ·æ’¤é”€æˆ–é‡åšæ—¶ï¼Œç»„ä»¶çš„æ‰€æœ‰ get set 都ä¸ä¼šå†è¢«è°ƒç”¨ã€‚è¿™æ„味ç€ä»…仅指定了默认值的属性将被编辑器记录和还原。<br/> + <br/> + åŒæ ·çš„,编辑å¯èƒ½æ— 法在æžç«¯æƒ…况下æ£ç¡®åœ°é‡ç½®æ‚¨çš„ç»„ä»¶ã€‚å¦‚æžœä½ éœ€è¦æ”¯æŒç»„ä»¶é‡ç½®èœå•,则需è¦åœ¨è¯¥æ–¹æ³•䏿‰‹å·¥åŒæ¥ç»„件属性到“内部状æ€â€ã€‚ä¸€æ—¦ä½ å®žçŽ°è¿™ä¸ªæ–¹æ³•ï¼Œç»„ä»¶çš„æ‰€æœ‰ get set 都ä¸ä¼šåœ¨é‡ç½®æ“作时被调用。这æ„味ç€ä»…仅指定了默认值的属性将被编辑器é‡ç½®ã€‚ + <br/> + æ¤æ–¹æ³•仅在编辑器下会被调用。 + */ + onRestore(): void; + /** + !#en + Schedules a custom selector.<br/> + If the selector is already scheduled, then the interval parameter will be updated without scheduling it again. + !#zh + 调度一个自定义的回调函数。<br/> + 如果回调函数已调度,那么将ä¸ä¼šé‡å¤è°ƒåº¦å®ƒï¼Œåªä¼šæ›´æ–°æ—¶é—´é—´éš”傿•°ã€‚ + @param callback The callback function + @param interval Tick interval in seconds. 0 means tick every frame. + @param repeat The selector will be executed (repeat + 1) times, you can use cc.macro.REPEAT_FOREVER for tick infinitely. + @param delay The amount of time that the first tick will wait before execution. Unit: s + + @example + ```js + var timeCallback = function (dt) { + cc.log("time: " + dt); + } + this.schedule(timeCallback, 1); + ``` + */ + schedule(callback: Function, interval?: number, repeat?: number, delay?: number): void; + /** + !#en Schedules a callback function that runs only once, with a delay of 0 or larger. + !#zh 调度一个åªè¿è¡Œä¸€æ¬¡çš„回调函数,å¯ä»¥æŒ‡å®š 0 è®©å›žè°ƒå‡½æ•°åœ¨ä¸‹ä¸€å¸§ç«‹å³æ‰§è¡Œæˆ–è€…åœ¨ä¸€å®šçš„å»¶æ—¶ä¹‹åŽæ‰§è¡Œã€‚ + @param callback A function wrapped as a selector + @param delay The amount of time that the first tick will wait before execution. Unit: s + + @example + ```js + var timeCallback = function (dt) { + cc.log("time: " + dt); + } + this.scheduleOnce(timeCallback, 2); + ``` + */ + scheduleOnce(callback: Function, delay?: number): void; + /** + !#en Unschedules a custom callback function. + !#zh å–æ¶ˆè°ƒåº¦ä¸€ä¸ªè‡ªå®šä¹‰çš„回调函数。 + @param callback_fn A function wrapped as a selector + + @example + ```js + this.unschedule(_callback); + ``` + */ + unschedule(callback_fn: Function): void; + /** + !#en + unschedule all scheduled callback functions: custom callback functions, and the 'update' callback function.<br/> + Actions are not affected by this method. + !#zh å–æ¶ˆè°ƒåº¦æ‰€æœ‰å·²è°ƒåº¦çš„å›žè°ƒå‡½æ•°ï¼šå®šåˆ¶çš„å›žè°ƒå‡½æ•°ä»¥åŠ `update` 回调函数。动作ä¸å—æ¤æ–¹æ³•å½±å“。 + + @example + ```js + this.unscheduleAllCallbacks(); + ``` + */ + unscheduleAllCallbacks(): void; + } + /** !#en The Label Component. + !#zh æ–‡å—æ ‡ç¾ç»„ä»¶ */ + export class Label extends RenderComponent { + /** !#en Content string of label. + !#zh æ ‡ç¾æ˜¾ç¤ºçš„æ–‡æœ¬å†…容。 */ + string: string; + /** !#en Horizontal Alignment of label. + !#zh æ–‡æœ¬å†…å®¹çš„æ°´å¹³å¯¹é½æ–¹å¼ã€‚ */ + horizontalAlign: Label.HorizontalAlign; + /** !#en Vertical Alignment of label. + !#zh æ–‡æœ¬å†…å®¹çš„åž‚ç›´å¯¹é½æ–¹å¼ã€‚ */ + verticalAlign: Label.VerticalAlign; + /** !#en The actual rendering font size in shrink mode + !#zh SHRINK 模å¼ä¸‹é¢æ–‡æœ¬å®žé™…渲染的å—ä½“å¤§å° */ + actualFontSize: number; + /** !#en Font size of label. + !#zh 文本å—体大å°ã€‚ */ + fontSize: number; + /** !#en Font family of label, only take effect when useSystemFont property is true. + !#zh 文本å—体åç§°, åªåœ¨ useSystemFont 属性为 true 的时候生效。 */ + fontFamily: string; + /** !#en Line Height of label. + !#zh 文本行高。 */ + lineHeight: number; + /** !#en Overflow of label. + !#zh æ–‡å—æ˜¾ç¤ºè¶…å‡ºèŒƒå›´æ—¶çš„å¤„ç†æ–¹å¼ã€‚ */ + overflow: Label.Overflow; + /** !#en Whether auto wrap label when string width is large than label width. + !#zh 是å¦è‡ªåЍæ¢è¡Œã€‚ */ + enableWrapText: boolean; + /** !#en The font of label. + !#zh 文本å—体。 */ + font: Font; + /** !#en Whether use system font name or not. + !#zh 是å¦ä½¿ç”¨ç³»ç»Ÿå—体。 */ + useSystemFont: boolean; + /** !#en The spacing of the x axis between characters, only take Effect when using bitmap fonts. + !#zh æ–‡å—之间 x 轴的间è·ï¼Œä»…在使用ä½å›¾å—体时生效。 */ + spacingX: number; + /** !#en The cache mode of label. This mode only supports system fonts. + !#zh æ–‡æœ¬ç¼“å˜æ¨¡å¼, 该模å¼åªæ”¯æŒç³»ç»Ÿå—体。 */ + cacheMode: Label.CacheMode; + /** !#en Whether enable bold. + !#zh 是å¦å¯ç”¨é»‘体。 */ + enableBold: boolean; + /** !#en Whether enable italic. + !#zh 是å¦å¯ç”¨é»‘体。 */ + enableItalic: boolean; + /** !#en Whether enable underline. + !#zh 是å¦å¯ç”¨ä¸‹åˆ’线。 */ + enableUnderline: boolean; + /** !#en The height of underline. + !#zh 下划线高度。 */ + underlineHeight: number; + /** + !#zh 需è¦ä¿è¯å½“å‰åœºæ™¯ä¸æ²¡æœ‰ä½¿ç”¨CHAR缓å˜çš„Labelæ‰å¯ä»¥æ¸…除,å¦åˆ™å·²æ¸²æŸ“çš„æ–‡å—æ²¡æœ‰é‡æ–°ç»˜åˆ¶ä¼šä¸æ˜¾ç¤º + !#en It can be cleared that need to ensure there is not use the CHAR cache in the current scene. Otherwise, the rendered text will not be displayed without repainting. + */ + static clearCharCache(): void; + } + /** !#en Outline effect used to change the display, only for system fonts or TTF fonts + !#zh æè¾¹æ•ˆæžœç»„ä»¶,用于å—体æè¾¹,åªèƒ½ç”¨äºŽç³»ç»Ÿå—体 */ + export class LabelOutline extends Component { + /** !#en outline color + !#zh æ”¹å˜æè¾¹çš„é¢œè‰² */ + color: Color; + /** !#en Change the outline width + !#zh æ”¹å˜æè¾¹çš„å®½åº¦ */ + width: number; + } + /** !#en + The Layout is a container component, use it to arrange child elements easily.<br> + Note:<br> + 1.Scaling and rotation of child nodes are not considered.<br> + 2.After setting the Layout, the results need to be updated until the next frame, + unless you manually call {{#crossLink "Layout/updateLayout:method"}}{{/crossLink}}。 + !#zh + Layout 组件相当于一个容器,能自动对它的所有å节点进行统一排版。<br> + 注æ„:<br> + 1.ä¸ä¼šè€ƒè™‘å节点的缩放和旋转。<br> + 2.对 Layout 设置åŽç»“果需è¦åˆ°ä¸‹ä¸€å¸§æ‰ä¼šæ›´æ–°ï¼Œé™¤éžä½ è®¾ç½®å®Œä»¥åŽæ‰‹åŠ¨è°ƒç”¨ {{#crossLink "Layout/updateLayout:method"}}{{/crossLink}}。 */ + export class Layout extends Component { + /** !#en The layout type. + !#zh 布局类型 */ + type: Layout.Type; + /** !#en + The are three resize modes for Layout. + None, resize Container and resize children. + !#zh ç¼©æ”¾æ¨¡å¼ */ + resizeMode: Layout.ResizeMode; + /** !#en The cell size for grid layout. + !#zh æ¯ä¸ªæ ¼å的大å°ï¼Œåªæœ‰å¸ƒå±€ç±»åž‹ä¸º GRID çš„æ—¶å€™æ‰æœ‰æ•ˆã€‚ */ + cellSize: Size; + /** !#en + The start axis for grid layout. If you choose horizontal, then children will layout horizontally at first, + and then break line on demand. Choose vertical if you want to layout vertically at first . + !#zh èµ·å§‹è½´æ–¹å‘类型,å¯è¿›è¡Œæ°´å¹³å’Œåž‚ç›´å¸ƒå±€æŽ’åˆ—ï¼Œåªæœ‰å¸ƒå±€ç±»åž‹ä¸º GRID çš„æ—¶å€™æ‰æœ‰æ•ˆã€‚ */ + startAxis: Layout.AxisDirection; + /** !#en The left padding of layout, it only effect the layout in one direction. + !#zh 容器内左边è·ï¼Œåªä¼šåœ¨ä¸€ä¸ªå¸ƒå±€æ–¹å‘上生效。 */ + paddingLeft: number; + /** !#en The right padding of layout, it only effect the layout in one direction. + !#zh 容器内å³è¾¹è·ï¼Œåªä¼šåœ¨ä¸€ä¸ªå¸ƒå±€æ–¹å‘上生效。 */ + paddingRight: number; + /** !#en The top padding of layout, it only effect the layout in one direction. + !#zh 容器内上边è·ï¼Œåªä¼šåœ¨ä¸€ä¸ªå¸ƒå±€æ–¹å‘上生效。 */ + paddingTop: number; + /** !#en The bottom padding of layout, it only effect the layout in one direction. + !#zh 容器内下边è·ï¼Œåªä¼šåœ¨ä¸€ä¸ªå¸ƒå±€æ–¹å‘上生效。 */ + paddingBottom: number; + /** !#en The distance in x-axis between each element in layout. + !#zh å节点之间的水平间è·ã€‚ */ + spacingX: number; + /** !#en The distance in y-axis between each element in layout. + !#zh å节点之间的垂直间è·ã€‚ */ + spacingY: number; + /** !#en + Only take effect in Vertical layout mode. + This option changes the start element's positioning. + !#zh 垂直排列å节点的方å‘。 */ + verticalDirection: Layout.VerticalDirection; + /** !#en + Only take effect in Horizontal layout mode. + This option changes the start element's positioning. + !#zh 水平排列å节点的方å‘。 */ + horizontalDirection: Layout.HorizontalDirection; + /** !#en Adjust the layout if the children scaled. + !#zh å节点缩放比例是å¦å½±å“布局。 */ + affectedByScale: boolean; + /** + !#en Perform the layout update + !#zh ç«‹å³æ‰§è¡Œæ›´æ–°å¸ƒå±€ + + @example + ```js + layout.type = cc.Layout.HORIZONTAL; + layout.node.addChild(childNode); + cc.log(childNode.x); // not yet changed + layout.updateLayout(); + cc.log(childNode.x); // changed + ``` + */ + updateLayout(): void; + } + /** !#en Shadow effect for Label component, only for system fonts or TTF fonts + !#zh 用于给 Label ç»„ä»¶æ·»åŠ é˜´å½±æ•ˆæžœï¼Œåªèƒ½ç”¨äºŽç³»ç»Ÿå—体或 ttf å—体 */ + export class LabelShadow extends Component { + /** !#en The shadow color + !#zh 阴影的颜色 */ + color: Color; + /** !#en Offset between font and shadow + !#zh å—体与阴影的åç§» */ + offset: Vec2; + /** !#en A non-negative float specifying the level of shadow blur + !#zh 阴影的模糊程度 */ + blur: number; + } + /** !#en The Mask Component + !#zh é®ç½©ç»„ä»¶ */ + export class Mask extends RenderComponent { + /** !#en The mask type. + !#zh é®ç½©ç±»åž‹ */ + type: Mask.Type; + /** !#en The mask image + !#zh é®ç½©æ‰€éœ€è¦çš„贴图 */ + spriteFrame: SpriteFrame; + /** !#en + The alpha threshold.(Not supported Canvas Mode) <br/> + The content is drawn only where the stencil have pixel with alpha greater than the alphaThreshold. <br/> + Should be a float between 0 and 1. <br/> + This default to 0.1. + When it's set to 1, the stencil will discard all pixels, nothing will be shown. + !#zh + Alpha é˜ˆå€¼ï¼ˆä¸æ”¯æŒ Canvas 模å¼ï¼‰<br/> + åªæœ‰å½“模æ¿çš„åƒç´ çš„ alpha 大于ç‰äºŽ alphaThreshold 时,æ‰ä¼šç»˜åˆ¶å†…容。<br/> + 该数值 0 ~ 1 之间的浮点数,默认值为 0.1 + 当被设置为 1 时,会丢弃所有蒙版åƒç´ ,所以ä¸ä¼šæ˜¾ç¤ºä»»ä½•内容 */ + alphaThreshold: number; + /** !#en Reverse mask (Not supported Canvas Mode) + !#zh åå‘é®ç½©ï¼ˆä¸æ”¯æŒ Canvas 模å¼ï¼‰ */ + inverted: boolean; + /** TODO: remove segments, not supported by graphics + !#en The segements for ellipse mask. + !#zh æ¤åœ†é®ç½©çš„æ›²çº¿ç»†åˆ†æ•° */ + segements: number; + } + /** !#en + cc.MotionStreak manages a Ribbon based on it's motion in absolute space. <br/> + You construct it with a fadeTime, minimum segment size, texture path, texture <br/> + length and color. The fadeTime controls how long it takes each vertex in <br/> + the streak to fade out, the minimum segment size it how many pixels the <br/> + streak will move before adding a new ribbon segment, and the texture <br/> + length is the how many pixels the texture is stretched across. The texture <br/> + is vertically aligned along the streak segment. + !#zh è¿åŠ¨è½¨è¿¹ï¼Œç”¨äºŽæ¸¸æˆå¯¹è±¡çš„è¿åŠ¨è½¨è¿¹ä¸Šå®žçŽ°æ‹–å°¾æ¸éšæ•ˆæžœã€‚ */ + export class MotionStreak extends Component implements BlendFunc { + /** !#en + !#zh 在编辑器模å¼ä¸‹é¢„览拖尾效果。 */ + preview: boolean; + /** !#en The fade time to fade. + !#zh 拖尾的æ¸éšæ—¶é—´ï¼Œä»¥ç§’ä¸ºå•ä½ã€‚ */ + fadeTime: number; + /** !#en The minimum segment size. + !#zh 拖尾之间最å°è·ç¦»ã€‚ */ + minSeg: number; + /** !#en The stroke's width. + !#zh 拖尾的宽度。 */ + stroke: number; + /** !#en The texture of the MotionStreak. + !#zh 拖尾的贴图。 */ + texture: Texture2D; + /** !#en The color of the MotionStreak. + !#zh 拖尾的颜色 */ + color: Color; + /** !#en The fast Mode. + !#zh 是å¦å¯ç”¨äº†å¿«é€Ÿæ¨¡å¼ã€‚当å¯ç”¨å¿«é€Ÿæ¨¡å¼ï¼Œæ–°çš„ç‚¹ä¼šè¢«æ›´å¿«åœ°æ·»åŠ ï¼Œä½†ç²¾åº¦è¾ƒä½Žã€‚ */ + fastMode: boolean; + /** + !#en Remove all living segments of the ribbon. + !#zh åˆ é™¤å½“å‰æ‰€æœ‰çš„æ‹–尾片段。 + + @example + ```js + // Remove all living segments of the ribbon. + myMotionStreak.reset(); + ``` + */ + reset(): void; + /** !#en specify the source Blend Factor, this will generate a custom material object, please pay attention to the memory cost. + !#zh æŒ‡å®šåŽŸå›¾çš„æ··åˆæ¨¡å¼ï¼Œè¿™ä¼šå…‹éš†ä¸€ä¸ªæ–°çš„æè´¨å¯¹è±¡ï¼Œæ³¨æ„这带æ¥çš„开销 */ + srcBlendFactor: macro.BlendFactor; + /** !#en specify the destination Blend Factor. + !#zh æŒ‡å®šç›®æ ‡çš„æ··åˆæ¨¡å¼ */ + dstBlendFactor: macro.BlendFactor; + } + /** !#en The PageView control + !#zh 页é¢è§†å›¾ç»„ä»¶ */ + export class PageView extends ScrollView { + /** !#en Specify the size type of each page in PageView. + !#zh 页é¢è§†å›¾ä¸æ¯ä¸ªé¡µé¢å¤§å°ç±»åž‹ */ + sizeMode: PageView.SizeMode; + /** !#en The page view direction + !#zh 页é¢è§†å›¾æ»šåŠ¨ç±»åž‹ */ + direction: PageView.Direction; + /** !#en + The scroll threshold value, when drag exceeds this value, + release the next page will automatically scroll, less than the restore + !#zh 滚动临界值,默认å•ä½ç™¾åˆ†æ¯”,当拖拽超出该数值时,æ¾å¼€ä¼šè‡ªåŠ¨æ»šåŠ¨ä¸‹ä¸€é¡µï¼Œå°äºŽæ—¶åˆ™è¿˜åŽŸã€‚ */ + scrollThreshold: number; + /** !#en + Auto page turning velocity threshold. When users swipe the PageView quickly, + it will calculate a velocity based on the scroll distance and time, + if the calculated velocity is larger than the threshold, then it will trigger page turning. + !#zh + 快速滑动翻页临界值。 + å½“ç”¨æˆ·å¿«é€Ÿæ»‘åŠ¨æ—¶ï¼Œä¼šæ ¹æ®æ»‘动开始和结æŸçš„è·ç¦»ä¸Žæ—¶é—´è®¡ç®—出一个速度值, + 该值与æ¤ä¸´ç•Œå€¼ç›¸æ¯”较,如果大于临界值,则进行自动翻页。 */ + autoPageTurningThreshold: number; + /** !#en Change the PageTurning event timing of PageView. + !#zh 设置 PageView PageTurning 事件的å‘逿—¶æœºã€‚ */ + pageTurningEventTiming: number; + /** !#en The Page View Indicator + !#zh 页é¢è§†å›¾æŒ‡ç¤ºå™¨ç»„ä»¶ */ + indicator: PageViewIndicator; + /** !#en The time required to turn over a page. unit: second + !#zh æ¯ä¸ªé¡µé¢ç¿»é¡µæ—¶æ‰€éœ€æ—¶é—´ã€‚å•ä½ï¼šç§’ */ + pageTurningSpeed: number; + /** !#en PageView events callback + !#zh 滚动视图的事件回调函数 */ + pageEvents: Component.EventHandler[]; + /** + !#en Returns current page index + !#zh 返回当å‰é¡µé¢ç´¢å¼• + */ + getCurrentPageIndex(): number; + /** + !#en Set current page index + !#zh 设置当å‰é¡µé¢ç´¢å¼• + @param index index + */ + setCurrentPageIndex(index: number): void; + /** + !#en Returns all pages of pageview + !#zh 返回视图ä¸çš„æ‰€æœ‰é¡µé¢ + */ + getPages(): Node[]; + /** + !#en At the end of the current page view to insert a new view + !#zh 在当å‰é¡µé¢è§†å›¾çš„尾部æ’入一个新视图 + @param page page + */ + addPage(page: Node): void; + /** + !#en Inserts a page in the specified location + !#zh 将页颿’入指定ä½ç½®ä¸ + @param page page + @param index index + */ + insertPage(page: Node, index: number): void; + /** + !#en Removes a page from PageView. + !#zh ç§»é™¤æŒ‡å®šé¡µé¢ + @param page page + */ + removePage(page: Node): void; + /** + !#en Removes a page at index of PageView. + !#zh ç§»é™¤æŒ‡å®šä¸‹æ ‡çš„é¡µé¢ + @param index index + */ + removePageAtIndex(index: number): void; + /** + !#en Removes all pages from PageView + !#zh ç§»é™¤æ‰€æœ‰é¡µé¢ + */ + removeAllPages(): void; + /** + !#en Scroll PageView to index. + !#zh æ»šåŠ¨åˆ°æŒ‡å®šé¡µé¢ + @param idx index of page. + @param timeInSecond scrolling time + */ + scrollToPage(idx: number, timeInSecond: number): void; + } + /** !#en The Page View Indicator Component + !#zh 页é¢è§†å›¾æ¯é¡µæ ‡è®°ç»„ä»¶ */ + export class PageViewIndicator extends Component { + /** !#en The spriteFrame for each element. + !#zh æ¯ä¸ªé¡µé¢æ ‡è®°æ˜¾ç¤ºçš„图片 */ + spriteFrame: SpriteFrame; + /** !#en The location direction of PageViewIndicator. + !#zh 页颿 ‡è®°æ‘†æ”¾æ–¹å‘ */ + direction: PageViewIndicator.Direction; + /** !#en The cellSize for each element. + !#zh æ¯ä¸ªé¡µé¢æ ‡è®°çš„å¤§å° */ + cellSize: Size; + /** !#en The distance between each element. + !#zh æ¯ä¸ªé¡µé¢æ ‡è®°ä¹‹é—´çš„è¾¹è· */ + spacing: number; + /** + !#en Set Page View + !#zh 设置页é¢è§†å›¾ + @param target target + */ + setPageView(target: PageView): void; + } + /** !#en + Visual indicator of progress in some operation. + Displays a bar to the user representing how far the operation has progressed. + !#zh + 进度æ¡ç»„件,å¯ç”¨äºŽæ˜¾ç¤ºåŠ è½½èµ„æºæ—¶çš„进度。 */ + export class ProgressBar extends Component { + /** !#en The targeted Sprite which will be changed progressively. + !#zh ç”¨æ¥æ˜¾ç¤ºè¿›åº¦æ¡æ¯”例的 Sprite 对象。 */ + barSprite: Sprite; + /** !#en The progress mode, there are two modes supported now: horizontal and vertical. + !#zh 进度æ¡çš„æ¨¡å¼ */ + mode: ProgressBar.Mode; + /** !#en The total width or height of the bar sprite. + !#zh 进度æ¡å®žé™…的总长度 */ + totalLength: number; + /** !#en The current progress of the bar sprite. The valid value is between 0-1. + !#zh 当å‰è¿›åº¦å€¼ï¼Œè¯¥æ•°å€¼çš„区间是 0-1 之间。 */ + progress: number; + /** !#en Whether reverse the progress direction of the bar sprite. + !#zh è¿›åº¦æ¡æ˜¯å¦è¿›è¡Œåæ–¹å‘å˜åŒ–。 */ + reverse: boolean; + } + /** !#en + Base class for components which supports rendering features. + !#zh + æ‰€æœ‰æ”¯æŒæ¸²æŸ“的组件的基类 */ + export class RenderComponent extends Component { + /** !#en The materials used by this render component. + !#zh 渲染组件使用的æè´¨ã€‚ */ + sharedMaterials: Material[]; + /** + !#en Get the material by index. + !#zh æ ¹æ®æŒ‡å®šç´¢å¼•èŽ·å–æè´¨ + @param index index + */ + getMaterial(index: number): MaterialVariant; + /** + !#en Gets all the materials. + !#zh èŽ·å–æ‰€æœ‰æè´¨ã€‚ + */ + getMaterials(): MaterialVariant[]; + /** + !#en Set the material by index. + !#zh æ ¹æ®æŒ‡å®šç´¢å¼•设置æè´¨ + @param index index + @param material material + */ + setMaterial(index: number, material: Material): Material; + } + /** !#en The RichText Component. + !#zh 富文本组件 */ + export class RichText extends Component { + /** !#en Content string of RichText. + !#zh 富文本显示的文本内容。 */ + string: string; + /** !#en Horizontal Alignment of each line in RichText. + !#zh æ–‡æœ¬å†…å®¹çš„æ°´å¹³å¯¹é½æ–¹å¼ã€‚ */ + horizontalAlign: macro.TextAlignment; + /** !#en Font size of RichText. + !#zh 富文本å—体大å°ã€‚ */ + fontSize: number; + /** !#en Custom System font of RichText + !#zh 富文本定制系统å—体 */ + fontFamily: string; + /** !#en Custom TTF font of RichText + !#zh 富文本定制å—体 */ + font: TTFFont; + /** !#en Whether use system font name or not. + !#zh 是å¦ä½¿ç”¨ç³»ç»Ÿå—体。 */ + useSystemFont: boolean; + /** !#en The cache mode of label. This mode only supports system fonts. + !#zh æ–‡æœ¬ç¼“å˜æ¨¡å¼, 该模å¼åªæ”¯æŒç³»ç»Ÿå—体。 */ + cacheMode: Label.CacheMode; + /** !#en The maximize width of the RichText + !#zh 富文本的最大宽度 */ + maxWidth: number; + /** !#en Line Height of RichText. + !#zh 富文本行高。 */ + lineHeight: number; + /** !#en The image atlas for the img tag. For each src value in the img tag, there should be a valid spriteFrame in the image atlas. + !#zh 对于 img æ ‡ç¾é‡Œé¢çš„ src 属性å称,都需è¦åœ¨ imageAtlas é‡Œé¢æ‰¾åˆ°ä¸€ä¸ªæœ‰æ•ˆçš„ spriteFrame,å¦åˆ™ img tag ä¼šåˆ¤å®šä¸ºæ— æ•ˆã€‚ */ + imageAtlas: SpriteAtlas; + /** !#en + Once checked, the RichText will block all input events (mouse and touch) within + the bounding box of the node, preventing the input from penetrating into the underlying node. + !#zh + 选䏿¤é€‰é¡¹åŽï¼ŒRichText 将阻æ¢èŠ‚ç‚¹è¾¹ç•Œæ¡†ä¸çš„æ‰€æœ‰è¾“å…¥äº‹ä»¶ï¼ˆé¼ æ ‡å’Œè§¦æ‘¸ï¼‰ï¼Œä»Žè€Œé˜²æ¢è¾“入事件穿é€åˆ°åº•层节点。 */ + handleTouchEvent: boolean; + } + /** !#en + This component is used to adjust the layout of current node to respect the safe area of a notched mobile device such as the iPhone X. + It is typically used for the top node of the UI interaction area. For specific usage, refer to the official [example-cases/02_ui/16_safeArea/SafeArea.fire](https://github.com/cocos-creator/example-cases). + + The concept of safe area is to give you a fixed inner rectangle in which you can safely display content that will be drawn on screen. + You are strongly discouraged from providing controls outside of this area. But your screen background could embellish edges. + + This component internally uses the API `cc.sys.getSafeAreaRect();` to obtain the safe area of the current iOS or Android device, + and implements the adaptation by using the Widget component and set anchor. + + !#zh + 该组件会将所在节点的布局适é…到 iPhone X ç‰å¼‚形屿‰‹æœºçš„安全区域内,通常用于 UI 交互区域的顶层节点,具体用法å¯å‚考官方范例 [example-cases/02_ui/16_safeArea/SafeArea.fire](https://github.com/cocos-creator/example-cases)。 + + 该组件内部通过 API `cc.sys.getSafeAreaRect();` 获å–åˆ°å½“å‰ iOS 或 Android 设备的安全区域,并通过 Widget 组件实现适é…。 */ + export class SafeArea extends Component { + /** + !#en Adapt to safe area + !#zh ç«‹å³é€‚é…安全区域 + + @example + ```js + let safeArea = this.node.addComponent(cc.SafeArea); + safeArea.updateArea(); + ``` + */ + updateArea(): void; + } + /** !#en + The Scrollbar control allows the user to scroll an image or other view that is too large to see completely + !#zh 滚动æ¡ç»„ä»¶ */ + export class Scrollbar extends Component { + /** !#en The "handle" part of the scrollbar. + !#zh ä½œä¸ºå½“å‰æ»šåŠ¨åŒºåŸŸä½ç½®æ˜¾ç¤ºçš„æ»‘å— Sprite。 */ + handle: Sprite; + /** !#en The direction of scrollbar. + !#zh ScrollBar 的滚动方å‘。 */ + direction: Scrollbar.Direction; + /** !#en Whether enable auto hide or not. + !#zh 是å¦åœ¨æ²¡æœ‰æ»šåŠ¨åŠ¨ä½œæ—¶è‡ªåŠ¨éšè— ScrollBar。 */ + enableAutoHide: boolean; + /** !#en + The time to hide scrollbar when scroll finished. + Note: This value is only useful when enableAutoHide is true. + !#zh + 没有滚动动作åŽç»è¿‡å¤šä¹…会自动éšè—。 + 注æ„:åªè¦å½“ “enableAutoHide†为 true æ—¶ï¼Œæ‰æœ‰æ•ˆã€‚ */ + autoHideTime: number; + } + /** !#en + Layout container for a view hierarchy that can be scrolled by the user, + allowing it to be larger than the physical display. + + !#zh + 滚动视图组件 */ + export class ScrollView extends Component { + /** !#en This is a reference to the UI element to be scrolled. + !#zh 坿»šåŠ¨å±•ç¤ºå†…å®¹çš„èŠ‚ç‚¹ã€‚ */ + content: Node; + /** !#en Enable horizontal scroll. + !#zh 是å¦å¼€å¯æ°´å¹³æ»šåŠ¨ã€‚ */ + horizontal: boolean; + /** !#en Enable vertical scroll. + !#zh 是å¦å¼€å¯åž‚直滚动。 */ + vertical: boolean; + /** !#en When inertia is set, the content will continue to move when touch ended. + !#zh 是å¦å¼€å¯æ»šåŠ¨æƒ¯æ€§ã€‚ */ + inertia: boolean; + /** !#en + It determines how quickly the content stop moving. A value of 1 will stop the movement immediately. + A value of 0 will never stop the movement until it reaches to the boundary of scrollview. + !#zh + 开坿ƒ¯æ€§åŽï¼Œåœ¨ç”¨æˆ·åœæ¢è§¦æ‘¸åŽæ»šåŠ¨å¤šå¿«åœæ¢ï¼Œ0表示永ä¸åœæ¢ï¼Œ1è¡¨ç¤ºç«‹åˆ»åœæ¢ã€‚ */ + brake: number; + /** !#en When elastic is set, the content will be bounce back when move out of boundary. + !#zh 是å¦å…è®¸æ»šåŠ¨å†…å®¹è¶…è¿‡è¾¹ç•Œï¼Œå¹¶åœ¨åœæ¢è§¦æ‘¸åŽå›žå¼¹ã€‚ */ + elastic: boolean; + /** !#en The elapse time of bouncing back. A value of 0 will bounce back immediately. + !#zh 回弹æŒç»çš„æ—¶é—´ï¼Œ0 表示将立å³å弹。 */ + bounceDuration: number; + /** !#en The horizontal scrollbar reference. + !#zh 水平滚动的 ScrollBar。 */ + horizontalScrollBar: Scrollbar; + /** !#en The vertical scrollbar reference. + !#zh 垂直滚动的 ScrollBar。 */ + verticalScrollBar: Scrollbar; + /** !#en Scrollview events callback + !#zh 滚动视图的事件回调函数 */ + scrollEvents: Component.EventHandler[]; + /** !#en If cancelInnerEvents is set to true, the scroll behavior will cancel touch events on inner content nodes + It's set to true by default. + !#zh 如果这个属性被设置为 trueï¼Œé‚£ä¹ˆæ»šåŠ¨è¡Œä¸ºä¼šå–æ¶ˆå节点上注册的触摸事件,默认被设置为 true。 + 注æ„,å节点上的 touchstart 事件ä»ç„¶ä¼šè§¦å‘,触点移动è·ç¦»éžå¸¸çŸçš„æƒ…况下 touchmove å’Œ touchend 也ä¸ä¼šå—å½±å“。 */ + cancelInnerEvents: boolean; + /** + !#en Scroll the content to the bottom boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图底部。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the bottom boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the bottom of the view. + scrollView.scrollToBottom(0.1); + ``` + */ + scrollToBottom(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the top boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图顶部。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the top boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the top of the view. + scrollView.scrollToTop(0.1); + ``` + */ + scrollToTop(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the left boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图左边。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the left boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the left of the view. + scrollView.scrollToLeft(0.1); + ``` + */ + scrollToLeft(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the right boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图å³è¾¹ã€‚ + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the right boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the right of the view. + scrollView.scrollToRight(0.1); + ``` + */ + scrollToRight(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the top left boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图左上角。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the top left boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the upper left corner of the view. + scrollView.scrollToTopLeft(0.1); + ``` + */ + scrollToTopLeft(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the top right boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图å³ä¸Šè§’。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the top right boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the top right corner of the view. + scrollView.scrollToTopRight(0.1); + ``` + */ + scrollToTopRight(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the bottom left boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图左下角。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the bottom left boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the lower left corner of the view. + scrollView.scrollToBottomLeft(0.1); + ``` + */ + scrollToBottomLeft(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the bottom right boundary of ScrollView. + !#zh 视图内容将在规定时间内滚动到视图å³ä¸‹è§’。 + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the bottom right boundary immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to the lower right corner of the view. + scrollView.scrollToBottomRight(0.1); + ``` + */ + scrollToBottomRight(timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll with an offset related to the ScrollView's top left origin, if timeInSecond is omitted, then it will jump to the + specific offset immediately. + !#zh 视图内容在规定时间内将滚动到 ScrollView 相对左上角原点的åç§»ä½ç½®, 如果 timeInSecond傿•°ä¸ä¼ ï¼Œåˆ™ç«‹å³æ»šåŠ¨åˆ°æŒ‡å®šåç§»ä½ç½®ã€‚ + @param offset A Vec2, the value of which each axis between 0 and maxScrollOffset + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the specific offset of ScrollView immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to middle position in 0.1 second in x-axis + let maxScrollOffset = this.getMaxScrollOffset(); + scrollView.scrollToOffset(cc.v2(maxScrollOffset.x / 2, 0), 0.1); + ``` + */ + scrollToOffset(offset: Vec2, timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Get the positive offset value corresponds to the content's top left boundary. + !#zh èŽ·å–æ»šåŠ¨è§†å›¾ç›¸å¯¹äºŽå·¦ä¸Šè§’åŽŸç‚¹çš„å½“å‰æ»šåЍåç§» + */ + getScrollOffset(): Vec2; + /** + !#en Get the maximize available scroll offset + !#zh èŽ·å–æ»šåŠ¨è§†å›¾æœ€å¤§å¯ä»¥æ»šåŠ¨çš„åç§»é‡ + */ + getMaxScrollOffset(): Vec2; + /** + !#en Scroll the content to the horizontal percent position of ScrollView. + !#zh 视图内容在规定时间内将滚动到 ScrollView 水平方å‘的百分比ä½ç½®ä¸Šã€‚ + @param percent A value between 0 and 1. + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the horizontal percent position of ScrollView immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Scroll to middle position. + scrollView.scrollToBottomRight(0.5, 0.1); + ``` + */ + scrollToPercentHorizontal(percent: number, timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the percent position of ScrollView in any direction. + !#zh 视图内容在规定时间内进行垂直方å‘和水平方å‘的滚动,并且滚动到指定百分比ä½ç½®ä¸Šã€‚ + @param anchor A point which will be clamp between cc.v2(0,0) and cc.v2(1,1). + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the percent position of ScrollView immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + + @example + ```js + // Vertical scroll to the bottom of the view. + scrollView.scrollTo(cc.v2(0, 1), 0.1); + + // Horizontal scroll to view right. + scrollView.scrollTo(cc.v2(1, 0), 0.1); + ``` + */ + scrollTo(anchor: Vec2, timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Scroll the content to the vertical percent position of ScrollView. + !#zh 视图内容在规定时间内滚动到 ScrollView 垂直方å‘的百分比ä½ç½®ä¸Šã€‚ + @param percent A value between 0 and 1. + @param timeInSecond Scroll time in second, if you don't pass timeInSecond, + the content will jump to the vertical percent position of ScrollView immediately. + @param attenuated Whether the scroll acceleration attenuated, default is true. + // Scroll to middle position. + scrollView.scrollToPercentVertical(0.5, 0.1); + */ + scrollToPercentVertical(percent: number, timeInSecond?: number, attenuated?: boolean): void; + /** + !#en Stop auto scroll immediately + !#zh åœæ¢è‡ªåŠ¨æ»šåŠ¨, è°ƒç”¨æ¤ API å¯ä»¥è®© Scrollview ç«‹å³åœæ¢æ»šåЍ + */ + stopAutoScroll(): void; + /** + !#en Modify the content position. + !#zh 设置当å‰è§†å›¾å†…å®¹çš„åæ ‡ç‚¹ã€‚ + @param position The position in content's parent space. + */ + setContentPosition(position: Vec2): void; + /** + !#en Query the content's position in its parent space. + !#zh 获å–当å‰è§†å›¾å†…å®¹çš„åæ ‡ç‚¹ã€‚ + */ + getContentPosition(): Vec2; + /** + !#en Query whether the user is currently dragging the ScrollView to scroll it + !#zh 用户是å¦åœ¨æ‹–æ‹½å½“å‰æ»šåŠ¨è§†å›¾ + */ + isScrolling(): boolean; + /** + !#en Query whether the ScrollView is currently scrolling because of a bounceback or inertia slowdown. + !#zh 当剿»šåŠ¨è§†å›¾æ˜¯å¦åœ¨æƒ¯æ€§æ»šåЍ + */ + isAutoScrolling(): boolean; + } + /** !#en The Slider Control + !#zh 滑动器组件 */ + export class Slider extends Component { + /** !#en The "handle" part of the slider + !#zh æ»‘åŠ¨å™¨æ»‘å—æŒ‰é’®éƒ¨ä»¶ */ + handle: Button; + /** !#en The slider direction + !#zh æ»‘åŠ¨å™¨æ–¹å‘ */ + direction: Slider.Direction; + /** !#en The current progress of the slider. The valid value is between 0-1 + !#zh 当å‰è¿›åº¦å€¼ï¼Œè¯¥æ•°å€¼çš„区间是 0-1 之间 */ + progress: number; + /** !#en The slider slide events' callback array + !#zh 滑动器组件滑动事件回调函数数组 */ + slideEvents: Component.EventHandler[]; + } + /** !#en Renders a sprite in the scene. + !#zh è¯¥ç»„ä»¶ç”¨äºŽåœ¨åœºæ™¯ä¸æ¸²æŸ“ç²¾çµã€‚ */ + export class Sprite extends RenderComponent implements BlendFunc { + /** !#en The sprite frame of the sprite. + !#zh ç²¾çµçš„ç²¾çµå¸§ */ + spriteFrame: SpriteFrame; + /** !#en The sprite render type. + !#zh ç²¾çµæ¸²æŸ“类型 */ + type: Sprite.Type; + /** !#en + The fill type, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLEDâ€. + !#zh + ç²¾çµå¡«å……类型,仅渲染类型设置为 cc.Sprite.Type.FILLED 时有效。 */ + fillType: Sprite.FillType; + /** !#en + The fill Center, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLEDâ€. + !#zh + å¡«å……ä¸å¿ƒç‚¹ï¼Œä»…渲染类型设置为 cc.Sprite.Type.FILLED 时有效。 */ + fillCenter: Vec2; + /** !#en + The fill Start, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLEDâ€. + !#zh + 填充起始点,仅渲染类型设置为 cc.Sprite.Type.FILLED 时有效。 */ + fillStart: number; + /** !#en + The fill Range, This will only have any effect if the "type" is set to “cc.Sprite.Type.FILLEDâ€. + !#zh + 填充范围,仅渲染类型设置为 cc.Sprite.Type.FILLED 时有效。 */ + fillRange: number; + /** !#en specify the frame is trimmed or not. + !#zh 是å¦ä½¿ç”¨è£å‰ªæ¨¡å¼ */ + trim: boolean; + /** !#en specify the size tracing mode. + !#zh ç²¾çµå°ºå¯¸è°ƒæ•´æ¨¡å¼ */ + sizeMode: Sprite.SizeMode; + /** + Change the state of sprite. + @param state NORMAL or GRAY State. + */ + setState(state: Sprite.State): void; + /** + Gets the current state. + */ + getState(): Sprite.State; + /** !#en specify the source Blend Factor, this will generate a custom material object, please pay attention to the memory cost. + !#zh æŒ‡å®šåŽŸå›¾çš„æ··åˆæ¨¡å¼ï¼Œè¿™ä¼šå…‹éš†ä¸€ä¸ªæ–°çš„æè´¨å¯¹è±¡ï¼Œæ³¨æ„这带æ¥çš„开销 */ + srcBlendFactor: macro.BlendFactor; + /** !#en specify the destination Blend Factor. + !#zh æŒ‡å®šç›®æ ‡çš„æ··åˆæ¨¡å¼ */ + dstBlendFactor: macro.BlendFactor; + } + /** !#en The toggle component is a CheckBox, when it used together with a ToggleGroup, it + could be treated as a RadioButton. + !#zh Toggle 是一个 CheckBox,当它和 ToggleGroup 一起使用的时候,å¯ä»¥å˜æˆ RadioButton。 */ + export class Toggle extends Button implements GraySpriteState { + /** !#en When this value is true, the check mark component will be enabled, otherwise + the check mark component will be disabled. + !#zh 如果这个设置为 true,则 check mark 组件会处于 enabled 状æ€ï¼Œå¦åˆ™å¤„于 disabled 状æ€ã€‚ */ + isChecked: boolean; + /** !#en The toggle group which the toggle belongs to, when it is null, the toggle is a CheckBox. + Otherwise, the toggle is a RadioButton. + !#zh Toggle 所属的 ToggleGroup,这个属性是å¯é€‰çš„。如果这个属性为 null,则 Toggle 是一个 CheckBox, + å¦åˆ™ï¼ŒToggle 是一个 RadioButton。 */ + toggleGroup: ToggleGroup; + /** !#en The image used for the checkmark. + !#zh Toggle 处于选ä¸çŠ¶æ€æ—¶æ˜¾ç¤ºçš„图片 */ + checkMark: Sprite; + /** !#en If Toggle is clicked, it will trigger event's handler + !#zh Toggle 按钮的点击事件列表。 */ + checkEvents: Component.EventHandler[]; + /** + !#en Make the toggle button checked. + !#zh 使 toggle 按钮处于选ä¸çŠ¶æ€ + */ + check(): void; + /** + !#en Make the toggle button unchecked. + !#zh 使 toggle 按钮处于未选ä¸çŠ¶æ€ + */ + uncheck(): void; + /** !#en The normal material. + !#zh æ£å¸¸çжæ€çš„æè´¨ã€‚ */ + normalMaterial: Material; + /** !#en The gray material. + !#zh ç½®ç°çжæ€çš„æè´¨ã€‚ */ + grayMaterial: Material; + } + /** !#en ToggleContainer is not a visiable UI component but a way to modify the behavior of a set of Toggles. <br/> + Toggles that belong to the same group could only have one of them to be switched on at a time.<br/> + Note: All the first layer child node containing the toggle component will auto be added to the container + !#zh ToggleContainer 䏿˜¯ä¸€ä¸ªå¯è§çš„ UI 组件,它å¯ä»¥ç”¨æ¥ä¿®æ”¹ä¸€ç»„ Toggle 组件的行为。<br/> + 当一组 Toggle 属于åŒä¸€ä¸ª ToggleContainer 的时候,任何时候åªèƒ½æœ‰ä¸€ä¸ª Toggle 处于选ä¸çжæ€ã€‚<br/> + 注æ„ï¼šæ‰€æœ‰åŒ…å« Toggle 组件的一级åèŠ‚ç‚¹éƒ½ä¼šè‡ªåŠ¨è¢«æ·»åŠ åˆ°è¯¥å®¹å™¨ä¸ */ + export class ToggleContainer extends Component { + /** !#en If this setting is true, a toggle could be switched off and on when pressed. + If it is false, it will make sure there is always only one toggle could be switched on + and the already switched on toggle can't be switched off. + !#zh 如果这个设置为 true, 那么 toggle 按钮在被点击的时候å¯ä»¥åå¤åœ°è¢«é€‰ä¸å’Œæœªé€‰ä¸ã€‚ */ + allowSwitchOff: boolean; + /** !#en If Toggle is clicked, it will trigger event's handler + !#zh Toggle 按钮的点击事件列表。 */ + checkEvents: Component.EventHandler[]; + /** !#en Read only property, return the toggle items array reference managed by ToggleContainer. + !#zh åªè¯»å±žæ€§ï¼Œè¿”回 ToggleContainer 管ç†çš„ toggle 数组引用 */ + toggleItems: Toggle[]; + } + /** !#en ToggleGroup is not a visiable UI component but a way to modify the behavior of a set of Toggles. + Toggles that belong to the same group could only have one of them to be switched on at a time. + !#zh ToggleGroup 䏿˜¯ä¸€ä¸ªå¯è§çš„ UI 组件,它å¯ä»¥ç”¨æ¥ä¿®æ”¹ä¸€ç»„ Toggle 组件的行为。当一组 Toggle 属于åŒä¸€ä¸ª ToggleGroup 的时候, + 任何时候åªèƒ½æœ‰ä¸€ä¸ª Toggle 处于选ä¸çжæ€ã€‚ */ + export class ToggleGroup extends Component { + /** !#en If this setting is true, a toggle could be switched off and on when pressed. + If it is false, it will make sure there is always only one toggle could be switched on + and the already switched on toggle can't be switched off. + !#zh 如果这个设置为 true, 那么 toggle 按钮在被点击的时候å¯ä»¥åå¤åœ°è¢«é€‰ä¸å’Œæœªé€‰ä¸ã€‚ */ + allowSwitchOff: boolean; + /** !#en Read only property, return the toggle items array reference managed by toggleGroup. + !#zh åªè¯»å±žæ€§ï¼Œè¿”回 toggleGroup 管ç†çš„ toggle 数组引用 */ + toggleItems: any[]; + } + /** !#en + Handling touch events in a ViewGroup takes special care, + because it's common for a ViewGroup to have children that are targets for different touch events than the ViewGroup itself. + To make sure that each view correctly receives the touch events intended for it, + ViewGroup should register capture phase event and handle the event propagation properly. + Please refer to Scrollview for more information. + + !#zh + ViewGroupçš„äº‹ä»¶å¤„ç†æ¯”è¾ƒç‰¹æ®Šï¼Œå› ä¸º ViewGroup 里é¢çš„å节点关心的事件跟 ViewGroup 本身å¯èƒ½ä¸ä¸€æ ·ã€‚ + 为了让å节点能够æ£ç¡®åœ°å¤„ç†äº‹ä»¶ï¼ŒViewGroup éœ€è¦æ³¨å†Œ capture 阶段的事件,并且åˆç†åœ°å¤„ç† ViewGroup ä¹‹é—´çš„äº‹ä»¶ä¼ é€’ã€‚ + 请å‚考 ScrollView 的实现æ¥èŽ·å–æ›´å¤šä¿¡æ¯ã€‚ */ + export class ViewGroup extends Component { + } + /** !#en + Stores and manipulate the anchoring based on its parent. + Widget are used for GUI but can also be used for other things. + Widget will adjust current node's position and size automatically, but the results after adjustment can not be obtained until the next frame unless you call {{#crossLink "Widget/updateAlignment:method"}}{{/crossLink}} manually. + !#zh + Widget 组件,用于设置和适é…其相对于父节点的边è·ï¼ŒWidget 通常被用于 UI 界é¢ï¼Œä¹Ÿå¯ä»¥ç”¨äºŽå…¶ä»–地方。 + Widget 会自动调整当å‰èŠ‚ç‚¹çš„åæ ‡å’Œå®½é«˜ï¼Œä¸è¿‡ç›®å‰è°ƒæ•´åŽçš„结果è¦åˆ°ä¸‹ä¸€å¸§æ‰èƒ½åœ¨è„šæœ¬é‡ŒèŽ·å–到,除éžä½ 先手动调用 {{#crossLink "Widget/updateAlignment:method"}}{{/crossLink}}。 */ + export class Widget extends Component { + /** !#en Specifies an alignment target that can only be one of the parent nodes of the current node. + The default value is null, and when null, indicates the current parent. + !#zh 指定一个对é½ç›®æ ‡ï¼Œåªèƒ½æ˜¯å½“å‰èŠ‚ç‚¹çš„å…¶ä¸ä¸€ä¸ªçˆ¶èŠ‚ç‚¹ï¼Œé»˜è®¤ä¸ºç©ºï¼Œä¸ºç©ºæ—¶è¡¨ç¤ºå½“å‰çˆ¶èŠ‚ç‚¹ã€‚ */ + target: Node; + /** !#en Whether to align the top. + !#zh 是å¦å¯¹é½ä¸Šè¾¹ã€‚ */ + isAlignTop: boolean; + /** !#en + Vertically aligns the midpoint, This will open the other vertical alignment options cancel. + !#zh + 是å¦åž‚ç›´æ–¹å‘对é½ä¸ç‚¹ï¼Œå¼€å¯æ¤é¡¹ä¼šå°†åž‚ç›´æ–¹å‘其他对é½é€‰é¡¹å–消。 */ + isAlignVerticalCenter: boolean; + /** !#en Whether to align the bottom. + !#zh 是å¦å¯¹é½ä¸‹è¾¹ã€‚ */ + isAlignBottom: boolean; + /** !#en Whether to align the left. + !#zh 是å¦å¯¹é½å·¦è¾¹ */ + isAlignLeft: boolean; + /** !#en + Horizontal aligns the midpoint. This will open the other horizontal alignment options canceled. + !#zh + æ˜¯å¦æ°´å¹³æ–¹å‘对é½ä¸ç‚¹ï¼Œå¼€å¯æ¤é€‰é¡¹ä¼šå°†æ°´å¹³æ–¹å‘其他对é½é€‰é¡¹å–消。 */ + isAlignHorizontalCenter: boolean; + /** !#en Whether to align the right. + !#zh 是å¦å¯¹é½å³è¾¹ã€‚ */ + isAlignRight: boolean; + /** !#en + Whether the stretched horizontally, when enable the left and right alignment will be stretched horizontally, + the width setting is invalid (read only). + !#zh + 当剿˜¯å¦æ°´å¹³æ‹‰ä¼¸ã€‚å½“åŒæ—¶å¯ç”¨å·¦å³å¯¹é½æ—¶ï¼ŒèŠ‚ç‚¹å°†ä¼šè¢«æ°´å¹³æ‹‰ä¼¸ï¼Œæ¤æ—¶èŠ‚ç‚¹çš„å®½åº¦åªè¯»ã€‚ */ + isStretchWidth: boolean; + /** !#en + Whether the stretched vertically, when enable the left and right alignment will be stretched vertically, + then height setting is invalid (read only) + !#zh + 当剿˜¯å¦åž‚ç›´æ‹‰ä¼¸ã€‚å½“åŒæ—¶å¯ç”¨ä¸Šä¸‹å¯¹é½æ—¶ï¼ŒèŠ‚ç‚¹å°†ä¼šè¢«åž‚ç›´æ‹‰ä¼¸ï¼Œæ¤æ—¶èŠ‚ç‚¹çš„é«˜åº¦åªè¯»ã€‚ */ + isStretchHeight: boolean; + /** !#en + The margins between the top of this node and the top of parent node, + the value can be negative, Only available in 'isAlignTop' open. + !#zh + 本节点顶边和父节点顶边的è·ç¦»ï¼Œå¯å¡«å†™è´Ÿå€¼ï¼Œåªæœ‰åœ¨ isAlignTop 开坿—¶æ‰æœ‰ä½œç”¨ã€‚ */ + top: number; + /** !#en + The margins between the bottom of this node and the bottom of parent node, + the value can be negative, Only available in 'isAlignBottom' open. + !#zh + 本节点底边和父节点底边的è·ç¦»ï¼Œå¯å¡«å†™è´Ÿå€¼ï¼Œåªæœ‰åœ¨ isAlignBottom 开坿—¶æ‰æœ‰ä½œç”¨ã€‚ */ + bottom: number; + /** !#en + The margins between the left of this node and the left of parent node, + the value can be negative, Only available in 'isAlignLeft' open. + !#zh + 本节点左边和父节点左边的è·ç¦»ï¼Œå¯å¡«å†™è´Ÿå€¼ï¼Œåªæœ‰åœ¨ isAlignLeft 开坿—¶æ‰æœ‰ä½œç”¨ã€‚ */ + left: number; + /** !#en + The margins between the right of this node and the right of parent node, + the value can be negative, Only available in 'isAlignRight' open. + !#zh + 本节点å³è¾¹å’Œçˆ¶èŠ‚ç‚¹å³è¾¹çš„è·ç¦»ï¼Œå¯å¡«å†™è´Ÿå€¼ï¼Œåªæœ‰åœ¨ isAlignRight 开坿—¶æ‰æœ‰ä½œç”¨ã€‚ */ + right: number; + /** !#en + Horizontal aligns the midpoint offset value, + the value can be negative, Only available in 'isAlignHorizontalCenter' open. + !#zh 水平居ä¸çš„å移值,å¯å¡«å†™è´Ÿå€¼ï¼Œåªæœ‰åœ¨ isAlignHorizontalCenter 开坿—¶æ‰æœ‰ä½œç”¨ã€‚ */ + horizontalCenter: number; + /** !#en + Vertical aligns the midpoint offset value, + the value can be negative, Only available in 'isAlignVerticalCenter' open. + !#zh 垂直居ä¸çš„å移值,å¯å¡«å†™è´Ÿå€¼ï¼Œåªæœ‰åœ¨ isAlignVerticalCenter 开坿—¶æ‰æœ‰ä½œç”¨ã€‚ */ + verticalCenter: number; + /** !#en If true, horizontalCenter is pixel margin, otherwise is percentage (0 - 1) margin. + !#zh 如果为 true,"horizontalCenter" 将会以åƒç´ 作为å移值,å之为百分比(0 到 1)。 */ + isAbsoluteHorizontalCenter: boolean; + /** !#en If true, verticalCenter is pixel margin, otherwise is percentage (0 - 1) margin. + !#zh 如果为 true,"verticalCenter" 将会以åƒç´ 作为å移值,å之为百分比(0 到 1)。 */ + isAbsoluteVerticalCenter: boolean; + /** !#en + If true, top is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's height. + !#zh + 如果为 true,"top" 将会以åƒç´ 作为边è·ï¼Œå¦åˆ™å°†ä¼šä»¥ç›¸å¯¹çˆ¶ç‰©ä½“高度的百分比(0 到 1)作为边è·ã€‚ */ + isAbsoluteTop: boolean; + /** !#en + If true, bottom is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's height. + !#zh + 如果为 true,"bottom" 将会以åƒç´ 作为边è·ï¼Œå¦åˆ™å°†ä¼šä»¥ç›¸å¯¹çˆ¶ç‰©ä½“高度的百分比(0 到 1)作为边è·ã€‚ */ + isAbsoluteBottom: boolean; + /** !#en + If true, left is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's width. + !#zh + 如果为 true,"left" 将会以åƒç´ 作为边è·ï¼Œå¦åˆ™å°†ä¼šä»¥ç›¸å¯¹çˆ¶ç‰©ä½“宽度的百分比(0 到 1)作为边è·ã€‚ */ + isAbsoluteLeft: boolean; + /** !#en + If true, right is pixel margin, otherwise is percentage (0 - 1) margin relative to the parent's width. + !#zh + 如果为 true,"right" 将会以åƒç´ 作为边è·ï¼Œå¦åˆ™å°†ä¼šä»¥ç›¸å¯¹çˆ¶ç‰©ä½“宽度的百分比(0 到 1)作为边è·ã€‚ */ + isAbsoluteRight: boolean; + /** !#en Specifies the alignment mode of the Widget, which determines when the widget should refresh. + !#zh 指定 Widget çš„å¯¹é½æ¨¡å¼ï¼Œç”¨äºŽå†³å®š Widget 应该何时刷新。 */ + alignMode: Widget.AlignMode; + /** + !#en + Immediately perform the widget alignment. You need to manually call this method only if + you need to get the latest results after the alignment before the end of current frame. + !#zh + 立刻执行 widget 坹齿“作。这个接å£ä¸€èˆ¬ä¸éœ€è¦æ‰‹å·¥è°ƒç”¨ã€‚ + åªæœ‰å½“ä½ éœ€è¦åœ¨å½“å‰å¸§ç»“æŸå‰èŽ·å¾— widget 对é½åŽçš„æœ€æ–°ç»“果时æ‰éœ€è¦æ‰‹åŠ¨è°ƒç”¨è¿™ä¸ªæ–¹æ³•ã€‚ + + @example + ```js + widget.top = 10; // change top margin + cc.log(widget.node.y); // not yet changed + widget.updateAlignment(); + cc.log(widget.node.y); // changed + ``` + */ + updateAlignment(): void; + /** !#en + When turned on, it will only be aligned once at the end of the onEnable frame, + then immediately disables the current component. + This will allow the script or animation to continue controlling the current node. + Note: It will still be aligned at the frame when onEnable is called. + !#zh + å¼€å¯åŽä»…会在 onEnable çš„å½“å¸§ç»“æŸæ—¶å¯¹é½ä¸€æ¬¡ï¼Œç„¶åŽç«‹åˆ»ç¦ç”¨å½“å‰ç»„件。 + è¿™æ ·ä¾¿äºŽè„šæœ¬æˆ–åŠ¨ç”»ç»§ç»æŽ§åˆ¶å½“å‰èŠ‚ç‚¹ã€‚ + 注æ„:onEnable 时所在的那一帧ä»ç„¶ä¼šè¿›è¡Œå¯¹é½ã€‚ */ + isAlignOnce: boolean; + } + /** !#en SwanSubContextView is a view component which controls open data context viewport in WeChat game platform.<br/> + The component's node size decide the viewport of the sub context content in main context, + the entire sub context texture will be scaled to the node's bounding box area.<br/> + This component provides multiple important features:<br/> + 1. Sub context could use its own resolution size and policy.<br/> + 2. Sub context could be minized to smallest size it needed.<br/> + 3. Resolution of sub context content could be increased.<br/> + 4. User touch input is transformed to the correct viewport.<br/> + 5. Texture update is handled by this component. User don't need to worry.<br/> + One important thing to be noted, whenever the node's bounding box change, + you need to manually reset the viewport of sub context using updateSubContextViewport. + !#zh SwanSubContextView å¯ä»¥ç”¨æ¥æŽ§åˆ¶ç™¾åº¦å°æ¸¸æˆå¹³å°å¼€æ”¾æ•°æ®åŸŸåœ¨ä¸»åŸŸä¸çš„视窗的ä½ç½®ã€‚<br/> + 这个组件的节点尺寸决定了开放数æ®åŸŸå†…容在主域ä¸çš„尺寸,整个开放数æ®åŸŸä¼šè¢«ç¼©æ”¾åˆ°èŠ‚ç‚¹çš„åŒ…å›´ç›’èŒƒå›´å†…ã€‚<br/> + 在这个组件的控制下,用户å¯ä»¥æ›´è‡ªç”±å¾—控制开放数æ®åŸŸï¼š<br/> + 1. å域ä¸å¯ä»¥ä½¿ç”¨ç‹¬ç«‹çš„è®¾è®¡åˆ†è¾¨çŽ‡å’Œé€‚é…æ¨¡å¼<br/> + 2. å域区域尺寸å¯ä»¥ç¼©å°åˆ°åªå®¹çº³å†…容å³å¯<br/> + 3. å域的分辨率也å¯ä»¥è¢«æ”¾å¤§ï¼Œä»¥ä¾¿èŽ·å¾—æ›´æ¸…æ™°çš„æ˜¾ç¤ºæ•ˆæžœ<br/> + 4. ç”¨æˆ·è¾“å…¥åæ ‡ä¼šè¢«è‡ªåŠ¨è½¬æ¢åˆ°æ£ç¡®çš„å域视窗ä¸<br/> + 5. å域内容贴图的更新由组件负责,用户ä¸éœ€è¦å¤„ç†<br/> + å”¯ä¸€éœ€è¦æ³¨æ„的是,当å域节点的包围盒å‘ç”Ÿæ”¹å˜æ—¶ï¼Œå¼€å‘者需è¦ä½¿ç”¨ `updateSubContextViewport` æ¥æ‰‹åŠ¨æ›´æ–°å域视窗。 */ + export class SwanSubContextView extends Component { + /** + !#en Update the sub context viewport manually, it should be called whenever the node's bounding box changes. + !#zh 更新开放数æ®åŸŸç›¸å¯¹äºŽä¸»åŸŸçš„ viewportï¼Œè¿™ä¸ªå‡½æ•°åº”è¯¥åœ¨èŠ‚ç‚¹åŒ…å›´ç›’æ”¹å˜æ—¶æ‰‹åŠ¨è°ƒç”¨ã€‚ + */ + updateSubContextViewport(): void; + } + /** !#en WXSubContextView is a view component which controls open data context viewport in WeChat game platform.<br/> + The component's node size decide the viewport of the sub context content in main context, + the entire sub context texture will be scaled to the node's bounding box area.<br/> + This component provides multiple important features:<br/> + 1. Sub context could use its own resolution size and policy.<br/> + 2. Sub context could be minized to smallest size it needed.<br/> + 3. Resolution of sub context content could be increased.<br/> + 4. User touch input is transformed to the correct viewport.<br/> + 5. Texture update is handled by this component. User don't need to worry.<br/> + One important thing to be noted, whenever the node's bounding box change, + you need to manually reset the viewport of sub context using updateSubContextViewport. + !#zh WXSubContextView å¯ä»¥ç”¨æ¥æŽ§åˆ¶å¾®ä¿¡å°æ¸¸æˆå¹³å°å¼€æ”¾æ•°æ®åŸŸåœ¨ä¸»åŸŸä¸çš„视窗的ä½ç½®ã€‚<br/> + 这个组件的节点尺寸决定了开放数æ®åŸŸå†…容在主域ä¸çš„尺寸,整个开放数æ®åŸŸä¼šè¢«ç¼©æ”¾åˆ°èŠ‚ç‚¹çš„åŒ…å›´ç›’èŒƒå›´å†…ã€‚<br/> + 在这个组件的控制下,用户å¯ä»¥æ›´è‡ªç”±å¾—控制开放数æ®åŸŸï¼š<br/> + 1. å域ä¸å¯ä»¥ä½¿ç”¨ç‹¬ç«‹çš„è®¾è®¡åˆ†è¾¨çŽ‡å’Œé€‚é…æ¨¡å¼<br/> + 2. å域区域尺寸å¯ä»¥ç¼©å°åˆ°åªå®¹çº³å†…容å³å¯<br/> + 3. å域的分辨率也å¯ä»¥è¢«æ”¾å¤§ï¼Œä»¥ä¾¿èŽ·å¾—æ›´æ¸…æ™°çš„æ˜¾ç¤ºæ•ˆæžœ<br/> + 4. ç”¨æˆ·è¾“å…¥åæ ‡ä¼šè¢«è‡ªåŠ¨è½¬æ¢åˆ°æ£ç¡®çš„å域视窗ä¸<br/> + 5. å域内容贴图的更新由组件负责,用户ä¸éœ€è¦å¤„ç†<br/> + å”¯ä¸€éœ€è¦æ³¨æ„的是,当å域节点的包围盒å‘ç”Ÿæ”¹å˜æ—¶ï¼Œå¼€å‘者需è¦ä½¿ç”¨ `updateSubContextViewport` æ¥æ‰‹åŠ¨æ›´æ–°å域视窗。 */ + export class WXSubContextView extends Component { + /** + !#en Reset open data context size and viewport + !#zh é‡ç½®å¼€æ”¾æ•°æ®åŸŸçš„尺寸和视窗 + */ + reset(): void; + /** + !#en Update the sub context viewport manually, it should be called whenever the node's bounding box changes. + !#zh 更新开放数æ®åŸŸç›¸å¯¹äºŽä¸»åŸŸçš„ viewportï¼Œè¿™ä¸ªå‡½æ•°åº”è¯¥åœ¨èŠ‚ç‚¹åŒ…å›´ç›’æ”¹å˜æ—¶æ‰‹åŠ¨è°ƒç”¨ã€‚ + */ + updateSubContextViewport(): void; + } + /** !#en The renderer object which provide access to render system APIs, + detailed APIs will be available progressively. + !#zh æä¾›åŸºç¡€æ¸²æŸ“接å£çš„æ¸²æŸ“器对象,渲染层的基础接å£å°†é€æ¥å¼€æ”¾ç»™ç”¨æˆ· */ + export class renderer { + /** !#en The render engine is available only after cc.game.EVENT_ENGINE_INITED event.<br/> + Normally it will be inited as the webgl render engine, but in wechat open context domain, + it will be inited as the canvas render engine. Canvas render engine is no longer available for other use case since v2.0. + !#zh 基础渲染引擎对象åªåœ¨ cc.game.EVENT_ENGINE_INITED 事件触å‘åŽæ‰å¯èŽ·å–。<br/> + 大多数情况下,它都会是 WebGL 渲染引擎实例,但是在微信开放数æ®åŸŸå½“ä¸ï¼Œå®ƒä¼šæ˜¯ Canvas 渲染引擎实例。请注æ„,从 2.0 开始,我们在其他平å°å’ŒçŽ¯å¢ƒä¸‹éƒ½åºŸå¼ƒäº† Canvas 渲染器。 */ + static renderEngine: any; + /** !#en The total draw call count in last rendered frame. + !#zh 上一次渲染帧所æäº¤çš„æ¸²æŸ“批次总数。 */ + static drawCalls: number; + } + /** !#en + EventTarget is an object to which an event is dispatched when something has occurred. + Entity are the most common event targets, but other objects can be event targets too. + + Event targets are an important part of the Fireball event model. + The event target serves as the focal point for how events flow through the scene graph. + When an event such as a mouse click or a keypress occurs, Fireball dispatches an event object + into the event flow from the root of the hierarchy. The event object then makes its way through + the scene graph until it reaches the event target, at which point it begins its return trip through + the scene graph. This round-trip journey to the event target is conceptually divided into three phases: + - The capture phase comprises the journey from the root to the last node before the event target's node + - The target phase comprises only the event target node + - The bubbling phase comprises any subsequent nodes encountered on the return trip to the root of the tree + See also: http://www.w3.org/TR/DOM-Level-3-Events/#event-flow + + Event targets can implement the following methods: + - _getCapturingTargets + - _getBubblingTargets + + !#zh + äº‹ä»¶ç›®æ ‡æ˜¯äº‹ä»¶è§¦å‘æ—¶ï¼Œåˆ†æ´¾çš„事件对象,Node 是最常è§çš„äº‹ä»¶ç›®æ ‡ï¼Œ + 但是其他对象也å¯ä»¥æ˜¯äº‹ä»¶ç›®æ ‡ã€‚<br/> */ + export class EventTarget extends CallbacksInvoker { + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en Base class of all kinds of events. + !#zh 包å«äº‹ä»¶ç›¸å…³ä¿¡æ¯çš„对象。 */ + export class Event { + /** + + @param type The name of the event (case-sensitive), e.g. "click", "fire", or "submit" + @param bubbles A boolean indicating whether the event bubbles up through the tree or not + */ + constructor(type: string, bubbles: boolean); + /** !#en The name of the event (case-sensitive), e.g. "click", "fire", or "submit". + !#zh 事件类型。 */ + type: string; + /** !#en Indicate whether the event bubbles up through the tree or not. + !#zh 表示该事件是å¦è¿›è¡Œå†’泡。 */ + bubbles: boolean; + /** !#en A reference to the target to which the event was originally dispatched. + !#zh 最åˆäº‹ä»¶è§¦å‘çš„ç›®æ ‡ */ + target: any; + /** !#en A reference to the currently registered target for the event. + !#zh 当å‰ç›®æ ‡ */ + currentTarget: any; + /** !#en + Indicates which phase of the event flow is currently being evaluated. + Returns an integer value represented by 4 constants: + - Event.NONE = 0 + - Event.CAPTURING_PHASE = 1 + - Event.AT_TARGET = 2 + - Event.BUBBLING_PHASE = 3 + The phases are explained in the [section 3.1, Event dispatch and DOM event flow] + (http://www.w3.org/TR/DOM-Level-3-Events/#event-flow), of the DOM Level 3 Events specification. + !#zh 事件阶段 */ + eventPhase: number; + /** + !#en Reset the event for being stored in the object pool. + !#zh é‡ç½®å¯¹è±¡æ± ä¸å˜å‚¨çš„事件。 + */ + unuse(): string; + /** + !#en Reuse the event for being used again by the object pool. + !#zh ç”¨äºŽå¯¹è±¡æ± å†æ¬¡ä½¿ç”¨çš„事件。 + */ + reuse(): string; + /** + !#en Stops propagation for current event. + !#zh åœæ¢ä¼ 递当å‰äº‹ä»¶ã€‚ + */ + stopPropagation(): void; + /** + !#en Stops propagation for current event immediately, + the event won't even be dispatched to the listeners attached in the current target. + !#zh ç«‹å³åœæ¢å½“å‰äº‹ä»¶çš„ä¼ é€’ï¼Œäº‹ä»¶ç”šè‡³ä¸ä¼šè¢«åˆ†æ´¾åˆ°æ‰€è¿žæŽ¥çš„当å‰ç›®æ ‡ã€‚ + */ + stopPropagationImmediate(): void; + /** + !#en Checks whether the event has been stopped. + !#zh 检查该事件是å¦å·²ç»åœæ¢ä¼ 递. + */ + isStopped(): boolean; + /** + !#en + <p> + Gets current target of the event <br/> + note: It only be available when the event listener is associated with node. <br/> + It returns 0 when the listener is associated with fixed priority. + </p> + !#zh 获å–当å‰ç›®æ ‡èŠ‚ç‚¹ + */ + getCurrentTarget(): Node; + /** + !#en Gets the event type. + !#zh 获å–事件类型 + */ + getType(): string; + /** !#en Code for event without type. + !#zh 没有类型的事件 */ + static NO_TYPE: string; + /** !#en The type code of Touch event. + !#zh 触摸事件类型 */ + static TOUCH: string; + /** !#en The type code of Mouse event. + !#zh é¼ æ ‡äº‹ä»¶ç±»åž‹ */ + static MOUSE: string; + /** !#en The type code of Keyboard event. + !#zh 键盘事件类型 */ + static KEYBOARD: string; + /** !#en The type code of Acceleration event. + !#zh åŠ é€Ÿå™¨äº‹ä»¶ç±»åž‹ */ + static ACCELERATION: string; + /** !#en Events not currently dispatched are in this phase + !#zh 尚未派å‘事件阶段 */ + static NONE: number; + /** !#en + The capturing phase comprises the journey from the root to the last node before the event target's node + see http://www.w3.org/TR/DOM-Level-3-Events/#event-flow + !#zh æ•èŽ·é˜¶æ®µï¼ŒåŒ…æ‹¬äº‹ä»¶ç›®æ ‡èŠ‚ç‚¹ä¹‹å‰ä»Žæ ¹èŠ‚ç‚¹åˆ°æœ€åŽä¸€ä¸ªèŠ‚ç‚¹çš„è¿‡ç¨‹ã€‚ */ + static CAPTURING_PHASE: number; + /** !#en + The target phase comprises only the event target node + see http://www.w3.org/TR/DOM-Level-3-Events/#event-flow + !#zh ç›®æ ‡é˜¶æ®µä»…åŒ…æ‹¬äº‹ä»¶ç›®æ ‡èŠ‚ç‚¹ã€‚ */ + static AT_TARGET: number; + /** !#en + The bubbling phase comprises any subsequent nodes encountered on the return trip to the root of the hierarchy + see http://www.w3.org/TR/DOM-Level-3-Events/#event-flow + !#zh 冒泡阶段, 包括回程é‡åˆ°åˆ°å±‚æ¬¡æ ¹èŠ‚ç‚¹çš„ä»»ä½•åŽç»èŠ‚ç‚¹ã€‚ */ + static BUBBLING_PHASE: number; + } + /** !#en + The System event, it currently supports keyboard events and accelerometer events.<br> + You can get the SystemEvent instance with cc.systemEvent.<br> + !#zh + ç³»ç»Ÿäº‹ä»¶ï¼Œå®ƒç›®å‰æ”¯æŒæŒ‰é”®äº‹ä»¶å’Œé‡åŠ›æ„Ÿåº”äº‹ä»¶ã€‚<br> + ä½ å¯ä»¥é€šè¿‡ cc.systemEvent 获å–到 SystemEvent 的实例。<br> */ + export class SystemEvent extends EventTarget { + /** + !#en whether enable accelerometer event + !#zh 是å¦å¯ç”¨åŠ é€Ÿåº¦è®¡äº‹ä»¶ + @param isEnable isEnable + */ + setAccelerometerEnabled(isEnable: boolean): void; + /** + !#en set accelerometer interval value + !#zh è®¾ç½®åŠ é€Ÿåº¦è®¡é—´éš”å€¼ + @param interval interval + */ + setAccelerometerInterval(interval: number): void; + } + /** undefined */ + export class WorldManifold { + /** !#en + world contact point (point of intersection) + !#zh + ç¢°æ’žç‚¹é›†åˆ */ + points: Vec2[]; + /** !#en + world vector pointing from A to B + !#zh + ä¸–ç•Œåæ ‡ç³»ä¸‹ç”± A æŒ‡å‘ B çš„å‘é‡ */ + normal: Vec2; + } + /** !#en + A manifold point is a contact point belonging to a contact manifold. + It holds details related to the geometry and dynamics of the contact points. + Note: the impulses are used for internal caching and may not + provide reliable contact forces, especially for high speed collisions. + !#zh + ManifoldPoint 是接触信æ¯ä¸çš„æŽ¥è§¦ç‚¹ä¿¡æ¯ã€‚å®ƒæ‹¥æœ‰å…³äºŽå‡ ä½•å’ŒæŽ¥è§¦ç‚¹çš„è¯¦ç»†ä¿¡æ¯ã€‚ + 注æ„:信æ¯ä¸çš„冲é‡ç”¨äºŽç³»ç»Ÿå†…部缓å˜ï¼Œæä¾›çš„æŽ¥è§¦åŠ›å¯èƒ½ä¸æ˜¯å¾ˆå‡†ç¡®ï¼Œç‰¹åˆ«æ˜¯é«˜é€Ÿç§»åЍä¸çš„碰撞信æ¯ã€‚ */ + export class ManifoldPoint { + /** !#en + The local point usage depends on the manifold type: + -e_circles: the local center of circleB + -e_faceA: the local center of circleB or the clip point of polygonB + -e_faceB: the clip point of polygonA + !#zh + æœ¬åœ°åæ ‡ç‚¹çš„用途å–决于 manifold 的类型 + - e_circles: circleB 的本地ä¸å¿ƒç‚¹ + - e_faceA: circleB 的本地ä¸å¿ƒç‚¹ 或者是 polygonB 的截å–点 + - e_faceB: polygonB 的截å–点 */ + localPoint: Vec2; + /** !#en + Normal impulse. + !#zh + 法线冲é‡ã€‚ */ + normalImpulse: number; + /** !#en + Tangent impulse. + !#zh + 切线冲é‡ã€‚ */ + tangentImpulse: number; + } + /** undefined */ + export class Manifold { + /** !#en + Manifold type : 0: e_circles, 1: e_faceA, 2: e_faceB + !#zh + Manifold 类型 : 0: e_circles, 1: e_faceA, 2: e_faceB */ + type: number; + /** !#en + The local point usage depends on the manifold type: + -e_circles: the local center of circleA + -e_faceA: the center of faceA + -e_faceB: the center of faceB + !#zh + 用途å–决于 manifold 类型 + -e_circles: circleA 的本地ä¸å¿ƒç‚¹ + -e_faceA: faceA 的本地ä¸å¿ƒç‚¹ + -e_faceB: faceB 的本地ä¸å¿ƒç‚¹ */ + localPoint: Vec2; + /** !#en + -e_circles: not used + -e_faceA: the normal on polygonA + -e_faceB: the normal on polygonB + !#zh + -e_circles: 没被使用到 + -e_faceA: polygonA 的法å‘é‡ + -e_faceB: polygonB 的法å‘é‡ */ + localNormal: Vec2; + /** !#en + the points of contact. + !#zh + 接触点信æ¯ã€‚ */ + points: ManifoldPoint[]; + } + /** !#en + Contact impulses for reporting. + !#zh + 用于返回给回调的接触冲é‡ã€‚ */ + export class PhysicsImpulse { + /** !#en + Normal impulses. + !#zh + 法线方å‘çš„å†²é‡ */ + normalImpulses: any; + /** !#en + Tangent impulses + !#zh + 切线方å‘çš„å†²é‡ */ + tangentImpulses: any; + } + /** !#en + PhysicsContact will be generated during begin and end collision as a parameter of the collision callback. + Note that contacts will be reused for speed up cpu time, so do not cache anything in the contact. + !#zh + ç‰©ç†æŽ¥è§¦ä¼šåœ¨å¼€å§‹å’Œç»“æŸç¢°æ’žä¹‹é—´ç”Ÿæˆï¼Œå¹¶ä½œä¸ºå‚æ•°ä¼ å…¥åˆ°ç¢°æ’žå›žè°ƒå‡½æ•°ä¸ã€‚ + 注æ„ï¼šä¼ å…¥çš„ç‰©ç†æŽ¥è§¦ä¼šè¢«ç³»ç»Ÿè¿›è¡Œé‡ç”¨ï¼Œæ‰€ä»¥ä¸è¦åœ¨ä½¿ç”¨ä¸ç¼“å˜é‡Œé¢çš„任何信æ¯ã€‚ */ + export class PhysicsContact { + /** + !#en + Get the world manifold. + !#zh + 获å–ä¸–ç•Œåæ ‡ç³»ä¸‹çš„碰撞信æ¯ã€‚ + */ + getWorldManifold(): WorldManifold; + /** + !#en + Get the manifold. + !#zh + èŽ·å–æœ¬åœ°ï¼ˆå±€éƒ¨ï¼‰åæ ‡ç³»ä¸‹çš„ç¢°æ’žä¿¡æ¯ã€‚ + */ + getManifold(): Manifold; + /** + !#en + Get the impulses. + Note: PhysicsImpulse can only used in onPostSolve callback. + !#zh + 获å–冲é‡ä¿¡æ¯ + 注æ„:这个信æ¯åªæœ‰åœ¨ onPostSolve å›žè°ƒä¸æ‰èƒ½èŽ·å–到 + */ + getImpulse(): PhysicsImpulse; + /** !#en + One of the collider that collided + !#zh + å‘生碰撞的碰撞体之一 */ + colliderA: Collider; + /** !#en + One of the collider that collided + !#zh + å‘生碰撞的碰撞体之一 */ + colliderB: Collider; + /** !#en + If set disabled to true, the contact will be ignored until contact end. + If you just want to disabled contact for current time step or sub-step, please use disabledOnce. + !#zh + 如果 disabled 被设置为 trueï¼Œé‚£ä¹ˆç›´åˆ°æŽ¥è§¦ç»“æŸæ¤æŽ¥è§¦éƒ½å°†è¢«å¿½ç•¥ã€‚ + å¦‚æžœåªæ˜¯å¸Œæœ›åœ¨å½“剿—¶é—´æ¥æˆ–忥ä¸å¿½ç•¥æ¤æŽ¥è§¦ï¼Œè¯·ä½¿ç”¨ disabledOnce 。 */ + disabled: boolean; + /** !#en + Disabled contact for current time step or sub-step. + !#zh + åœ¨å½“å‰æ—¶é—´æ¥æˆ–忥ä¸å¿½ç•¥æ¤æŽ¥è§¦ã€‚ */ + disabledOnce: boolean; + /** + !#en + Is this contact touching? + !#zh + 返回碰撞体是å¦å·²ç»æŽ¥è§¦åˆ°ã€‚ + */ + isTouching(): boolean; + /** + !#en + Set the desired tangent speed for a conveyor belt behavior. + !#zh + ä¸ºä¼ é€å¸¦è®¾ç½®æœŸæœ›çš„切线速度 + @param tangentSpeed tangentSpeed + */ + setTangentSpeed(tangentSpeed: number): void; + /** + !#en + Get the desired tangent speed. + !#zh + 获å–切线速度 + */ + getTangentSpeed(): number; + /** + !#en + Override the default friction mixture. You can call this in onPreSolve callback. + !#zh + è¦†ç›–é»˜è®¤çš„æ‘©æ“¦åŠ›ç³»æ•°ã€‚ä½ å¯ä»¥åœ¨ onPreSolve 回调ä¸è°ƒç”¨æ¤å‡½æ•°ã€‚ + @param friction friction + */ + setFriction(friction: number): void; + /** + !#en + Get the friction. + !#zh + 获å–当剿‘©æ“¦åŠ›ç³»æ•° + */ + getFriction(): number; + /** + !#en + Reset the friction mixture to the default value. + !#zh + é‡ç½®æ‘©æ“¦åŠ›ç³»æ•°åˆ°é»˜è®¤å€¼ + */ + resetFriction(): void; + /** + !#en + Override the default restitution mixture. You can call this in onPreSolve callback. + !#zh + 覆盖默认的æ¢å¤ç³»æ•°ã€‚ä½ å¯ä»¥åœ¨ onPreSolve 回调ä¸è°ƒç”¨æ¤å‡½æ•°ã€‚ + @param restitution restitution + */ + setRestitution(restitution: number): void; + /** + !#en + Get the restitution. + !#zh + 获å–当剿¢å¤ç³»æ•° + */ + getRestitution(): number; + /** + !#en + Reset the restitution mixture to the default value. + !#zh + é‡ç½®æ¢å¤ç³»æ•°åˆ°é»˜è®¤å€¼ + */ + resetRestitution(): void; + } + /** !#en + Physics manager uses box2d as the inner physics system, and hide most box2d implement details(creating rigidbody, synchronize rigidbody info to node). + You can visit some common box2d function through physics manager(hit testing, raycast, debug info). + Physics manager distributes the collision information to each collision callback when collision is produced. + Note: You need first enable the collision listener in the rigidbody. + !#zh + 物ç†ç³»ç»Ÿå°† box2d 作为内部物ç†ç³»ç»Ÿï¼Œå¹¶ä¸”éšè—了大部分 box2d å®žçŽ°ç»†èŠ‚ï¼ˆæ¯”å¦‚åˆ›å»ºåˆšä½“ï¼ŒåŒæ¥åˆšä½“ä¿¡æ¯åˆ°èŠ‚ç‚¹ä¸ç‰ï¼‰ã€‚ + ä½ å¯ä»¥é€šè¿‡ç‰©ç†ç³»ç»Ÿè®¿é—®ä¸€äº› box2d 常用的功能,比如点击测试,射线测试,设置测试信æ¯ç‰ã€‚ + 物ç†ç³»ç»Ÿè¿˜ç®¡ç†ç¢°æ’žä¿¡æ¯çš„分å‘,她会在产生碰撞时,将碰撞信æ¯åˆ†å‘到å„个碰撞回调ä¸ã€‚ + 注æ„ï¼šä½ éœ€è¦å…ˆåœ¨åˆšä½“ä¸å¼€å¯ç¢°æ’žæŽ¥å¬æ‰ä¼šäº§ç”Ÿç›¸åº”的碰撞回调。<br> + 支æŒçš„物ç†ç³»ç»ŸæŒ‡å®šç»˜åˆ¶ä¿¡æ¯äº‹ä»¶ï¼Œè¯·å‚阅 {{#crossLink "PhysicsManager.DrawBits"}}{{/crossLink}} */ + export class PhysicsManager implements EventTarget { + /** !#en + The ratio transform between physics unit and pixel unit, generally is 32. + !#zh + 物ç†å•ä½ä¸Žåƒç´ å•ä½äº’相转æ¢çš„æ¯”率,一般是 32。 */ + static PTM_RATIO: number; + /** !#en + The velocity iterations for the velocity constraint solver. + !#zh + 速度更新è¿ä»£æ•° */ + static VELOCITY_ITERATIONS: number; + /** !#en + The position Iterations for the position constraint solver. + !#zh + ä½ç½®è¿ä»£æ›´æ–°æ•° */ + static POSITION_ITERATIONS: number; + /** !#en + Specify the fixed time step. + Need enabledAccumulator to make it work. + !#zh + æŒ‡å®šå›ºå®šçš„ç‰©ç†æ›´æ–°é—´é𔿗¶é—´ï¼Œéœ€è¦å¼€å¯ enabledAccumulator æ‰æœ‰æ•ˆã€‚ */ + static FIXED_TIME_STEP: number; + /** !#en + Specify the max accumulator time. + Need enabledAccumulator to make it work. + !#zh + æ¯æ¬¡å¯ç”¨äºŽæ›´æ–°ç‰©ç†ç³»ç»Ÿçš„æœ€å¤§æ—¶é—´ï¼Œéœ€è¦å¼€å¯ enabledAccumulator æ‰æœ‰æ•ˆã€‚ */ + static MAX_ACCUMULATOR: number; + /** !#en + If enabled accumulator, then will call step function with the fixed time step FIXED_TIME_STEP. + And if the update dt is bigger than the time step, then will call step function several times. + If disabled accumulator, then will call step function with a time step calculated with the frame rate. + !#zh + å¦‚æžœå¼€å¯æ¤é€‰é¡¹ï¼Œé‚£ä¹ˆå°†ä¼šä»¥å›ºå®šçš„间隔时间 FIXED_TIME_STEP æ¥æ›´æ–°ç‰©ç†å¼•擎,如果一个 update 的间隔时间大于 FIXED_TIME_STEP,则会对物ç†å¼•擎进行多次更新。 + å¦‚æžœå…³é—æ¤é€‰é¡¹ï¼Œé‚£ä¹ˆå°†ä¼šæ ¹æ®è®¾å®šçš„ frame rate è®¡ç®—å‡ºä¸€ä¸ªé—´éš”æ—¶é—´æ¥æ›´æ–°ç‰©ç†å¼•擎。 */ + enabledAccumulator: boolean; + /** + !#en + Test which collider contains the given world point + !#zh + 获å–包å«ç»™å®šä¸–ç•Œåæ ‡ç³»ç‚¹çš„碰撞体 + @param point the world point + */ + testPoint(point: Vec2): PhysicsCollider; + /** + !#en + Test which colliders intersect the given world rect + !#zh + 获å–ä¸Žç»™å®šä¸–ç•Œåæ ‡ç³»çŸ©å½¢ç›¸äº¤çš„碰撞体 + @param rect the world rect + */ + testAABB(rect: Rect): PhysicsCollider[]; + /** + !#en + Raycast the world for all colliders in the path of the ray. + The raycast ignores colliders that contain the starting point. + !#zh + 检测哪些碰撞体在给定射线的路径上,射线检测将忽略包å«èµ·å§‹ç‚¹çš„碰撞体。 + @param p1 start point of the raycast + @param p2 end point of the raycast + @param type optional, default is RayCastType.Closest + */ + rayCast(p1: Vec2, p2: Vec2, type: RayCastType): PhysicsRayCastResult[]; + /** !#en + Enabled the physics manager? + !#zh + 指定是å¦å¯ç”¨ç‰©ç†ç³»ç»Ÿï¼Ÿ */ + enabled: boolean; + /** !#en + Debug draw flags. + !#zh + è®¾ç½®è°ƒè¯•ç»˜åˆ¶æ ‡å¿— */ + debugDrawFlags: number; + /** !#en + The physics world gravity. + !#zh + 物ç†ä¸–界é‡åЛ值 */ + gravity: Vec2; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** undefined */ + export class PhysicsRayCastResult { + /** !#en + The PhysicsCollider which intersects with the raycast + !#zh + 与射线相交的碰撞体 */ + collider: PhysicsCollider; + /** !#en + The intersection point + !#zh + 射线与碰撞体相交的点 */ + point: Vec2; + /** !#en + The normal vector at the point of intersection + !#zh + 射线与碰撞体相交的点的法å‘é‡ */ + normal: Vec2; + /** !#en + The fraction of the raycast path at the point of intersection + !#zh + 射线与碰撞体相交的点å 射线长度的分数 */ + fraction: number; + } + /** !#en Enum for RigidBodyType. + !#zh 刚体类型 */ + export enum RigidBodyType { + Static = 0, + Kinematic = 0, + Dynamic = 0, + Animated = 0, + } + /** !#en Enum for RayCastType. + !#zh 射线检测类型 */ + export enum RayCastType { + Closest = 0, + Any = 0, + AllClosest = 0, + All = 0, + } + /** undefined */ + export class RigidBody extends Component { + /** !#en + Should enabled contact listener? + When a collision is trigger, the collision callback will only be called when enabled contact listener. + !#zh + 是å¦å¯ç”¨æŽ¥è§¦æŽ¥å¬å™¨ã€‚ + 当 collider äº§ç”Ÿç¢°æ’žæ—¶ï¼Œåªæœ‰å¼€å¯äº†æŽ¥è§¦æŽ¥å¬å™¨æ‰ä¼šè°ƒç”¨ç›¸åº”的回调函数 */ + enabledContactListener: boolean; + /** + !#en + Collision callback. + Called when two collider begin to touch. + !#zh + 碰撞回调。 + å¦‚æžœä½ çš„è„šæœ¬ä¸å®žçŽ°äº†è¿™ä¸ªå‡½æ•°ï¼Œé‚£ä¹ˆå®ƒå°†ä¼šåœ¨ä¸¤ä¸ªç¢°æ’žä½“å¼€å§‹æŽ¥è§¦æ—¶è¢«è°ƒç”¨ã€‚ + @param contact contact information + @param selfCollider the collider belong to this rigidbody + @param otherCollider the collider belong to another rigidbody + */ + onBeginContact(contact: PhysicsContact, selfCollider: PhysicsCollider, otherCollider: PhysicsCollider): void; + /** + !#en + Collision callback. + Called when two collider cease to touch. + !#zh + 碰撞回调。 + å¦‚æžœä½ çš„è„šæœ¬ä¸å®žçŽ°äº†è¿™ä¸ªå‡½æ•°ï¼Œé‚£ä¹ˆå®ƒå°†ä¼šåœ¨ä¸¤ä¸ªç¢°æ’žä½“åœæ¢æŽ¥è§¦æ—¶è¢«è°ƒç”¨ã€‚ + @param contact contact information + @param selfCollider the collider belong to this rigidbody + @param otherCollider the collider belong to another rigidbody + */ + onEndContact(contact: PhysicsContact, selfCollider: PhysicsCollider, otherCollider: PhysicsCollider): void; + /** + !#en + Collision callback. + This is called when a contact is updated. + This allows you to inspect a contact before it goes to the solver(e.g. disable contact). + Note: this is called only for awake bodies. + Note: this is called even when the number of contact points is zero. + Note: this is not called for sensors. + !#zh + 碰撞回调。 + å¦‚æžœä½ çš„è„šæœ¬ä¸å®žçŽ°äº†è¿™ä¸ªå‡½æ•°ï¼Œé‚£ä¹ˆå®ƒå°†ä¼šåœ¨æŽ¥è§¦æ›´æ–°æ—¶è¢«è°ƒç”¨ã€‚ + ä½ å¯ä»¥åœ¨æŽ¥è§¦è¢«å¤„ç†å‰æ ¹æ®ä»–包å«çš„ä¿¡æ¯ä½œå‡ºç›¸åº”的处ç†ï¼Œæ¯”如将这个接触ç¦ç”¨æŽ‰ã€‚ + 注æ„:回调åªä¼šä¸ºé†’ç€çš„刚体调用。 + 注æ„:接触点为零的时候也有å¯èƒ½è¢«è°ƒç”¨ã€‚ + 注æ„:感知体(sensor)的回调ä¸ä¼šè¢«è°ƒç”¨ã€‚ + @param contact contact information + @param selfCollider the collider belong to this rigidbody + @param otherCollider the collider belong to another rigidbody + */ + onPreSolve(contact: PhysicsContact, selfCollider: PhysicsCollider, otherCollider: PhysicsCollider): void; + /** + !#en + Collision callback. + This is called after a contact is updated. + You can get the impulses from the contact in this callback. + !#zh + 碰撞回调。 + å¦‚æžœä½ çš„è„šæœ¬ä¸å®žçŽ°äº†è¿™ä¸ªå‡½æ•°ï¼Œé‚£ä¹ˆå®ƒå°†ä¼šåœ¨æŽ¥è§¦æ›´æ–°å®ŒåŽè¢«è°ƒç”¨ã€‚ + ä½ å¯ä»¥åœ¨è¿™ä¸ªå›žè°ƒä¸ä»ŽæŽ¥è§¦ä¿¡æ¯ä¸èŽ·å–到冲é‡ä¿¡æ¯ã€‚ + @param contact contact information + @param selfCollider the collider belong to this rigidbody + @param otherCollider the collider belong to another rigidbody + */ + onPostSolve(contact: PhysicsContact, selfCollider: PhysicsCollider, otherCollider: PhysicsCollider): void; + /** !#en + Is this a fast moving body that should be prevented from tunneling through + other moving bodies? + Note : + - All bodies are prevented from tunneling through kinematic and static bodies. This setting is only considered on dynamic bodies. + - You should use this flag sparingly since it increases processing time. + !#zh + è¿™ä¸ªåˆšä½“æ˜¯å¦æ˜¯ä¸€ä¸ªå¿«é€Ÿç§»åŠ¨çš„åˆšä½“ï¼Œå¹¶ä¸”éœ€è¦ç¦æ¢ç©¿è¿‡å…¶ä»–快速移动的刚体? + éœ€è¦æ³¨æ„的是 : + - æ‰€æœ‰åˆšä½“éƒ½è¢«ç¦æ¢ä»Ž è¿åŠ¨åˆšä½“ å’Œ 陿€åˆšä½“ ä¸ç©¿è¿‡ã€‚æ¤é€‰é¡¹åªå…³æ³¨äºŽ 动æ€åˆšä½“。 + - 应该尽é‡å°‘的使用æ¤é€‰é¡¹ï¼Œå› ä¸ºå®ƒä¼šå¢žåŠ ç¨‹åºå¤„ç†æ—¶é—´ã€‚ */ + bullet: boolean; + /** !#en + Rigidbody type : Static, Kinematic, Dynamic or Animated. + !#zh + 刚体类型: Static, Kinematic, Dynamic or Animated. */ + type: RigidBodyType; + /** !#en + Set this flag to false if this body should never fall asleep. + Note that this increases CPU usage. + !#zh + 如果æ¤åˆšä½“永远都ä¸åº”该进入ç¡çœ ,那么设置这个属性为 false。 + éœ€è¦æ³¨æ„这将使 CPU å 用率æé«˜ã€‚ */ + allowSleep: boolean; + /** !#en + Scale the gravity applied to this body. + !#zh + 缩放应用在æ¤åˆšä½“上的é‡åЛ值 */ + gravityScale: number; + /** !#en + Linear damping is use to reduce the linear velocity. + The damping parameter can be larger than 1, but the damping effect becomes sensitive to the + time step when the damping parameter is large. + !#zh + Linear damping 用于衰å‡åˆšä½“的线性速度。衰å‡ç³»æ•°å¯ä»¥å¤§äºŽ 1,但是当衰å‡ç³»æ•°æ¯”较大的时候,衰å‡çš„æ•ˆæžœä¼šå˜å¾—æ¯”è¾ƒæ•æ„Ÿã€‚ */ + linearDamping: number; + /** !#en + Angular damping is use to reduce the angular velocity. The damping parameter + can be larger than 1 but the damping effect becomes sensitive to the + time step when the damping parameter is large. + !#zh + Angular damping 用于衰å‡åˆšä½“的角速度。衰å‡ç³»æ•°å¯ä»¥å¤§äºŽ 1,但是当衰å‡ç³»æ•°æ¯”较大的时候,衰å‡çš„æ•ˆæžœä¼šå˜å¾—æ¯”è¾ƒæ•æ„Ÿã€‚ */ + angularDamping: number; + /** !#en + The linear velocity of the body's origin in world co-ordinates. + !#zh + åˆšä½“åœ¨ä¸–ç•Œåæ ‡ä¸‹çš„线性速度 */ + linearVelocity: Vec2; + /** !#en + The angular velocity of the body. + !#zh + 刚体的角速度 */ + angularVelocity: number; + /** !#en + Should this body be prevented from rotating? + !#zh + 是å¦ç¦æ¢æ¤åˆšä½“进行旋转 */ + fixedRotation: boolean; + /** !#en + Set the sleep state of the body. A sleeping body has very low CPU cost.(When the rigid body is hit, if the rigid body is in sleep state, it will be immediately awakened.) + !#zh + 设置刚体的ç¡çœ 状æ€ã€‚ ç¡çœ 的刚体具有éžå¸¸ä½Žçš„ CPU æˆæœ¬ã€‚(当刚体被碰撞到时,如果刚体处于ç¡çœ 状æ€ï¼Œå®ƒä¼šç«‹å³è¢«å”¤é†’) */ + awake: boolean; + /** !#en + Whether to wake up this rigid body during initialization + !#zh + 是å¦åœ¨åˆå§‹åŒ–时唤醒æ¤åˆšä½“ */ + awakeOnLoad: boolean; + /** !#en + Set the active state of the body. An inactive body is not + simulated and cannot be collided with or woken up. + If body is active, all fixtures will be added to the + broad-phase. + If body is inactive, all fixtures will be removed from + the broad-phase and all contacts will be destroyed. + Fixtures on an inactive body are implicitly inactive and will + not participate in collisions, ray-casts, or queries. + Joints connected to an inactive body are implicitly inactive. + !#zh + 设置刚体的激活状æ€ã€‚ä¸€ä¸ªéžæ¿€æ´»çжæ€ä¸‹çš„刚体是ä¸ä¼šè¢«æ¨¡æ‹Ÿå’Œç¢°æ’žçš„,ä¸ç®¡å®ƒæ˜¯å¦å¤„于ç¡çœ 状æ€ä¸‹ã€‚ + 如果刚体处于激活状æ€ä¸‹ï¼Œæ‰€æœ‰å¤¹å…·ä¼šè¢«æ·»åŠ åˆ° 粗测阶段(broad-phase)。 + å¦‚æžœåˆšä½“å¤„äºŽéžæ¿€æ´»çжæ€ä¸‹ï¼Œæ‰€æœ‰å¤¹å…·ä¼šè¢«ä»Ž 粗测阶段(broad-phase)ä¸ç§»é™¤ã€‚ + åœ¨éžæ¿€æ´»çжæ€ä¸‹çš„夹具ä¸ä¼šå‚ä¸Žåˆ°ç¢°æ’žï¼Œå°„çº¿ï¼Œæˆ–è€…æŸ¥æ‰¾ä¸ + é“¾æŽ¥åˆ°éžæ¿€æ´»çжæ€ä¸‹åˆšä½“çš„å…³èŠ‚ä¹Ÿæ˜¯éžæ¿€æ´»çš„。 */ + active: boolean; + /** + !#en + Gets a local point relative to the body's origin given a world point. + !#zh + å°†ä¸€ä¸ªç»™å®šçš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„点转æ¢ä¸ºåˆšä½“æœ¬åœ°åæ ‡ç³»ä¸‹çš„点 + @param worldPoint a point in world coordinates. + @param out optional, the receiving point + */ + getLocalPoint(worldPoint: Vec2, out: Vec2): Vec2; + /** + !#en + Get the world coordinates of a point given the local coordinates. + !#zh + å°†ä¸€ä¸ªç»™å®šçš„åˆšä½“æœ¬åœ°åæ ‡ç³»ä¸‹çš„点转æ¢ä¸ºä¸–ç•Œåæ ‡ç³»ä¸‹çš„点 + @param localPoint a point in local coordinates. + @param out optional, the receiving point + */ + getWorldPoint(localPoint: Vec2, out: Vec2): Vec2; + /** + !#en + Get the world coordinates of a vector given the local coordinates. + !#zh + å°†ä¸€ä¸ªç»™å®šçš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„å‘é‡è½¬æ¢ä¸ºåˆšä½“æœ¬åœ°åæ ‡ç³»ä¸‹çš„å‘é‡ + @param localVector a vector in world coordinates. + @param out optional, the receiving vector + */ + getWorldVector(localVector: Vec2, out: Vec2): Vec2; + /** + !#en + Gets a local vector relative to the body's origin given a world vector. + !#zh + å°†ä¸€ä¸ªç»™å®šçš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„点转æ¢ä¸ºåˆšä½“æœ¬åœ°åæ ‡ç³»ä¸‹çš„点 + @param worldVector a vector in world coordinates. + @param out optional, the receiving vector + */ + getLocalVector(worldVector: Vec2, out: Vec2): Vec2; + /** + !#en + Get the world body origin position. + !#zh + 获å–åˆšä½“ä¸–ç•Œåæ ‡ç³»ä¸‹çš„原点值 + @param out optional, the receiving point + */ + getWorldPosition(out: Vec2): Vec2; + /** + !#en + Get the world body rotation angle. + !#zh + 获å–åˆšä½“ä¸–ç•Œåæ ‡ç³»ä¸‹çš„æ—‹è½¬å€¼ã€‚ + */ + getWorldRotation(): number; + /** + !#en + Get the local position of the center of mass. + !#zh + 获å–åˆšä½“æœ¬åœ°åæ ‡ç³»ä¸‹çš„质心 + */ + getLocalCenter(): Vec2; + /** + !#en + Get the world position of the center of mass. + !#zh + 获å–åˆšä½“ä¸–ç•Œåæ ‡ç³»ä¸‹çš„质心 + */ + getWorldCenter(): Vec2; + /** + !#en + Get the world linear velocity of a world point attached to this body. + !#zh + 获å–刚体上指定点的线性速度 + @param worldPoint a point in world coordinates. + @param out optional, the receiving point + */ + getLinearVelocityFromWorldPoint(worldPoint: Vec2, out: Vec2): Vec2; + /** + !#en + Get total mass of the body. + !#zh + 获å–刚体的质é‡ã€‚ + */ + getMass(): number; + /** + !#en + Get the rotational inertia of the body about the local origin. + !#zh + 获å–åˆšä½“æœ¬åœ°åæ ‡ç³»ä¸‹åŽŸç‚¹çš„æ—‹è½¬æƒ¯æ€§ + */ + getInertia(): number; + /** + !#en + Get all the joints connect to the rigidbody. + !#zh + 获å–链接到æ¤åˆšä½“的所有关节 + */ + getJointList(): Joint[]; + /** + !#en + Apply a force at a world point. If the force is not + applied at the center of mass, it will generate a torque and + affect the angular velocity. + !#zh + æ–½åŠ ä¸€ä¸ªåŠ›åˆ°åˆšä½“ä¸Šçš„ä¸€ä¸ªç‚¹ã€‚å¦‚æžœåŠ›æ²¡æœ‰æ–½åŠ åˆ°åˆšä½“çš„è´¨å¿ƒä¸Šï¼Œè¿˜ä¼šäº§ç”Ÿä¸€ä¸ªæ‰çŸ©å¹¶ä¸”å½±å“到角速度。 + @param force the world force vector. + @param point the world position. + @param wake also wake up the body. + */ + applyForce(force: Vec2, point: Vec2, wake: boolean): void; + /** + !#en + Apply a force to the center of mass. + !#zh + æ–½åŠ ä¸€ä¸ªåŠ›åˆ°åˆšä½“ä¸Šçš„è´¨å¿ƒä¸Šã€‚ + @param force the world force vector. + @param wake also wake up the body. + */ + applyForceToCenter(force: Vec2, wake: boolean): void; + /** + !#en + Apply a torque. This affects the angular velocity. + !#zh + æ–½åŠ ä¸€ä¸ªæ‰çŸ©åŠ›ï¼Œå°†å½±å“刚体的角速度 + @param torque about the z-axis (out of the screen), usually in N-m. + @param wake also wake up the body + */ + applyTorque(torque: number, wake: boolean): void; + /** + !#en + Apply a impulse at a world point, This immediately modifies the velocity. + If the impulse is not applied at the center of mass, it will generate a torque and + affect the angular velocity. + !#zh + æ–½åŠ å†²é‡åˆ°åˆšä½“ä¸Šçš„ä¸€ä¸ªç‚¹ï¼Œå°†ç«‹å³æ”¹å˜åˆšä½“的线性速度。 + å¦‚æžœå†²é‡æ–½åŠ åˆ°çš„ç‚¹ä¸æ˜¯åˆšä½“的质心,那么将产生一个æ‰çŸ©å¹¶å½±å“刚体的角速度。 + @param impulse the world impulse vector, usually in N-seconds or kg-m/s. + @param point the world position + @param wake alse wake up the body + */ + applyLinearImpulse(impulse: Vec2, point: Vec2, wake: boolean): void; + /** + !#en + Apply an angular impulse. + !#zh + æ–½åŠ ä¸€ä¸ªè§’é€Ÿåº¦å†²é‡ã€‚ + @param impulse the angular impulse in units of kg*m*m/s + @param wake also wake up the body + */ + applyAngularImpulse(impulse: number, wake: boolean): void; + /** + !#en + Synchronize node's world position to box2d rigidbody's position. + If enableAnimated is true and rigidbody's type is Animated type, + will set linear velocity instead of directly set rigidbody's position. + !#zh + åŒæ¥èŠ‚ç‚¹çš„ä¸–ç•Œåæ ‡åˆ° box2d åˆšä½“çš„åæ ‡ä¸Šã€‚ + 如果 enableAnimated 是 true,并且刚体的类型是 Animated ,那么将设置刚体的线性速度æ¥ä»£æ›¿ç›´æŽ¥è®¾ç½®åˆšä½“çš„ä½ç½®ã€‚ + @param enableAnimated enableAnimated + */ + syncPosition(enableAnimated: boolean): void; + /** + !#en + Synchronize node's world angle to box2d rigidbody's angle. + If enableAnimated is true and rigidbody's type is Animated type, + will set angular velocity instead of directly set rigidbody's angle. + !#zh + åŒæ¥èŠ‚ç‚¹çš„ä¸–ç•Œæ—‹è½¬è§’åº¦å€¼åˆ° box2d 刚体的旋转值上。 + 如果 enableAnimated 是 true,并且刚体的类型是 Animated ,那么将设置刚体的角速度æ¥ä»£æ›¿ç›´æŽ¥è®¾ç½®åˆšä½“的角度。 + @param enableAnimated enableAnimated + */ + syncRotation(enableAnimated: boolean): void; + } + /** undefined */ + export class Graphics extends RenderComponent { + /** !#en + Current line width. + !#zh + 当å‰çº¿æ¡å®½åº¦ */ + lineWidth: number; + /** !#en + lineJoin determines how two connecting segments (of lines, arcs or curves) with non-zero lengths in a shape are joined together. + !#zh + lineJoin 用æ¥è®¾ç½®2个长度ä¸ä¸º0的相连部分(线段,圆弧,曲线)如何连接在一起的属性。 */ + lineJoin: Graphics.LineJoin; + /** !#en + lineCap determines how the end points of every line are drawn. + !#zh + lineCap 指定如何绘制æ¯ä¸€æ¡çº¿æ®µæœ«ç«¯ã€‚ */ + lineCap: Graphics.LineCap; + /** !#en + stroke color + !#zh + 线段颜色 */ + strokeColor: Color; + /** !#en + fill color + !#zh + 填充颜色 */ + fillColor: Color; + /** !#en + Sets the miter limit ratio + !#zh + 设置斜接é¢é™åˆ¶æ¯”例 */ + miterLimit: number; + /** + !#en Move path start point to (x,y). + !#zh ç§»åŠ¨è·¯å¾„èµ·ç‚¹åˆ°åæ ‡(x, y) + @param x The x axis of the coordinate for the end point. + @param y The y axis of the coordinate for the end point. + */ + moveTo(x?: number, y?: number): void; + /** + !#en Adds a straight line to the path + !#zh 绘制直线路径 + @param x The x axis of the coordinate for the end point. + @param y The y axis of the coordinate for the end point. + */ + lineTo(x?: number, y?: number): void; + /** + !#en Adds a cubic Bézier curve to the path + !#zh 绘制三次è´èµ›å°”曲线路径 + @param c1x The x axis of the coordinate for the first control point. + @param c1y The y axis of the coordinate for first control point. + @param c2x The x axis of the coordinate for the second control point. + @param c2y The y axis of the coordinate for the second control point. + @param x The x axis of the coordinate for the end point. + @param y The y axis of the coordinate for the end point. + */ + bezierCurveTo(c1x?: number, c1y?: number, c2x?: number, c2y?: number, x?: number, y?: number): void; + /** + !#en Adds a quadratic Bézier curve to the path + !#zh 绘制二次è´èµ›å°”曲线路径 + @param cx The x axis of the coordinate for the control point. + @param cy The y axis of the coordinate for the control point. + @param x The x axis of the coordinate for the end point. + @param y The y axis of the coordinate for the end point. + */ + quadraticCurveTo(cx?: number, cy?: number, x?: number, y?: number): void; + /** + !#en Adds an arc to the path which is centered at (cx, cy) position with radius r starting at startAngle and ending at endAngle going in the given direction by counterclockwise (defaulting to false). + !#zh 绘制圆弧路径。圆弧路径的圆心在 (cx, cy) ä½ç½®ï¼ŒåŠå¾„为 r ï¼Œæ ¹æ® counterclockwise (默认为false)指定的方å‘从 startAngle 开始绘制,到 endAngle 结æŸã€‚ + @param cx The x axis of the coordinate for the center point. + @param cy The y axis of the coordinate for the center point. + @param r The arc's radius. + @param startAngle The angle at which the arc starts, measured clockwise from the positive x axis and expressed in radians. + @param endAngle The angle at which the arc ends, measured clockwise from the positive x axis and expressed in radians. + @param counterclockwise An optional Boolean which, if true, causes the arc to be drawn counter-clockwise between the two angles. By default it is drawn clockwise. + */ + arc(cx?: number, cy?: number, r?: number, startAngle?: number, endAngle?: number, counterclockwise?: boolean): void; + /** + !#en Adds an ellipse to the path. + !#zh 绘制æ¤åœ†è·¯å¾„。 + @param cx The x axis of the coordinate for the center point. + @param cy The y axis of the coordinate for the center point. + @param rx The ellipse's x-axis radius. + @param ry The ellipse's y-axis radius. + */ + ellipse(cx?: number, cy?: number, rx?: number, ry?: number): void; + /** + !#en Adds an circle to the path. + !#zh 绘制圆形路径。 + @param cx The x axis of the coordinate for the center point. + @param cy The y axis of the coordinate for the center point. + @param r The circle's radius. + */ + circle(cx?: number, cy?: number, r?: number): void; + /** + !#en Adds an rectangle to the path. + !#zh 绘制矩形路径。 + @param x The x axis of the coordinate for the rectangle starting point. + @param y The y axis of the coordinate for the rectangle starting point. + @param w The rectangle's width. + @param h The rectangle's height. + */ + rect(x?: number, y?: number, w?: number, h?: number): void; + /** + !#en Adds an round corner rectangle to the path. + !#zh 绘制圆角矩形路径。 + @param x The x axis of the coordinate for the rectangle starting point. + @param y The y axis of the coordinate for the rectangle starting point. + @param w The rectangles width. + @param h The rectangle's height. + @param r The radius of the rectangle. + */ + roundRect(x?: number, y?: number, w?: number, h?: number, r?: number): void; + /** + !#en Draws a filled rectangle. + !#zh 绘制填充矩形。 + @param x The x axis of the coordinate for the rectangle starting point. + @param y The y axis of the coordinate for the rectangle starting point. + @param w The rectangle's width. + @param h The rectangle's height. + */ + fillRect(x?: number, y?: number, w?: number, h?: number): void; + /** + !#en Erasing any previously drawn content. + !#zh 擦除之å‰ç»˜åˆ¶çš„æ‰€æœ‰å†…容的方法。 + @param clean Whether to clean the graphics inner cache. + */ + clear(clean?: boolean): void; + /** + !#en Causes the point of the pen to move back to the start of the current path. It tries to add a straight line from the current point to the start. + !#zh 将笔点返回到当å‰è·¯å¾„起始点的。它å°è¯•从当å‰ç‚¹åˆ°èµ·å§‹ç‚¹ç»˜åˆ¶ä¸€æ¡ç›´çº¿ã€‚ + */ + close(): void; + /** + !#en Strokes the current or given path with the current stroke style. + !#zh æ ¹æ®å½“å‰çš„ç”»çº¿æ ·å¼ï¼Œç»˜åˆ¶å½“剿ˆ–å·²ç»å˜åœ¨çš„路径。 + */ + stroke(): void; + /** + !#en Fills the current or given path with the current fill style. + !#zh æ ¹æ®å½“å‰çš„ç”»çº¿æ ·å¼ï¼Œå¡«å……当剿ˆ–å·²ç»å˜åœ¨çš„路径。 + */ + fill(): void; + } + /** !#en the device accelerometer reports values for each axis in units of g-force. + !#zh 设备é‡åŠ›ä¼ æ„Ÿå™¨ä¼ é€’çš„å„个轴的数æ®ã€‚ */ + export class constructor { + /** + whether enable accelerometer event + @param isEnable isEnable + */ + setAccelerometerEnabled(isEnable: boolean): void; + /** + set accelerometer interval value + @param interval interval + */ + setAccelerometerInterval(interval: number): void; + } + /** undefined */ + export enum VerticalTextAlignment { + TOP = 0, + CENTER = 0, + BOTTOM = 0, + } + /** The base class of most of all the objects in Fireball. */ + export class Object { + /** !#en The name of the object. + !#zh 该对象的å称。 */ + name: string; + /** !#en + Indicates whether the object is not yet destroyed. (It will not be available after being destroyed)<br> + When an object's `destroy` is called, it is actually destroyed after the end of this frame. + So `isValid` will return false from the next frame, while `isValid` in the current frame will still be true. + If you want to determine whether the current frame has called `destroy`, use `cc.isValid(obj, true)`, + but this is often caused by a particular logical requirements, which is not normally required. + + !#zh + 表示该对象是å¦å¯ç”¨ï¼ˆè¢« destroy åŽå°†ä¸å¯ç”¨ï¼‰ã€‚<br> + 当一个对象的 `destroy` 调用以åŽï¼Œä¼šåœ¨è¿™ä¸€å¸§ç»“æŸåŽæ‰çœŸæ£é”€æ¯ã€‚å› æ¤ä»Žä¸‹ä¸€å¸§å¼€å§‹ `isValid` 就会返回 false,而当å‰å¸§å†… `isValid` ä»ç„¶ä¼šæ˜¯ true。如果希望判æ–当å‰å¸§æ˜¯å¦è°ƒç”¨è¿‡ `destroy`,请使用 `cc.isValid(obj, true)`,ä¸è¿‡è¿™å¾€å¾€æ˜¯ç‰¹æ®Šçš„业务需求引起的,通常情况下ä¸éœ€è¦è¿™æ ·ã€‚ */ + isValid: boolean; + /** + !#en + Destroy this Object, and release all its own references to other objects.<br/> + Actual object destruction will delayed until before rendering. + From the next frame, this object is not usable anymore. + You can use `cc.isValid(obj)` to check whether the object is destroyed before accessing it. + !#zh + 销æ¯è¯¥å¯¹è±¡ï¼Œå¹¶é‡Šæ”¾æ‰€æœ‰å®ƒå¯¹å…¶å®ƒå¯¹è±¡çš„引用。<br/> + å®žé™…é”€æ¯æ“作会延迟到当å‰å¸§æ¸²æŸ“剿‰§è¡Œã€‚从下一帧开始,该对象将ä¸å†å¯ç”¨ã€‚ + 您å¯ä»¥åœ¨è®¿é—®å¯¹è±¡ä¹‹å‰ä½¿ç”¨ `cc.isValid(obj)` æ¥æ£€æŸ¥å¯¹è±¡æ˜¯å¦å·²è¢«é”€æ¯ã€‚ + + @example + ```js + obj.destroy(); + ``` + */ + destroy(): boolean; + } + /** Bit mask that controls object states. */ + export enum Flags { + DontSave = 0, + EditorOnly = 0, + HideInHierarchy = 0, + } + /** The fullscreen API provides an easy way for web content to be presented using the user's entire screen. + It's invalid on safari, QQbrowser and android browser */ + export class screen { + /** + initialize + */ + init(): void; + /** + return true if it's full now. + */ + fullScreen(): boolean; + /** + change the screen to full mode. + @param element element + @param onFullScreenChange onFullScreenChange + @param onFullScreenError onFullScreenError + */ + requestFullScreen(element: Element, onFullScreenChange: Function, onFullScreenError: Function): void; + /** + exit the full mode. + */ + exitFullScreen(): boolean; + /** + Automatically request full screen with a touch/click event + @param element element + @param onFullScreenChange onFullScreenChange + */ + autoFullScreen(element: Element, onFullScreenChange: Function): void; + } + /** System variables */ + export class sys { + /** English language code */ + static LANGUAGE_ENGLISH: string; + /** Chinese language code */ + static LANGUAGE_CHINESE: string; + /** French language code */ + static LANGUAGE_FRENCH: string; + /** Italian language code */ + static LANGUAGE_ITALIAN: string; + /** German language code */ + static LANGUAGE_GERMAN: string; + /** Spanish language code */ + static LANGUAGE_SPANISH: string; + /** Spanish language code */ + static LANGUAGE_DUTCH: string; + /** Russian language code */ + static LANGUAGE_RUSSIAN: string; + /** Korean language code */ + static LANGUAGE_KOREAN: string; + /** Japanese language code */ + static LANGUAGE_JAPANESE: string; + /** Hungarian language code */ + static LANGUAGE_HUNGARIAN: string; + /** Portuguese language code */ + static LANGUAGE_PORTUGUESE: string; + /** Arabic language code */ + static LANGUAGE_ARABIC: string; + /** Norwegian language code */ + static LANGUAGE_NORWEGIAN: string; + /** Polish language code */ + static LANGUAGE_POLISH: string; + /** Turkish language code */ + static LANGUAGE_TURKISH: string; + /** Ukrainian language code */ + static LANGUAGE_UKRAINIAN: string; + /** Romanian language code */ + static LANGUAGE_ROMANIAN: string; + /** Bulgarian language code */ + static LANGUAGE_BULGARIAN: string; + /** Unknown language code */ + static LANGUAGE_UNKNOWN: string; + static OS_IOS: string; + static OS_ANDROID: string; + static OS_WINDOWS: string; + static OS_MARMALADE: string; + static OS_LINUX: string; + static OS_BADA: string; + static OS_BLACKBERRY: string; + static OS_OSX: string; + static OS_WP8: string; + static OS_WINRT: string; + static OS_UNKNOWN: string; + static UNKNOWN: number; + static WIN32: number; + static LINUX: number; + static MACOS: number; + static ANDROID: number; + static IPHONE: number; + static IPAD: number; + static BLACKBERRY: number; + static NACL: number; + static EMSCRIPTEN: number; + static TIZEN: number; + static WINRT: number; + static WP8: number; + static MOBILE_BROWSER: number; + static DESKTOP_BROWSER: number; + /** Indicates whether executes in editor's window process (Electron's renderer context) */ + static EDITOR_PAGE: number; + /** Indicates whether executes in editor's main process (Electron's browser context) */ + static EDITOR_CORE: number; + static WECHAT_GAME: number; + static QQ_PLAY: number; + static FB_PLAYABLE_ADS: number; + static BAIDU_GAME: number; + static VIVO_GAME: number; + static OPPO_GAME: number; + static HUAWEI_GAME: number; + static XIAOMI_GAME: number; + static JKW_GAME: number; + static ALIPAY_GAME: number; + static WECHAT_GAME_SUB: number; + static BAIDU_GAME_SUB: number; + static QTT_GAME: number; + /** BROWSER_TYPE_WECHAT */ + static BROWSER_TYPE_WECHAT: string; + /** BROWSER_TYPE_WECHAT_GAME */ + static BROWSER_TYPE_WECHAT_GAME: string; + /** BROWSER_TYPE_WECHAT_GAME_SUB */ + static BROWSER_TYPE_WECHAT_GAME_SUB: string; + /** BROWSER_TYPE_BAIDU_GAME */ + static BROWSER_TYPE_BAIDU_GAME: string; + /** BROWSER_TYPE_BAIDU_GAME_SUB */ + static BROWSER_TYPE_BAIDU_GAME_SUB: string; + /** BROWSER_TYPE_XIAOMI_GAME */ + static BROWSER_TYPE_XIAOMI_GAME: string; + /** BROWSER_TYPE_ALIPAY_GAME */ + static BROWSER_TYPE_ALIPAY_GAME: string; + /** BROWSER_TYPE_QQ_PLAY */ + static BROWSER_TYPE_QQ_PLAY: string; + static BROWSER_TYPE_ANDROID: string; + static BROWSER_TYPE_IE: string; + static BROWSER_TYPE_EDGE: string; + static BROWSER_TYPE_QQ: string; + static BROWSER_TYPE_MOBILE_QQ: string; + static BROWSER_TYPE_UC: string; + /** uc third party integration. */ + static BROWSER_TYPE_UCBS: string; + static BROWSER_TYPE_360: string; + static BROWSER_TYPE_BAIDU_APP: string; + static BROWSER_TYPE_BAIDU: string; + static BROWSER_TYPE_MAXTHON: string; + static BROWSER_TYPE_OPERA: string; + static BROWSER_TYPE_OUPENG: string; + static BROWSER_TYPE_MIUI: string; + static BROWSER_TYPE_FIREFOX: string; + static BROWSER_TYPE_SAFARI: string; + static BROWSER_TYPE_CHROME: string; + static BROWSER_TYPE_LIEBAO: string; + static BROWSER_TYPE_QZONE: string; + static BROWSER_TYPE_SOUGOU: string; + static BROWSER_TYPE_UNKNOWN: string; + /** Is native ? This is set to be true in jsb auto. */ + static isNative: boolean; + /** Is web browser ? */ + static isBrowser: boolean; + /** + Is webgl extension support? + @param name name + */ + static glExtension(name: any): void; + /** + Get max joint matrix size for skinned mesh renderer. + */ + static getMaxJointMatrixSize(): void; + /** + !#en + Returns the safe area of the screen. If the screen is not notched, the design resolution will be returned by default. + Only supported on Android, iOS and WeChat Mini Game platform. + !#zh + 返回手机å±å¹•å®‰å…¨åŒºåŸŸï¼Œå¦‚æžœä¸æ˜¯å¼‚å½¢å±å°†é»˜è®¤è¿”回设计分辨率尺寸。目å‰åªæ”¯æŒå®‰å“ã€iOS 原生平å°å’Œå¾®ä¿¡å°æ¸¸æˆå¹³å°ã€‚ + */ + static getSafeAreaRect(): Rect; + /** Indicate whether system is mobile system */ + static isMobile: boolean; + /** Indicate the running platform */ + static platform: number; + /** Get current language iso 639-1 code. + Examples of valid language codes include "zh-tw", "en", "en-us", "fr", "fr-fr", "es-es", etc. + The actual value totally depends on results provided by destination platform. */ + static languageCode: string; + /** Indicate the current language of the running system */ + static language: string; + /** Indicate the running os name */ + static os: string; + /** Indicate the running os version */ + static osVersion: string; + /** Indicate the running os main version */ + static osMainVersion: number; + /** Indicate the running browser type */ + static browserType: string; + /** Indicate the running browser version */ + static browserVersion: string; + /** Indicate the real pixel resolution of the whole game window */ + static windowPixelResolution: Size; + /** cc.sys.localStorage is a local storage component. */ + static localStorage: any; + /** The capabilities of the current platform */ + static capabilities: any; + /** + !#en + Get the network type of current device, return cc.sys.NetworkType.LAN if failure. + !#zh + 获å–当å‰è®¾å¤‡çš„网络类型, å¦‚æžœç½‘ç»œç±»åž‹æ— æ³•èŽ·å–,默认将返回 cc.sys.NetworkType.LAN + */ + static getNetworkType(): sys.NetworkType; + /** + !#en + Get the battery level of current device, return 1.0 if failure. + !#zh + 获å–当å‰è®¾å¤‡çš„ç”µæ± ç”µé‡ï¼Œå¦‚æžœç”µé‡æ— 法获å–,默认将返回 1 + */ + static getBatteryLevel(): number; + /** + Forces the garbage collection, only available in JSB + */ + static garbageCollect(): void; + /** + Restart the JS VM, only available in JSB + */ + static restartVM(): void; + /** + Check whether an object is valid, + In web engine, it will return true if the object exist + In native engine, it will return true if the JS object and the correspond native object are both valid + @param obj obj + */ + static isObjectValid(obj: any): boolean; + /** + Dump system informations + */ + static dump(): void; + /** + Open a url in browser + @param url url + */ + static openURL(url: string): void; + /** + Get the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. + */ + static now(): number; + } + /** cc.view is the singleton object which represents the game window.<br/> + It's main task include: <br/> + - Apply the design resolution policy<br/> + - Provide interaction with the window, like resize event on web, retina display support, etc...<br/> + - Manage the game view port which can be different with the window<br/> + - Manage the content scale and translation<br/> + <br/> + Since the cc.view is a singleton, you don't need to call any constructor or create functions,<br/> + the standard way to use it is by calling:<br/> + - cc.view.methodName(); <br/> */ + export class View extends EventTarget { + /** + !#en + Sets view's target-densitydpi for android mobile browser. it can be set to: <br/> + 1. cc.macro.DENSITYDPI_DEVICE, value is "device-dpi" <br/> + 2. cc.macro.DENSITYDPI_HIGH, value is "high-dpi" (default value) <br/> + 3. cc.macro.DENSITYDPI_MEDIUM, value is "medium-dpi" (browser's default value) <br/> + 4. cc.macro.DENSITYDPI_LOW, value is "low-dpi" <br/> + 5. Custom value, e.g: "480" <br/> + !#zh è®¾ç½®ç›®æ ‡å†…å®¹çš„æ¯è‹±å¯¸åƒç´ 点密度。 + @param densityDPI densityDPI + */ + setTargetDensityDPI(densityDPI: string): void; + /** + !#en + Returns the current target-densitydpi value of cc.view. + !#zh 获å–ç›®æ ‡å†…å®¹çš„æ¯è‹±å¯¸åƒç´ 点密度。 + */ + getTargetDensityDPI(): string; + /** + !#en + Sets whether resize canvas automatically when browser's size changed.<br/> + Useful only on web. + !#zh 设置当å‘现æµè§ˆå™¨çš„å°ºå¯¸æ”¹å˜æ—¶ï¼Œæ˜¯å¦è‡ªåŠ¨è°ƒæ•´ canvas 尺寸大å°ã€‚ + 仅在 Web 模å¼ä¸‹æœ‰æ•ˆã€‚ + @param enabled Whether enable automatic resize with browser's resize event + */ + resizeWithBrowserSize(enabled: boolean): void; + /** + !#en + Sets the callback function for cc.view's resize action,<br/> + this callback will be invoked before applying resolution policy, <br/> + so you can do any additional modifications within the callback.<br/> + Useful only on web. + !#zh 设置 cc.view 调整视窗尺寸行为的回调函数, + è¿™ä¸ªå›žè°ƒå‡½æ•°ä¼šåœ¨åº”ç”¨é€‚é…æ¨¡å¼ä¹‹å‰è¢«è°ƒç”¨ï¼Œ + å› æ¤ä½ å¯ä»¥åœ¨è¿™ä¸ªå›žè°ƒå‡½æ•°å†…æ·»åŠ ä»»æ„é™„åŠ æ”¹å˜ï¼Œ + 仅在 Web å¹³å°ä¸‹æœ‰æ•ˆã€‚ + @param callback The callback function + */ + setResizeCallback(callback: Function|void): void; + /** + !#en + Sets the orientation of the game, it can be landscape, portrait or auto. + When set it to landscape or portrait, and screen w/h ratio doesn't fit, + cc.view will automatically rotate the game canvas using CSS. + Note that this function doesn't have any effect in native, + in native, you need to set the application orientation in native project settings + !#zh 设置游æˆå±å¹•æœå‘,它能够是横版,竖版或自动。 + 当设置为横版或竖版,并且å±å¹•的宽高比例ä¸åŒ¹é…时, + cc.view 会自动用 CSS 旋转游æˆåœºæ™¯çš„ canvas, + 这个方法ä¸ä¼šå¯¹ native 部分产生任何影å“,对于 native è€Œè¨€ï¼Œä½ éœ€è¦åœ¨åº”用设置ä¸çš„设置排版。 + @param orientation Possible values: cc.macro.ORIENTATION_LANDSCAPE | cc.macro.ORIENTATION_PORTRAIT | cc.macro.ORIENTATION_AUTO + */ + setOrientation(orientation: number): void; + /** + !#en + Sets whether the engine modify the "viewport" meta in your web page.<br/> + It's enabled by default, we strongly suggest you not to disable it.<br/> + And even when it's enabled, you can still set your own "viewport" meta, it won't be overridden<br/> + Only useful on web + !#zh 设置引擎是å¦è°ƒæ•´ viewport meta æ¥é…åˆå±å¹•适é…。 + 默认设置为å¯åŠ¨ï¼Œæˆ‘ä»¬å¼ºçƒˆå»ºè®®ä½ ä¸è¦å°†å®ƒè®¾ç½®ä¸ºå…³é—。 + å³ä½¿å½“它å¯åŠ¨æ—¶ï¼Œä½ ä»ç„¶èƒ½å¤Ÿè®¾ç½®ä½ çš„ viewport meta,它ä¸ä¼šè¢«è¦†ç›–。 + 仅在 Web 模å¼ä¸‹æœ‰æ•ˆ + @param enabled Enable automatic modification to "viewport" meta + */ + adjustViewportMeta(enabled: boolean): void; + /** + !#en + Retina support is enabled by default for Apple device but disabled for other devices,<br/> + it takes effect only when you called setDesignResolutionPolicy<br/> + Only useful on web + !#zh 对于 Apple è¿™ç§æ”¯æŒ Retina 显示的设备上默认进行优化而其他类型设备默认ä¸è¿›è¡Œä¼˜åŒ–, + å®ƒä»…ä¼šåœ¨ä½ è°ƒç”¨ setDesignResolutionPolicy 方法时有影å“。 + 仅在 Web 模å¼ä¸‹æœ‰æ•ˆã€‚ + @param enabled Enable or disable retina display + */ + enableRetina(enabled: boolean): void; + /** + !#en + Check whether retina display is enabled.<br/> + Only useful on web + !#zh 检查是å¦å¯¹ Retina 显示设备进行优化。 + 仅在 Web 模å¼ä¸‹æœ‰æ•ˆã€‚ + */ + isRetinaEnabled(): boolean; + /** + !#en Whether to Enable on anti-alias + !#zh 控制抗锯齿是å¦å¼€å¯ + @param enabled Enable or not anti-alias + */ + enableAntiAlias(enabled: boolean): void; + /** + !#en Returns whether the current enable on anti-alias + !#zh è¿”å›žå½“å‰æ˜¯å¦æŠ—锯齿 + */ + isAntiAliasEnabled(): boolean; + /** + !#en + If enabled, the application will try automatically to enter full screen mode on mobile devices<br/> + You can pass true as parameter to enable it and disable it by passing false.<br/> + Only useful on web + !#zh å¯åŠ¨æ—¶ï¼Œç§»åŠ¨ç«¯æ¸¸æˆä¼šåœ¨ç§»åŠ¨ç«¯è‡ªåŠ¨å°è¯•è¿›å…¥å…¨å±æ¨¡å¼ã€‚ + ä½ èƒ½å¤Ÿä¼ å…¥ true ä¸ºå‚æ•°åŽ»å¯åŠ¨å®ƒï¼Œç”¨ false 傿•°æ¥å…³é—它。 + @param enabled Enable or disable auto full screen on mobile devices + */ + enableAutoFullScreen(enabled: boolean): void; + /** + !#en + Check whether auto full screen is enabled.<br/> + Only useful on web + !#zh æ£€æŸ¥è‡ªåŠ¨è¿›å…¥å…¨å±æ¨¡å¼æ˜¯å¦å¯åŠ¨ã€‚ + 仅在 Web 模å¼ä¸‹æœ‰æ•ˆã€‚ + */ + isAutoFullScreenEnabled(): boolean; + /** + !#en + Returns the canvas size of the view.<br/> + On native platforms, it returns the screen size since the view is a fullscreen view.<br/> + On web, it returns the size of the canvas element. + !#zh è¿”å›žè§†å›¾ä¸ canvas 的尺寸。 + 在 native å¹³å°ä¸‹ï¼Œå®ƒè¿”回全å±è§†å›¾ä¸‹å±å¹•的尺寸。 + 在 Web å¹³å°ä¸‹ï¼Œå®ƒè¿”回 canvas å…ƒç´ å°ºå¯¸ã€‚ + */ + getCanvasSize(): Size; + /** + !#en + Returns the frame size of the view.<br/> + On native platforms, it returns the screen size since the view is a fullscreen view.<br/> + On web, it returns the size of the canvas's outer DOM element. + !#zh 返回视图ä¸è¾¹æ¡†å°ºå¯¸ã€‚ + 在 native å¹³å°ä¸‹ï¼Œå®ƒè¿”回全å±è§†å›¾ä¸‹å±å¹•的尺寸。 + 在 web å¹³å°ä¸‹ï¼Œå®ƒè¿”回 canvas å…ƒç´ çš„å¤–å±‚ DOM å…ƒç´ å°ºå¯¸ã€‚ + */ + getFrameSize(): Size; + /** + !#en + On native, it sets the frame size of view.<br/> + On web, it sets the size of the canvas's outer DOM element. + !#zh 在 native å¹³å°ä¸‹ï¼Œè®¾ç½®è§†å›¾æ¡†æž¶å°ºå¯¸ã€‚ + 在 web å¹³å°ä¸‹ï¼Œè®¾ç½® canvas 外层 DOM å…ƒç´ å°ºå¯¸ã€‚ + @param width width + @param height height + */ + setFrameSize(width: number, height: number): void; + /** + !#en + Returns the visible area size of the view port. + !#zh 返回视图窗å£å¯è§åŒºåŸŸå°ºå¯¸ã€‚ + */ + getVisibleSize(): Size; + /** + !#en + Returns the visible area size of the view port. + !#zh 返回视图窗å£å¯è§åŒºåŸŸåƒç´ 尺寸。 + */ + getVisibleSizeInPixel(): Size; + /** + !#en + Returns the visible origin of the view port. + !#zh 返回视图窗å£å¯è§åŒºåŸŸåŽŸç‚¹ã€‚ + */ + getVisibleOrigin(): Vec2; + /** + !#en + Returns the visible origin of the view port. + !#zh 返回视图窗å£å¯è§åŒºåŸŸåƒç´ 原点。 + */ + getVisibleOriginInPixel(): Vec2; + /** + !#en + Returns the current resolution policy + !#zh 返回当å‰åˆ†è¾¨çŽ‡æ–¹æ¡ˆ + */ + getResolutionPolicy(): ResolutionPolicy; + /** + !#en + Sets the current resolution policy + !#zh 设置当å‰åˆ†è¾¨çŽ‡æ¨¡å¼ + @param resolutionPolicy resolutionPolicy + */ + setResolutionPolicy(resolutionPolicy: ResolutionPolicy|number): void; + /** + !#en + Sets the resolution policy with designed view size in points.<br/> + The resolution policy include: <br/> + [1] ResolutionExactFit Fill screen by stretch-to-fit: if the design resolution ratio of width to height is different from the screen resolution ratio, your game view will be stretched.<br/> + [2] ResolutionNoBorder Full screen without black border: if the design resolution ratio of width to height is different from the screen resolution ratio, two areas of your game view will be cut.<br/> + [3] ResolutionShowAll Full screen with black border: if the design resolution ratio of width to height is different from the screen resolution ratio, two black borders will be shown.<br/> + [4] ResolutionFixedHeight Scale the content's height to screen's height and proportionally scale its width<br/> + [5] ResolutionFixedWidth Scale the content's width to screen's width and proportionally scale its height<br/> + [cc.ResolutionPolicy] [Web only feature] Custom resolution policy, constructed by cc.ResolutionPolicy<br/> + !#zh é€šè¿‡è®¾ç½®è®¾è®¡åˆ†è¾¨çŽ‡å’ŒåŒ¹é…æ¨¡å¼æ¥è¿›è¡Œæ¸¸æˆç”»é¢çš„å±å¹•适é…。 + @param width Design resolution width. + @param height Design resolution height. + @param resolutionPolicy The resolution policy desired + */ + setDesignResolutionSize(width: number, height: number, resolutionPolicy: ResolutionPolicy|number): void; + /** + !#en + Returns the designed size for the view. + Default resolution size is the same as 'getFrameSize'. + !#zh 返回视图的设计分辨率。 + é»˜è®¤ä¸‹åˆ†è¾¨çŽ‡å°ºå¯¸åŒ `getFrameSize` æ–¹æ³•ç›¸åŒ + */ + getDesignResolutionSize(): Size; + /** + !#en + Sets the container to desired pixel resolution and fit the game content to it. + This function is very useful for adaptation in mobile browsers. + In some HD android devices, the resolution is very high, but its browser performance may not be very good. + In this case, enabling retina display is very costy and not suggested, and if retina is disabled, the image may be blurry. + But this API can be helpful to set a desired pixel resolution which is in between. + This API will do the following: + 1. Set viewport's width to the desired width in pixel + 2. Set body width to the exact pixel resolution + 3. The resolution policy will be reset with designed view size in points. + !#zh 设置容器(container)需è¦çš„åƒç´ 分辨率并且适é…相应分辨率的游æˆå†…容。 + @param width Design resolution width. + @param height Design resolution height. + @param resolutionPolicy The resolution policy desired + */ + setRealPixelResolution(width: number, height: number, resolutionPolicy: ResolutionPolicy|number): void; + /** + !#en + Sets view port rectangle with points. + !#zh 用设计分辨率下的点尺寸æ¥è®¾ç½®è§†çª—。 + @param x x + @param y y + @param w width + @param h height + */ + setViewportInPoints(x: number, y: number, w: number, h: number): void; + /** + !#en + Sets Scissor rectangle with points. + !#zh 用设计分辨率下的点的尺寸æ¥è®¾ç½® scissor 剪è£åŒºåŸŸã€‚ + @param x x + @param y y + @param w w + @param h h + */ + setScissorInPoints(x: number, y: number, w: number, h: number): void; + /** + !#en + Returns whether GL_SCISSOR_TEST is enable + !#zh 检查 scissor 是å¦ç”Ÿæ•ˆã€‚ + */ + isScissorEnabled(): boolean; + /** + !#en + Returns the current scissor rectangle + !#zh 返回当å‰çš„ scissor 剪è£åŒºåŸŸã€‚ + */ + getScissorRect(): Rect; + /** + !#en + Returns the view port rectangle. + !#zh 返回视窗剪è£åŒºåŸŸã€‚ + */ + getViewportRect(): Rect; + /** + !#en + Returns scale factor of the horizontal direction (X axis). + !#zh 返回横轴的缩放比,这个缩放比是将画布åƒç´ 分辨率放到设计分辨率的比例。 + */ + getScaleX(): number; + /** + !#en + Returns scale factor of the vertical direction (Y axis). + !#zh 返回纵轴的缩放比,这个缩放比是将画布åƒç´ 分辨率缩放到设计分辨率的比例。 + */ + getScaleY(): number; + /** + !#en + Returns device pixel ratio for retina display. + !#zh 返回设备或æµè§ˆå™¨åƒç´ 比例。 + */ + getDevicePixelRatio(): number; + /** + !#en + Returns the real location in view for a translation based on a related position + !#zh å°†å±å¹•åæ ‡è½¬æ¢ä¸ºæ¸¸æˆè§†å›¾ä¸‹çš„åæ ‡ã€‚ + @param tx The X axis translation + @param ty The Y axis translation + @param relatedPos The related position object including "left", "top", "width", "height" informations + */ + convertToLocationInView(tx: number, ty: number, relatedPos: any): Vec2; + } + /** <p>cc.game.containerStrategy class is the root strategy class of container's scale strategy, + it controls the behavior of how to scale the cc.game.container and cc.game.canvas object</p> */ + export class ContainerStrategy { + /** + !#en + Manipulation before appling the strategy + !#zh 在应用ç–略之å‰çš„æ“ä½œ + @param view The target view + */ + preApply(view: View): void; + /** + !#en + Function to apply this strategy + !#zh ç–略应用方法 + @param view view + @param designedResolution designedResolution + */ + apply(view: View, designedResolution: Size): void; + /** + !#en + Manipulation after applying the strategy + !#zh ç–略调用之åŽçš„æ“ä½œ + @param view The target view + */ + postApply(view: View): void; + } + /** <p>cc.ContentStrategy class is the root strategy class of content's scale strategy, + it controls the behavior of how to scale the scene and setup the viewport for the game</p> */ + export class ContentStrategy { + /** + !#en + Manipulation before applying the strategy + !#zh ç–略应用å‰çš„æ“ä½œ + @param view The target view + */ + preApply(view: View): void; + /** + !#en Function to apply this strategy + The return value is {scale: [scaleX, scaleY], viewport: {cc.Rect}}, + The target view can then apply these value to itself, it's preferred not to modify directly its private variables + !#zh 调用ç–略方法 + @param view view + @param designedResolution designedResolution + */ + apply(view: View, designedResolution: Size): any; + /** + !#en + Manipulation after applying the strategy + !#zh ç–略调用之åŽçš„æ“ä½œ + @param view The target view + */ + postApply(view: View): void; + } + /** undefined */ + export class EqualToFrame extends ContainerStrategy { + } + /** undefined */ + export class ProportionalToFrame extends ContainerStrategy { + } + /** undefined */ + export class EqualToWindow extends EqualToFrame { + } + /** undefined */ + export class ProportionalToWindow extends ProportionalToFrame { + } + /** undefined */ + export class OriginalContainer extends ContainerStrategy { + } + /** <p>cc.ResolutionPolicy class is the root strategy class of scale strategy, + its main task is to maintain the compatibility with Cocos2d-x</p> */ + export class ResolutionPolicy { + /** + + @param containerStg The container strategy + @param contentStg The content strategy + */ + constructor(containerStg: ContainerStrategy, contentStg: ContentStrategy); + /** + !#en Manipulation before applying the resolution policy + !#zh ç–略应用å‰çš„æ“ä½œ + @param view The target view + */ + preApply(view: View): void; + /** + !#en Function to apply this resolution policy + The return value is {scale: [scaleX, scaleY], viewport: {cc.Rect}}, + The target view can then apply these value to itself, it's preferred not to modify directly its private variables + !#zh 调用ç–略方法 + @param view The target view + @param designedResolution The user defined design resolution + */ + apply(view: View, designedResolution: Size): any; + /** + !#en Manipulation after appyling the strategy + !#zh ç–略应用之åŽçš„æ“ä½œ + @param view The target view + */ + postApply(view: View): void; + /** + !#en + Setup the container's scale strategy + !#zh 设置容器的适é…ç–ç•¥ + @param containerStg containerStg + */ + setContainerStrategy(containerStg: ContainerStrategy): void; + /** + !#en + Setup the content's scale strategy + !#zh 设置内容的适é…ç–ç•¥ + @param contentStg contentStg + */ + setContentStrategy(contentStg: ContentStrategy): void; + /** The entire application is visible in the specified area without trying to preserve the original aspect ratio.<br/> + Distortion can occur, and the application may appear stretched or compressed. */ + static EXACT_FIT: number; + /** The entire application fills the specified area, without distortion but possibly with some cropping,<br/> + while maintaining the original aspect ratio of the application. */ + static NO_BORDER: number; + /** The entire application is visible in the specified area without distortion while maintaining the original<br/> + aspect ratio of the application. Borders can appear on two sides of the application. */ + static SHOW_ALL: number; + /** The application takes the height of the design resolution size and modifies the width of the internal<br/> + canvas so that it fits the aspect ratio of the device<br/> + no distortion will occur however you must make sure your application works on different<br/> + aspect ratios */ + static FIXED_HEIGHT: number; + /** The application takes the width of the design resolution size and modifies the height of the internal<br/> + canvas so that it fits the aspect ratio of the device<br/> + no distortion will occur however you must make sure your application works on different<br/> + aspect ratios */ + static FIXED_WIDTH: number; + /** Unknow policy */ + static UNKNOWN: number; + } + /** cc.visibleRect is a singleton object which defines the actual visible rect of the current view, + it should represent the same rect as cc.view.getViewportRect() */ + export class visibleRect { + /** + initialize + @param visibleRect visibleRect + */ + static init(visibleRect: Rect): void; + /** Top left coordinate of the screen related to the game scene. */ + static topLeft: Vec2; + /** Top right coordinate of the screen related to the game scene. */ + static topRight: Vec2; + /** Top center coordinate of the screen related to the game scene. */ + static top: Vec2; + /** Bottom left coordinate of the screen related to the game scene. */ + static bottomLeft: Vec2; + /** Bottom right coordinate of the screen related to the game scene. */ + static bottomRight: Vec2; + /** Bottom center coordinate of the screen related to the game scene. */ + static bottom: Vec2; + /** Center coordinate of the screen related to the game scene. */ + static center: Vec2; + /** Left center coordinate of the screen related to the game scene. */ + static left: Vec2; + /** Right center coordinate of the screen related to the game scene. */ + static right: Vec2; + /** Width of the screen. */ + static width: number; + /** Height of the screen. */ + static height: number; + } + /** !#en The callbacks invoker to handle and invoke callbacks by key. + !#zh CallbacksInvoker ç”¨æ¥æ ¹æ® Key 管ç†å¹¶è°ƒç”¨å›žè°ƒæ–¹æ³•。 */ + export class CallbacksInvoker { + /** + !#zh + 检查指定事件是å¦å·²æ³¨å†Œå›žè°ƒã€‚ + !#en + Check if the specified key has any registered callback. If a callback is also specified, + it will only return true if the callback is registered. + @param key key + @param callback callback + @param target target + */ + hasEventListener(key: string, callback?: Function, target?: any): boolean; + /** + !#zh + ç§»é™¤åœ¨ç‰¹å®šäº‹ä»¶ç±»åž‹ä¸æ³¨å†Œçš„æ‰€æœ‰å›žè°ƒæˆ–在æŸä¸ªç›®æ ‡ä¸æ³¨å†Œçš„æ‰€æœ‰å›žè°ƒã€‚ + + !#en + Removes all callbacks registered in a certain event type or all callbacks registered with a certain target + @param keyOrTarget The event key to be removed or the target to be removed + */ + removeAll(keyOrTarget: string|any): void; + /** + !#zh + åˆ é™¤ä¹‹å‰ä¸ŽåŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æ³¨å†Œçš„回调。 + @param key key + @param callback callback + @param target target + */ + off(key: string, callback: Function, target?: any): void; + /** + !#en + Trigger an event directly with the event name and necessary arguments. + !#zh + 通过事件åå‘é€è‡ªå®šä¹‰äº‹ä»¶ + @param key event type + @param arg1 First argument + @param arg2 Second argument + @param arg3 Third argument + @param arg4 Fourth argument + @param arg5 Fifth argument + + @example + ```js + eventTarget.emit('fire', event); + eventTarget.emit('fire', message, emitter); + ``` + */ + emit(key: string, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any): void; + } + /** !#en Contains information collected during deserialization + !#zh 包å«ååºåˆ—åŒ–æ—¶çš„ä¸€äº›ä¿¡æ¯ */ + export class Details { + /** list of the depends assets' uuid */ + uuidList: string[]; + /** the obj list whose field needs to load asset by uuid */ + uuidObjList: any[]; + /** the corresponding field name which referenced to the asset */ + uuidPropList: string[]; + reset(): void; + /** + + @param obj obj + @param propName propName + @param uuid uuid + */ + push(obj: any, propName: string, uuid: string): void; + } + /** !#en The module provides utilities for working with file and directory paths + !#zh ç”¨äºŽå¤„ç†æ–‡ä»¶ä¸Žç›®å½•çš„è·¯å¾„çš„æ¨¡å— */ + export class path { + /** + !#en Join strings to be a path. + !#zh 拼接å—符串为 Path + + @example + ```js + ------------------------------ + cc.path.join("a", "b.png"); //-->"a/b.png" + cc.path.join("a", "b", "c.png"); //-->"a/b/c.png" + cc.path.join("a", "b"); //-->"a/b" + cc.path.join("a", "b", "/"); //-->"a/b/" + cc.path.join("a", "b/", "/"); //-->"a/b/" + + ``` + */ + static join(): string; + /** + !#en Get the ext name of a path including '.', like '.png'. + !#zh 返回 Path 的扩展å,包括 '.',例如 '.png'。 + @param pathStr pathStr + + @example + ```js + --------------------------- + cc.path.extname("a/b.png"); //-->".png" + cc.path.extname("a/b.png?a=1&b=2"); //-->".png" + cc.path.extname("a/b"); //-->null + cc.path.extname("a/b?a=1&b=2"); //-->null + + ``` + */ + static extname(pathStr: string): any; + /** + !#en Get the main name of a file name + !#zh èŽ·å–æ–‡ä»¶å的主åç§° + @param fileName fileName + */ + static mainFileName(fileName: string): string; + /** + !#en Get the file name of a file path. + !#zh èŽ·å–æ–‡ä»¶è·¯å¾„的文件å。 + @param pathStr pathStr + @param extname extname + + @example + ```js + --------------------------------- + cc.path.basename("a/b.png"); //-->"b.png" + cc.path.basename("a/b.png?a=1&b=2"); //-->"b.png" + cc.path.basename("a/b.png", ".png"); //-->"b" + cc.path.basename("a/b.png?a=1&b=2", ".png"); //-->"b" + cc.path.basename("a/b.png", ".txt"); //-->"b.png" + + ``` + */ + static basename(pathStr: string, extname?: string): any; + /** + !#en Get dirname of a file path. + !#zh èŽ·å–æ–‡ä»¶è·¯å¾„的目录å。 + @param pathStr pathStr + + @example + ```js + --------------------------------- + * unix + cc.path.driname("a/b/c.png"); //-->"a/b" + cc.path.driname("a/b/c.png?a=1&b=2"); //-->"a/b" + cc.path.dirname("a/b/"); //-->"a/b" + cc.path.dirname("c.png"); //-->"" + * windows + cc.path.driname("a\\b\\c.png"); //-->"a\b" + cc.path.driname("a\\b\\c.png?a=1&b=2"); //-->"a\b" + + ``` + */ + static dirname(pathStr: string): any; + /** + !#en Change extname of a file path. + !#zh 更改文件路径的扩展å。 + @param pathStr pathStr + @param extname extname + + @example + ```js + --------------------------------- + cc.path.changeExtname("a/b.png", ".plist"); //-->"a/b.plist" + cc.path.changeExtname("a/b.png?a=1&b=2", ".plist"); //-->"a/b.plist?a=1&b=2" + + ``` + */ + static changeExtname(pathStr: string, extname?: string): string; + } + /** !#en + AffineTransform class represent an affine transform matrix. It's composed basically by translation, rotation, scale transformations.<br/> + !#zh + AffineTransform ç±»ä»£è¡¨ä¸€ä¸ªä»¿å°„å˜æ¢çŸ©é˜µã€‚å®ƒåŸºæœ¬ä¸Šæ˜¯ç”±å¹³ç§»æ—‹è½¬ï¼Œç¼©æ”¾è½¬å˜æ‰€ç»„æˆã€‚<br/> */ + export class AffineTransform { + /** + !#en Create a AffineTransform object with all contents in the matrix. + !#zh 用在矩阵ä¸çš„æ‰€æœ‰å†…容创建一个 AffineTransform 对象。 + @param a a + @param b b + @param c c + @param d d + @param tx tx + @param ty ty + */ + static create(a: number, b: number, c: number, d: number, tx: number, ty: number): AffineTransform; + /** + !#en + Create a identity transformation matrix: <br/> + [ 1, 0, 0, <br/> + 0, 1, 0 ] + !#zh + å•ä½çŸ©é˜µï¼š<br/> + [ 1, 0, 0, <br/> + 0, 1, 0 ] + */ + static identity(): AffineTransform; + /** + !#en Clone a AffineTransform object from the specified transform. + !#zh 克隆指定的 AffineTransform 对象。 + @param t t + */ + static clone(t: AffineTransform): AffineTransform; + /** + !#en + Concatenate a transform matrix to another + The results are reflected in the out affine transform + out = t1 * t2 + This function is memory free, you should create the output affine transform by yourself and manage its memory. + !#zh + 拼接两个矩阵,将结果ä¿å˜åˆ° out 矩阵。这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»º AffineTransform 对象用æ¥å˜å‚¨ç»“æžœï¼Œå¹¶ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°ä¼ 入函数。 + out = t1 * t2 + @param out Out object to store the concat result + @param t1 The first transform object. + @param t2 The transform object to concatenate. + */ + static concat(out: AffineTransform, t1: AffineTransform, t2: AffineTransform): AffineTransform; + /** + !#en Get the invert transform of an AffineTransform object. + This function is memory free, you should create the output affine transform by yourself and manage its memory. + !#zh 求逆矩阵。这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»º AffineTransform 对象用æ¥å˜å‚¨ç»“æžœï¼Œå¹¶ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°ä¼ 入函数。 + @param out out + @param t t + */ + static invert(out: AffineTransform, t: AffineTransform): AffineTransform; + /** + !#en Get an AffineTransform object from a given matrix 4x4. + This function is memory free, you should create the output affine transform by yourself and manage its memory. + !#zh 从一个 4x4 Matrix èŽ·å– AffineTransform 对象。这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»º AffineTransform 对象用æ¥å˜å‚¨ç»“æžœï¼Œå¹¶ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°ä¼ 入函数。 + @param out out + @param mat mat + */ + static invert(out: AffineTransform, mat: Mat4): AffineTransform; + /** + !#en Apply the affine transformation on a point. + This function is memory free, you should create the output Vec2 by yourself and manage its memory. + !#zh å¯¹ä¸€ä¸ªç‚¹åº”ç”¨çŸ©é˜µå˜æ¢ã€‚这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»ºä¸€ä¸ª Vec2 对象用æ¥å˜å‚¨ç»“æžœï¼Œå¹¶ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°ä¼ 入函数。 + @param out The output point to store the result + @param point Point to apply transform or x. + @param transOrY transform matrix or y. + @param t transform matrix. + */ + static transformVec2(out: Vec2, point: Vec2|number, transOrY: AffineTransform|number, t?: AffineTransform): Vec2; + /** + !#en Apply the affine transformation on a size. + This function is memory free, you should create the output Size by yourself and manage its memory. + !#zh åº”ç”¨ä»¿å°„å˜æ¢çŸ©é˜µåˆ° Size 上。这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»ºä¸€ä¸ª Size 对象用æ¥å˜å‚¨ç»“æžœï¼Œå¹¶ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°ä¼ 入函数。 + @param out The output point to store the result + @param size size + @param t t + */ + static transformSize(out: Size, size: Size, t: AffineTransform): Size; + /** + !#en Apply the affine transformation on a rect. + This function is memory free, you should create the output Rect by yourself and manage its memory. + !#zh åº”ç”¨ä»¿å°„å˜æ¢çŸ©é˜µåˆ° Rect 上。这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»ºä¸€ä¸ª Rect 对象用æ¥å˜å‚¨ç»“æžœï¼Œå¹¶ä½œä¸ºç¬¬ä¸€ä¸ªå‚æ•°ä¼ 入函数。 + @param out out + @param rect rect + @param anAffineTransform anAffineTransform + */ + static transformRect(out: Rect, rect: Rect, anAffineTransform: AffineTransform): Rect; + /** + !#en Apply the affine transformation on a rect, and truns to an Oriented Bounding Box. + This function is memory free, you should create the output vectors by yourself and manage their memory. + !#zh åº”ç”¨ä»¿å°„å˜æ¢çŸ©é˜µåˆ° Rect 上, 并转æ¢ä¸ºæœ‰å‘包围盒。这个函数ä¸åˆ›å»ºä»»ä½•内å˜ï¼Œä½ 需è¦å…ˆåˆ›å»ºåŒ…围盒的四个 Vector 对象用æ¥å˜å‚¨ç»“果,并作为å‰å››ä¸ªå‚æ•°ä¼ å…¥å‡½æ•°ã€‚ + @param out_bl out_bl + @param out_tl out_tl + @param out_tr out_tr + @param out_br out_br + @param rect rect + @param anAffineTransform anAffineTransform + */ + static transformObb(out_bl: Vec2, out_tl: Vec2, out_tr: Vec2, out_br: Vec2, rect: Rect, anAffineTransform: AffineTransform): void; + } + /** A base node for CCNode, it will: + - maintain scene hierarchy and active logic + - notifications if some properties changed + - define some interfaces shares between CCNode + - define machanisms for Enity Component Systems + - define prefab and serialize functions */ + export class _BaseNode extends Object implements EventTarget { + /** !#en Name of node. + !#zh 该节点å称。 */ + name: string; + /** !#en The uuid for editor, will be stripped before building project. + !#zh 主è¦ç”¨äºŽç¼–辑器的 uuid,在编辑器下å¯ç”¨äºŽæŒä¹…化å˜å‚¨ï¼Œåœ¨é¡¹ç›®æž„建之åŽå°†å˜æˆè‡ªå¢žçš„ id。 */ + uuid: string; + /** !#en All children nodes. + !#zh 节点的所有å节点。 */ + children: Node[]; + /** !#en All children nodes. + !#zh 节点的å节点数é‡ã€‚ */ + childrenCount: number; + /** !#en + The local active state of this node.<br/> + Note that a Node may be inactive because a parent is not active, even if this returns true.<br/> + Use {{#crossLink "Node/activeInHierarchy:property"}}{{/crossLink}} if you want to check if the Node is actually treated as active in the scene. + !#zh + 当å‰èŠ‚ç‚¹çš„è‡ªèº«æ¿€æ´»çŠ¶æ€ã€‚<br/> + 值得注æ„的是,一个节点的父节点如果ä¸è¢«æ¿€æ´»ï¼Œé‚£ä¹ˆå³ä½¿å®ƒè‡ªèº«è®¾ä¸ºæ¿€æ´»ï¼Œå®ƒä»ç„¶æ— 法激活。<br/> + å¦‚æžœä½ æƒ³æ£€æŸ¥èŠ‚ç‚¹åœ¨åœºæ™¯ä¸å®žé™…的激活状æ€å¯ä»¥ä½¿ç”¨ {{#crossLink "Node/activeInHierarchy:property"}}{{/crossLink}}。 */ + active: boolean; + /** !#en Indicates whether this node is active in the scene. + !#zh 表示æ¤èŠ‚ç‚¹æ˜¯å¦åœ¨åœºæ™¯ä¸æ¿€æ´»ã€‚ */ + activeInHierarchy: boolean; + /** + + @param name name + */ + constructor(name?: string); + /** !#en The parent of the node. + !#zh 该节点的父节点。 */ + parent: Node; + /** + !#en Get parent of the node. + !#zh 获å–该节点的父节点。 + + @example + ```js + var parent = this.node.getParent(); + ``` + */ + getParent(): Node; + /** + !#en Set parent of the node. + !#zh 设置该节点的父节点。 + @param value value + + @example + ```js + node.setParent(newNode); + ``` + */ + setParent(value: Node): void; + /** + !#en + Properties configuration function <br/> + All properties in attrs will be set to the node, <br/> + when the setter of the node is available, <br/> + the property will be set via setter function.<br/> + !#zh 属性é…置函数。在 attrs 的所有属性将被设置为节点属性。 + @param attrs Properties to be set to node + + @example + ```js + var attrs = { key: 0, num: 100 }; + node.attr(attrs); + ``` + */ + attr(attrs: any): void; + /** + !#en Returns a child from the container given its uuid. + !#zh 通过 uuid 获å–节点的å节点。 + @param uuid The uuid to find the child node. + + @example + ```js + var child = node.getChildByUuid(uuid); + ``` + */ + getChildByUuid(uuid: string): Node; + /** + !#en Returns a child from the container given its name. + !#zh 通过å称获å–节点的å节点。 + @param name A name to find the child node. + + @example + ```js + var child = node.getChildByName("Test Node"); + ``` + */ + getChildByName(name: string): Node; + /** + !#en + Inserts a child to the node at a specified index. + !#zh + æ’å…¥å节点到指定ä½ç½® + @param child the child node to be inserted + @param siblingIndex the sibling index to place the child in + + @example + ```js + node.insertChild(child, 2); + ``` + */ + insertChild(child: Node, siblingIndex: number): void; + /** + !#en Get the sibling index. + !#zh 获å–åŒçº§ç´¢å¼•。 + + @example + ```js + var index = node.getSiblingIndex(); + ``` + */ + getSiblingIndex(): number; + /** + !#en Set the sibling index of this node. + !#zh 设置节点åŒçº§ç´¢å¼•。 + @param index index + + @example + ```js + node.setSiblingIndex(1); + ``` + */ + setSiblingIndex(index: number): void; + /** + !#en Walk though the sub children tree of the current node. + Each node, including the current node, in the sub tree will be visited two times, before all children and after all children. + This function call is not recursive, it's based on stack. + Please don't walk any other node inside the walk process. + !#zh éåŽ†è¯¥èŠ‚ç‚¹çš„åæ ‘里的所有节点并按规则执行回调函数。 + å¯¹åæ ‘ä¸çš„æ‰€æœ‰èŠ‚ç‚¹ï¼ŒåŒ…å«å½“å‰èŠ‚ç‚¹ï¼Œä¼šæ‰§è¡Œä¸¤æ¬¡å›žè°ƒï¼Œprefunc 会在访问它的å节点之å‰è°ƒç”¨ï¼Œpostfunc 会在访问所有å节点之åŽè°ƒç”¨ã€‚ + è¿™ä¸ªå‡½æ•°çš„å®žçŽ°ä¸æ˜¯åŸºäºŽé€’å½’çš„ï¼Œè€Œæ˜¯åŸºäºŽæ ˆå±•å¼€é€’å½’çš„æ–¹å¼ã€‚ + 请ä¸è¦åœ¨ walk 过程ä¸å¯¹ä»»ä½•其他的节点嵌套执行 walk。 + @param prefunc The callback to process node when reach the node for the first time + @param postfunc The callback to process node when re-visit the node after walked all children in its sub tree + + @example + ```js + node.walk(function (target) { + console.log('Walked through node ' + target.name + ' for the first time'); + }, function (target) { + console.log('Walked through node ' + target.name + ' after walked all children in its sub tree'); + }); + ``` + */ + walk(prefunc: (target: _BaseNode) => void, postfunc: (target: _BaseNode) => void): void; + /** + !#en + Remove itself from its parent node. If cleanup is `true`, then also remove all events and actions. <br/> + If the cleanup parameter is not passed, it will force a cleanup, so it is recommended that you always pass in the `false` parameter when calling this API.<br/> + If the node orphan, then nothing happens. + !#zh + 从父节点ä¸åˆ 除该节点。如果ä¸ä¼ å…¥ cleanup 傿•°æˆ–è€…ä¼ å…¥ `true`,那么这个节点上所有绑定的事件ã€action éƒ½ä¼šè¢«åˆ é™¤ã€‚<br/> + å› æ¤å»ºè®®è°ƒç”¨è¿™ä¸ª API æ—¶æ€»æ˜¯ä¼ å…¥ `false` 傿•°ã€‚<br/> + 如果这个节点是一个å¤èŠ‚ç‚¹ï¼Œé‚£ä¹ˆä»€ä¹ˆéƒ½ä¸ä¼šå‘生。 + @param cleanup true if all actions and callbacks on this node should be removed, false otherwise. + + @example + ```js + node.removeFromParent(); + node.removeFromParent(false); + ``` + */ + removeFromParent(cleanup?: boolean): void; + /** + !#en + Removes a child from the container. It will also cleanup all running actions depending on the cleanup parameter. </p> + If the cleanup parameter is not passed, it will force a cleanup. <br/> + "remove" logic MUST only be on this method <br/> + If a class wants to extend the 'removeChild' behavior it only needs <br/> + to override this method. + !#zh + ç§»é™¤èŠ‚ç‚¹ä¸æŒ‡å®šçš„å节点,是å¦éœ€è¦æ¸…ç†æ‰€æœ‰æ£åœ¨è¿è¡Œçš„行为å–决于 cleanup 傿•°ã€‚<br/> + 如果 cleanup 傿•°ä¸ä¼ 入,默认为 true 表示清ç†ã€‚<br/> + @param child The child node which will be removed. + @param cleanup true if all running actions and callbacks on the child node will be cleanup, false otherwise. + + @example + ```js + node.removeChild(newNode); + node.removeChild(newNode, false); + ``` + */ + removeChild(child: Node, cleanup?: boolean): void; + /** + !#en + Removes all children from the container and do a cleanup all running actions depending on the cleanup parameter. <br/> + If the cleanup parameter is not passed, it will force a cleanup. + !#zh + 移除节点所有的å节点,是å¦éœ€è¦æ¸…ç†æ‰€æœ‰æ£åœ¨è¿è¡Œçš„行为å–决于 cleanup 傿•°ã€‚<br/> + 如果 cleanup 傿•°ä¸ä¼ 入,默认为 true 表示清ç†ã€‚ + @param cleanup true if all running actions on all children nodes should be cleanup, false otherwise. + + @example + ```js + node.removeAllChildren(); + node.removeAllChildren(false); + ``` + */ + removeAllChildren(cleanup?: boolean): void; + /** + !#en Is this node a child of the given node? + !#zh æ˜¯å¦æ˜¯æŒ‡å®šèŠ‚ç‚¹çš„å节点? + @param parent parent + + @example + ```js + node.isChildOf(newNode); + ``` + */ + isChildOf(parent: Node): boolean; + /** + !#en + Returns the component of supplied type if the node has one attached, null if it doesn't.<br/> + You can also get component in the node by passing in the name of the script. + !#zh + 获å–èŠ‚ç‚¹ä¸ŠæŒ‡å®šç±»åž‹çš„ç»„ä»¶ï¼Œå¦‚æžœèŠ‚ç‚¹æœ‰é™„åŠ æŒ‡å®šç±»åž‹çš„ç»„ä»¶ï¼Œåˆ™è¿”å›žï¼Œå¦‚æžœæ²¡æœ‰åˆ™ä¸ºç©ºã€‚<br/> + ä¼ å…¥å‚æ•°ä¹Ÿå¯ä»¥æ˜¯è„šæœ¬çš„å称。 + @param typeOrClassName typeOrClassName + + @example + ```js + // get sprite component + var sprite = node.getComponent(cc.Sprite); + // get custom test class + var test = node.getComponent("Test"); + ``` + */ + getComponent<T extends Component>(type: {prototype: T}): T; + getComponent(className: string): any; + /** + !#en Returns all components of supplied type in the node. + !#zh 返回节点上指定类型的所有组件。 + @param typeOrClassName typeOrClassName + + @example + ```js + var sprites = node.getComponents(cc.Sprite); + var tests = node.getComponents("Test"); + ``` + */ + getComponents<T extends Component>(type: {prototype: T}): T[]; + getComponents(className: string): any[]; + /** + !#en Returns the component of supplied type in any of its children using depth first search. + !#zh 递归查找所有å节点ä¸ç¬¬ä¸€ä¸ªåŒ¹é…指定类型的组件。 + @param typeOrClassName typeOrClassName + + @example + ```js + var sprite = node.getComponentInChildren(cc.Sprite); + var Test = node.getComponentInChildren("Test"); + ``` + */ + getComponentInChildren<T extends Component>(type: {prototype: T}): T; + getComponentInChildren(className: string): any; + /** + !#en Returns all components of supplied type in self or any of its children. + !#zh 递归查找自身或所有åèŠ‚ç‚¹ä¸æŒ‡å®šç±»åž‹çš„组件 + @param typeOrClassName typeOrClassName + + @example + ```js + var sprites = node.getComponentsInChildren(cc.Sprite); + var tests = node.getComponentsInChildren("Test"); + ``` + */ + getComponentsInChildren<T extends Component>(type: {prototype: T}): T[]; + getComponentsInChildren(className: string): any[]; + /** + !#en Adds a component class to the node. You can also add component to node by passing in the name of the script. + !#zh å‘èŠ‚ç‚¹æ·»åŠ ä¸€ä¸ªæŒ‡å®šç±»åž‹çš„ç»„ä»¶ç±»ï¼Œä½ è¿˜å¯ä»¥é€šè¿‡ä¼ 入脚本的åç§°æ¥æ·»åŠ ç»„ä»¶ã€‚ + @param typeOrClassName The constructor or the class name of the component to add + + @example + ```js + var sprite = node.addComponent(cc.Sprite); + var test = node.addComponent("Test"); + ``` + */ + addComponent<T extends Component>(type: {new(): T}): T; + addComponent(className: string): any; + /** + !#en + Removes a component identified by the given name or removes the component object given. + You can also use component.destroy() if you already have the reference. + !#zh + åˆ é™¤èŠ‚ç‚¹ä¸Šçš„æŒ‡å®šç»„ä»¶ï¼Œä¼ å…¥å‚æ•°å¯ä»¥æ˜¯ä¸€ä¸ªç»„ä»¶æž„é€ å‡½æ•°æˆ–ç»„ä»¶å,也å¯ä»¥æ˜¯å·²ç»èŽ·å¾—çš„ç»„ä»¶å¼•ç”¨ã€‚ + å¦‚æžœä½ å·²ç»èŽ·å¾—ç»„ä»¶å¼•ç”¨ï¼Œä½ ä¹Ÿå¯ä»¥ç›´æŽ¥è°ƒç”¨ component.destroy() + @param component The need remove component. + + @example + ```js + node.removeComponent(cc.Sprite); + var Test = require("Test"); + node.removeComponent(Test); + ``` + */ + removeComponent(component: string|Function|Component): void; + /** + !#en + Destroy all children from the node, and release all their own references to other objects.<br/> + Actual destruct operation will delayed until before rendering. + !#zh + é”€æ¯æ‰€æœ‰å节点,并释放所有它们对其它对象的引用。<br/> + å®žé™…é”€æ¯æ“作会延迟到当å‰å¸§æ¸²æŸ“剿‰§è¡Œã€‚ + + @example + ```js + node.destroyAllChildren(); + ``` + */ + destroyAllChildren(): void; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type A string representing the event type being removed. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null + + @example + ```js + eventTarget.once('fire', function () { + cc.log("this is the callback and will be invoked only once"); + }, node); + ``` + */ + once(type: string, callback: (arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) => void, target?: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en + Helper class for setting material blend function. + !#zh + 设置æè´¨æ··åˆæ¨¡å¼çš„辅助类。 */ + export class BlendFunc { + /** !#en specify the source Blend Factor, this will generate a custom material object, please pay attention to the memory cost. + !#zh æŒ‡å®šåŽŸå›¾çš„æ··åˆæ¨¡å¼ï¼Œè¿™ä¼šå…‹éš†ä¸€ä¸ªæ–°çš„æè´¨å¯¹è±¡ï¼Œæ³¨æ„这带æ¥çš„开销 */ + srcBlendFactor: macro.BlendFactor; + /** !#en specify the destination Blend Factor. + !#zh æŒ‡å®šç›®æ ‡çš„æ··åˆæ¨¡å¼ */ + dstBlendFactor: macro.BlendFactor; + } + /** An internal helper class for switching render component's material between normal sprite material and gray sprite material. */ + export class GraySpriteState { + /** !#en The normal material. + !#zh æ£å¸¸çжæ€çš„æè´¨ã€‚ */ + normalMaterial: Material; + /** !#en The gray material. + !#zh ç½®ç°çжæ€çš„æè´¨ã€‚ */ + grayMaterial: Material; + } + /** misc utilities */ + export class misc { + /** + !#en Clamp a value between from and to. + !#zh + é™å®šæµ®ç‚¹æ•°çš„æœ€å¤§æœ€å°å€¼ã€‚<br/> + 数值大于 max_inclusive 则返回 max_inclusive。<br/> + 数值å°äºŽ min_inclusive 则返回 min_inclusive。<br/> + å¦åˆ™è¿”回自身。 + @param value value + @param min_inclusive min_inclusive + @param max_inclusive max_inclusive + + @example + ```js + var v1 = cc.misc.clampf(20, 0, 20); // 20; + var v2 = cc.misc.clampf(-1, 0, 20); // 0; + var v3 = cc.misc.clampf(10, 0, 20); // 10; + ``` + */ + static clampf(value: number, min_inclusive: number, max_inclusive: number): number; + /** + !#en Clamp a value between 0 and 1. + !#zh é™å®šæµ®ç‚¹æ•°çš„å–值范围为 0 ~ 1 之间。 + @param value value + + @example + ```js + var v1 = cc.misc.clamp01(20); // 1; + var v2 = cc.misc.clamp01(-1); // 0; + var v3 = cc.misc.clamp01(0.5); // 0.5; + ``` + */ + static clamp01(value: number): number; + /** + Linear interpolation between 2 numbers, the ratio sets how much it is biased to each end + @param a number A + @param b number B + @param r ratio between 0 and 1 + + @example + ```js + ---- + lerp + cc.misc.lerp(2,10,0.5)//returns 6 + cc.misc.lerp(2,10,0.2)//returns 3.6 + + ``` + */ + static lerp(a: number, b: number, r: number): number; + /** + converts degrees to radians + @param angle angle + */ + static degreesToRadians(angle: number): number; + /** + converts radians to degrees + @param angle angle + */ + static radiansToDegrees(angle: number): number; + } + /** !#en + Representation of RGBA colors. + + Each color component is a floating point value with a range from 0 to 255. + + You can also use the convenience method {{#crossLink "cc/color:method"}}cc.color{{/crossLink}} to create a new Color. + + !#zh + cc.Color 用于表示颜色。 + + å®ƒåŒ…å« RGBA 四个以浮点数ä¿å˜çš„颜色分é‡ï¼Œæ¯ä¸ªçš„值都在 0 到 255 之间。 + + 您也å¯ä»¥é€šè¿‡ä½¿ç”¨ {{#crossLink "cc/color:method"}}cc.color{{/crossLink}} çš„ä¾¿æ·æ–¹æ³•æ¥åˆ›å»ºä¸€ä¸ªæ–°çš„ Color。 */ + export class Color extends ValueType { + /** !#en Solid white, RGBA is [255, 255, 255, 255]. + !#zh 纯白色,RGBA 是 [255, 255, 255, 255]。 */ + static WHITE: Color; + /** !#en Solid black, RGBA is [0, 0, 0, 255]. + !#zh 纯黑色,RGBA 是 [0, 0, 0, 255]。 */ + static BLACK: Color; + /** !#en Transparent, RGBA is [0, 0, 0, 0]. + !#zh 逿˜Žï¼ŒRGBA 是 [0, 0, 0, 0]。 */ + static TRANSPARENT: Color; + /** !#en Grey, RGBA is [127.5, 127.5, 127.5]. + !#zh ç°è‰²ï¼ŒRGBA 是 [127.5, 127.5, 127.5]。 */ + static GRAY: Color; + /** !#en Solid red, RGBA is [255, 0, 0]. + !#zh 纯红色,RGBA 是 [255, 0, 0]。 */ + static RED: Color; + /** !#en Solid green, RGBA is [0, 255, 0]. + !#zh 纯绿色,RGBA 是 [0, 255, 0]。 */ + static GREEN: Color; + /** !#en Solid blue, RGBA is [0, 0, 255]. + !#zh 纯è“色,RGBA 是 [0, 0, 255]。 */ + static BLUE: Color; + /** !#en Yellow, RGBA is [255, 235, 4]. + !#zh 黄色,RGBA 是 [255, 235, 4]。 */ + static YELLOW: Color; + /** !#en Orange, RGBA is [255, 127, 0]. + !#zh 橙色,RGBA 是 [255, 127, 0]。 */ + static ORANGE: Color; + /** !#en Cyan, RGBA is [0, 255, 255]. + !#zh é’色,RGBA 是 [0, 255, 255]。 */ + static CYAN: Color; + /** !#en Magenta, RGBA is [255, 0, 255]. + !#zh 洋红色(å“红色),RGBA 是 [255, 0, 255]。 */ + static MAGENTA: Color; + /** + Copy content of a color into another. + */ + static copy (out: Color, a: Color): Color; + /** + Clone a new color. + */ + static clone (a: Color): Color; + /** + Set the components of a color to the given values. + */ + static set (out: Color, r?: number, g?: number, b?: number, a?: number): Color; + /** + Converts the hexadecimal formal color into rgb formal. + */ + static fromHex (out: Color, hex: number): Color; + /** + Converts the hexadecimal formal color into rgb formal. + */ + static fromHEX (out: Color, hex: string): Color; + /** + Add components of two colors, respectively. + */ + static add (out: Color, a: Color, b: Color): Color; + /** + Subtract components of color b from components of color a, respectively. + */ + static subtract (out: Color, a: Color, b: Color): Color; + /** + Multiply components of two colors, respectively. + */ + static multiply (out: Color, a: Color, b: Color): Color; + /** + Divide components of color a by components of color b, respectively. + */ + static divide (out: Color, a: Color, b: Color): Color; + /** + Scales a color by a number. + */ + static scale (out: Color, a: Color, b: number): Color; + /** + Performs a linear interpolation between two colors. + */ + static lerp (out: Color, a: Color, b: Color, t: number): Color; + /** + !#zh 颜色转数组 + !#en Turn an array of colors + @param ofs 数组起始åç§»é‡ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, a: IColorLike, ofs?: number): Out; + /** + !#zh 数组转颜色 + !#en An array of colors turn + @param ofs 数组起始åç§»é‡ + */ + static fromArray <Out extends IColorLike> (arr: IWritableArrayLike<number>, out: Out, ofs?: number): Out; + /** + !#zh 颜色 RGB 预乘 Alpha é€šé“ + !#en RGB premultiply alpha channel + @param out 返回颜色 + @param color 预乘处ç†çš„ç›®æ ‡é¢œè‰² + */ + static premultiplyAlpha <Out extends IColorLike> (out: Out, a: IColorLike); + /** + + @param r red component of the color, default value is 0. + @param g green component of the color, defualt value is 0. + @param b blue component of the color, default value is 0. + @param a alpha component of the color, default value is 255. + */ + constructor(r?: number, g?: number, b?: number, a?: number); + /** + !#en Clone a new color from the current color. + !#zh 克隆当å‰é¢œè‰²ã€‚ + + @example + ```js + var color = new cc.Color(); + var newColor = color.clone();// Color {r: 0, g: 0, b: 0, a: 255} + ``` + */ + clone(): Color; + /** + !#en TODO + !#zh 判æ–两个颜色是å¦ç›¸ç‰ã€‚ + @param other other + + @example + ```js + var color1 = cc.Color.WHITE; + var color2 = new cc.Color(255, 255, 255); + cc.log(color1.equals(color2)); // true; + color2 = cc.Color.RED; + cc.log(color2.equals(color1)); // false; + ``` + */ + equals(other: Color): boolean; + /** + !#en TODO + !#zh 线性æ’值 + @param to to + @param ratio the interpolation coefficient. + @param out optional, the receiving vector. + + @example + ```js + // Converts a white color to a black one trough time. + update: function (dt) { + var color = this.node.color; + if (color.equals(cc.Color.BLACK)) { + return; + } + this.ratio += dt * 0.1; + this.node.color = cc.Color.WHITE.lerp(cc.Color.BLACK, ratio); + } + + ``` + */ + lerp(to: Color, ratio: number, out?: Color): Color; + /** + !#en TODO + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串。 + + @example + ```js + var color = cc.Color.WHITE; + color.toString(); // "rgba(255, 255, 255, 255)" + ``` + */ + toString(): string; + /** !#en Get or set red channel value + !#zh èŽ·å–æˆ–è€…è®¾ç½®çº¢è‰²é€šé“ */ + r: number; + /** !#en Get or set green channel value + !#zh èŽ·å–æˆ–è€…è®¾ç½®ç»¿è‰²é€šé“ */ + g: number; + /** !#en Get or set blue channel value + !#zh èŽ·å–æˆ–者设置è“è‰²é€šé“ */ + b: number; + /** !#en Get or set alpha channel value + !#zh èŽ·å–æˆ–è€…è®¾ç½®é€æ˜Žé€šé“ */ + a: number; + /** + !#en Gets red channel value + !#zh 获å–当å‰é¢œè‰²çš„红色值。 + */ + getR(): number; + /** + !#en Sets red value and return the current color object + !#zh 设置当å‰çš„红色值,并返回当å‰å¯¹è±¡ã€‚ + @param red the new Red component. + + @example + ```js + var color = new cc.Color(); + color.setR(255); // Color {r: 255, g: 0, b: 0, a: 255} + ``` + */ + setR(red: number): Color; + /** + !#en Gets green channel value + !#zh 获å–当å‰é¢œè‰²çš„绿色值。 + */ + getG(): number; + /** + !#en Sets green value and return the current color object + !#zh 设置当å‰çš„绿色值,并返回当å‰å¯¹è±¡ã€‚ + @param green the new Green component. + + @example + ```js + var color = new cc.Color(); + color.setG(255); // Color {r: 0, g: 255, b: 0, a: 255} + ``` + */ + setG(green: number): Color; + /** + !#en Gets blue channel value + !#zh 获å–当å‰é¢œè‰²çš„è“色值。 + */ + getB(): number; + /** + !#en Sets blue value and return the current color object + !#zh 设置当å‰çš„è“色值,并返回当å‰å¯¹è±¡ã€‚ + @param blue the new Blue component. + + @example + ```js + var color = new cc.Color(); + color.setB(255); // Color {r: 0, g: 0, b: 255, a: 255} + ``` + */ + setB(blue: number): Color; + /** + !#en Gets alpha channel value + !#zh 获å–当å‰é¢œè‰²çš„逿˜Žåº¦å€¼ã€‚ + */ + getA(): number; + /** + !#en Sets alpha value and return the current color object + !#zh 设置当å‰çš„逿˜Žåº¦ï¼Œå¹¶è¿”回当å‰å¯¹è±¡ã€‚ + @param alpha the new Alpha component. + + @example + ```js + var color = new cc.Color(); + color.setA(0); // Color {r: 0, g: 0, b: 0, a: 0} + ``` + */ + setA(alpha: number): Color; + /** + !#en Convert color to css format. + !#zh 转æ¢ä¸º CSS æ ¼å¼ã€‚ + @param opt "rgba", "rgb", "#rgb" or "#rrggbb". + + @example + ```js + var color = cc.Color.BLACK; + color.toCSS(); // "rgba(0,0,0,1.00)"; + color.toCSS("rgba"); // "rgba(0,0,0,1.00)"; + color.toCSS("rgb"); // "rgba(0,0,0)"; + color.toCSS("#rgb"); // "#000"; + color.toCSS("#rrggbb"); // "#000000"; + ``` + */ + toCSS(opt?: string): string; + /** + !#en Read hex string and store color data into the current color object, the hex string must be formated as rgba or rgb. + !#zh è¯»å– 16 进制颜色。 + @param hexString hexString + + @example + ```js + var color = cc.Color.BLACK; + color.fromHEX("#FFFF33"); // Color {r: 255, g: 255, b: 51, a: 255}; + ``` + */ + fromHEX(hexString: string): Color; + /** + !#en convert Color to HEX color string. + !#zh 转æ¢ä¸º 16 进制。 + @param fmt "#rgb", "#rrggbb" or "#rrggbbaa". + + @example + ```js + var color = cc.Color.BLACK; + color.toHEX("#rgb"); // "000"; + color.toHEX("#rrggbb"); // "000000"; + ``` + */ + toHEX(fmt?: string): string; + /** + !#en Convert to 24bit rgb value. + !#zh 转æ¢ä¸º 24bit çš„ RGB 值。 + + @example + ```js + var color = cc.Color.YELLOW; + color.toRGBValue(); // 16771844; + ``` + */ + toRGBValue(): number; + /** + !#en Read HSV model color and convert to RGB color + !#zh è¯»å– HSVï¼ˆè‰²å½©æ¨¡åž‹ï¼‰æ ¼å¼ã€‚ + @param h h + @param s s + @param v v + + @example + ```js + var color = cc.Color.YELLOW; + color.fromHSV(0, 0, 1); // Color {r: 255, g: 255, b: 255, a: 255}; + ``` + */ + fromHSV(h: number, s: number, v: number): Color; + /** + !#en Transform to HSV model color + !#zh 转æ¢ä¸º HSVï¼ˆè‰²å½©æ¨¡åž‹ï¼‰æ ¼å¼ã€‚ + + @example + ```js + var color = cc.Color.YELLOW; + color.toHSV(); // Object {h: 0.1533864541832669, s: 0.9843137254901961, v: 1}; + ``` + */ + toHSV(): any; + /** + !#en Set the color + !#zh 设置颜色 + @param color color + */ + set (color: Color): Color; + /** + !#en Multiplies the current color by the specified color + !#zh 将当å‰é¢œè‰²ä¹˜ä»¥ä¸ŽæŒ‡å®šé¢œè‰² + @param other other + */ + multiply(other: Color): Color; + } + /** Mathematical 3x3 matrix. + + NOTE: we use column-major matrix for all matrix calculation. + + This may lead to some confusion when referencing OpenGL documentation, + however, which represents out all matricies in column-major format. + This means that while in code a matrix may be typed out as: + + [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + x, y, z, 0] + + The same matrix in the [OpenGL documentation](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTranslate.xml) + is written as: + + 1 0 0 x + 0 1 0 y + 0 0 1 z + 0 0 0 0 + + Please rest assured, however, that they are the same thing! + This is not unique to glMatrix, either, as OpenGL developers have long been confused by the + apparent lack of consistency between the memory layout and the documentation. */ + export class Mat3 extends ValueType { + /** Identity of Mat3 */ + static IDENTITY: Mat3; + /** + !#zh 矩阵转数组 + !#en Matrix transpose array + @param ofs 数组内的起始åç§»é‡ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, mat: IMat3Like, ofs?: number): Out; + /** + !#zh 数组转矩阵 + !#en Transfer matrix array + @param ofs 数组起始åç§»é‡ + */ + static fromArray <Out extends IMat3Like> (out: Out, arr: IWritableArrayLike<number>, ofs?: number): Out; + /** !#en Matrix Data + !#zh çŸ©é˜µæ•°æ® */ + m: Float64Array|Float32Array; + constructor (m00?: number | Float32Array, m01?: number, m02?: number, m03?: number, m04?: number, m05?: number, m06?: number, m07?: number, m08?: number); + } + /** !#en Representation of 4*4 matrix. + !#zh 表示 4*4 矩阵 */ + export class Mat4 extends ValueType { + /** + !#en Multiply the current matrix with another one + !#zh 将当å‰çŸ©é˜µä¸ŽæŒ‡å®šçŸ©é˜µç›¸ä¹˜ + @param other the second operand + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created + */ + mul(other: Mat4, out?: Mat4): Mat4; + /** + !#en Multiply each element of the matrix by a scalar. + !#zh 将矩阵的æ¯ä¸€ä¸ªå…ƒç´ 都乘以指定的缩放值。 + @param number amount to scale the matrix's elements by + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created + */ + mulScalar(number: number, out?: Mat4): Mat4; + /** + !#en Subtracts the current matrix with another one + !#zh 将当å‰çŸ©é˜µä¸ŽæŒ‡å®šçš„çŸ©é˜µç›¸å‡ + @param other the second operand + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created + */ + sub(other: Mat4, out?: Mat4): Mat4; + /** Identity of Mat4 */ + static IDENTITY: Mat4; + /** + !#zh èŽ·å¾—æŒ‡å®šçŸ©é˜µçš„æ‹·è´ + !#en Copy of the specified matrix to obtain + */ + static clone<Out extends IMat4Like> (a: Out): Mat4; + /** + !#zh å¤åˆ¶ç›®æ ‡çŸ©é˜µ + !#en Copy the target matrix + */ + static copy<Out extends IMat4Like> (out: Out, a: Out): Out; + /** + !#zh å°†ç›®æ ‡èµ‹å€¼ä¸ºå•ä½çŸ©é˜µ + !#en The target of an assignment is the identity matrix + */ + static identity<Out extends IMat4Like> (out: Out): Out; + /** + !#zh 转置矩阵 + !#en Transposed matrix + */ + static transpose<Out extends IMat4Like> (out: Out, a: Out): Out; + /** + !#zh 矩阵求逆 + !#en Matrix inversion + */ + static invert<Out extends IMat4Like> (out: Out, a: Out): Out; + /** + !#zh çŸ©é˜µè¡Œåˆ—å¼ + !#en Matrix determinant + */ + static determinant<Out extends IMat4Like> (a: Out): number; + /** + !#zh 矩阵乘法 + !#en Matrix Multiplication + */ + static multiply<Out extends IMat4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥å˜æ¢ + !#en Was added in a given transformation matrix transformation on the basis of + */ + static transform<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, a: Out, v: VecLike): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥æ–°ä½ç§»å˜æ¢ + !#en Add new displacement transducer in a matrix transformation on the basis of a given + */ + static translate<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, a: Out, v: VecLike): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥æ–°ç¼©æ”¾å˜æ¢ + !#en Add new scaling transformation in a given matrix transformation on the basis of + */ + static scale<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, a: Out, v: VecLike): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥æ–°æ—‹è½¬å˜æ¢ + !#en Add a new rotational transform matrix transformation on the basis of a given + @param rad 旋转角度 + @param axis 旋转轴 + */ + static rotate<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, a: Out, rad: number, axis: VecLike): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥ç»• X è½´çš„æ—‹è½¬å˜æ¢ + !#en Add rotational transformation around the X axis at a given matrix transformation on the basis of + @param rad 旋转角度 + */ + static rotateX<Out extends IMat4Like> (out: Out, a: Out, rad: number): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥ç»• Y è½´çš„æ—‹è½¬å˜æ¢ + !#en Add about the Y axis rotation transformation in a given matrix transformation on the basis of + @param rad 旋转角度 + */ + static rotateY<Out extends IMat4Like> (out: Out, a: Out, rad: number): Out; + /** + !#zh åœ¨ç»™å®šçŸ©é˜µå˜æ¢åŸºç¡€ä¸ŠåŠ å…¥ç»• Z è½´çš„æ—‹è½¬å˜æ¢ + !#en Added about the Z axis at a given rotational transformation matrix transformation on the basis of + @param rad 旋转角度 + */ + static rotateZ<Out extends IMat4Like> (out: Out, a: Out, rad: number): Out; + /** + !#zh 计算ä½ç§»çŸ©é˜µ + !#en Displacement matrix calculation + */ + static fromTranslation<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, v: VecLike): Out; + /** + !#zh 计算缩放矩阵 + !#en Scaling matrix calculation + */ + static fromScaling<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, v: VecLike): Out; + /** + !#zh 计算旋转矩阵 + !#en Calculates the rotation matrix + */ + static fromRotation<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, rad: number, axis: VecLike): Out; + /** + !#zh 计算绕 X 轴的旋转矩阵 + !#en Calculating rotation matrix about the X axis + */ + static fromXRotation<Out extends IMat4Like> (out: Out, rad: number): Out; + /** + !#zh 计算绕 Y 轴的旋转矩阵 + !#en Calculating rotation matrix about the Y axis + */ + static fromYRotation<Out extends IMat4Like> (out: Out, rad: number): Out; + /** + !#zh 计算绕 Z 轴的旋转矩阵 + !#en Calculating rotation matrix about the Z axis + */ + static fromZRotation<Out extends IMat4Like> (out: Out, rad: number): Out; + /** + !#zh æ ¹æ®æ—‹è½¬å’Œä½ç§»ä¿¡æ¯è®¡ç®—矩阵 + !#en The rotation and displacement information calculating matrix + */ + static fromRT<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, q: Quat, v: VecLike): Out; + /** + !#zh æå–矩阵的ä½ç§»ä¿¡æ¯, 默认矩阵ä¸çš„å˜æ¢ä»¥ S->R->T 的顺åºåº”用 + !#en Extracting displacement information of the matrix, the matrix transform to the default sequential application S-> R-> T is + */ + static getTranslation<Out extends IMat4Like, VecLike extends IVec3Like> (out: VecLike, mat: Out): VecLike; + /** + !#zh æå–矩阵的缩放信æ¯, 默认矩阵ä¸çš„å˜æ¢ä»¥ S->R->T 的顺åºåº”用 + !#en Scaling information extraction matrix, the matrix transform to the default sequential application S-> R-> T is + */ + static getScaling<Out extends IMat4Like, VecLike extends IVec3Like> (out: VecLike, mat: Out): VecLike; + /** + !#zh æå–矩阵的旋转信æ¯, 默认输入矩阵ä¸å«æœ‰ç¼©æ”¾ä¿¡æ¯ï¼Œå¦‚考虑缩放应使用 `toRTS` 函数。 + !#en Rotation information extraction matrix, the matrix containing no default input scaling information, such as the use of `toRTS` should consider the scaling function. + */ + static getRotation<Out extends IMat4Like> (out: Quat, mat: Out): Quat; + /** + !#zh æå–旋转ã€ä½ç§»ã€ç¼©æ”¾ä¿¡æ¯ï¼Œ 默认矩阵ä¸çš„å˜æ¢ä»¥ S->R->T 的顺åºåº”用 + !#en Extracting rotational displacement, zoom information, the default matrix transformation in order S-> R-> T applications + */ + static toRTS<Out extends IMat4Like, VecLike extends IVec3Like> (mat: Out, q: Quat, v: VecLike, s: VecLike): void; + /** + !#zh æ ¹æ®æ—‹è½¬ã€ä½ç§»ã€ç¼©æ”¾ä¿¡æ¯è®¡ç®—矩阵,以 S->R->T 的顺åºåº”用 + !#en The rotary displacement, the scaling matrix calculation information, the order S-> R-> T applications + */ + static fromRTS<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, q: Quat, v: VecLike, s: VecLike): Out; + /** + !#zh æ ¹æ®æŒ‡å®šçš„æ—‹è½¬ã€ä½ç§»ã€ç¼©æ”¾åŠå˜æ¢ä¸å¿ƒä¿¡æ¯è®¡ç®—矩阵,以 S->R->T 的顺åºåº”用 + !#en According to the specified rotation, displacement, and scale conversion matrix calculation information center, order S-> R-> T applications + @param q 旋转值 + @param v ä½ç§»å€¼ + @param s 缩放值 + @param o æŒ‡å®šå˜æ¢ä¸å¿ƒ + */ + static fromRTSOrigin<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, q: Quat, v: VecLike, s: VecLike, o: VecLike): Out; + /** + !#zh æ ¹æ®æŒ‡å®šçš„æ—‹è½¬ä¿¡æ¯è®¡ç®—矩阵 + !#en The rotation matrix calculation information specified + */ + static fromQuat<Out extends IMat4Like> (out: Out, q: Quat): Out; + /** + !#zh æ ¹æ®æŒ‡å®šçš„视锥体信æ¯è®¡ç®—矩阵 + !#en The matrix calculation information specified frustum + @param left 左平é¢è·ç¦» + @param right å³å¹³é¢è·ç¦» + @param bottom 下平é¢è·ç¦» + @param top 上平é¢è·ç¦» + @param near è¿‘å¹³é¢è·ç¦» + @param far 远平é¢è·ç¦» + */ + static frustum<Out extends IMat4Like> (out: Out, left: number, right: number, bottom: number, top: number, near: number, far: number): Out; + /** + !#zh 计算é€è§†æŠ•影矩阵 + !#en Perspective projection matrix calculation + @param fovy 纵å‘视角高度 + @param aspect 长宽比 + @param near è¿‘å¹³é¢è·ç¦» + @param far 远平é¢è·ç¦» + */ + static perspective<Out extends IMat4Like> (out: Out, fovy: number, aspect: number, near: number, far: number): Out; + /** + !#zh 计算æ£äº¤æŠ•影矩阵 + !#en Computing orthogonal projection matrix + @param left 左平é¢è·ç¦» + @param right å³å¹³é¢è·ç¦» + @param bottom 下平é¢è·ç¦» + @param top 上平é¢è·ç¦» + @param near è¿‘å¹³é¢è·ç¦» + @param far 远平é¢è·ç¦» + */ + static ortho<Out extends IMat4Like> (out: Out, left: number, right: number, bottom: number, top: number, near: number, far: number): Out; + /** + !#zh æ ¹æ®è§†ç‚¹è®¡ç®—çŸ©é˜µï¼Œæ³¨æ„ `eye - center` ä¸èƒ½ä¸ºé›¶å‘釿ˆ–与 `up` å‘é‡å¹³è¡Œ + !#en `Up` parallel vector or vector center` not be zero - the matrix calculation according to the viewpoint, note` eye + @param eye 当å‰ä½ç½® + @param center ç›®æ ‡è§†ç‚¹ + @param up 视å£ä¸Šæ–¹å‘ + */ + static lookAt<Out extends IMat4Like, VecLike extends IVec3Like> (out: Out, eye: VecLike, center: VecLike, up: VecLike): Out; + /** + !#zh 计算逆转置矩阵 + !#en Reversal matrix calculation + */ + static inverseTranspose<Out extends IMat4Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ çŸ©é˜µåŠ æ³• + !#en Element by element matrix addition + */ + static add<Out extends IMat4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ çŸ©é˜µå‡æ³• + !#en Matrix element by element subtraction + */ + static subtract<Out extends IMat4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh çŸ©é˜µæ ‡é‡ä¹˜æ³• + !#en Matrix scalar multiplication + */ + static multiplyScalar<Out extends IMat4Like> (out: Out, a: Out, b: number): Out; + /** + !#zh é€å…ƒç´ çŸ©é˜µæ ‡é‡ä¹˜åŠ : A + B * scale + !#en Elements of the matrix by the scalar multiplication and addition: A + B * scale + */ + static multiplyScalarAndAdd<Out extends IMat4Like> (out: Out, a: Out, b: Out, scale: number): Out; + /** + !#zh 矩阵ç‰ä»·åˆ¤æ– + !#en Analyzing the equivalent matrix + */ + static strictEquals<Out extends IMat4Like> (a: Out, b: Out): boolean; + /** + !#zh 排除浮点数误差的矩阵近似ç‰ä»·åˆ¤æ– + !#en Negative floating point error is approximately equivalent to determining a matrix + */ + static equals<Out extends IMat4Like> (a: Out, b: Out, epsilon?: number): boolean; + /** + !#zh 矩阵转数组 + !#en Matrix transpose array + @param ofs 数组内的起始åç§»é‡ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, mat: IMat4Like, ofs?: number): Out; + /** + !#zh 数组转矩阵 + !#en Transfer matrix array + @param ofs 数组起始åç§»é‡ + */ + static fromArray <Out extends IMat4Like> (out: Out, arr: IWritableArrayLike<number>, ofs?: number): Out; + /** !#en Matrix Data + !#zh çŸ©é˜µæ•°æ® */ + m: Float64Array|Float32Array; + /** + !#en + Constructor + see {{#crossLink "cc/mat4:method"}}cc.mat4{{/crossLink}} + !#zh + æž„é€ å‡½æ•°ï¼Œå¯æŸ¥çœ‹ {{#crossLink "cc/mat4:method"}}cc.mat4{{/crossLink}} + */ + constructor ( m00?: number, m01?: number, m02?: number, m03?: number, m10?: number, m11?: number, m12?: number, m13?: number, m20?: number, m21?: number, m22?: number, m23?: number, m30?: number, m31?: number, m32?: number, m33?: number); + /** + !#en clone a Mat4 object + !#zh 克隆一个 Mat4 对象 + */ + clone(): Mat4; + /** + !#en Sets the matrix with another one's value + !#zh 用å¦ä¸€ä¸ªçŸ©é˜µè®¾ç½®è¿™ä¸ªçŸ©é˜µçš„值。 + @param srcObj srcObj + */ + set(srcObj: Mat4): Mat4; + /** + !#en Check whether two matrix equal + !#zh 当å‰çš„矩阵是å¦ä¸ŽæŒ‡å®šçš„矩阵相ç‰ã€‚ + @param other other + */ + equals(other: Mat4): boolean; + /** + !#en Check whether two matrix equal with default degree of variance. + !#zh + 近似判æ–两个矩阵是å¦ç›¸ç‰ã€‚<br/> + åˆ¤æ– 2 个矩阵是å¦åœ¨é»˜è®¤è¯¯å·®èŒƒå›´ä¹‹å†…,如果在则返回 true,å之则返回 false。 + @param other other + */ + fuzzyEquals(other: Mat4): boolean; + /** + !#en Transform to string with matrix informations + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串。 + */ + toString(): string; + /** + Set the matrix to the identity matrix + */ + identity(): Mat4; + /** + Transpose the values of a mat4 + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created. + */ + transpose(out?: Mat4): Mat4; + /** + Inverts a mat4 + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created. + */ + invert(out?: Mat4): Mat4; + /** + Calculates the adjugate of a mat4 + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created. + */ + adjoint(out?: Mat4): Mat4; + /** + Calculates the determinant of a mat4 + */ + determinant(): number; + /** + Adds two Mat4 + @param other the second operand + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created. + */ + add(other: Mat4, out?: Mat4): Mat4; + /** + Subtracts the current matrix with another one + @param other the second operand + */ + subtract(other: Mat4): Mat4; + /** + Subtracts the current matrix with another one + @param other the second operand + */ + multiply(other: Mat4): Mat4; + /** + Multiply each element of the matrix by a scalar. + @param number amount to scale the matrix's elements by + */ + multiplyScalar(number: number): Mat4; + /** + Translate a mat4 by the given vector + @param v vector to translate by + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created + */ + translate(v: Vec3, out?: Mat4): Mat4; + /** + Scales the mat4 by the dimensions in the given vec3 + @param v vector to scale by + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created + */ + scale(v: Vec3, out?: Mat4): Mat4; + /** + Rotates a mat4 by the given angle around the given axis + @param rad the angle to rotate the matrix by + @param axis the axis to rotate around + @param out the receiving matrix, you can pass the same matrix to save result to itself, if not provided, a new matrix will be created + */ + rotate(rad: number, axis: Vec3, out?: Mat4): Mat4; + /** + Returns the translation vector component of a transformation matrix. + @param out Vector to receive translation component, if not provided, a new vec3 will be created + */ + getTranslation(out: Vec3): Vec3; + /** + Returns the scale factor component of a transformation matrix + @param out Vector to receive scale component, if not provided, a new vec3 will be created + */ + getScale(out: Vec3): Vec3; + /** + Returns the rotation factor component of a transformation matrix + @param out Vector to receive rotation component, if not provided, a new quaternion object will be created + */ + getRotation(out: Quat): Quat; + /** + Restore the matrix values from a quaternion rotation, vector translation and vector scale + @param q Rotation quaternion + @param v Translation vector + @param s Scaling vector + */ + fromRTS(q: Quat, v: Vec3, s: Vec3): Mat4; + /** + Restore the matrix values from a quaternion rotation + @param q Rotation quaternion + */ + fromQuat(q: Quat): Mat4; + } + /** !#en Representation of 2D vectors and points. + !#zh 表示 2D å‘é‡å’Œåæ ‡ */ + export class Quat extends ValueType { + /** + !#en + Constructor + see {{#crossLink "cc/quat:method"}}cc.quat{{/crossLink}} + !#zh + æž„é€ å‡½æ•°ï¼Œå¯æŸ¥çœ‹ {{#crossLink "cc/quat:method"}}cc.quat{{/crossLink}} + @param x x + @param y y + @param z z + @param w w + */ + constructor(x?: number, y?: number, z?: number, w?: number); + /** + !#en Calculate the multiply result between this quaternion and another one + !#zh 计算四元数乘积的结果 + @param other other + @param out out + */ + mul(other: Quat, out?: Quat): Quat; + /** + !#zh èŽ·å¾—æŒ‡å®šå››å…ƒæ•°çš„æ‹·è´ + !#en Obtaining copy specified quaternion + */ + static clone<Out extends IQuatLike> (a: Out): Quat; + /** + !#zh å¤åˆ¶ç›®æ ‡å››å…ƒæ•° + !#en Copy quaternion target + */ + static copy<Out extends IQuatLike, QuatLike extends IQuatLike> (out: Out, a: QuatLike): Out; + /** + !#zh 设置四元数值 + !#en Provided Quaternion Value + */ + static set<Out extends IQuatLike> (out: Out, x: number, y: number, z: number, w: number): Out; + /** + !#zh å°†ç›®æ ‡èµ‹å€¼ä¸ºå•ä½å››å…ƒæ•° + !#en The target of an assignment as a unit quaternion + */ + static identity<Out extends IQuatLike> (out: Out): Out; + /** + !#zh 设置四元数为两å‘é‡é—´çš„æœ€çŸè·¯å¾„旋转,默认两å‘é‡éƒ½å·²å½’一化 + !#en Set quaternion rotation is the shortest path between two vectors, the default two vectors are normalized + */ + static rotationTo<Out extends IQuatLike, VecLike extends IVec3Like> (out: Out, a: VecLike, b: VecLike): Out; + /** + !#zh 获å–四元数的旋转轴和旋转弧度 + !#en Get the rotary shaft and the arc of rotation quaternion + @param outAxis 旋转轴输出 + @param q æºå››å…ƒæ•° + */ + static getAxisAngle<Out extends IQuatLike, VecLike extends IVec3Like> (outAxis: VecLike, q: Out): number; + /** + !#zh 四元数乘法 + !#en Quaternion multiplication + */ + static multiply<Out extends IQuatLike, QuatLike_1 extends IQuatLike, QuatLike_2 extends IQuatLike> (out: Out, a: QuatLike_1, b: QuatLike_2): Out; + /** + !#zh å››å…ƒæ•°æ ‡é‡ä¹˜æ³• + !#en Quaternion scalar multiplication + */ + static multiplyScalar<Out extends IQuatLike> (out: Out, a: Out, b: number): Out; + /** + !#zh å››å…ƒæ•°ä¹˜åŠ ï¼šA + B * scale + !#en Quaternion multiplication and addition: A + B * scale + */ + static scaleAndAdd<Out extends IQuatLike> (out: Out, a: Out, b: Out, scale: number): Out; + /** + !#zh 绕 X 轴旋转指定四元数 + !#en About the X axis specified quaternion + @param rad 旋转弧度 + */ + static rotateX<Out extends IQuatLike> (out: Out, a: Out, rad: number): Out; + /** + !#zh 绕 Y 轴旋转指定四元数 + !#en Rotation about the Y axis designated quaternion + @param rad 旋转弧度 + */ + static rotateY<Out extends IQuatLike> (out: Out, a: Out, rad: number): Out; + /** + !#zh 绕 Z 轴旋转指定四元数 + !#en Around the Z axis specified quaternion + @param rad 旋转弧度 + */ + static rotateZ<Out extends IQuatLike> (out: Out, a: Out, rad: number): Out; + /** + !#zh 绕世界空间下指定轴旋转四元数 + !#en Space around the world at a given axis of rotation quaternion + @param axis 旋转轴,默认已归一化 + @param rad 旋转弧度 + */ + static rotateAround<Out extends IQuatLike, VecLike extends IVec3Like> (out: Out, rot: Out, axis: VecLike, rad: number): Out; + /** + !#zh 绕本地空间下指定轴旋转四元数 + !#en Local space around the specified axis rotation quaternion + @param axis 旋转轴 + @param rad 旋转弧度 + */ + static rotateAroundLocal<Out extends IQuatLike, VecLike extends IVec3Like> (out: Out, rot: Out, axis: VecLike, rad: number): Out; + /** + !#zh æ ¹æ® xyz 分é‡è®¡ç®— w 分é‡ï¼Œé»˜è®¤å·²å½’一化 + !#en The component w xyz components calculated, normalized by default + */ + static calculateW<Out extends IQuatLike> (out: Out, a: Out): Out; + /** + !#zh 四元数点积(数é‡ç§¯ï¼‰ + !#en Quaternion dot product (scalar product) + */ + static dot<Out extends IQuatLike> (a: Out, b: Out): number; + /** + !#zh é€å…ƒç´ 线性æ’值: A + t * (B - A) + !#en Element by element linear interpolation: A + t * (B - A) + */ + static lerp<Out extends IQuatLike> (out: Out, a: Out, b: Out, t: number): Out; + /** + !#zh 带两个控制点的四元数çƒé¢æ’值 + !#en Quaternion with two spherical interpolation control points + */ + static sqlerp<Out extends IQuatLike> (out: Out, a: Out, b: Out, c: Out, d: Out, t: number): Out; + /** + !#zh 四元数求逆 + !#en Quaternion inverse + */ + static invert<Out extends IQuatLike, QuatLike extends IQuatLike> (out: Out, a: QuatLike): Out; + /** + !#zh 求共è½å››å…ƒæ•°ï¼Œå¯¹å•ä½å››å…ƒæ•°ä¸Žæ±‚逆ç‰ä»·ï¼Œä½†æ›´é«˜æ•ˆ + !#en Conjugating a quaternion, and the unit quaternion equivalent to inversion, but more efficient + */ + static conjugate<Out extends IQuatLike> (out: Out, a: Out): Out; + /** + !#zh 求四元数长度 + !#en Seek length quaternion + */ + static len<Out extends IQuatLike> (a: Out): number; + /** + !#zh 求四元数长度平方 + !#en Seeking quaternion square of the length + */ + static lengthSqr<Out extends IQuatLike> (a: Out): number; + /** + !#zh 归一化四元数 + !#en Normalized quaternions + */ + static normalize<Out extends IQuatLike> (out: Out, a: Out): Out; + /** + !#zh æ ¹æ®æœ¬åœ°åæ ‡è½´æœå‘计算四元数,默认三å‘é‡éƒ½å·²å½’一化且相互垂直 + !#en Calculated according to the local orientation quaternion coordinate axis, the default three vectors are normalized and mutually perpendicular + */ + static fromAxes<Out extends IQuatLike, VecLike extends IVec3Like> (out: Out, xAxis: VecLike, yAxis: VecLike, zAxis: VecLike): Out; + /** + !#zh æ ¹æ®è§†å£çš„剿–¹å‘和上方å‘计算四元数 + !#en The forward direction and the direction of the viewport computing quaternion + @param view 视å£é¢å‘çš„å‰æ–¹å‘,必须归一化 + @param up 视å£çš„上方å‘,必须归一化,默认为 (0, 1, 0) + */ + static fromViewUp<Out extends IQuatLike> (out: Out, view: Vec3, up?: Vec3): Out; + /** + !#zh æ ¹æ®æ—‹è½¬è½´å’Œæ—‹è½¬å¼§åº¦è®¡ç®—四元数 + !#en The quaternion calculated and the arc of rotation of the rotary shaft + */ + static fromAxisAngle<Out extends IQuatLike, VecLike extends IVec3Like> (out: Out, axis: VecLike, rad: number): Out; + /** + !#zh æ ¹æ®ä¸‰ç»´çŸ©é˜µä¿¡æ¯è®¡ç®—四元数,默认输入矩阵ä¸å«æœ‰ç¼©æ”¾ä¿¡æ¯ + !#en Calculating the three-dimensional quaternion matrix information, default zoom information input matrix does not contain + */ + static fromMat3<Out extends IQuatLike> (out: Out, mat: Mat3): Out; + /** + !#zh æ ¹æ®æ¬§æ‹‰è§’ä¿¡æ¯è®¡ç®—四元数,旋转顺åºä¸º YZX + !#en The quaternion calculated Euler angle information, rotation order YZX + */ + static fromEuler<Out extends IQuatLike> (out: Out, x: number, y: number, z: number): Out; + /** + !#zh 返回定义æ¤å››å…ƒæ•°çš„åæ ‡ç³» X è½´å‘é‡ + !#en This returns the result of the quaternion coordinate system X-axis vector + */ + static toAxisX<Out extends IQuatLike, VecLike extends IVec3Like> (out: VecLike, q: Out): VecLike; + /** + !#zh 返回定义æ¤å››å…ƒæ•°çš„åæ ‡ç³» Y è½´å‘é‡ + !#en This returns the result of the quaternion coordinate system Y axis vector + */ + static toAxisY<Out extends IQuatLike, VecLike extends IVec3Like> (out: VecLike, q: Out): VecLike; + /** + !#zh 返回定义æ¤å››å…ƒæ•°çš„åæ ‡ç³» Z è½´å‘é‡ + !#en This returns the result of the quaternion coordinate system the Z-axis vector + */ + static toAxisZ<Out extends IQuatLike, VecLike extends IVec3Like> (out: VecLike, q: Out): VecLike; + /** + !#zh æ ¹æ®å››å…ƒæ•°è®¡ç®—欧拉角,返回角度 x, y 在 [-180, 180] 区间内, z 默认在 [-90, 90] 区间内,旋转顺åºä¸º YZX + !#en The quaternion calculated Euler angles, return angle x, y in the [-180, 180] interval, z default the range [-90, 90] interval, the rotation order YZX + @param outerZ z å–值范围区间改为 [-180, -90] U [90, 180] + */ + static toEuler<Out extends IVec3Like> (out: Out, q: IQuatLike, outerZ?: boolean): Out; + /** + !#zh 四元数ç‰ä»·åˆ¤æ– + !#en Analyzing quaternion equivalent + */ + static strictEquals<Out extends IQuatLike> (a: Out, b: Out): boolean; + /** + !#zh 排除浮点数误差的四元数近似ç‰ä»·åˆ¤æ– + !#en Negative floating point error quaternion approximately equivalent Analyzing + */ + static equals<Out extends IQuatLike> (a: Out, b: Out, epsilon?: number): boolean; + /** + !#zh 四元数转数组 + !#en Quaternion rotation array + @param ofs 数组内的起始åç§»é‡ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, q: IQuatLike, ofs?: number): Out; + /** + !#zh 数组转四元数 + !#en Array to a quaternion + @param ofs 数组起始åç§»é‡ + */ + static fromArray <Out extends IQuatLike> (out: Out, arr: IWritableArrayLike<number>, ofs?: number): Out; + x: number; + y: number; + z: number; + w: number; + /** + !#en clone a Quat object and return the new object + !#zh 克隆一个四元数并返回 + */ + clone(): Quat; + /** + !#en Set values with another quaternion + !#zh 用å¦ä¸€ä¸ªå››å…ƒæ•°çš„值设置到当å‰å¯¹è±¡ä¸Šã€‚ + @param newValue !#en new value to set. !#zh è¦è®¾ç½®çš„æ–°å€¼ + */ + set(newValue: Quat): Quat; + /** + !#en Check whether current quaternion equals another + !#zh 当å‰çš„四元数是å¦ä¸ŽæŒ‡å®šçš„四元数相ç‰ã€‚ + @param other other + */ + equals(other: Quat): boolean; + /** + !#en Convert quaternion to euler + !#zh 转æ¢å››å…ƒæ•°åˆ°æ¬§æ‹‰è§’ + @param out out + */ + toEuler(out: Vec3): Vec3; + /** + !#en Convert euler to quaternion + !#zh è½¬æ¢æ¬§æ‹‰è§’到四元数 + @param euler euler + */ + fromEuler(euler: Vec3): Quat; + /** + !#en Calculate the interpolation result between this quaternion and another one with given ratio + !#zh 计算四元数的æ’值结果 + @param to to + @param ratio ratio + @param out out + */ + lerp(to: Quat, ratio: number, out?: Quat): Quat; + /** + !#en Calculate the multiply result between this quaternion and another one + !#zh 计算四元数乘积的结果 + @param other other + */ + multiply(other: Quat): Quat; + /** + !#en Rotates a quaternion by the given angle (in radians) about a world space axis. + !#zh 围绕世界空间轴按给定弧度旋转四元数 + @param rot Quaternion to rotate + @param axis The axis around which to rotate in world space + @param rad Angle (in radians) to rotate + @param out Quaternion to store result + */ + rotateAround(rot: Quat, axis: Vec3, rad: number, out?: Quat): Quat; + } + /** !#en A 2D rectangle defined by x, y position and width, height. + !#zh 通过ä½ç½®å’Œå®½é«˜å®šä¹‰çš„ 2D 矩形。 */ + export class Rect extends ValueType { + /** + !#en + Constructor of Rect class. + see {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} for convenience method. + !#zh + Rectç±»çš„æž„é€ å‡½æ•°ã€‚å¯ä»¥é€šè¿‡ {{#crossLink "cc/rect:method"}} cc.rect {{/crossLink}} 简便方法进行创建。 + @param x x + @param y y + @param w w + @param h h + */ + constructor(x?: number, y?: number, w?: number, h?: number); + /** + !#en Creates a rectangle from two coordinate values. + !#zh æ ¹æ®æŒ‡å®š 2 ä¸ªåæ ‡åˆ›å»ºå‡ºä¸€ä¸ªçŸ©å½¢åŒºåŸŸã€‚ + @param v1 v1 + @param v2 v2 + + @example + ```js + cc.Rect.fromMinMax(cc.v2(10, 10), cc.v2(20, 20)); // Rect {x: 10, y: 10, width: 10, height: 10}; + ``` + */ + static fromMinMax(v1: Vec2, v2: Vec2): Rect; + x: number; + y: number; + width: number; + height: number; + /** + !#en TODO + !#zh 克隆一个新的 Rect。 + + @example + ```js + var a = new cc.Rect(0, 0, 10, 10); + a.clone();// Rect {x: 0, y: 0, width: 10, height: 10} + ``` + */ + clone(): Rect; + /** + !#en TODO + !#zh 是å¦ç‰äºŽæŒ‡å®šçš„矩形。 + @param other other + + @example + ```js + var a = new cc.Rect(0, 0, 10, 10); + var b = new cc.Rect(0, 0, 10, 10); + a.equals(b);// true; + ``` + */ + equals(other: Rect): boolean; + /** + !#en TODO + !#zh 线性æ’值 + @param to to + @param ratio the interpolation coefficient. + @param out optional, the receiving vector. + + @example + ```js + var a = new cc.Rect(0, 0, 10, 10); + var b = new cc.Rect(50, 50, 100, 100); + update (dt) { + // method 1; + var c = a.lerp(b, dt * 0.1); + // method 2; + a.lerp(b, dt * 0.1, c); + } + ``` + */ + lerp(to: Rect, ratio: number, out?: Rect): Rect; + /** + !#en Check whether the current rectangle intersects with the given one + !#zh 当å‰çŸ©å½¢ä¸ŽæŒ‡å®šçŸ©å½¢æ˜¯å¦ç›¸äº¤ã€‚ + @param rect rect + + @example + ```js + var a = new cc.Rect(0, 0, 10, 10); + var b = new cc.Rect(0, 0, 20, 20); + a.intersects(b);// true + ``` + */ + intersects(rect: Rect): boolean; + /** + !#en Returns the overlapping portion of 2 rectangles. + !#zh 返回 2 个矩形é‡å 的部分。 + @param out Stores the result + @param rectB rectB + + @example + ```js + var a = new cc.Rect(0, 10, 20, 20); + var b = new cc.Rect(0, 10, 10, 10); + var intersection = new cc.Rect(); + a.intersection(intersection, b); // intersection {x: 0, y: 10, width: 10, height: 10}; + ``` + */ + intersection(out: Rect, rectB: Rect): Rect; + /** + !#en Check whether the current rect contains the given point + !#zh 当å‰çŸ©å½¢æ˜¯å¦åŒ…嫿Œ‡å®šåæ ‡ç‚¹ã€‚ + Returns true if the point inside this rectangle. + @param point point + + @example + ```js + var a = new cc.Rect(0, 0, 10, 10); + var b = new cc.Vec2(0, 5); + a.contains(b);// true + ``` + */ + contains(point: Vec2): boolean; + /** + !#en Returns true if the other rect totally inside this rectangle. + !#zh 当å‰çŸ©å½¢æ˜¯å¦åŒ…嫿Œ‡å®šçŸ©å½¢ã€‚ + @param rect rect + + @example + ```js + var a = new cc.Rect(0, 0, 20, 20); + var b = new cc.Rect(0, 0, 10, 10); + a.containsRect(b);// true + ``` + */ + containsRect(rect: Rect): boolean; + /** + !#en Returns the smallest rectangle that contains the current rect and the given rect. + !#zh 返回一个包å«å½“å‰çŸ©å½¢å’ŒæŒ‡å®šçŸ©å½¢çš„æœ€å°çŸ©å½¢ã€‚ + @param out Stores the result + @param rectB rectB + + @example + ```js + var a = new cc.Rect(0, 10, 20, 20); + var b = new cc.Rect(0, 10, 10, 10); + var union = new cc.Rect(); + a.union(union, b); // union {x: 0, y: 10, width: 20, height: 20}; + ``` + */ + union(out: Rect, rectB: Rect): Rect; + /** + !#en Apply matrix4 to the rect. + !#zh 使用 mat4 对矩形进行矩阵转æ¢ã€‚ + @param out The output rect + @param mat The matrix4 + */ + transformMat4(out: Rect, mat: Mat4): void; + /** + !#en Output rect informations to string + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串 + + @example + ```js + var a = new cc.Rect(0, 0, 10, 10); + a.toString();// "(0.00, 0.00, 10.00, 10.00)"; + ``` + */ + toString(): string; + /** !#en The minimum x value, equals to rect.x + !#zh 矩形 x 轴上的最å°å€¼ï¼Œç‰ä»·äºŽ rect.x。 */ + xMin: number; + /** !#en The minimum y value, equals to rect.y + !#zh 矩形 y 轴上的最å°å€¼ã€‚ */ + yMin: number; + /** !#en The maximum x value. + !#zh 矩形 x 轴上的最大值。 */ + xMax: number; + /** !#en The maximum y value. + !#zh 矩形 y 轴上的最大值。 */ + yMax: number; + /** !#en The position of the center of the rectangle. + !#zh 矩形的ä¸å¿ƒç‚¹ã€‚ */ + center: Vec2; + /** !#en The X and Y position of the rectangle. + !#zh 矩形的 x å’Œ y åæ ‡ã€‚ */ + origin: Vec2; + /** !#en Width and height of the rectangle. + !#zh 矩形的大å°ã€‚ */ + size: Size; + } + /** !#en + cc.Size is the class for size object,<br/> + please do not use its constructor to create sizes,<br/> + use {{#crossLink "cc/size:method"}}{{/crossLink}} alias function instead.<br/> + It will be deprecated soon, please use cc.Vec2 instead. + + !#zh + cc.Size 是 size 对象的类。<br/> + 请ä¸è¦ä½¿ç”¨å®ƒçš„æž„é€ å‡½æ•°åˆ›å»ºçš„ size,<br/> + 使用 {{#crossLink "cc/size:method"}}{{/crossLink}} 别å函数。<br/> + 它ä¸ä¹…å°†è¢«å–æ¶ˆï¼Œè¯·ä½¿ç”¨cc.Vec2代替。 */ + export class Size { + /** + + @param width width + @param height height + */ + constructor(width: number|Size, height?: number); + /** !#en return a Size object with width = 0 and height = 0. + !#zh 返回一个宽度为 0 和高度为 0 çš„ Size 对象。 */ + static ZERO: Size; + width: number; + height: number; + /** + !#en TODO + !#zh 克隆 size 对象。 + + @example + ```js + var a = new cc.size(10, 10); + a.clone();// return Size {width: 0, height: 0}; + ``` + */ + clone(): Size; + /** + !#en TODO + !#zh å½“å‰ Size 对象是å¦ç‰äºŽæŒ‡å®š Size 对象。 + @param other other + + @example + ```js + var a = new cc.size(10, 10); + a.equals(new cc.size(10, 10));// return true; + ``` + */ + equals(other: Size): boolean; + /** + !#en TODO + !#zh 线性æ’值。 + @param to to + @param ratio the interpolation coefficient. + @param out optional, the receiving vector. + + @example + ```js + var a = new cc.size(10, 10); + var b = new cc.rect(50, 50, 100, 100); + update (dt) { + // method 1; + var c = a.lerp(b, dt * 0.1); + // method 2; + a.lerp(b, dt * 0.1, c); + } + ``` + */ + lerp(to: Rect, ratio: number, out?: Size): Size; + /** + !#en TODO + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串。 + + @example + ```js + var a = new cc.size(10, 10); + a.toString();// return "(10.00, 10.00)"; + ``` + */ + toString(): string; + } + /** !#en The base class of all value types. + !#zh 所有值类型的基类。 */ + export class ValueType { + /** + !#en This method returns an exact copy of current value. + !#zh 克隆当å‰å€¼ï¼Œè¯¥æ–¹æ³•返回一个新对象,新对象的值和原对象相ç‰ã€‚ + */ + clone(): ValueType; + /** + !#en Compares this object with the other one. + !#zh 当å‰å¯¹è±¡æ˜¯å¦ç‰äºŽæŒ‡å®šå¯¹è±¡ã€‚ + @param other other + */ + equals(other: ValueType): boolean; + /** + !#en + Linearly interpolates between this value to to value by ratio which is in the range [0, 1]. + When ratio = 0 returns this. When ratio = 1 return to. When ratio = 0.5 returns the average of this and to. + !#zh + 线性æ’值。<br/> + 当 ratio = 0 时返回自身,ratio = 1 æ—¶è¿”å›žç›®æ ‡ï¼Œratio = 0.5 è¿”å›žè‡ªèº«å’Œç›®æ ‡çš„å¹³å‡å€¼ã€‚。 + @param to the to value + @param ratio the interpolation coefficient + */ + lerp(to: ValueType, ratio: number): ValueType; + /** + !#en + Copys all the properties from another given object to this value. + !#zh + 从其它对象把所有属性å¤åˆ¶åˆ°å½“å‰å¯¹è±¡ã€‚ + @param source the source to copy + */ + set(source: ValueType): void; + /** + !#en Convert to a readable string. + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串。 + */ + toString(): string; + } + /** !#en Representation of 2D vectors and points. + !#zh 表示 2D å‘é‡å’Œåæ ‡ */ + export class Vec2 extends ValueType { + /** + !#en Returns the length of this vector. + !#zh 返回该å‘é‡çš„长度。 + + @example + ```js + var v = cc.v2(10, 10); + v.mag(); // return 14.142135623730951; + ``` + */ + mag(): number; + /** + !#en Returns the squared length of this vector. + !#zh 返回该å‘é‡çš„长度平方。 + + @example + ```js + var v = cc.v2(10, 10); + v.magSqr(); // return 200; + ``` + */ + magSqr(): number; + /** + !#en Subtracts one vector from this. If you want to save result to another vector, use sub() instead. + !#zh å‘é‡å‡æ³•ã€‚å¦‚æžœä½ æƒ³ä¿å˜ç»“果到å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ sub() 代替。 + @param vector vector + + @example + ```js + var v = cc.v2(10, 10); + v.subSelf(cc.v2(5, 5));// return Vec2 {x: 5, y: 5}; + ``` + */ + subSelf(vector: Vec2): Vec2; + /** + !#en Subtracts one vector from this, and returns the new result. + !#zh å‘é‡å‡æ³•,并返回新结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + + @example + ```js + var v = cc.v2(10, 10); + v.sub(cc.v2(5, 5)); // return Vec2 {x: 5, y: 5}; + var v1; + v.sub(cc.v2(5, 5), v1); // return Vec2 {x: 5, y: 5}; + ``` + */ + sub(vector: Vec2, out?: Vec2): Vec2; + /** + !#en Multiplies this by a number. If you want to save result to another vector, use mul() instead. + !#zh 缩放当å‰å‘é‡ã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ mul() 代替。 + @param num num + + @example + ```js + var v = cc.v2(10, 10); + v.mulSelf(5);// return Vec2 {x: 50, y: 50}; + ``` + */ + mulSelf(num: number): Vec2; + /** + !#en Multiplies by a number, and returns the new result. + !#zh 缩放å‘é‡ï¼Œå¹¶è¿”回新结果。 + @param num num + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + + @example + ```js + var v = cc.v2(10, 10); + v.mul(5); // return Vec2 {x: 50, y: 50}; + var v1; + v.mul(5, v1); // return Vec2 {x: 50, y: 50}; + ``` + */ + mul(num: number, out?: Vec2): Vec2; + /** + !#en Divides by a number. If you want to save result to another vector, use div() instead. + !#zh å‘é‡é™¤æ³•ã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ div() 代替。 + @param num num + + @example + ```js + var v = cc.v2(10, 10); + v.divSelf(5); // return Vec2 {x: 2, y: 2}; + ``` + */ + divSelf(num: number): Vec2; + /** + !#en Divides by a number, and returns the new result. + !#zh å‘é‡é™¤æ³•,并返回新的结果。 + @param num num + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + + @example + ```js + var v = cc.v2(10, 10); + v.div(5); // return Vec2 {x: 2, y: 2}; + var v1; + v.div(5, v1); // return Vec2 {x: 2, y: 2}; + ``` + */ + div(num: number, out?: Vec2): Vec2; + /** + !#en Multiplies two vectors. + !#zh 分é‡ç›¸ä¹˜ã€‚ + @param vector vector + + @example + ```js + var v = cc.v2(10, 10); + v.scaleSelf(cc.v2(5, 5));// return Vec2 {x: 50, y: 50}; + ``` + */ + scaleSelf(vector: Vec2): Vec2; + /** + !#en Multiplies two vectors, and returns the new result. + !#zh 分é‡ç›¸ä¹˜ï¼Œå¹¶è¿”回新的结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + + @example + ```js + var v = cc.v2(10, 10); + v.scale(cc.v2(5, 5)); // return Vec2 {x: 50, y: 50}; + var v1; + v.scale(cc.v2(5, 5), v1); // return Vec2 {x: 50, y: 50}; + ``` + */ + scale(vector: Vec2, out?: Vec2): Vec2; + /** + !#en Negates the components. If you want to save result to another vector, use neg() instead. + !#zh å‘é‡å–åã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ neg() 代替。 + + @example + ```js + var v = cc.v2(10, 10); + v.negSelf(); // return Vec2 {x: -10, y: -10}; + ``` + */ + negSelf(): Vec2; + /** + !#en Negates the components, and returns the new result. + !#zh 返回å–ååŽçš„æ–°å‘é‡ã€‚ + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + + @example + ```js + var v = cc.v2(10, 10); + var v1; + v.neg(v1); // return Vec2 {x: -10, y: -10}; + ``` + */ + neg(out?: Vec2): Vec2; + /** !#en return a Vec2 object with x = 1 and y = 1. + !#zh æ–° Vec2 对象。 */ + static ONE: Vec2; + /** !#en return a Vec2 object with x = 0 and y = 0. + !#zh 返回 x = 0 å’Œ y = 0 çš„ Vec2 对象。 */ + static ZERO: Vec2; + /** !#en return a readonly Vec2 object with x = 0 and y = 0. + !#zh 返回一个 x = 0 å’Œ y = 0 çš„ Vec2 åªè¯»å¯¹è±¡ã€‚ */ + static ZERO_R: Vec2; + /** !#en return a Vec2 object with x = 0 and y = 1. + !#zh 返回 x = 0 å’Œ y = 1 çš„ Vec2 对象。 */ + static UP: Vec2; + /** !#en return a readonly Vec2 object with x = 0 and y = 1. + !#zh 返回 x = 0 å’Œ y = 1 çš„ Vec2 åªè¯»å¯¹è±¡ã€‚ */ + static UP_R: Vec2; + /** !#en return a readonly Vec2 object with x = 1 and y = 0. + !#zh 返回 x = 1 å’Œ y = 0 çš„ Vec2 åªè¯»å¯¹è±¡ã€‚ */ + static RIGHT: Vec2; + /** !#en return a Vec2 object with x = 1 and y = 0. + !#zh 返回 x = 1 å’Œ y = 0 çš„ Vec2 对象。 */ + static RIGHT_R: Vec2; + /** + !#zh 获得指定å‘é‡çš„æ‹·è´ + */ + static clone <Out extends IVec2Like> (a: Out): Vec2; + /** + !#zh å¤åˆ¶æŒ‡å®šå‘é‡çš„值 + */ + static copy <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh 设置å‘é‡å€¼ + */ + static set <Out extends IVec2Like> (out: Out, x: number, y: number): Out; + /** + !#zh é€å…ƒç´ å‘é‡åŠ æ³• + */ + static add <Out extends IVec2Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‡æ³• + */ + static subtract <Out extends IVec2Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡ä¹˜æ³• + */ + static multiply <Out extends IVec2Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡é™¤æ³• + */ + static divide <Out extends IVec2Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‘ä¸Šå–æ•´ + */ + static ceil <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‘䏋喿•´ + */ + static floor <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘釿œ€å°å€¼ + */ + static min <Out extends IVec2Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘釿œ€å¤§å€¼ + */ + static max <Out extends IVec2Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å››èˆäº”入喿•´ + */ + static round <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh å‘釿 ‡é‡ä¹˜æ³• + */ + static multiplyScalar <Out extends IVec2Like> (out: Out, a: Out, b: number): Out; + /** + !#zh é€å…ƒç´ å‘é‡ä¹˜åŠ : A + B * scale + */ + static scaleAndAdd <Out extends IVec2Like> (out: Out, a: Out, b: Out, scale: number): Out; + /** + !#zh 求两å‘é‡çš„æ¬§æ°è·ç¦» + */ + static distance <Out extends IVec2Like> (a: Out, b: Out): number; + /** + !#zh 求两å‘é‡çš„æ¬§æ°è·ç¦»å¹³æ–¹ + */ + static squaredDistance <Out extends IVec2Like> (a: Out, b: Out): number; + /** + !#zh 求å‘é‡é•¿åº¦ + */ + static len <Out extends IVec2Like> (a: Out): number; + /** + !#zh 求å‘é‡é•¿åº¦å¹³æ–¹ + */ + static lengthSqr <Out extends IVec2Like> (a: Out): number; + /** + !#zh é€å…ƒç´ å‘é‡å–è´Ÿ + */ + static negate <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å–倒数,接近 0 时返回 Infinity + */ + static inverse <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å–倒数,接近 0 时返回 0 + */ + static inverseSafe <Out extends IVec2Like> (out: Out, a: Out): Out; + /** + !#zh 归一化å‘é‡ + */ + static normalize <Out extends IVec2Like, Vec2Like extends IVec2Like> (out: Out, a: Vec2Like): Out; + /** + !#zh å‘é‡ç‚¹ç§¯ï¼ˆæ•°é‡ç§¯ï¼‰ + */ + static dot <Out extends IVec2Like> (a: Out, b: Out): number; + /** + !#zh å‘é‡å‰ç§¯ï¼ˆå‘é‡ç§¯ï¼‰ï¼Œæ³¨æ„二维å‘é‡çš„å‰ç§¯ä¸ºä¸Ž Z 轴平行的三维å‘é‡ + */ + static cross <Out extends IVec2Like> (out: Vec2, a: Out, b: Out): Vec2; + /** + !#zh é€å…ƒç´ å‘é‡çº¿æ€§æ’值: A + t * (B - A) + */ + static lerp <Out extends IVec2Like> (out: Out, a: Out, b: Out, t: number): Out; + /** + !#zh 生æˆä¸€ä¸ªåœ¨å•ä½åœ†ä¸Šå‡åŒ€åˆ†å¸ƒçš„éšæœºå‘é‡ + */ + static random <Out extends IVec2Like> (out: Out, scale?: number): Out; + /** + !#zh å‘é‡ä¸Žä¸‰ç»´çŸ©é˜µä¹˜æ³•,默认å‘é‡ç¬¬ä¸‰ä½ä¸º 1。 + */ + static transformMat3 <Out extends IVec2Like, MatLike extends IMat3Like> (out: Out, a: Out, mat: IMat3Like): Out; + /** + !#zh å‘é‡ä¸Žå››ç»´çŸ©é˜µä¹˜æ³•,默认å‘é‡ç¬¬ä¸‰ä½ä¸º 0,第四ä½ä¸º 1。 + */ + static transformMat4 <Out extends IVec2Like, MatLike extends IMat4Like> (out: Out, a: Out, mat: MatLike): Out; + /** + !#zh å‘é‡ç‰ä»·åˆ¤æ– + */ + static strictEquals <Out extends IVec2Like> (a: Out, b: Out): boolean; + /** + !#zh 排除浮点数误差的å‘é‡è¿‘ä¼¼ç‰ä»·åˆ¤æ– + */ + static equals <Out extends IVec2Like> (a: Out, b: Out, epsilon?: number): boolean; + /** + !#zh 排除浮点数误差的å‘é‡è¿‘ä¼¼ç‰ä»·åˆ¤æ– + */ + static angle <Out extends IVec2Like> (a: Out, b: Out): number; + /** + !#zh å‘é‡è½¬æ•°ç»„ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, v: IVec2Like, ofs?: number): Out; + /** + !#zh 数组转å‘é‡ + */ + static fromArray <Out extends IVec2Like> (out: Out, arr: IWritableArrayLike<number>, ofs?: number): Out; + x: number; + y: number; + /** + !#en + Constructor + see {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} or {{#crossLink "cc/p:method"}}cc.p{{/crossLink}} + !#zh + æž„é€ å‡½æ•°ï¼Œå¯æŸ¥çœ‹ {{#crossLink "cc/vec2:method"}}cc.v2{{/crossLink}} 或者 {{#crossLink "cc/p:method"}}cc.p{{/crossLink}} + @param x x + @param y y + */ + constructor(x?: number, y?: number); + /** + !#en clone a Vec2 object + !#zh 克隆一个 Vec2 对象 + */ + clone(): Vec2; + /** + !#en Sets vector with another's value + !#zh 设置å‘é‡å€¼ã€‚ + @param newValue !#en new value to set. !#zh è¦è®¾ç½®çš„æ–°å€¼ + */ + set(newValue: Vec2): Vec2; + /** + !#en Check whether two vector equal + !#zh 当å‰çš„å‘釿˜¯å¦ä¸ŽæŒ‡å®šçš„å‘é‡ç›¸ç‰ã€‚ + @param other other + */ + equals(other: Vec2): boolean; + /** + !#en Check whether two vector equal with some degree of variance. + !#zh + 近似判æ–两个点是å¦ç›¸ç‰ã€‚<br/> + åˆ¤æ– 2 个å‘釿˜¯å¦åœ¨æŒ‡å®šæ•°å€¼çš„范围之内,如果在则返回 true,å之则返回 false。 + @param other other + @param variance variance + */ + fuzzyEquals(other: Vec2, variance: number): boolean; + /** + !#en Transform to string with vector informations + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串。 + */ + toString(): string; + /** + !#en Calculate linear interpolation result between this vector and another one with given ratio + !#zh 线性æ’值。 + @param to to + @param ratio the interpolation coefficient + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + */ + lerp(to: Vec2, ratio: number, out?: Vec2): Vec2; + /** + !#en Clamp the vector between from float and to float. + !#zh + 返回指定é™åˆ¶åŒºåŸŸåŽçš„å‘é‡ã€‚<br/> + å‘é‡å¤§äºŽ max_inclusive 则返回 max_inclusive。<br/> + å‘é‡å°äºŽ min_inclusive 则返回 min_inclusive。<br/> + å¦åˆ™è¿”回自身。 + @param min_inclusive min_inclusive + @param max_inclusive max_inclusive + + @example + ```js + var min_inclusive = cc.v2(0, 0); + var max_inclusive = cc.v2(20, 20); + var v1 = cc.v2(20, 20).clampf(min_inclusive, max_inclusive); // Vec2 {x: 20, y: 20}; + var v2 = cc.v2(0, 0).clampf(min_inclusive, max_inclusive); // Vec2 {x: 0, y: 0}; + var v3 = cc.v2(10, 10).clampf(min_inclusive, max_inclusive); // Vec2 {x: 10, y: 10}; + ``` + */ + clampf(min_inclusive: Vec2, max_inclusive: Vec2): Vec2; + /** + !#en Adds this vector. + !#zh å‘é‡åŠ æ³•ã€‚ + @param vector vector + @param out out + + @example + ```js + var v = cc.v2(10, 10); + v.add(cc.v2(5, 5));// return Vec2 {x: 15, y: 15}; + ``` + */ + add(vector: Vec2, out?: Vec2): Vec2; + /** + !#en Adds this vector. If you want to save result to another vector, use add() instead. + !#zh å‘é‡åŠ æ³•ã€‚å¦‚æžœä½ æƒ³ä¿å˜ç»“果到å¦ä¸€ä¸ªå‘é‡ï¼Œä½¿ç”¨ add() 代替。 + @param vector vector + */ + addSelf(vector: Vec2): Vec2; + /** + !#en Subtracts one vector from this. + !#zh å‘é‡å‡æ³•。 + @param vector vector + + @example + ```js + var v = cc.v2(10, 10); + v.subSelf(cc.v2(5, 5));// return Vec2 {x: 5, y: 5}; + ``` + */ + subtract(vector: Vec2): Vec2; + /** + !#en Multiplies this by a number. + !#zh 缩放当å‰å‘é‡ã€‚ + @param num num + + @example + ```js + var v = cc.v2(10, 10); + v.multiply(5);// return Vec2 {x: 50, y: 50}; + ``` + */ + multiplyScalar(num: number): Vec2; + /** + !#en Multiplies two vectors. + !#zh 分é‡ç›¸ä¹˜ã€‚ + @param vector vector + + @example + ```js + var v = cc.v2(10, 10); + v.multiply(cc.v2(5, 5));// return Vec2 {x: 50, y: 50}; + ``` + */ + multiply(vector: Vec2): Vec2; + /** + !#en Divides by a number. + !#zh å‘é‡é™¤æ³•。 + @param num num + + @example + ```js + var v = cc.v2(10, 10); + v.divide(5); // return Vec2 {x: 2, y: 2}; + ``` + */ + divide(num: number): Vec2; + /** + !#en Negates the components. + !#zh å‘é‡å–å。 + + @example + ```js + var v = cc.v2(10, 10); + v.negate(); // return Vec2 {x: -10, y: -10}; + ``` + */ + negate(): Vec2; + /** + !#en Dot product + !#zh 当å‰å‘é‡ä¸ŽæŒ‡å®šå‘é‡è¿›è¡Œç‚¹ä¹˜ã€‚ + @param vector vector + + @example + ```js + var v = cc.v2(10, 10); + v.dot(cc.v2(5, 5)); // return 100; + ``` + */ + dot(vector?: Vec2): number; + /** + !#en Cross product + !#zh 当å‰å‘é‡ä¸ŽæŒ‡å®šå‘é‡è¿›è¡Œå‰ä¹˜ã€‚ + @param vector vector + + @example + ```js + var v = cc.v2(10, 10); + v.cross(cc.v2(5, 5)); // return 0; + ``` + */ + cross(vector?: Vec2): number; + /** + !#en Returns the length of this vector. + !#zh 返回该å‘é‡çš„长度。 + + @example + ```js + var v = cc.v2(10, 10); + v.len(); // return 14.142135623730951; + ``` + */ + len(): number; + /** + !#en Returns the squared length of this vector. + !#zh 返回该å‘é‡çš„长度平方。 + + @example + ```js + var v = cc.v2(10, 10); + v.lengthSqr(); // return 200; + ``` + */ + lengthSqr(): number; + /** + !#en Make the length of this vector to 1. + !#zh å‘é‡å½’一化,让这个å‘é‡çš„长度为 1。 + + @example + ```js + var v = cc.v2(10, 10); + v.normalizeSelf(); // return Vec2 {x: 0.7071067811865475, y: 0.7071067811865475}; + ``` + */ + normalizeSelf(): Vec2; + /** + !#en + Returns this vector with a magnitude of 1.<br/> + <br/> + Note that the current vector is unchanged and a new normalized vector is returned. If you want to normalize the current vector, use normalizeSelf function. + !#zh + 返回归一化åŽçš„å‘é‡ã€‚<br/> + <br/> + 注æ„,当å‰å‘é‡ä¸å˜ï¼Œå¹¶è¿”回一个新的归一化å‘é‡ã€‚å¦‚æžœä½ æƒ³æ¥å½’一化当å‰å‘é‡ï¼Œå¯ä½¿ç”¨ normalizeSelf 函数。 + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + */ + normalize(out?: Vec2): Vec2; + /** + !#en Get angle in radian between this and vector. + !#zh 夹角的弧度。 + @param vector vector + */ + angle(vector: Vec2): number; + /** + !#en Get angle in radian between this and vector with direction. + !#zh 带方å‘的夹角的弧度。 + @param vector vector + */ + signAngle(vector: Vec2): number; + /** + !#en rotate + !#zh 返回旋转给定弧度åŽçš„æ–°å‘é‡ã€‚ + @param radians radians + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + */ + rotate(radians: number, out?: Vec2): Vec2; + /** + !#en rotate self + !#zh 按指定弧度旋转å‘é‡ã€‚ + @param radians radians + */ + rotateSelf(radians: number): Vec2; + /** + !#en Calculates the projection of the current vector over the given vector. + !#zh 返回当å‰å‘é‡åœ¨æŒ‡å®š vector å‘é‡ä¸Šçš„æŠ•å½±å‘é‡ã€‚ + @param vector vector + + @example + ```js + var v1 = cc.v2(20, 20); + var v2 = cc.v2(5, 5); + v1.project(v2); // Vec2 {x: 20, y: 20}; + ``` + */ + project(vector: Vec2): Vec2; + /** + Transforms the vec2 with a mat4. 3rd vector component is implicitly '0', 4th vector component is implicitly '1' + @param m matrix to transform with + @param out the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + */ + transformMat4(m: Mat4, out?: Vec2): Vec2; + /** + Returns the maximum value in x, y. + */ + maxAxis(): number; + } + /** !#en Representation of 3D vectors and points. + !#zh 表示 3D å‘é‡å’Œåæ ‡ */ + export class Vec3 extends ValueType { + /** + !#en Returns the length of this vector. + !#zh 返回该å‘é‡çš„长度。 + + @example + ```js + var v = cc.v3(10, 10, 10); + v.mag(); // return 17.320508075688775; + ``` + */ + mag(): number; + /** + !#en Returns the squared length of this vector. + !#zh 返回该å‘é‡çš„长度平方。 + */ + magSqr(): number; + /** + !#en Subtracts one vector from this. If you want to save result to another vector, use sub() instead. + !#zh å‘é‡å‡æ³•ã€‚å¦‚æžœä½ æƒ³ä¿å˜ç»“果到å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ sub() 代替。 + @param vector vector + */ + subSelf(vector: Vec3): Vec3; + /** + !#en Subtracts one vector from this, and returns the new result. + !#zh å‘é‡å‡æ³•,并返回新结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + sub(vector: Vec3, out?: Vec3): Vec3; + /** + !#en Multiplies this by a number. If you want to save result to another vector, use mul() instead. + !#zh 缩放当å‰å‘é‡ã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ mul() 代替。 + @param num num + */ + mulSelf(num: number): Vec3; + /** + !#en Multiplies by a number, and returns the new result. + !#zh 缩放å‘é‡ï¼Œå¹¶è¿”回新结果。 + @param num num + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + mul(num: number, out?: Vec3): Vec3; + /** + !#en Divides by a number. If you want to save result to another vector, use div() instead. + !#zh å‘é‡é™¤æ³•ã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ div() 代替。 + @param num num + */ + divSelf(num: number): Vec3; + /** + !#en Divides by a number, and returns the new result. + !#zh å‘é‡é™¤æ³•,并返回新的结果。 + @param num num + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + div(num: number, out?: Vec3): Vec3; + /** + !#en Multiplies two vectors. + !#zh 分é‡ç›¸ä¹˜ã€‚ + @param vector vector + */ + scaleSelf(vector: Vec3): Vec3; + /** + !#en Multiplies two vectors, and returns the new result. + !#zh 分é‡ç›¸ä¹˜ï¼Œå¹¶è¿”回新的结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + scale(vector: Vec3, out?: Vec3): Vec3; + /** + !#en Negates the components. If you want to save result to another vector, use neg() instead. + !#zh å‘é‡å–åã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ neg() 代替。 + */ + negSelf(): Vec3; + /** + !#en Negates the components, and returns the new result. + !#zh 返回å–ååŽçš„æ–°å‘é‡ã€‚ + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + neg(out?: Vec3): Vec3; + /** !#en return a Vec3 object with x = 1, y = 1, z = 1. + !#zh æ–° Vec3 对象。 */ + static ONE: Vec3; + /** !#en return a Vec3 object with x = 0, y = 0, z = 0. + !#zh 返回 x = 0,y = 0,z = 0 çš„ Vec3 对象。 */ + static ZERO: Vec3; + /** !#en return a Vec3 object with x = 0, y = 1, z = 0. + !#zh 返回 x = 0, y = 1, z = 0 çš„ Vec3 对象。 */ + static UP: Vec3; + /** !#en return a Vec3 object with x = 1, y = 0, z = 0. + !#zh 返回 x = 1,y = 0,z = 0 çš„ Vec3 对象。 */ + static RIGHT: Vec3; + /** !#en return a Vec3 object with x = 0, y = 0, z = 1. + !#zh 返回 x = 0,y = 0,z = 1 çš„ Vec3 对象。 */ + static FORWARD: Vec3; + /** + !#zh å°†ç›®æ ‡èµ‹å€¼ä¸ºé›¶å‘é‡ + !#en The target of an assignment zero vector + */ + static zero<Out extends IVec3Like> (out: Out): Out; + /** + !#zh 获得指定å‘é‡çš„æ‹·è´ + !#en Obtaining copy vectors designated + */ + static clone<Out extends IVec3Like> (a: Out): Vec3; + /** + !#zh å¤åˆ¶ç›®æ ‡å‘é‡ + !#en Copy the target vector + */ + static copy<Out extends IVec3Like, Vec3Like extends IVec3Like> (out: Out, a: Vec3Like): Out; + /** + !#zh 设置å‘é‡å€¼ + !#en Set to value + */ + static set<Out extends IVec3Like> (out: Out, x: number, y: number, z: number): Out; + /** + !#zh é€å…ƒç´ å‘é‡åŠ æ³• + !#en Element-wise vector addition + */ + static add<Out extends IVec3Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‡æ³• + !#en Element-wise vector subtraction + */ + static subtract<Out extends IVec3Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡ä¹˜æ³• (分é‡ç§¯) + !#en Element-wise vector multiplication (product component) + */ + static multiply<Out extends IVec3Like, Vec3Like_1 extends IVec3Like, Vec3Like_2 extends IVec3Like> (out: Out, a: Vec3Like_1, b: Vec3Like_2): Out; + /** + !#zh é€å…ƒç´ å‘é‡é™¤æ³• + !#en Element-wise vector division + */ + static divide<Out extends IVec3Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‘ä¸Šå–æ•´ + !#en Rounding up by elements of the vector + */ + static ceil<Out extends IVec3Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‘䏋喿•´ + !#en Element vector by rounding down + */ + static floor<Out extends IVec3Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘釿œ€å°å€¼ + !#en The minimum by-element vector + */ + static min<Out extends IVec3Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘釿œ€å¤§å€¼ + !#en The maximum value of the element-wise vector + */ + static max<Out extends IVec3Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å››èˆäº”入喿•´ + !#en Element-wise vector of rounding to whole + */ + static round<Out extends IVec3Like> (out: Out, a: Out): Out; + /** + !#zh å‘釿 ‡é‡ä¹˜æ³• + !#en Vector scalar multiplication + */ + static multiplyScalar<Out extends IVec3Like, Vec3Like extends IVec3Like> (out: Out, a: Vec3Like, b: number): Out; + /** + !#zh é€å…ƒç´ å‘é‡ä¹˜åŠ : A + B * scale + !#en Element-wise vector multiply add: A + B * scale + */ + static scaleAndAdd<Out extends IVec3Like> (out: Out, a: Out, b: Out, scale: number): Out; + /** + !#zh 求两å‘é‡çš„æ¬§æ°è·ç¦» + !#en Seeking two vectors Euclidean distance + */ + static distance<Out extends IVec3Like> (a: Out, b: Out): number; + /** + !#zh 求两å‘é‡çš„æ¬§æ°è·ç¦»å¹³æ–¹ + !#en Euclidean distance squared seeking two vectors + */ + static squaredDistance<Out extends IVec3Like> (a: Out, b: Out): number; + /** + !#zh 求å‘é‡é•¿åº¦ + !#en Seeking vector length + */ + static len<Out extends IVec3Like> (a: Out): number; + /** + !#zh 求å‘é‡é•¿åº¦å¹³æ–¹ + !#en Seeking squared vector length + */ + static lengthSqr<Out extends IVec3Like> (a: Out): number; + /** + !#zh é€å…ƒç´ å‘é‡å–è´Ÿ + !#en By taking the negative elements of the vector + */ + static negate<Out extends IVec3Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å–倒数,接近 0 时返回 Infinity + !#en Element vector by taking the inverse, return near 0 Infinity + */ + static inverse<Out extends IVec3Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å–倒数,接近 0 时返回 0 + !#en Element vector by taking the inverse, return near 0 0 + */ + static inverseSafe<Out extends IVec3Like> (out: Out, a: Out): Out; + /** + !#zh 归一化å‘é‡ + !#en Normalized vector + */ + static normalize<Out extends IVec3Like, Vec3Like extends IVec3Like> (out: Out, a: Vec3Like): Out; + /** + !#zh å‘é‡ç‚¹ç§¯ï¼ˆæ•°é‡ç§¯ï¼‰ + !#en Vector dot product (scalar product) + */ + static dot<Out extends IVec3Like> (a: Out, b: Out): number; + /** + !#zh å‘é‡å‰ç§¯ï¼ˆå‘é‡ç§¯ï¼‰ + !#en Vector cross product (vector product) + */ + static cross<Out extends IVec3Like, Vec3Like_1 extends IVec3Like, Vec3Like_2 extends IVec3Like> (out: Out, a: Vec3Like_1, b: Vec3Like_2): Out; + /** + !#zh é€å…ƒç´ å‘é‡çº¿æ€§æ’值: A + t * (B - A) + !#en Vector element by element linear interpolation: A + t * (B - A) + */ + static lerp<Out extends IVec3Like> (out: Out, a: Out, b: Out, t: number): Out; + /** + !#zh 生æˆä¸€ä¸ªåœ¨å•ä½çƒä½“上å‡åŒ€åˆ†å¸ƒçš„éšæœºå‘é‡ + !#en Generates a uniformly distributed random vectors on the unit sphere + @param scale 生æˆçš„å‘é‡é•¿åº¦ + */ + static random<Out extends IVec3Like> (out: Out, scale?: number): Out; + /** + !#zh å‘é‡ä¸Žå››ç»´çŸ©é˜µä¹˜æ³•,默认å‘é‡ç¬¬å››ä½ä¸º 1。 + !#en Four-dimensional vector and matrix multiplication, the default vectors fourth one. + */ + static transformMat4<Out extends IVec3Like, Vec3Like extends IVec3Like, MatLike extends IMat4Like> (out: Out, a: Vec3Like, mat: MatLike): Out; + /** + !#zh å‘é‡ä¸Žå››ç»´çŸ©é˜µä¹˜æ³•,默认å‘é‡ç¬¬å››ä½ä¸º 0。 + !#en Four-dimensional vector and matrix multiplication, vector fourth default is 0. + */ + static transformMat4Normal<Out extends IVec3Like, MatLike extends IMat4Like> (out: Out, a: Out, mat: MatLike): Out; + /** + !#zh å‘é‡ä¸Žä¸‰ç»´çŸ©é˜µä¹˜æ³• + !#en Dimensional vector matrix multiplication + */ + static transformMat3<Out extends IVec3Like, MatLike extends IMat3Like> (out: Out, a: Out, mat: MatLike): Out; + /** + !#zh å‘é‡ä»¿å°„å˜æ¢ + !#en Affine transformation vector + */ + static transformAffine<Out extends IVec3Like, VecLike extends IVec3Like, MatLike extends IMat4Like>(out: Out, v: VecLike, mat: MatLike): Out; + /** + !#zh å‘é‡å››å…ƒæ•°ä¹˜æ³• + !#en Vector quaternion multiplication + */ + static transformQuat<Out extends IVec3Like, VecLike extends IVec3Like, QuatLike extends IQuatLike> (out: Out, a: VecLike, q: QuatLike): Out; + /** + !#zh 以缩放 -> 旋转 -> 平移顺åºå˜æ¢å‘é‡ + !#en To scale -> rotation -> transformation vector sequence translation + */ + static transformRTS<Out extends IVec3Like, VecLike extends IVec3Like, QuatLike extends IQuatLike>(out: Out, a: VecLike, r: QuatLike, t: VecLike, s: VecLike): Out; + /** + !#zh 以平移 -> 旋转 -> 缩放顺åºé€†å˜æ¢å‘é‡ + !#en Translational -> rotation -> Zoom inverse transformation vector sequence + */ + static transformInverseRTS<Out extends IVec3Like, VecLike extends IVec3Like, QuatLike extends IQuatLike>(out: Out, a: VecLike, r: QuatLike, t: VecLike, s: VecLike): Out; + /** + !#zh 绕 X 轴旋转å‘釿Œ‡å®šå¼§åº¦ + !#en Rotation vector specified angle about the X axis + @param v 待旋转å‘é‡ + @param o 旋转ä¸å¿ƒ + @param a 旋转弧度 + */ + static rotateX<Out extends IVec3Like> (out: Out, v: Out, o: Out, a: number): Out; + /** + !#zh 绕 Y 轴旋转å‘釿Œ‡å®šå¼§åº¦ + !#en Rotation vector specified angle around the Y axis + @param v 待旋转å‘é‡ + @param o 旋转ä¸å¿ƒ + @param a 旋转弧度 + */ + static rotateY<Out extends IVec3Like> (out: Out, v: Out, o: Out, a: number): Out; + /** + !#zh 绕 Z 轴旋转å‘釿Œ‡å®šå¼§åº¦ + !#en Around the Z axis specified angle vector + @param v 待旋转å‘é‡ + @param o 旋转ä¸å¿ƒ + @param a 旋转弧度 + */ + static rotateZ<Out extends IVec3Like> (out: Out, v: Out, o: Out, a: number): Out; + /** + !#zh å‘é‡ç‰ä»·åˆ¤æ– + !#en Equivalent vectors Analyzing + */ + static strictEquals<Out extends IVec3Like> (a: Out, b: Out): boolean; + /** + !#zh 排除浮点数误差的å‘é‡è¿‘ä¼¼ç‰ä»·åˆ¤æ– + !#en Negative error vector floating point approximately equivalent Analyzing + */ + static equals<Out extends IVec3Like> (a: Out, b: Out, epsilon?: number): boolean; + /** + !#zh 求两å‘é‡å¤¹è§’弧度 + !#en Radian angle between two vectors seek + */ + static angle<Out extends IVec3Like> (a: Out, b: Out): number; + /** + !#zh 计算å‘é‡åœ¨æŒ‡å®šå¹³é¢ä¸Šçš„æŠ•å½± + !#en Calculating a projection vector in the specified plane + @param a 待投影å‘é‡ + @param n 指定平é¢çš„æ³•线 + */ + static projectOnPlane<Out extends IVec3Like> (out: Out, a: Out, n: Out): Out; + /** + !#zh 计算å‘é‡åœ¨æŒ‡å®šå‘é‡ä¸Šçš„æŠ•å½± + !#en Projection vector calculated in the vector designated + @param a 待投影å‘é‡ + @param n ç›®æ ‡å‘é‡ + */ + static project<Out extends IVec3Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh å‘é‡è½¬æ•°ç»„ + !#en Vector transfer array + @param ofs 数组起始åç§»é‡ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, v: IVec3Like, ofs?: number): Out; + /** + !#zh 数组转å‘é‡ + !#en Array steering amount + @param ofs 数组起始åç§»é‡ + */ + static fromArray <Out extends IVec3Like> (out: Out, arr: IWritableArrayLike<number>, ofs?: number): Out; + x: number; + y: number; + z: number; + /** + !#en + Constructor + see {{#crossLink "cc/vec3:method"}}cc.v3{{/crossLink}} + !#zh + æž„é€ å‡½æ•°ï¼Œå¯æŸ¥çœ‹ {{#crossLink "cc/vec3:method"}}cc.v3{{/crossLink}} + @param x x + @param y y + @param z z + */ + constructor(x?: Vec3|number, y?: number, z?: number); + /** + !#en clone a Vec3 value + !#zh 克隆一个 Vec3 值 + */ + clone(): Vec3; + /** + !#en Set the current vector value with the given vector. + !#zh 用å¦ä¸€ä¸ªå‘é‡è®¾ç½®å½“å‰çš„å‘é‡å¯¹è±¡å€¼ã€‚ + @param newValue !#en new value to set. !#zh è¦è®¾ç½®çš„æ–°å€¼ + */ + set(newValue: Vec3): Vec3; + /** + !#en Check whether the vector equals another one + !#zh 当å‰çš„å‘釿˜¯å¦ä¸ŽæŒ‡å®šçš„å‘é‡ç›¸ç‰ã€‚ + @param other other + */ + equals(other: Vec3): boolean; + /** + !#en Check whether two vector equal with some degree of variance. + !#zh + 近似判æ–两个点是å¦ç›¸ç‰ã€‚<br/> + åˆ¤æ– 2 个å‘釿˜¯å¦åœ¨æŒ‡å®šæ•°å€¼çš„范围之内,如果在则返回 true,å之则返回 false。 + @param other other + @param variance variance + */ + fuzzyEquals(other: Vec3, variance: number): boolean; + /** + !#en Transform to string with vector informations + !#zh 转æ¢ä¸ºæ–¹ä¾¿é˜…读的å—符串。 + */ + toString(): string; + /** + !#en Calculate linear interpolation result between this vector and another one with given ratio + !#zh 线性æ’值。 + @param to to + @param ratio the interpolation coefficient + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + lerp(to: Vec3, ratio: number, out?: Vec3): Vec3; + /** + !#en Clamp the vector between from float and to float. + !#zh + 返回指定é™åˆ¶åŒºåŸŸåŽçš„å‘é‡ã€‚<br/> + å‘é‡å¤§äºŽ max_inclusive 则返回 max_inclusive。<br/> + å‘é‡å°äºŽ min_inclusive 则返回 min_inclusive。<br/> + å¦åˆ™è¿”回自身。 + @param min_inclusive min_inclusive + @param max_inclusive max_inclusive + */ + clampf(min_inclusive: Vec3, max_inclusive: Vec3): Vec3; + /** + !#en Adds this vector. If you want to save result to another vector, use add() instead. + !#zh å‘é‡åŠ æ³•ã€‚å¦‚æžœä½ æƒ³ä¿å˜ç»“果到å¦ä¸€ä¸ªå‘é‡ï¼Œä½¿ç”¨ add() 代替。 + @param vector vector + */ + addSelf(vector: Vec3): Vec3; + /** + !#en Adds two vectors, and returns the new result. + !#zh å‘é‡åŠ æ³•ï¼Œå¹¶è¿”å›žæ–°ç»“æžœã€‚ + @param vector vector + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + add(vector: Vec3, out?: Vec3): Vec3; + /** + !#en Subtracts one vector from this. + !#zh å‘é‡å‡æ³•。 + @param vector vector + */ + subtract(vector: Vec3): Vec3; + /** + !#en Multiplies this by a number. + !#zh 缩放当å‰å‘é‡ã€‚ + @param num num + */ + multiplyScalar(num: number): Vec3; + /** + !#en Multiplies two vectors. + !#zh 分é‡ç›¸ä¹˜ã€‚ + @param vector vector + */ + multiply(vector: Vec3): Vec3; + /** + !#en Divides by a number. + !#zh å‘é‡é™¤æ³•。 + @param num num + */ + divide(num: number): Vec3; + /** + !#en Negates the components. + !#zh å‘é‡å–å。 + */ + negate(): Vec3; + /** + !#en Dot product + !#zh 当å‰å‘é‡ä¸ŽæŒ‡å®šå‘é‡è¿›è¡Œç‚¹ä¹˜ã€‚ + @param vector vector + */ + dot(vector?: Vec3): number; + /** + !#en Cross product + !#zh 当å‰å‘é‡ä¸ŽæŒ‡å®šå‘é‡è¿›è¡Œå‰ä¹˜ã€‚ + @param vector vector + @param out out + */ + cross(vector: Vec3, out?: Vec3): Vec3; + /** + !#en Returns the length of this vector. + !#zh 返回该å‘é‡çš„长度。 + + @example + ```js + var v = cc.v3(10, 10, 10); + v.len(); // return 17.320508075688775; + ``` + */ + len(): number; + /** + !#en Returns the squared length of this vector. + !#zh 返回该å‘é‡çš„长度平方。 + */ + lengthSqr(): number; + /** + !#en Make the length of this vector to 1. + !#zh å‘é‡å½’一化,让这个å‘é‡çš„长度为 1。 + */ + normalizeSelf(): Vec3; + /** + !#en + Returns this vector with a magnitude of 1.<br/> + <br/> + Note that the current vector is unchanged and a new normalized vector is returned. If you want to normalize the current vector, use normalizeSelf function. + !#zh + 返回归一化åŽçš„å‘é‡ã€‚<br/> + <br/> + 注æ„,当å‰å‘é‡ä¸å˜ï¼Œå¹¶è¿”回一个新的归一化å‘é‡ã€‚å¦‚æžœä½ æƒ³æ¥å½’一化当å‰å‘é‡ï¼Œå¯ä½¿ç”¨ normalizeSelf 函数。 + @param out optional, the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + normalize(out?: Vec3): Vec3; + /** + Transforms the vec3 with a mat4. 4th vector component is implicitly '1' + @param m matrix to transform with + @param out the receiving vector, you can pass the same vec3 to save result to itself, if not provided, a new vec3 will be created + */ + transformMat4(m: Mat4, out?: Vec3): Vec3; + /** + Returns the maximum value in x, y, and z + */ + maxAxis(): number; + /** + !#en Get angle in radian between this and vector. + !#zh 夹角的弧度。 + @param vector vector + */ + angle(vector: Vec3): number; + /** + !#en Calculates the projection of the current vector over the given vector. + !#zh 返回当å‰å‘é‡åœ¨æŒ‡å®š vector å‘é‡ä¸Šçš„æŠ•å½±å‘é‡ã€‚ + @param vector vector + + @example + ```js + var v1 = cc.v3(20, 20, 20); + var v2 = cc.v3(5, 5, 5); + v1.project(v2); // Vec3 {x: 20, y: 20, z: 20}; + ``` + */ + project(vector: Vec3): Vec3; + /** + !#en Get angle in radian between this and vector with direction. <br/> + In order to compatible with the vec2 API. + !#zh 带方å‘的夹角的弧度。该方法仅用åšå…¼å®¹ 2D 计算。 + @param vector vector + */ + signAngle(vector: Vec3|Vec2): number; + /** + !#en rotate. In order to compatible with the vec2 API. + !#zh 返回旋转给定弧度åŽçš„æ–°å‘é‡ã€‚该方法仅用åšå…¼å®¹ 2D 计算。 + @param radians radians + @param out optional, the receiving vector, you can pass the same vec2 to save result to itself, if not provided, a new vec2 will be created + */ + rotate(radians: number, out?: Vec3): Vec2; + /** + !#en rotate self. In order to compatible with the vec2 API. + !#zh 按指定弧度旋转å‘é‡ã€‚该方法仅用åšå…¼å®¹ 2D 计算。 + @param radians radians + */ + rotateSelf(radians: number): Vec3; + } + /** !#en Representation of 3D vectors and points. + !#zh 表示 3D å‘é‡å’Œåæ ‡ */ + export class Vec4 extends ValueType { + /** + !#en Subtracts one vector from this. If you want to save result to another vector, use sub() instead. + !#zh å‘é‡å‡æ³•ã€‚å¦‚æžœä½ æƒ³ä¿å˜ç»“果到å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ sub() 代替。 + @param vector vector + */ + subSelf(vector: Vec4): Vec4; + /** + !#en Subtracts one vector from this, and returns the new result. + !#zh å‘é‡å‡æ³•,并返回新结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + sub(vector: Vec4, out?: Vec4): Vec4; + /** + !#en Multiplies this by a number. If you want to save result to another vector, use mul() instead. + !#zh 缩放当å‰å‘é‡ã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ mul() 代替。 + @param num num + */ + mulSelf(num: number): Vec4; + /** + !#en Multiplies by a number, and returns the new result. + !#zh 缩放å‘é‡ï¼Œå¹¶è¿”回新结果。 + @param num num + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + mul(num: number, out?: Vec4): Vec4; + /** + !#en Divides by a number. If you want to save result to another vector, use div() instead. + !#zh å‘é‡é™¤æ³•ã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ div() 代替。 + @param num num + */ + divSelf(num: number): Vec4; + /** + !#en Divides by a number, and returns the new result. + !#zh å‘é‡é™¤æ³•,并返回新的结果。 + @param num num + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + div(num: number, out?: Vec4): Vec4; + /** + !#en Multiplies two vectors. + !#zh 分é‡ç›¸ä¹˜ã€‚ + @param vector vector + */ + scaleSelf(vector: Vec4): Vec4; + /** + !#en Multiplies two vectors, and returns the new result. + !#zh 分é‡ç›¸ä¹˜ï¼Œå¹¶è¿”回新的结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + scale(vector: Vec4, out?: Vec4): Vec4; + /** + !#en Negates the components. If you want to save result to another vector, use neg() instead. + !#zh å‘é‡å–åã€‚å¦‚æžœä½ æƒ³ç»“æžœä¿å˜åˆ°å¦ä¸€ä¸ªå‘é‡ï¼Œå¯ä½¿ç”¨ neg() 代替。 + */ + negSelf(): Vec4; + /** + !#en Negates the components, and returns the new result. + !#zh 返回å–ååŽçš„æ–°å‘é‡ã€‚ + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + neg(out?: Vec4): Vec4; + /** + !#zh 获得指定å‘é‡çš„æ‹·è´ + !#en Obtaining copy vectors designated + */ + static clone <Out extends IVec4Like> (a: Out): Vec4; + /** + !#zh å¤åˆ¶ç›®æ ‡å‘é‡ + !#en Copy the target vector + */ + static copy <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh 设置å‘é‡å€¼ + !#en Set to value + */ + static set <Out extends IVec4Like> (out: Out, x: number, y: number, z: number, w: number): Out; + /** + !#zh é€å…ƒç´ å‘é‡åŠ æ³• + !#en Element-wise vector addition + */ + static add <Out extends IVec4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‡æ³• + !#en Element-wise vector subtraction + */ + static subtract <Out extends IVec4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡ä¹˜æ³• + !#en Element-wise vector multiplication + */ + static multiply <Out extends IVec4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡é™¤æ³• + !#en Element-wise vector division + */ + static divide <Out extends IVec4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‘ä¸Šå–æ•´ + !#en Rounding up by elements of the vector + */ + static ceil <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å‘䏋喿•´ + !#en Element vector by rounding down + */ + static floor <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘釿œ€å°å€¼ + !#en The minimum by-element vector + */ + static min <Out extends IVec4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘釿œ€å¤§å€¼ + !#en The maximum value of the element-wise vector + */ + static max <Out extends IVec4Like> (out: Out, a: Out, b: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å››èˆäº”入喿•´ + !#en Element-wise vector of rounding to whole + */ + static round <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh å‘釿 ‡é‡ä¹˜æ³• + !#en Vector scalar multiplication + */ + static multiplyScalar <Out extends IVec4Like> (out: Out, a: Out, b: number): Out; + /** + !#zh é€å…ƒç´ å‘é‡ä¹˜åŠ : A + B * scale + !#en Element-wise vector multiply add: A + B * scale + */ + static scaleAndAdd <Out extends IVec4Like> (out: Out, a: Out, b: Out, scale: number): Out; + /** + !#zh 求两å‘é‡çš„æ¬§æ°è·ç¦» + !#en Seeking two vectors Euclidean distance + */ + static distance <Out extends IVec4Like> (a: Out, b: Out): number; + /** + !#zh 求两å‘é‡çš„æ¬§æ°è·ç¦»å¹³æ–¹ + !#en Euclidean distance squared seeking two vectors + */ + static squaredDistance <Out extends IVec4Like> (a: Out, b: Out): number; + /** + !#zh 求å‘é‡é•¿åº¦ + !#en Seeking vector length + */ + static len <Out extends IVec4Like> (a: Out): number; + /** + !#zh 求å‘é‡é•¿åº¦å¹³æ–¹ + !#en Seeking squared vector length + */ + static lengthSqr <Out extends IVec4Like> (a: Out): number; + /** + !#zh é€å…ƒç´ å‘é‡å–è´Ÿ + !#en By taking the negative elements of the vector + */ + static negate <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å–倒数,接近 0 时返回 Infinity + !#en Element vector by taking the inverse, return near 0 Infinity + */ + static inverse <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh é€å…ƒç´ å‘é‡å–倒数,接近 0 时返回 0 + !#en Element vector by taking the inverse, return near 0 0 + */ + static inverseSafe <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh 归一化å‘é‡ + !#en Normalized vector + */ + static normalize <Out extends IVec4Like> (out: Out, a: Out): Out; + /** + !#zh å‘é‡ç‚¹ç§¯ï¼ˆæ•°é‡ç§¯ï¼‰ + !#en Vector dot product (scalar product) + */ + static dot <Out extends IVec4Like> (a: Out, b: Out): number; + /** + !#zh é€å…ƒç´ å‘é‡çº¿æ€§æ’值: A + t * (B - A) + !#en Vector element by element linear interpolation: A + t * (B - A) + */ + static lerp <Out extends IVec4Like> (out: Out, a: Out, b: Out, t: number): Out; + /** + !#zh 生æˆä¸€ä¸ªåœ¨å•ä½çƒä½“上å‡åŒ€åˆ†å¸ƒçš„éšæœºå‘é‡ + !#en Generates a uniformly distributed random vectors on the unit sphere + @param scale 生æˆçš„å‘é‡é•¿åº¦ + */ + static random <Out extends IVec4Like> (out: Out, scale?: number): Out; + /** + !#zh å‘é‡çŸ©é˜µä¹˜æ³• + !#en Vector matrix multiplication + */ + static transformMat4 <Out extends IVec4Like, MatLike extends IMat4Like> (out: Out, a: Out, mat: MatLike): Out; + /** + !#zh å‘é‡ä»¿å°„å˜æ¢ + !#en Affine transformation vector + */ + static transformAffine<Out extends IVec4Like, VecLike extends IVec4Like, MatLike extends IMat4Like>(out: Out, v: VecLike, mat: MatLike): Out; + /** + !#zh å‘é‡å››å…ƒæ•°ä¹˜æ³• + !#en Vector quaternion multiplication + */ + static transformQuat <Out extends IVec4Like, QuatLike extends IQuatLike> (out: Out, a: Out, q: QuatLike): Out; + /** + !#zh å‘é‡ç‰ä»·åˆ¤æ– + !#en Equivalent vectors Analyzing + */ + static strictEquals <Out extends IVec4Like> (a: Out, b: Out): boolean; + /** + !#zh 排除浮点数误差的å‘é‡è¿‘ä¼¼ç‰ä»·åˆ¤æ– + !#en Negative error vector floating point approximately equivalent Analyzing + */ + static equals <Out extends IVec4Like> (a: Out, b: Out, epsilon?: number): boolean; + /** + !#zh å‘é‡è½¬æ•°ç»„ + !#en Vector transfer array + @param ofs 数组起始åç§»é‡ + */ + static toArray <Out extends IWritableArrayLike<number>> (out: Out, v: IVec4Like, ofs?: number): Out; + /** + !#zh 数组转å‘é‡ + !#en Array steering amount + @param ofs 数组起始åç§»é‡ + */ + static fromArray <Out extends IVec4Like> (out: Out, arr: IWritableArrayLike<number>, ofs?: number): Out; + x: number; + y: number; + z: number; + w: number; + /** + !#en + Constructor + see {{#crossLink "cc/vec4:method"}}cc.v4{{/crossLink}} + !#zh + æž„é€ å‡½æ•°ï¼Œå¯æŸ¥çœ‹ {{#crossLink "cc/vec4:method"}}cc.v4{{/crossLink}} + @param x x + @param y y + @param z z + @param w w + */ + constructor(x?: number, y?: number, z?: number, w?: number); + /** + !#en clone a Vec4 value + !#zh 克隆一个 Vec4 值 + */ + clone(): Vec4; + /** + !#en Set the current vector value with the given vector. + !#zh 用å¦ä¸€ä¸ªå‘é‡è®¾ç½®å½“å‰çš„å‘é‡å¯¹è±¡å€¼ã€‚ + @param newValue !#en new value to set. !#zh è¦è®¾ç½®çš„æ–°å€¼ + */ + set(newValue: Vec4): Vec4; + /** + !#en Check whether the vector equals another one + !#zh 当å‰çš„å‘釿˜¯å¦ä¸ŽæŒ‡å®šçš„å‘é‡ç›¸ç‰ã€‚ + @param other other + @param epsilon epsilon + */ + equals(other: Vec4, epsilon?: number): boolean; + /** + !#en Check whether the vector equals another one + !#zh 判æ–当å‰å‘釿˜¯å¦åœ¨è¯¯å·®èŒƒå›´å†…与指定分é‡çš„å‘é‡ç›¸ç‰ã€‚ + @param x 相比较的å‘é‡çš„ x 分é‡ã€‚ + @param y 相比较的å‘é‡çš„ y 分é‡ã€‚ + @param z 相比较的å‘é‡çš„ z 分é‡ã€‚ + @param w 相比较的å‘é‡çš„ w 分é‡ã€‚ + @param epsilon å…许的误差,应为éžè´Ÿæ•°ã€‚ + */ + equals4f(x: number, y: number, z: number, w: number, epsilon?: number): boolean; + /** + !#en Check whether strict equals other Vec4 + !#zh 判æ–当å‰å‘釿˜¯å¦ä¸ŽæŒ‡å®šå‘é‡ç›¸ç‰ã€‚两å‘é‡çš„å„分é‡éƒ½åˆ†åˆ«ç›¸ç‰æ—¶è¿”回 `true`ï¼›å¦åˆ™è¿”回 `false`。 + @param other 相比较的å‘é‡ã€‚ + */ + strictEquals(other: Vec4): boolean; + /** + !#en Check whether strict equals other Vec4 + !#zh 判æ–当å‰å‘釿˜¯å¦ä¸ŽæŒ‡å®šåˆ†é‡çš„å‘é‡ç›¸ç‰ã€‚两å‘é‡çš„å„分é‡éƒ½åˆ†åˆ«ç›¸ç‰æ—¶è¿”回 `true`ï¼›å¦åˆ™è¿”回 `false`。 + @param x 指定å‘é‡çš„ x 分é‡ã€‚ + @param y 指定å‘é‡çš„ y 分é‡ã€‚ + @param z 指定å‘é‡çš„ z 分é‡ã€‚ + @param w 指定å‘é‡çš„ w 分é‡ã€‚ + */ + strictEquals4f(x: number, y: number, z: number, w: number): boolean; + /** + !#en Calculate linear interpolation result between this vector and another one with given ratio + !#zh æ ¹æ®æŒ‡å®šçš„æ’å€¼æ¯”çŽ‡ï¼Œä»Žå½“å‰å‘é‡åˆ°ç›®æ ‡å‘é‡ä¹‹é—´åšæ’值。 + @param to ç›®æ ‡å‘é‡ã€‚ + @param ratio æ’值比率,范围为 [0,1]。 + */ + lerp(to: Vec4, ratio: number): Vec4; + /** + !#en Transform to string with vector informations + !#zh 返回当å‰å‘é‡çš„å—符串表示。 + */ + toString(): string; + /** + !#en Clamp the vector between minInclusive and maxInclusive. + !#zh 设置当å‰å‘é‡çš„值,使其å„个分é‡éƒ½å¤„于指定的范围内。 + @param minInclusive æ¯ä¸ªåˆ†é‡éƒ½ä»£è¡¨äº†å¯¹åº”分é‡å…许的最å°å€¼ã€‚ + @param maxInclusive æ¯ä¸ªåˆ†é‡éƒ½ä»£è¡¨äº†å¯¹åº”分é‡å…许的最大值。 + */ + clampf(minInclusive: Vec4, maxInclusive: Vec4): Vec4; + /** + !#en Adds this vector. If you want to save result to another vector, use add() instead. + !#zh å‘é‡åŠ æ³•ã€‚å¦‚æžœä½ æƒ³ä¿å˜ç»“果到å¦ä¸€ä¸ªå‘é‡ï¼Œä½¿ç”¨ add() 代替。 + @param vector vector + */ + addSelf(vector: Vec4): Vec4; + /** + !#en Adds two vectors, and returns the new result. + !#zh å‘é‡åŠ æ³•ï¼Œå¹¶è¿”å›žæ–°ç»“æžœã€‚ + @param vector vector + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + add(vector: Vec4, out?: Vec4): Vec4; + /** + !#en Subtracts one vector from this, and returns the new result. + !#zh å‘é‡å‡æ³•,并返回新结果。 + @param vector vector + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + subtract(vector: Vec4, out?: Vec4): Vec4; + /** + !#en Multiplies this by a number. + !#zh 缩放当å‰å‘é‡ã€‚ + @param num num + */ + multiplyScalar(num: number): Vec4; + /** + !#en Multiplies two vectors. + !#zh 分é‡ç›¸ä¹˜ã€‚ + @param vector vector + */ + multiply(vector: Vec4): Vec4; + /** + !#en Divides by a number. + !#zh å‘é‡é™¤æ³•。 + @param num num + */ + divide(num: number): Vec4; + /** + !#en Negates the components. + !#zh å‘é‡å–å + */ + negate(): Vec4; + /** + !#en Dot product + !#zh 当å‰å‘é‡ä¸ŽæŒ‡å®šå‘é‡è¿›è¡Œç‚¹ä¹˜ã€‚ + @param vector vector + */ + dot(vector?: Vec4): number; + /** + !#en Cross product + !#zh 当å‰å‘é‡ä¸ŽæŒ‡å®šå‘é‡è¿›è¡Œå‰ä¹˜ã€‚ + @param vector vector + @param out out + */ + cross(vector: Vec4, out?: Vec4): Vec4; + /** + !#en Returns the length of this vector. + !#zh 返回该å‘é‡çš„长度。 + + @example + ```js + var v = cc.v4(10, 10); + v.len(); // return 14.142135623730951; + ``` + */ + len(): number; + /** + !#en Returns the squared length of this vector. + !#zh 返回该å‘é‡çš„长度平方。 + */ + lengthSqr(): number; + /** + !#en Make the length of this vector to 1. + !#zh å‘é‡å½’一化,让这个å‘é‡çš„长度为 1。 + */ + normalizeSelf(): Vec4; + /** + !#en + Returns this vector with a magnitude of 1.<br/> + <br/> + Note that the current vector is unchanged and a new normalized vector is returned. If you want to normalize the current vector, use normalizeSelf function. + !#zh + 返回归一化åŽçš„å‘é‡ã€‚<br/> + <br/> + 注æ„,当å‰å‘é‡ä¸å˜ï¼Œå¹¶è¿”回一个新的归一化å‘é‡ã€‚å¦‚æžœä½ æƒ³æ¥å½’一化当å‰å‘é‡ï¼Œå¯ä½¿ç”¨ normalizeSelf 函数。 + @param out optional, the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + normalize(out?: Vec4): Vec4; + /** + Transforms the vec4 with a mat4. 4th vector component is implicitly '1' + @param m matrix to transform with + @param out the receiving vector, you can pass the same vec4 to save result to itself, if not provided, a new vec4 will be created + */ + transformMat4(m: Mat4, out?: Vec4): Vec4; + /** + Returns the maximum value in x, y, z, w. + */ + maxAxis(): number; + } + /** !#en The animation curve of 3d particle. + !#zh 3D ç²’å动画曲线 */ + export class AnimationCurve { + } + /** !#en The burst of 3d particle. + !#zh 3D ç²’åå‘射时的爆å‘个数 */ + export class Burst { + /** !#en Time between the start of the particle system and the trigger of this Brust + !#zh ç²’å系统开始è¿è¡Œåˆ°è§¦å‘æ¤æ¬¡ Brust 的时间 */ + time: number; + /** !#en Minimum number of emitted particles + !#zh å‘å°„ç²’åçš„æœ€å°æ•°é‡ */ + minCount: number; + /** !#en Maximum number of emitted particles + !#zh å‘å°„ç²’åçš„æœ€å¤§æ•°é‡ */ + maxCount: number; + /** !#en The number of times Burst was triggered. + !#zh Burst çš„è§¦å‘æ¬¡æ•° */ + repeatCount: number; + /** !#en Interval of each trigger + !#zh æ¯æ¬¡è§¦å‘的间隔时间 */ + repeatInterval: number; + /** !#en Number of particles emitted + !#zh å‘射的粒åçš„æ•°é‡ */ + count: CurveRange; + } + /** !#en The ParticleSystem3D Component. + !#zh 3D ç²’å组件 */ + export class ParticleSystem3D extends RenderComponent { + /** !#en The run time of particle. + !#zh ç²’å系统è¿è¡Œæ—¶é—´ */ + duration: number; + /** !#en The maximum number of particles that a particle system can generate. + !#zh ç²’å系统能生æˆçš„æœ€å¤§ç²’åæ•°é‡ */ + capacity: number; + /** !#en Whether the particle system loops. + !#zh ç²’å系统是å¦å¾ªçŽ¯æ’æ”¾ */ + loop: boolean; + /** !#en Whether the particles start playing automatically after loaded. + !#zh ç²’åç³»ç»ŸåŠ è½½åŽæ˜¯å¦è‡ªåŠ¨å¼€å§‹æ’æ”¾ */ + playOnAwake: boolean; + /** !#en When selected, the particle system will start playing after one round has been played (only effective when loop is enabled). + !#zh 选ä¸ä¹‹åŽï¼Œç²’åç³»ç»Ÿä¼šä»¥å·²æ’æ”¾å®Œä¸€è½®ä¹‹åŽçš„状æ€å¼€å§‹æ’æ”¾ï¼ˆä»…å½“å¾ªçŽ¯æ’æ”¾å¯ç”¨æ—¶æœ‰æ•ˆï¼‰ */ + prewarm: boolean; + /** !#en The coordinate system in which the particle system is located.<br> + World coordinates (does not change when the position of other objects changes)<br> + Local coordinates (moving as the position of the parent node changes)<br> + Custom coordinates (moving with the position of a custom node) + !#zh 选择粒åç³»ç»Ÿæ‰€åœ¨çš„åæ ‡ç³»<br> + ä¸–ç•Œåæ ‡ï¼ˆä¸éšå…¶ä»–物体ä½ç½®æ”¹å˜è€Œå˜æ¢ï¼‰<br> + å±€éƒ¨åæ ‡ï¼ˆè·Ÿéšçˆ¶èŠ‚ç‚¹ä½ç½®æ”¹å˜è€Œç§»åŠ¨ï¼‰<br> + è‡ªå®šåæ ‡ï¼ˆè·Ÿéšè‡ªå®šä¹‰èŠ‚ç‚¹çš„ä½ç½®æ”¹å˜è€Œç§»åŠ¨ï¼‰ */ + simulationSpace: ParticleSystem3DAssembler.Space; + /** !#en Controlling the update speed of the entire particle system. + !#zh 控制整个粒å系统的更新速度。 */ + simulationSpeed: number; + /** !#en Delay particle emission time after particle system starts running. + !#zh ç²’å系统开始è¿è¡ŒåŽï¼Œå»¶è¿Ÿç²’åå‘射的时间。 */ + startDelay: CurveRange; + /** !#en Particle life cycle。 + !#zh ç²’å生命周期。 */ + startLifetime: CurveRange; + /** !#en Particle initial color + !#zh ç²’ååˆå§‹é¢œè‰² */ + startColor: GradientRange; + /** !#en Particle scale space + !#zh 缩放空间 */ + scaleSpace: ParticleSystem3DAssembler.Space; + /** !#en Initial particle size + !#zh ç²’ååˆå§‹å¤§å° */ + startSize: CurveRange; + /** !#en Initial particle speed + !#zh ç²’ååˆå§‹é€Ÿåº¦ */ + startSpeed: CurveRange; + /** !#en Particle initial rotation angle + !#zh ç²’ååˆå§‹æ—‹è½¬è§’度 */ + startRotation: CurveRange; + /** !#en Gravity coefficient of particles affected by gravity + !#zh ç²’åå—é‡åЛ影å“çš„é‡åŠ›ç³»æ•° */ + gravityModifier: CurveRange; + /** !#en Particles emitted per second + !#zh æ¯ç§’å‘å°„çš„ç²’åæ•° */ + rateOverTime: CurveRange; + /** !#en Number of particles emitted per unit distance moved + !#zh æ¯ç§»åЍå•ä½è·ç¦»å‘å°„çš„ç²’åæ•° */ + rateOverDistance: CurveRange; + /** !#en The number of Brusts that emit a specified number of particles at a specified time + !#zh 设定在指定时间å‘射指定数é‡çš„ç²’åçš„ Brust çš„æ•°é‡ */ + bursts: Burst[]; + /** !#en Particle emitter module + !#zh ç²’åå‘å°„å™¨æ¨¡å— */ + shapeModule: ShapeModule; + /** !#en Color control module + !#zh é¢œè‰²æŽ§åˆ¶æ¨¡å— */ + colorOverLifetimeModule: ColorOverLifetimeModule; + /** !#en Particle size module + !#zh ç²’å大尿¨¡å— */ + sizeOvertimeModule: SizeOvertimeModule; + /** !#en Particle speed module + !#zh ç²’åé€Ÿåº¦æ¨¡å— */ + velocityOvertimeModule: VelocityOvertimeModule; + /** !#en Particle acceleration module + !#zh ç²’ååŠ é€Ÿåº¦æ¨¡å— */ + forceOvertimeModule: ForceOvertimeModule; + /** !#en Particle limit speed module (only CPU particles are supported) + !#zh ç²’åé™åˆ¶é€Ÿåº¦æ¨¡å—ï¼ˆåªæ”¯æŒ CPU ç²’å) */ + limitVelocityOvertimeModule: LimitVelocityOvertimeModule; + /** !#en Particle rotation module + !#zh ç²’åæ—‹è½¬æ¨¡å— */ + rotationOvertimeModule: RotationOvertimeModule; + /** !#en Texture Animation Module + !#zh è´´å›¾åŠ¨ç”»æ¨¡å— */ + textureAnimationModule: TextureAnimationModule; + /** !#en Particle Trajectory Module + !#zh ç²’åè½¨è¿¹æ¨¡å— */ + trailModule: TrailModule; + /** !#en Particle generation mode + !#zh 设定粒åç”Ÿæˆæ¨¡å¼ */ + renderMode: ParticleSystem3DAssembler.RenderMode; + /** !#en When the particle generation mode is StrecthedBillboard, in the direction of movement of the particles is stretched by velocity magnitude + !#zh 在粒åç”Ÿæˆæ–¹å¼ä¸º StrecthedBillboard æ—¶,对粒å在è¿åŠ¨æ–¹å‘上按速度大å°è¿›è¡Œæ‹‰ä¼¸ */ + velocityScale: number; + /** !#en When the particle generation method is StrecthedBillboard, the particles are stretched according to the particle size in the direction of motion + !#zh 在粒åç”Ÿæˆæ–¹å¼ä¸º StrecthedBillboard æ—¶,对粒å在è¿åŠ¨æ–¹å‘上按粒å大å°è¿›è¡Œæ‹‰ä¼¸ */ + lengthScale: number; + /** !#en Particle model + !#zh ç²’åæ¨¡åž‹ */ + mesh: Mesh; + /** !#en Particle material + !#zh ç²’åæè´¨ */ + particleMaterial: Material; + /** !#en Particle trail material + !#zh ç²’å轨迹æè´¨ */ + trailMaterial: Material; + /** + !#en Playing particle effects + !#zh æ’æ”¾ç²’åæ•ˆæžœ + */ + play(): void; + /** + !#en Pause particle effect + !#zh æš‚åœæ’æ”¾ç²’åæ•ˆæžœ + */ + pause(): void; + /** + !#en Stop particle effect + !#zh åœæ¢æ’æ”¾ç²’åæ•ˆæžœ + */ + stop(): void; + /** + !#en Remove all particle effect + !#zh 将所有粒å从粒åç³»ç»Ÿä¸æ¸…除 + */ + clear(): void; + } + /** !#en + Helper class for ES5 Map. + !#zh + ES5 Map 辅助类。 */ + export class MapUtils { + } + /** !#en Effect Asset. + !#zh Effect 资æºç±»åž‹ã€‚ */ + export class EffectAsset extends Asset { + } + /** !#en Material Asset. + !#zh æè´¨èµ„æºç±»ã€‚ */ + export class Material extends Asset { + /** + !#en Get built-in materials + !#zh 获å–内置æè´¨ + @param name name + */ + static getBuiltinMaterial(name: string): Material; + /** + !#en Creates a Material with builtin Effect. + !#zh 使用内建 Effect 创建一个æè´¨ã€‚ + @param effectName effectName + @param techniqueIndex techniqueIndex + */ + static createWithBuiltin(effectName: string, techniqueIndex?: number): Material; + /** + !#en Creates a Material. + !#zh 创建一个æè´¨ã€‚ + @param effectAsset effectAsset + @param techniqueIndex techniqueIndex + */ + static create(effectAsset: EffectAsset, techniqueIndex?: number): Material; + /** + !#en Sets the Material property + !#zh 设置æè´¨çš„属性 + @param name name + @param val val + @param passIdx passIdx + @param directly directly + */ + setProperty(name: string, val: any, passIdx?: number, directly?: boolean): void; + /** + !#en Gets the Material property. + !#zh èŽ·å–æè´¨çš„å±žæ€§ã€‚ + @param name name + @param passIdx passIdx + */ + getProperty(name: string, passIdx: number): any; + /** + !#en Sets the Material define. + !#zh 设置æè´¨çš„å®å®šä¹‰ã€‚ + @param name name + @param val val + @param passIdx passIdx + @param force force + */ + define(name: string, val: boolean|number, passIdx?: number, force?: boolean): void; + /** + !#en Gets the Material define. + !#zh èŽ·å–æè´¨çš„å®å®šä¹‰ã€‚ + @param name name + @param passIdx passIdx + */ + getDefine(name: string, passIdx?: number): boolean; + /** + !#en Sets the Material cull mode. + !#zh 设置æè´¨çš„è£å‡æ¨¡å¼ã€‚ + @param cullMode cullMode + @param passIdx passIdx + */ + setCullMode(cullMode: number, passIdx: number): void; + /** + !#en Sets the Material depth states. + !#zh 设置æè´¨çš„æ·±åº¦æ¸²æŸ“状æ€ã€‚ + @param depthTest depthTest + @param depthWrite depthWrite + @param depthFunc depthFunc + @param passIdx passIdx + */ + setDepth(depthTest: boolean, depthWrite: boolean, depthFunc: number, passIdx: number): void; + /** + !#en Sets the Material blend states. + !#zh 设置æè´¨çš„æ··åˆæ¸²æŸ“状æ€ã€‚ + @param enabled enabled + @param blendEq blendEq + @param blendSrc blendSrc + @param blendDst blendDst + @param blendAlphaEq blendAlphaEq + @param blendSrcAlpha blendSrcAlpha + @param blendDstAlpha blendDstAlpha + @param blendColor blendColor + @param passIdx passIdx + */ + setBlend(enabled: boolean, blendEq: number, blendSrc: number, blendDst: number, blendAlphaEq: number, blendSrcAlpha: number, blendDstAlpha: number, blendColor: number, passIdx: number): void; + /** + !#en Sets whether enable the stencil test. + !#zh 设置是å¦å¼€å¯æ¨¡æ¿æµ‹è¯•。 + @param stencilTest stencilTest + @param passIdx passIdx + */ + setStencilEnabled(stencilTest: number, passIdx: number): void; + /** + !#en Sets the Material stencil render states. + !#zh 设置æè´¨çš„æ¨¡æ¿æµ‹è¯•æ¸²æŸ“å‚æ•°ã€‚ + @param stencilTest stencilTest + @param stencilFunc stencilFunc + @param stencilRef stencilRef + @param stencilMask stencilMask + @param stencilFailOp stencilFailOp + @param stencilZFailOp stencilZFailOp + @param stencilZPassOp stencilZPassOp + @param stencilWriteMask stencilWriteMask + @param passIdx passIdx + */ + setStencil(stencilTest: number, stencilFunc: number, stencilRef: number, stencilMask: number, stencilFailOp: number, stencilZFailOp: number, stencilZPassOp: number, stencilWriteMask: number, passIdx: number): void; + } + /** !#en + Material Variant is an extension of the Material Asset. + Changes to Material Variant do not affect other Material Variant or Material Asset, + and changes to Material Asset are synchronized to the Material Variant. + However, when a Material Variant had already modifies a state, the Material Asset state is not synchronized to the Material Variant. + !#zh + æè´¨å˜ä½“是æè´¨èµ„æºçš„一个延伸。 + æè´¨å˜ä½“的修改ä¸ä¼šå½±å“到其他的æè´¨å˜ä½“或者æè´¨èµ„æºï¼Œè€Œæè´¨èµ„æºçš„ä¿®æ”¹ä¼šåŒæ¥ä½“现到æè´¨å˜ä½“上, + 但是当æè´¨å˜ä½“对一个状æ€ä¿®æ”¹åŽï¼Œæè´¨èµ„æºå†å¯¹è¿™ä¸ªçжæ€ä¿®æ”¹æ˜¯ä¸ä¼šåŒæ¥åˆ°æè´¨å˜ä½“上的。 */ + export class MaterialVariant extends Material { + /** + + @param materialName materialName + @param owner owner + */ + static createWithBuiltin (materialName: string, owner: cc.RenderComponent): MaterialVariant | null; + /** + + @param material material + @param owner owner + */ + static create (material: Material, owner: cc.RenderComponent): MaterialVariant | null; + } + /** !#en SkeletonAnimationClip Asset. + !#zh 骨骼动画剪辑。 */ + export class SkeletonAnimationClip extends AnimationClip { + } + /** !#en . + !#zh 。 */ + export class SkeletonAnimation extends Animation { + } + /** !#en + Skinned Mesh Renderer + !#zh + 蒙皮渲染组件 */ + export class SkinnedMeshRenderer { + /** !#en + Skeleton Asset + !#zh + éª¨éª¼èµ„æº */ + skeleton: sp.Skeleton; + /** !#en + Root Bone + !#zh + éª¨éª¼æ ¹èŠ‚ç‚¹ */ + rootBone: Node; + } + /** !#en cc.EditBox is a component for inputing text, you can use it to gather small amounts of text from users. + !#zh EditBox 组件,用于获å–用户的输入文本。 */ + export class EditBox extends Component { + /** !#en Input string of EditBox. + !#zh 输入框的åˆå§‹è¾“入内容,如果为空则会显示å ä½ç¬¦çš„æ–‡æœ¬ã€‚ */ + string: string; + /** !#en The Label component attached to the node for EditBox's input text label + !#zh 输入框输入文本节点上挂载的 Label 组件对象 */ + textLabel: Label; + /** !#en The Label component attached to the node for EditBox's placeholder text label + !#zh 输入框å ä½ç¬¦èŠ‚ç‚¹ä¸ŠæŒ‚è½½çš„ Label 组件对象 */ + placeholderLabel: Label; + /** !#en The Sprite component attached to the node for EditBox's background + !#zh 输入框背景节点上挂载的 Sprite 组件对象 */ + background: Sprite; + /** !#en The background image of EditBox. This property will be removed in the future, use editBox.background instead please. + !#zh 输入框的背景图片。 该属性会在将æ¥çš„版本ä¸ç§»é™¤ï¼Œè¯·ç”¨ editBox.background */ + backgroundImage: SpriteFrame; + /** !#en + The return key type of EditBox. + Note: it is meaningless for web platforms and desktop platforms. + !#zh + 指定移动设备上é¢å›žè½¦æŒ‰é’®çš„æ ·å¼ã€‚ + 注æ„:这个选项对 web å¹³å°ä¸Ž desktop 平尿— 效。 */ + returnType: EditBox.KeyboardReturnType; + /** !#en Set the input flags that are to be applied to the EditBox. + !#zh æŒ‡å®šè¾“å…¥æ ‡å¿—ä½ï¼Œå¯ä»¥æŒ‡å®šè¾“入方å¼ä¸ºå¯†ç 或者å•è¯é¦–å—æ¯å¤§å†™ã€‚ */ + inputFlag: EditBox.InputFlag; + /** !#en + Set the input mode of the edit box. + If you pass ANY, it will create a multiline EditBox. + !#zh + 指定输入模å¼: ANY表示多行输入,其它都是å•行输入,移动平å°ä¸Šè¿˜å¯ä»¥æŒ‡å®šé”®ç›˜æ ·å¼ã€‚ */ + inputMode: EditBox.InputMode; + /** !#en Font size of the input text. This property will be removed in the future, use editBox.textLabel.fontSize instead please. + !#zh 输入框文本的å—体大å°ã€‚ 该属性会在将æ¥çš„版本ä¸ç§»é™¤ï¼Œè¯·ä½¿ç”¨ editBox.textLabel.fontSize。 */ + fontSize: number; + /** !#en Change the lineHeight of displayed text. This property will be removed in the future, use editBox.textLabel.lineHeight instead. + !#zh 输入框文本的行高。该属性会在将æ¥çš„版本ä¸ç§»é™¤ï¼Œè¯·ä½¿ç”¨ editBox.textLabel.lineHeight */ + lineHeight: number; + /** !#en Font color of the input text. This property will be removed in the future, use editBox.textLabel.node.color instead. + !#zh 输入框文本的颜色。该属性会在将æ¥çš„版本ä¸ç§»é™¤ï¼Œè¯·ä½¿ç”¨ editBox.textLabel.node.color */ + fontColor: Color; + /** !#en The display text of placeholder. + !#zh 输入框å ä½ç¬¦çš„æ–‡æœ¬å†…容。 */ + placeholder: string; + /** !#en The font size of placeholder. This property will be removed in the future, use editBox.placeholderLabel.fontSize instead. + !#zh 输入框å ä½ç¬¦çš„å—体大å°ã€‚该属性会在将æ¥çš„版本ä¸ç§»é™¤ï¼Œè¯·ä½¿ç”¨ editBox.placeholderLabel.fontSize */ + placeholderFontSize: number; + /** !#en The font color of placeholder. This property will be removed in the future, use editBox.placeholderLabel.node.color instead. + !#zh 输入框å ä½ç¬¦çš„å—体颜色。该属性会在将æ¥çš„版本ä¸ç§»é™¤ï¼Œè¯·ä½¿ç”¨ editBox.placeholderLabel.node.color */ + placeholderFontColor: Color; + /** !#en The maximize input length of EditBox. + - If pass a value less than 0, it won't limit the input number of characters. + - If pass 0, it doesn't allow input any characters. + !#zh 输入框最大å…许输入的å—符个数。 + - 如果值为å°äºŽ 0 的值,则ä¸ä¼šé™åˆ¶è¾“å…¥å—符个数。 + - 如果值为 0,则ä¸å…许用户进行任何输入。 */ + maxLength: number; + /** !#en The input is always visible and be on top of the game view (only useful on Web), this property will be removed on v2.1 + !zh 输入框总是å¯è§ï¼Œå¹¶ä¸”永远在游æˆè§†å›¾çš„上é¢ï¼ˆè¿™ä¸ªå±žæ€§åªæœ‰åœ¨ Web 上é¢ä¿®æ”¹æœ‰æ„义),该属性会在 v2.1 ä¸ç§»é™¤ + Note: only available on Web at the moment. */ + stayOnTop: boolean; + /** !#en Set the tabIndex of the DOM input element (only useful on Web). + !#zh 修改 DOM è¾“å…¥å…ƒç´ çš„ tabIndexï¼ˆè¿™ä¸ªå±žæ€§åªæœ‰åœ¨ Web 上é¢ä¿®æ”¹æœ‰æ„义)。 */ + tabIndex: number; + /** !#en The event handler to be called when EditBox began to edit text. + !#zh 开始编辑文本输入框触å‘的事件回调。 */ + editingDidBegan: Component.EventHandler[]; + /** !#en The event handler to be called when EditBox text changes. + !#zh 编辑文本输入框时触å‘的事件回调。 */ + textChanged: Component.EventHandler[]; + /** !#en The event handler to be called when EditBox edit ends. + !#zh 结æŸç¼–辑文本输入框时触å‘的事件回调。 */ + editingDidEnded: Component.EventHandler[]; + /** !#en The event handler to be called when return key is pressed. Windows is not supported. + !#zh 当用户按下回车按键时的事件回调,目å‰ä¸æ”¯æŒ windows å¹³å° */ + editingReturn: Component.EventHandler[]; + /** + !#en Let the EditBox get focus, this method will be removed on v2.1 + !#zh è®©å½“å‰ EditBox 获得焦点, 这个方法会在 v2.1 ä¸ç§»é™¤ + */ + setFocus(): void; + /** + !#en Let the EditBox get focus + !#zh è®©å½“å‰ EditBox 获得焦点 + */ + focus(): void; + /** + !#en Let the EditBox lose focus + !#zh è®©å½“å‰ EditBox 失去焦点 + */ + blur(): void; + /** + !#en Determine whether EditBox is getting focus or not. + !#zh åˆ¤æ– EditBox 是å¦èŽ·å¾—äº†ç„¦ç‚¹ + */ + isFocused(): void; + /** + !#en if you don't need the EditBox and it isn't in any running Scene, you should + call the destroy method on this component or the associated node explicitly. + Otherwise, the created DOM element won't be removed from web page. + !#zh + å¦‚æžœä½ ä¸å†ä½¿ç”¨ EditBoxï¼Œå¹¶ä¸”ç»„ä»¶æœªæ·»åŠ åˆ°åœºæ™¯ä¸ï¼Œé‚£ä¹ˆä½ 必须手动对组件或所在节点调用 destroy。 + è¿™æ ·æ‰èƒ½ç§»é™¤ç½‘页上的 DOM 节点,é¿å… Web å¹³å°å†…å˜æ³„露。 + + @example + ```js + editbox.node.parent = null; // or editbox.node.removeFromParent(false); + // when you don't need editbox anymore + editbox.node.destroy(); + ``` + */ + destroy(): boolean; + } + /** undefined */ + export class PhysicsBoxCollider extends PhysicsCollider implements Collider.Box { + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Box size + !#zh åŒ…å›´ç›’å¤§å° */ + size: Size; + } + /** undefined */ + export class PhysicsChainCollider extends PolygonCollider { + /** !#en Whether the chain is loop + !#zh é“¾æ¡æ˜¯å¦é¦–尾相连 */ + loop: boolean; + /** !#en Chain points + !#zh 链æ¡é¡¶ç‚¹æ•°ç»„ */ + points: Vec2[]; + } + /** undefined */ + export class PhysicsCircleCollider extends PhysicsCollider implements Collider.Circle { + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Circle radius + !#zh 圆形åŠå¾„ */ + radius: number; + } + /** undefined */ + export class PhysicsCollider extends Collider { + /** !#en + The density. + !#zh + 密度 */ + density: number; + /** !#en + A sensor collider collects contact information but never generates a collision response + !#zh + ä¸€ä¸ªä¼ æ„Ÿå™¨ç±»åž‹çš„ç¢°æ’žä½“ä¼šäº§ç”Ÿç¢°æ’žå›žè°ƒï¼Œä½†æ˜¯ä¸ä¼šå‘生物ç†ç¢°æ’žæ•ˆæžœã€‚ */ + sensor: boolean; + /** !#en + The friction coefficient, usually in the range [0,1]. + !#zh + 摩擦系数,å–值一般在 [0, 1] 之间 */ + friction: number; + /** !#en + The restitution (elasticity) usually in the range [0,1]. + !#zh + 弹性系数,å–值一般在 [0, 1]之间 */ + restitution: number; + /** !#en + Physics collider will find the rigidbody component on the node and set to this property. + !#zh + 碰撞体会在åˆå§‹åŒ–时查找节点上是å¦å˜åœ¨åˆšä½“,如果查找æˆåŠŸåˆ™èµ‹å€¼åˆ°è¿™ä¸ªå±žæ€§ä¸Šã€‚ */ + body: RigidBody; + /** + !#en + Apply current changes to collider, this will regenerate inner box2d fixtures. + !#zh + åº”ç”¨å½“å‰ collider ä¸çš„修改,调用æ¤å‡½æ•°ä¼šé‡æ–°ç”Ÿæˆå†…部 box2d 的夹具。 + */ + apply(): void; + /** + !#en + Get the world aabb of the collider + !#zh + 获å–ç¢°æ’žä½“çš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„包围盒 + */ + getAABB(): void; + } + /** undefined */ + export class PhysicsPolygonCollider extends PhysicsCollider implements Collider.Polygon { + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Polygon points + !#zh 多边形顶点数组 */ + points: Vec2[]; + } + /** !#en + A distance joint constrains two points on two bodies + to remain at a fixed distance from each other. You can view + this as a massless, rigid rod. + !#zh + è·ç¦»å…³èŠ‚é€šè¿‡ä¸€ä¸ªå›ºå®šçš„é•¿åº¦æ¥çº¦æŸå…³èŠ‚é“¾æŽ¥çš„ä¸¤ä¸ªåˆšä½“ã€‚ä½ å¯ä»¥å°†å®ƒæƒ³è±¡æˆä¸€ä¸ªæ— è´¨é‡ï¼Œåšå›ºçš„æœ¨æ£ã€‚ */ + export class DistanceJoint extends Joint { + /** !#en + The distance separating the two ends of the joint. + !#zh + 关节两端的è·ç¦» */ + distance: number; + /** !#en + The spring frequency. + !#zh + 弹性系数。 */ + frequency: number; + /** !#en + The damping ratio. + !#zh + 阻尼,表示关节å˜å½¢åŽï¼Œæ¢å¤åˆ°åˆå§‹çжæ€å—到的阻力。 */ + dampingRatio: number; + } + /** !#en + Base class for joints to connect rigidbody. + !#zh + 关节类的基类 */ + export class Joint extends Component { + /** !#en + The anchor of the rigidbody. + !#zh + 刚体的锚点。 */ + anchor: Vec2; + /** !#en + The anchor of the connected rigidbody. + !#zh + 关节å¦ä¸€ç«¯åˆšä½“的锚点。 */ + connectedAnchor: Vec2; + /** !#en + The rigidbody to which the other end of the joint is attached. + !#zh + 关节å¦ä¸€ç«¯é“¾æŽ¥çš„刚体 */ + connectedBody: RigidBody; + /** !#en + Should the two rigid bodies connected with this joint collide with each other? + !#zh + 链接到关节上的两个刚体是å¦åº”该相互碰撞? */ + collideConnected: boolean; + /** + !#en + Apply current changes to joint, this will regenerate inner box2d joint. + !#zh + 应用当å‰å…³èŠ‚ä¸çš„修改,调用æ¤å‡½æ•°ä¼šé‡æ–°ç”Ÿæˆå†…部 box2d 的关节。 + */ + apply(): void; + /** + !#en + Get the anchor point on rigidbody in world coordinates. + !#zh + 获å–åˆšä½“ä¸–ç•Œåæ ‡ç³»ä¸‹çš„锚点。 + */ + getWorldAnchor(): Vec2; + /** + !#en + Get the anchor point on connected rigidbody in world coordinates. + !#zh + 获å–é“¾æŽ¥åˆšä½“ä¸–ç•Œåæ ‡ç³»ä¸‹çš„锚点。 + */ + getWorldConnectedAnchor(): Vec2; + /** + !#en + Gets the reaction force of the joint. + !#zh + 获å–关节的å作用力。 + @param timeStep The time to calculate the reaction force for. + */ + getReactionForce(timeStep: number): Vec2; + /** + !#en + Gets the reaction torque of the joint. + !#zh + 获å–å…³èŠ‚çš„åæ‰çŸ©ã€‚ + @param timeStep The time to calculate the reaction torque for. + */ + getReactionTorque(timeStep: number): number; + } + /** !#en + A motor joint is used to control the relative motion + between two bodies. A typical usage is to control the movement + of a dynamic body with respect to the ground. + !#zh + é©¬è¾¾å…³èŠ‚è¢«ç”¨æ¥æŽ§åˆ¶ä¸¤ä¸ªåˆšä½“é—´çš„ç›¸å¯¹è¿åŠ¨ã€‚ + ä¸€ä¸ªå…¸åž‹çš„ä¾‹åæ˜¯ç”¨æ¥æŽ§åˆ¶ä¸€ä¸ªåЍæ€åˆšä½“相对于地é¢çš„è¿åŠ¨ã€‚ */ + export class MotorJoint extends Joint { + /** !#en + The anchor of the rigidbody. + !#zh + 刚体的锚点。 */ + anchor: Vec2; + /** !#en + The anchor of the connected rigidbody. + !#zh + 关节å¦ä¸€ç«¯åˆšä½“的锚点。 */ + connectedAnchor: Vec2; + /** !#en + The linear offset from connected rigidbody to rigidbody. + !#zh + 关节å¦ä¸€ç«¯çš„刚体相对于起始端刚体的ä½ç½®åç§»é‡ */ + linearOffset: Vec2; + /** !#en + The angular offset from connected rigidbody to rigidbody. + !#zh + 关节å¦ä¸€ç«¯çš„刚体相对于起始端刚体的角度åç§»é‡ */ + angularOffset: number; + /** !#en + The maximum force can be applied to rigidbody. + !#zh + å¯ä»¥åº”用于刚体的最大的力值 */ + maxForce: number; + /** !#en + The maximum torque can be applied to rigidbody. + !#zh + å¯ä»¥åº”用于刚体的最大æ‰çŸ©å€¼ */ + maxTorque: number; + /** !#en + The position correction factor in the range [0,1]. + !#zh + ä½ç½®çŸ«æ£ç³»æ•°ï¼ŒèŒƒå›´ä¸º [0, 1] */ + correctionFactor: number; + } + /** !#en + A mouse joint is used to make a point on a body track a + specified world point. This a soft constraint with a maximum + force. This allows the constraint to stretch and without + applying huge forces. + Mouse Joint will auto register the touch event with the mouse region node, + and move the choosed rigidbody in touch move event. + Note : generally mouse joint only used in test bed. + !#zh + é¼ æ ‡å…³èŠ‚ç”¨äºŽä½¿åˆšä½“ä¸Šçš„ä¸€ä¸ªç‚¹è¿½è¸ªä¸€ä¸ªæŒ‡å®šçš„ä¸–ç•Œåæ ‡ç³»ä¸‹çš„ä½ç½®ã€‚ + é¼ æ ‡å…³èŠ‚å¯ä»¥æŒ‡å®šä¸€ä¸ªæœ€å¤§çš„é‡Œæ¥æ–½åŠ ä¸€ä¸ªæŸ”å’Œçš„çº¦æŸã€‚ + é¼ æ ‡å…³èŠ‚ä¼šè‡ªåŠ¨ä½¿ç”¨ mouse region èŠ‚ç‚¹æ¥æ³¨å†Œé¼ æ ‡äº‹ä»¶ï¼Œå¹¶ä¸”åœ¨è§¦æ‘¸ç§»åŠ¨äº‹ä»¶ä¸ç§»åЍ选ä¸çš„刚体。 + 注æ„ï¼šä¸€èˆ¬é¼ æ ‡å…³èŠ‚åªåœ¨æµ‹è¯•环境ä¸ä½¿ç”¨ã€‚ */ + export class MouseJoint extends Joint { + /** !#en + The anchor of the rigidbody. + !#zh + 刚体的锚点。 */ + anchor: Vec2; + /** !#en + The anchor of the connected rigidbody. + !#zh + 关节å¦ä¸€ç«¯åˆšä½“的锚点。 */ + connectedAnchor: Vec2; + /** !#en + The node used to register touch evnet. + If this is null, it will be the joint's node. + !#zh + 用于注册触摸事件的节点。 + å¦‚æžœæ²¡æœ‰è®¾ç½®è¿™ä¸ªå€¼ï¼Œé‚£ä¹ˆå°†ä¼šä½¿ç”¨å…³èŠ‚çš„èŠ‚ç‚¹æ¥æ³¨å†Œäº‹ä»¶ã€‚ */ + mouseRegion: Node; + /** !#en + The target point. + The mouse joint will move choosed rigidbody to target point. + !#zh + ç›®æ ‡ç‚¹ï¼Œé¼ æ ‡å…³èŠ‚å°†ä¼šç§»åŠ¨é€‰ä¸çš„åˆšä½“åˆ°æŒ‡å®šçš„ç›®æ ‡ç‚¹ */ + target: Vec2; + /** !#en + The spring frequency. + !#zh + 弹簧系数。 */ + frequency: number; + /** !#en + The damping ratio. + !#zh + 阻尼,表示关节å˜å½¢åŽï¼Œæ¢å¤åˆ°åˆå§‹çжæ€å—到的阻力。 */ + 0: number; + /** !#en + The maximum force + !#zh + 最大阻力值 */ + maxForce: number; + } + /** !#en + A prismatic joint. This joint provides one degree of freedom: translation + along an axis fixed in rigidbody. Relative rotation is prevented. You can + use a joint limit to restrict the range of motion and a joint motor to + drive the motion or to model joint friction. + !#zh + 移动关节指定了åªèƒ½åœ¨ä¸€ä¸ªæ–¹å‘上移动刚体。 + ä½ å¯ä»¥å¼€å¯å…³èŠ‚é™åˆ¶æ¥è®¾ç½®åˆšä½“è¿è¡Œç§»åŠ¨çš„é—´è·ï¼Œä¹Ÿå¯ä»¥å¼€å¯é©¬è¾¾æ¥ä½¿ç”¨å…³èŠ‚é©¬è¾¾é©±åŠ¨åˆšä½“çš„è¿è¡Œã€‚ */ + export class PrismaticJoint extends Joint { + /** !#en + The local joint axis relative to rigidbody. + !#zh + 指定刚体å¯ä»¥ç§»åŠ¨çš„æ–¹å‘。 */ + localAxisA: Vec2; + /** !#en + The reference angle. + !#zh + 相对角度 */ + referenceAngle: number; + /** !#en + Enable joint distance limit? + !#zh + 是å¦å¼€å¯å…³èŠ‚çš„è·ç¦»é™åˆ¶ï¼Ÿ */ + enableLimit: boolean; + /** !#en + Enable joint motor? + !#zh + 是å¦å¼€å¯å…³èŠ‚é©¬è¾¾ï¼Ÿ */ + enableMotor: boolean; + /** !#en + The lower joint limit. + !#zh + 刚体能够移动的最å°å€¼ */ + lowerLimit: number; + /** !#en + The upper joint limit. + !#zh + 刚体能够移动的最大值 */ + upperLimit: number; + /** !#en + The maxium force can be applied to rigidbody to rearch the target motor speed. + !#zh + å¯ä»¥æ–½åŠ åˆ°åˆšä½“çš„æœ€å¤§åŠ›ã€‚ */ + maxMotorForce: number; + /** !#en + The expected motor speed. + !#zh + 期望的马达速度。 */ + motorSpeed: number; + } + /** !#en + A revolute joint constrains two bodies to share a common point while they + are free to rotate about the point. The relative rotation about the shared + point is the joint angle. You can limit the relative rotation with + a joint limit that specifies a lower and upper angle. You can use a motor + to drive the relative rotation about the shared point. A maximum motor torque + is provided so that infinite forces are not generated. + !#zh + 旋转关节å¯ä»¥çº¦æŸä¸¤ä¸ªåˆšä½“围绕一个点æ¥è¿›è¡Œæ—‹è½¬ã€‚ + ä½ å¯ä»¥é€šè¿‡å¼€å¯å…³èŠ‚é™åˆ¶æ¥é™åˆ¶æ—‹è½¬çš„æœ€å¤§è§’度和最å°è§’度。 + ä½ å¯ä»¥é€šè¿‡å¼€å¯é©¬è¾¾æ¥æ–½åŠ ä¸€ä¸ªæ‰çŸ©åŠ›æ¥é©±åŠ¨è¿™ä¸¤ä¸ªåˆšä½“åœ¨è¿™ä¸€ç‚¹ä¸Šçš„ç›¸å¯¹é€Ÿåº¦ã€‚ */ + export class RevoluteJoint extends Joint { + /** !#en + The reference angle. + An angle between bodies considered to be zero for the joint angle. + !#zh + 相对角度。 + 两个物体之间角度为零时å¯ä»¥çœ‹ä½œç›¸ç‰äºŽå…³èŠ‚è§’åº¦ */ + referenceAngle: number; + /** !#en + The lower angle. + !#zh + 角度的最低é™åˆ¶ã€‚ */ + lowerAngle: number; + /** !#en + The upper angle. + !#zh + 角度的最高é™åˆ¶ã€‚ */ + upperAngle: number; + /** !#en + The maxium torque can be applied to rigidbody to rearch the target motor speed. + !#zh + å¯ä»¥æ–½åŠ åˆ°åˆšä½“çš„æœ€å¤§æ‰çŸ©ã€‚ */ + maxMotorTorque: number; + /** !#en + The expected motor speed. + !#zh + 期望的马达速度。 */ + motorSpeed: number; + /** !#en + Enable joint limit? + !#zh + 是å¦å¼€å¯å…³èŠ‚çš„é™åˆ¶ï¼Ÿ */ + enableLimit: boolean; + /** !#en + Enable joint motor? + !#zh + 是å¦å¼€å¯å…³èŠ‚é©¬è¾¾ï¼Ÿ */ + enableMotor: boolean; + /** + !#en + Get the joint angle. + !#zh + 获å–关节角度。 + */ + getJointAngle(): number; + } + /** !#en + A rope joint enforces a maximum distance between two points + on two bodies. It has no other effect. + Warning: if you attempt to change the maximum length during + the simulation you will get some non-physical behavior. + !#zh + 绳åå…³èŠ‚åªæŒ‡å®šä¸¤ä¸ªåˆšä½“间的最大è·ç¦»ï¼Œæ²¡æœ‰å…¶ä»–的效果。 + 注æ„ï¼šå¦‚æžœä½ è¯•å›¾åŠ¨æ€ä¿®æ”¹å…³èŠ‚çš„é•¿åº¦ï¼Œè¿™æœ‰å¯èƒ½ä¼šå¾—到一些æ„外的效果。 */ + export class RopeJoint extends Joint { + /** !#en + The max length. + !#zh + 最大长度。 */ + maxLength: number; + } + /** !#en + A weld joint essentially glues two bodies together. A weld joint may + distort somewhat because the island constraint solver is approximate. + !#zh + 熔接关节相当于将两个刚体粘在了一起。 + 熔接关节å¯èƒ½ä¼šä½¿æŸäº›ä¸œè¥¿å¤±çœŸï¼Œå› ä¸ºçº¦æŸæ±‚解器算出的都是近似值。 */ + export class WeldJoint extends Joint { + /** !#en + The reference angle. + !#zh + 相对角度。 */ + referenceAngle: number; + /** !#en + The frequency. + !#zh + 弹性系数。 */ + frequency: number; + /** !#en + The damping ratio. + !#zh + 阻尼,表示关节å˜å½¢åŽï¼Œæ¢å¤åˆ°åˆå§‹çжæ€å—到的阻力。 */ + 0: number; + } + /** !#en + A wheel joint. This joint provides two degrees of freedom: translation + along an axis fixed in bodyA and rotation in the plane. You can use a joint motor to drive + the rotation or to model rotational friction. + This joint is designed for vehicle suspensions. + !#zh + è½®å关节æä¾›ä¸¤ä¸ªç»´åº¦çš„è‡ªç”±åº¦ï¼šæ—‹è½¬å’Œæ²¿ç€æŒ‡å®šæ–¹å‘上ä½ç½®çš„移动。 + ä½ å¯ä»¥é€šè¿‡å¼€å¯å…³èŠ‚é©¬è¾¾æ¥ä½¿ç”¨é©¬è¾¾é©±åŠ¨åˆšä½“çš„æ—‹è½¬ã€‚ + 轮组关节是专门为机动车类型设计的。 */ + export class WheelJoint extends Joint { + /** !#en + The local joint axis relative to rigidbody. + !#zh + 指定刚体å¯ä»¥ç§»åŠ¨çš„æ–¹å‘。 */ + localAxisA: Vec2; + /** !#en + The maxium torque can be applied to rigidbody to rearch the target motor speed. + !#zh + å¯ä»¥æ–½åŠ åˆ°åˆšä½“çš„æœ€å¤§æ‰çŸ©ã€‚ */ + maxMotorTorque: number; + /** !#en + The expected motor speed. + !#zh + 期望的马达速度。 */ + motorSpeed: number; + /** !#en + Enable joint motor? + !#zh + 是å¦å¼€å¯å…³èŠ‚é©¬è¾¾ï¼Ÿ */ + enableMotor: boolean; + /** !#en + The spring frequency. + !#zh + 弹性系数。 */ + frequency: number; + /** !#en + The damping ratio. + !#zh + 阻尼,表示关节å˜å½¢åŽï¼Œæ¢å¤åˆ°åˆå§‹çжæ€å—到的阻力。 */ + dampingRatio: number; + } + /** !#en The rigid body type + !#zh 刚体类型 */ + export enum ERigidBodyType { + DYNAMIC = 0, + STATIC = 0, + KINEMATIC = 0, + } + /** !#en + Trigger event + !#zh + 触å‘事件。 */ + export class ITriggerEvent { + /** !#en + The type of event fired + !#zh + 触å‘的事件类型 */ + type: string; + /** !#en + Triggers its own collider in the event + !#zh + 触å‘事件ä¸çš„自己的碰撞器 */ + selfCollider: Collider3D; + /** !#en + Triggers another collider in the event + !#zh + 触å‘事件ä¸çš„å¦ä¸€ä¸ªç¢°æ’žå™¨ */ + otherCollider: Collider3D; + } + /** !#en + Collision information for collision events. + !#zh + 碰撞事件的碰撞信æ¯ã€‚ */ + export class IContactEquation { + /** !#en + The collision point A in the collision information. + !#zh + 碰撞信æ¯ä¸çš„碰撞点 A。 */ + contactA: Vec3; + /** !#en + Collision point B in collision information. + !#zh + 碰撞信æ¯ä¸çš„碰撞点 B。 */ + contactB: Vec3; + /** !#en + Normals in collision information. + !#zh + 碰撞信æ¯ä¸çš„æ³•线。 */ + normal: Vec3; + } + /** !#en + Collision events. + !#zh + 碰撞事件。 */ + export class ICollisionEvent { + /** !#en + Event type of collision. + !#zh + 碰撞的事件类型。 */ + type: string; + /** !#en + Collider of its own in collision. + !#zh + 碰撞ä¸çš„自己的碰撞器。 */ + selfCollider: Collider3D; + /** !#en + Another collider in the collision. + !#zh + 碰撞ä¸çš„å¦ä¸€ä¸ªç¢°æ’žå™¨ã€‚ */ + otherCollider: Collider3D; + /** !#en + Information about all the points of impact in the collision. + !#zh + 碰撞ä¸çš„æ‰€æœ‰ç¢°æ’žç‚¹çš„ä¿¡æ¯ã€‚ */ + contacts: IContactEquation[]; + } + /** !#en + Physical systems manager. + !#zh + 物ç†ç³»ç»Ÿç®¡ç†å™¨ã€‚ */ + export class Physics3DManager { + /** !#en + Whether to enable the physics system, default is false. + !#zh + 是å¦å¯ç”¨ç‰©ç†ç³»ç»Ÿï¼Œé»˜è®¤ä¸å¯ç”¨ã€‚ */ + enabled: boolean; + /** !#en + Whether to allow the physics system to automatically hibernate, default is true. + !#zh + 物ç†ç³»ç»Ÿæ˜¯å¦å…è®¸è‡ªåŠ¨ä¼‘çœ ï¼Œé»˜è®¤ä¸º true。 */ + allowSleep: boolean; + /** !#en + The maximum number of sub-steps a full step is permitted to be broken into, default is 2. + !#zh + ç‰©ç†æ¯å¸§æ¨¡æ‹Ÿçš„æœ€å¤§åæ¥æ•°ï¼Œé»˜è®¤ä¸º 2。 */ + maxSubStep: number; + /** !#en + Time spent in each simulation of physics, default is 1/60s. + !#zh + ç‰©ç†æ¯æ¥æ¨¡æ‹Ÿæ¶ˆè€—的固定时间,默认为 1/60 秒。 */ + deltaTime: number; + /** !#en + Whether to use a fixed time step. + !#zh + 是å¦ä½¿ç”¨å›ºå®šçš„æ—¶é—´æ¥é•¿ã€‚ */ + useFixedTime: boolean; + /** !#en + Gravity value of the physics simulation, default is (0, -10, 0). + !#zh + 物ç†ä¸–界的é‡åŠ›æ•°å€¼ï¼Œé»˜è®¤ä¸º (0, -10, 0)。 */ + gravity: Vec3; + /** !#en + Gets the global default physical material. Note that builtin is null. + !#zh + 获å–å…¨å±€çš„é»˜è®¤ç‰©ç†æè´¨ï¼Œæ³¨æ„:builtin 时为 null。 */ + defaultMaterial: PhysicsMaterial|void; + /** + !#en + A physical system simulation is performed once and will now be performed automatically once per frame. + !#zh + 执行一次物ç†ç³»ç»Ÿçš„æ¨¡æ‹Ÿï¼Œç›®å‰å°†åœ¨æ¯å¸§è‡ªåŠ¨æ‰§è¡Œä¸€æ¬¡ã€‚ + @param deltaTime The time difference from the last execution is currently elapsed per frame + */ + update(deltaTime: number): void; + /** + !#en Detect all collision boxes and return all detected results, or null if none is detected. Note that the return value is taken from the object pool, so do not save the result reference or modify the result. + !#zh 检测所有的碰撞盒,并返回所有被检测到的结果,若没有检测到,则返回空值。注æ„è¿”å›žå€¼æ˜¯ä»Žå¯¹è±¡æ± ä¸å–的,所以请ä¸è¦ä¿å˜ç»“果引用或者修改结果。 + @param worldRay A ray in world space + @param groupIndexOrName Collision group index or group name + @param maxDistance Maximum detection distance + @param queryTrigger Detect trigger or not + */ + raycast(worldRay: geomUtils.Ray, groupIndexOrName: number|string, maxDistance: number, queryTrigger: boolean): PhysicsRayResult[]; + /** + !#en Detect all collision boxes and return the detection result with the shortest ray distance. If not, return null value. Note that the return value is taken from the object pool, so do not save the result reference or modify the result. + !#zh 检测所有的碰撞盒,并返回射线è·ç¦»æœ€çŸçš„æ£€æµ‹ç»“果,若没有,则返回空值。注æ„è¿”å›žå€¼æ˜¯ä»Žå¯¹è±¡æ± ä¸å–的,所以请ä¸è¦ä¿å˜ç»“果引用或者修改结果。 + @param worldRay A ray in world space + @param groupIndexOrName Collision group index or group name + @param maxDistance Maximum detection distance + @param queryTrigger Detect trigger or not + */ + raycastClosest(worldRay: geomUtils.Ray, groupIndexOrName: number|string, maxDistance: number, queryTrigger: boolean): PhysicsRayResult; + } + /** !#en + Used to store physical ray detection results + !#zh + 用于ä¿å˜ç‰©ç†å°„线检测结果 */ + export class PhysicsRayResult { + /** !#en + Hit the point + !#zh + 击ä¸ç‚¹ */ + hitPoint: Vec3; + /** !#en + Distance + !#zh + è·ç¦» */ + distance: number; + /** !#en + Hit the collision box + !#zh + 击ä¸çš„碰撞盒 */ + collider: Collider3D; + /** + !#en + Set up ray. This method is used internally by the engine. Do not call it from an external script + !#zh + è®¾ç½®å°„çº¿ï¼Œæ¤æ–¹æ³•由引擎内部使用,请勿在外部脚本调用 + @param hitPoint hitPoint + @param distance distance + @param collider collider + */ + _assign(hitPoint: Vec3, distance: number, collider: Collider3D): void; + /** + !#en + Clone + !#zh + 克隆 + */ + clone(): void; + } + /** Rigid body interface */ + export class IRigidBody { + rigidBody: RigidBody3D; + mass: number; + linearDamping: number; + angularDamping: number; + isKinematic: boolean; + useGravity: boolean; + fixedRotation: boolean; + linearFactor: IVec3Like; + angularFactor: IVec3Like; + allowSleep: boolean; + isAwake: boolean; + isSleepy: boolean; + isSleeping: boolean; + wakeUp(): void; + sleep(): void; + /** + + @param out out + */ + getLinearVelocity(out: IVec3Like): void; + /** + + @param out out + */ + setLinearVelocity(out: IVec3Like): void; + /** + + @param out out + */ + getAngularVelocity(out: IVec3Like): void; + /** + + @param out out + */ + setAngularVelocity(out: IVec3Like): void; + /** + + @param force force + @param relativePoint relativePoint + */ + applyForce(force: IVec3Like, relativePoint: IVec3Like): void; + /** + + @param force force + @param relativePoint relativePoint + */ + applyLocalForce(force: IVec3Like, relativePoint: IVec3Like): void; + /** + + @param force force + @param relativePoint relativePoint + */ + applyImpulse(force: IVec3Like, relativePoint: IVec3Like): void; + /** + + @param force force + @param relativePoint relativePoint + */ + applyLocalImpulse(force: IVec3Like, relativePoint: IVec3Like): void; + /** + + @param torque torque + */ + applyTorque(torque: IVec3Like): void; + /** + + @param torque torque + */ + applyLocalTorque(torque: IVec3Like): void; + } + /** Class has x y z properties */ + export class IVec3Like { + x: number; + y: number; + z: number; + } + /** Class has x y z w properties */ + export class IQuatLike { + x: number; + y: number; + z: number; + w: number; + } + /** !#en Base shape interface. */ + export class IBaseShape { + collider: Collider3D; + attachedRigidBody: RigidBody3D|void; + material: any; + isTrigger: boolean; + center: IVec3Like; + } + /** !#en box shape interface */ + export class IBoxShape { + size: IVec3Like; + } + /** !#en Sphere shape interface */ + export class ISphereShape { + radius: number; + } + /** Ray cast options */ + export class IRaycastOptions { + groupIndex: number; + queryTrigger: boolean; + maxDistance: number; + } + /** Collision detect */ + export class ICollisionDetect { + /** + Ray cast, and return information of the closest hit. + @param worldRay worldRay + @param options options + @param out out + */ + raycastClosest(worldRay: geomUtils.Ray, options: IRaycastOptions, out: PhysicsRayResult): boolean; + /** + Ray cast against all bodies. The provided callback will be executed for each hit with a RaycastResult as single argument. + @param worldRay worldRay + @param options options + @param pool pool + @param resultes resultes + */ + raycast(worldRay: geomUtils.Ray, options: IRaycastOptions, pool: RecyclePool, resultes: PhysicsRayResult[]): boolean; + } + /** Physics world interface */ + export class IPhysicsWorld { + } + /** !#en The color over time module of 3d particle. + !#zh 3D ç²’å颜色å˜åŒ–æ¨¡å— */ + export class ColorOvertimeModule { + /** !#en The enable of ColorOvertimeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + } + /** !#en The curve range of target value. + !#zh ç›®æ ‡å€¼çš„æ›²çº¿èŒƒå›´ */ + export class CurveRange { + /** !#en Curve type. + !#zh 曲线类型。 */ + mode: ParticleSystem.EmitterMode; + /** !#en The curve to use when mode is Curve. + !#zh 当 mode 为 Curve 时,使用的曲线。 */ + curve: AnimationCurve; + /** !#en The lower limit of the curve to use when mode is TwoCurves + !#zh 当 mode 为 TwoCurves 时,使用的曲线下é™ã€‚ */ + curveMin: AnimationCurve; + /** !#en The upper limit of the curve to use when mode is TwoCurves + !#zh 当 mode 为 TwoCurves 时,使用的曲线上é™ã€‚ */ + curveMax: AnimationCurve; + /** !#en When mode is Constant, the value of the curve. + !#zh 当 mode 为 Constant 时,曲线的值。 */ + constant: number; + /** !#en The lower limit of the curve to use when mode is TwoConstants + !#zh 当 mode 为 TwoConstants 时,曲线的下é™ã€‚ */ + constantMin: number; + /** !#en The upper limit of the curve to use when mode is TwoConstants + !#zh 当 mode 为 TwoConstants 时,曲线的上é™ã€‚ */ + constantMax: number; + /** !#en Coefficients applied to curve interpolation. + !#zh 应用于曲线æ’值的系数。 */ + multiplier: number; + } + /** !#en The force over time module of 3d particle. + !#zh 3D ç²’åçš„åŠ é€Ÿåº¦æ¨¡å— */ + export class ForceOvertimeModule { + /** !#en The enable of ColorOvertimeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Coordinate system used in acceleration calculation. + !#zh åŠ é€Ÿåº¦è®¡ç®—æ—¶é‡‡ç”¨çš„åæ ‡ç³»ã€‚ */ + space: ParticleSystem3DAssembler.Space; + /** !#en X-axis acceleration component. + !#zh X è½´æ–¹å‘ä¸Šçš„åŠ é€Ÿåº¦åˆ†é‡ã€‚ */ + x: CurveRange; + /** !#en Y-axis acceleration component. + !#zh Y è½´æ–¹å‘ä¸Šçš„åŠ é€Ÿåº¦åˆ†é‡ã€‚ */ + y: CurveRange; + /** !#en Z-axis acceleration component. + !#zh Z è½´æ–¹å‘ä¸Šçš„åŠ é€Ÿåº¦åˆ†é‡ã€‚ */ + z: CurveRange; + } + /** !#en The gradient range of color. + !#zh 颜色值的æ¸å˜èŒƒå›´ */ + export class GradientRange { + /** !#en Gradient type. + !#zh æ¸å˜è‰²ç±»åž‹ã€‚ */ + mode: ParticleSystem.EmitterMode; + /** !#en The color when mode is Color. + !#zh 当 mode 为 Color 时的颜色。 */ + color: Color; + /** !#en Lower color limit when mode is TwoColors. + !#zh 当 mode 为 TwoColors 时的颜色下é™ã€‚ */ + colorMin: Color; + /** !#en Upper color limit when mode is TwoColors. + !#zh 当 mode 为 TwoColors 时的颜色上é™ã€‚ */ + colorMax: Color; + /** !#en Color gradient when mode is Gradient + !#zh 当 mode 为 Gradient 时的颜色æ¸å˜ã€‚ */ + gradient: Gradient; + /** !#en Lower color gradient limit when mode is TwoGradients. + !#zh 当 mode 为 TwoGradients 时的颜色æ¸å˜ä¸‹é™ã€‚ */ + gradientMin: Gradient; + /** !#en Upper color gradient limit when mode is TwoGradients. + !#zh 当 mode 为 TwoGradients 时的颜色æ¸å˜ä¸Šé™ã€‚ */ + gradientMax: Gradient; + } + /** !#en The color key of gradient. + !#zh color 关键帧 */ + export class ColorKey { + } + /** !#en The alpha key of gradient. + !#zh alpha 关键帧 */ + export class AlphaKey { + } + /** !#en The gradient data of color. + !#zh 颜色æ¸å˜æ•°æ® */ + export class Gradient { + } + /** !#en The limit velocity module of 3d particle. + !#zh 3D ç²’åçš„é™é€Ÿæ¨¡å— */ + export class LimitVelocityOvertimeModule { + /** !#en The enable of LimitVelocityOvertimeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en The coordinate system used when calculating the lower speed limit. + !#zh è®¡ç®—é€Ÿåº¦ä¸‹é™æ—¶é‡‡ç”¨çš„åæ ‡ç³»ã€‚ */ + space: ParticleSystem3DAssembler.Space; + /** !#en Whether to limit the three axes separately. + !#zh 是å¦ä¸‰ä¸ªè½´åˆ†å¼€é™åˆ¶ã€‚ */ + separateAxes: boolean; + /** !#en Lower speed limit + !#zh 速度下é™ã€‚ */ + limit: CurveRange; + /** !#en Lower speed limit in X direction. + !#zh X è½´æ–¹å‘上的速度下é™ã€‚ */ + limitX: CurveRange; + /** !#en Lower speed limit in Y direction. + !#zh Y è½´æ–¹å‘上的速度下é™ã€‚ */ + limitY: CurveRange; + /** !#en Lower speed limit in Z direction. + !#zh Z è½´æ–¹å‘上的速度下é™ã€‚ */ + limitZ: CurveRange; + /** !#en Interpolation of current speed and lower speed limit. + !#zh 当å‰é€Ÿåº¦ä¸Žé€Ÿåº¦ä¸‹é™çš„æ’å€¼ã€‚ */ + dampen: number; + } + /** !#en The optimized curve. + !#zh 优化曲线 */ + export class OptimizedCurve { + } + /** !#en The rotation module of 3d particle. + !#zh 3D ç²’åçš„æ—‹è½¬æ¨¡å— */ + export class RotationOvertimeModule { + /** !#en The enable of RotationOvertimeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Whether to set the rotation of three axes separately (not currently supported) + !#zh 是å¦ä¸‰ä¸ªè½´åˆ†å¼€è®¾å®šæ—‹è½¬ï¼ˆæš‚䏿”¯æŒï¼‰ã€‚ */ + separateAxes: boolean; + /** !#en Set rotation around X axis. + !#zh 绕 X 轴设定旋转。 */ + x: CurveRange; + /** !#en Set rotation around Y axis. + !#zh 绕 Y 轴设定旋转。 */ + y: CurveRange; + /** !#en Set rotation around Z axis. + !#zh 绕 Z 轴设定旋转。 */ + z: CurveRange; + } + /** !#en The size module of 3d particle. + !#zh 3D ç²’åçš„å¤§å°æ¨¡å— */ + export class SizeOvertimeModule { + /** !#en The enable of SizeOvertimeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Decide whether to control particle size independently on each axis. + !#zh 决定是å¦åœ¨æ¯ä¸ªè½´ä¸Šç‹¬ç«‹æŽ§åˆ¶ç²’å大å°ã€‚ */ + separateAxes: boolean; + /** !#en Define a curve to determine the size change of particles during their life cycle. + !#zh å®šä¹‰ä¸€æ¡æ›²çº¿æ¥å†³å®šç²’å在其生命周期ä¸çš„大å°å˜åŒ–。 */ + size: CurveRange; + /** !#en Defines a curve to determine the size change of particles in the X-axis direction during their life cycle. + !#zh å®šä¹‰ä¸€æ¡æ›²çº¿æ¥å†³å®šç²’ååœ¨å…¶ç”Ÿå‘½å‘¨æœŸä¸ X è½´æ–¹å‘上的大å°å˜åŒ–。 */ + x: CurveRange; + /** !#en Defines a curve to determine the size change of particles in the Y-axis direction during their life cycle. + !#zh å®šä¹‰ä¸€æ¡æ›²çº¿æ¥å†³å®šç²’ååœ¨å…¶ç”Ÿå‘½å‘¨æœŸä¸ Y è½´æ–¹å‘上的大å°å˜åŒ–。 */ + y: CurveRange; + /** !#en Defines a curve to determine the size change of particles in the Z-axis direction during their life cycle. + !#zh å®šä¹‰ä¸€æ¡æ›²çº¿æ¥å†³å®šç²’ååœ¨å…¶ç”Ÿå‘½å‘¨æœŸä¸ Z è½´æ–¹å‘上的大å°å˜åŒ–。 */ + z: CurveRange; + } + /** !#en The texture animation module of 3d particle. + !#zh 3D ç²’åçš„è´´å›¾åŠ¨ç”»æ¨¡å— */ + export class TextureAnimationModule { + /** !#en The enable of TextureAnimationModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Set the type of particle map animation (only supports Grid mode for the time being) + !#zh 设定粒åè´´å›¾åŠ¨ç”»çš„ç±»åž‹ï¼ˆæš‚åªæ”¯æŒ Grid 模å¼ã€‚ */ + mode: ParticleSystem.EmitterMode; + /** !#en Animation frames in X direction. + !#zh X æ–¹å‘动画帧数。 */ + numTilesX: number; + /** !#en Animation frames in Y direction. + !#zh Y æ–¹å‘动画帧数。 */ + numTilesY: number; + /** !#en The way of the animation plays. + !#zh åŠ¨ç”»æ’æ”¾æ–¹å¼ã€‚ */ + animation: Animation; + /** !#en Randomly select a line from the animated map to generate the animation. <br> + This option only takes effect when the animation playback mode is SingleRow. + !#zh éšæœºä»ŽåŠ¨ç”»è´´å›¾ä¸é€‰æ‹©ä¸€è¡Œä»¥ç”ŸæˆåŠ¨ç”»ã€‚<br> + æ¤é€‰é¡¹ä»…åœ¨åŠ¨ç”»æ’æ”¾æ–¹å¼ä¸º SingleRow 时生效。 */ + randomRow: boolean; + /** !#en Select specific lines from the animation map to generate the animation. <br> + This option is only available when the animation playback mode is SingleRow and randomRow is disabled. + !#zh 从动画贴图ä¸é€‰æ‹©ç‰¹å®šè¡Œä»¥ç”ŸæˆåŠ¨ç”»ã€‚<br> + æ¤é€‰é¡¹ä»…åœ¨åŠ¨ç”»æ’æ”¾æ–¹å¼ä¸º SingleRow 时且ç¦ç”¨ randomRow æ—¶å¯ç”¨ã€‚ */ + rowIndex: number; + /** !#en Frame and time curve of animation playback in one cycle. + !#zh ä¸€ä¸ªå‘¨æœŸå†…åŠ¨ç”»æ’æ”¾çš„帧与时间å˜åŒ–曲线。 */ + frameOverTime: CurveRange; + /** !#en Play from which frames, the time is the life cycle of the entire particle system. + !#zh ä»Žç¬¬å‡ å¸§å¼€å§‹æ’æ”¾ï¼Œæ—¶é—´ä¸ºæ•´ä¸ªç²’å系统的生命周期。 */ + startFrame: CurveRange; + /** !#en Number of playback loops in a life cycle. + !#zh ä¸€ä¸ªç”Ÿå‘½å‘¨æœŸå†…æ’æ”¾å¾ªçŽ¯çš„æ¬¡æ•°ã€‚ */ + cycleCount: number; + } + /** !#en The velocity module of 3d particle. + !#zh 3D ç²’åçš„é€Ÿåº¦æ¨¡å— */ + export class VelocityOvertimeModule { + /** !#en The enable of VelocityOvertimeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Coordinate system used in speed calculation. + !#zh é€Ÿåº¦è®¡ç®—æ—¶é‡‡ç”¨çš„åæ ‡ç³»ã€‚ */ + space: ParticleSystem3DAssembler.Space; + /** !#en Velocity component in X axis direction + !#zh X è½´æ–¹å‘上的速度分é‡ã€‚ */ + x: CurveRange; + /** !#en Velocity component in Y axis direction + !#zh Y è½´æ–¹å‘上的速度分é‡ã€‚ */ + y: CurveRange; + /** !#en Velocity component in Z axis direction + !#zh Z è½´æ–¹å‘上的速度分é‡ã€‚ */ + z: CurveRange; + /** !#en Speed correction factor (only supports CPU particles). + !#zh 速度修æ£ç³»æ•°ï¼ˆåªæ”¯æŒ CPU ç²’å)。 */ + speedModifier: CurveRange; + } + /** !#en The shape module of 3d particle. + !#zh 3D ç²’åçš„å‘å°„å½¢çŠ¶æ¨¡å— */ + export class ShapeModule { + /** !#en The enable of shapeModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Particle emitter type. + !#zh ç²’åå‘射器类型。 */ + shapeType: shapeModule.ShapeType; + /** !#en The emission site of the particle. + !#zh ç²’å从å‘射器哪个部ä½å‘射。 */ + emitFrom: shapeModule.EmitLocation; + /** !#en Particle emitter radius. + !#zh ç²’åå‘射器åŠå¾„。 */ + radius: number; + /** !#en Particle emitter emission position (not valid for Box type emitters):<bg> + - 0 means emitted from the surface; + - 1 means launch from the center; + - 0 ~ 1 indicates emission from the center to the surface. + !#zh ç²’åå‘射器å‘å°„ä½ç½®ï¼ˆå¯¹ Box 类型的å‘å°„å™¨æ— æ•ˆï¼‰ï¼š<bg> + - 0 表示从表é¢å‘å°„ï¼› + - 1 表示从ä¸å¿ƒå‘å°„ï¼› + - 0 ~ 1 之间表示在ä¸å¿ƒåˆ°è¡¨é¢ä¹‹é—´å‘射。 */ + radiusThickness: number; + /** !#en The angle between the axis of the cone and the generatrix<bg> + Determines the opening and closing of the cone launcher + !#zh 圆锥的轴与æ¯çº¿çš„夹角<bg>。 + 决定圆锥å‘射器的开åˆç¨‹åº¦ã€‚ */ + angle: number; + /** !#en Particle emitters emit in a fan-shaped range. + !#zh ç²’åå‘射器在一个扇形范围内å‘射。 */ + arc: number; + /** !#en How particles are emitted in the sector range. + !#zh ç²’å在扇形范围内的å‘å°„æ–¹å¼ã€‚ */ + arcMode: shapeModule.ArcMode; + /** !#en Controls the discrete intervals around the arcs where particles might be generated. + !#zh 控制å¯èƒ½äº§ç”Ÿç²’å的弧周围的离散间隔。 */ + arcSpread: number; + /** !#en The speed at which particles are emitted around the circumference. + !#zh ç²’åæ²¿åœ†å‘¨å‘射的速度。 */ + arcSpeed: CurveRange; + /** !#en Axis length from top of cone to bottom of cone <bg>. + Determines the height of the cone emitter. + !#zh 圆锥顶部截é¢è·ç¦»åº•部的轴长<bg>。 + 决定圆锥å‘射器的高度。 */ + length: number; + /** !#en Particle emitter emission location (for box-type particle emitters). + !#zh ç²’åå‘射器å‘å°„ä½ç½®ï¼ˆé’ˆå¯¹ Box 类型的粒åå‘射器。 */ + boxThickness: Vec3; + /** !#en Particle Emitter Position + !#zh ç²’åå‘射器ä½ç½®ã€‚ */ + position: Vec3; + /** !#en Particle emitter rotation angle. + !#zh ç²’åå‘射器旋转角度。 */ + rotation: Vec3; + /** !#en Particle emitter scaling + !#zh ç²’åå‘射器缩放比例。 */ + scale: Vec3; + /** !#en The direction of particle movement is determined based on the initial direction of the particles. + !#zh æ ¹æ®ç²’åçš„åˆå§‹æ–¹å‘决定粒å的移动方å‘。 */ + alignToDirection: boolean; + /** !#en Set particle generation direction randomly. + !#zh ç²’åç”Ÿæˆæ–¹å‘éšæœºè®¾å®šã€‚ */ + randomDirectionAmount: number; + /** !#en Interpolation between the current emission direction and the direction from the current position to the center of the node. + !#zh 表示当å‰å‘å°„æ–¹å‘与当å‰ä½ç½®åˆ°ç»“点ä¸å¿ƒè¿žçº¿æ–¹å‘çš„æ’值。 */ + sphericalDirectionAmount: number; + } + /** !#en The trail module of 3d particle. + !#zh 3D ç²’åæ‹–å°¾æ¨¡å— */ + export class TrailModule { + /** !#en The enable of trailModule. + !#zh 是å¦å¯ç”¨ */ + enable: boolean; + /** !#en Sets how particles generate trajectories. + !#zh 设定粒å生æˆè½¨è¿¹çš„æ–¹å¼ã€‚ */ + mode: trailModule.TrailMode; + /** !#en Life cycle of trajectory. + !#zh 轨迹å˜åœ¨çš„生命周期。 */ + lifeTime: CurveRange; + /** !#en Minimum spacing between each track particle + !#zh æ¯ä¸ªè½¨è¿¹ç²’å之间的最å°é—´è·ã€‚ */ + minParticleDistance: number; + /** !#en The coordinate system of trajectories. + !#zh è½¨è¿¹è®¾å®šæ—¶çš„åæ ‡ç³»ã€‚ */ + space: ParticleSystem3DAssembler.Space; + /** !#en Whether the particle itself exists. + !#zh ç²’åæœ¬èº«æ˜¯å¦å˜åœ¨ã€‚ */ + existWithParticles: boolean; + /** !#en Set the texture fill method + !#zh 设定纹ç†å¡«å……æ–¹å¼ã€‚ */ + textureMode: trailModule.TextureMode; + /** !#en Whether to use particle width + !#zh 是å¦ä½¿ç”¨ç²’å的宽度。 */ + widthFromParticle: boolean; + /** !#en Curves that control track length + !#zh 控制轨迹长度的曲线。 */ + widthRatio: CurveRange; + /** !#en Whether to use particle color + !#zh 是å¦ä½¿ç”¨ç²’å的颜色。 */ + colorFromParticle: boolean; + /** !#en The color of trajectories. + !#zh 轨迹的颜色。 */ + colorOverTrail: GradientRange; + /** !#en Trajectories color over time. + !#zh è½¨è¿¹éšæ—¶é—´å˜åŒ–的颜色。 */ + colorOvertime: GradientRange; + } + /** !#en Manage Dynamic Atlas Manager. Dynamic Atlas Manager is used for merging textures at runtime, see [Dynamic Atlas](https://docs.cocos.com/creator/manual/en/advanced-topics/dynamic-atlas.html) for details. + !#zh 管ç†åЍæ€å›¾é›†ã€‚动æ€å›¾é›†ç”¨äºŽåœ¨è¿è¡Œæ—¶å¯¹è´´å›¾è¿›è¡Œåˆå¹¶ï¼Œè¯¦è§ [动æ€åˆå›¾](https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html)。 */ + export class DynamicAtlasManager { + /** !#en Enable or disable the dynamic atlas, see [Dynamic Atlas](https://docs.cocos.com/creator/manual/en/advanced-topics/dynamic-atlas.html) for details. + !#zh 开坿ˆ–者关é—动æ€å›¾é›†ï¼Œè¯¦è§ [动æ€åˆå›¾](https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html)。 */ + enabled: boolean; + /** !#en The maximum number of atlas that can be created. + !#zh å¯ä»¥åˆ›å»ºçš„æœ€å¤§å›¾é›†æ•°é‡ã€‚ */ + maxAtlasCount: number; + /** !#en Is enable textureBleeding. + !#zh 是å¦å¼€å¯ textureBleeding */ + textureBleeding: boolean; + /** !#en The size of the atlas that was created + !#zh 创建的图集的宽高 */ + textureSize: number; + /** !#en The maximum size of the picture that can be added to the atlas. + !#zh å¯ä»¥æ·»åŠ è¿›å›¾é›†çš„å›¾ç‰‡çš„æœ€å¤§å°ºå¯¸ã€‚ */ + maxFrameSize: number; + /** !#en The minimum size of the picture that can be added to the atlas. + !#zh å¯ä»¥æ·»åŠ è¿›å›¾é›†çš„å›¾ç‰‡çš„æœ€å°å°ºå¯¸ã€‚ */ + minFrameSize: number; + /** + !#en Append a sprite frame into the dynamic atlas. + !#zh æ·»åŠ ç¢Žå›¾è¿›å…¥åŠ¨æ€å›¾é›†ã€‚ + @param spriteFrame spriteFrame + */ + insertSpriteFrame(spriteFrame: SpriteFrame): void; + /** + !#en Resets all dynamic atlas, and the existing ones will be destroyed. + !#zh é‡ç½®æ‰€æœ‰åЍæ€å›¾é›†ï¼Œå·²æœ‰çš„动æ€å›¾é›†ä¼šè¢«é”€æ¯ã€‚ + */ + reset(): void; + /** + !#en Displays all the dynamic atlas in the current scene, which you can use to view the current atlas state. + !#zh 在当å‰åœºæ™¯ä¸æ˜¾ç¤ºæ‰€æœ‰åЍæ€å›¾é›†ï¼Œå¯ä»¥ç”¨æ¥æŸ¥çœ‹å½“å‰çš„åˆå›¾çжæ€ã€‚ + @param show show + */ + showDebug(show: boolean): Node; + } + /** !#en + Physics material. + !#zh + ç‰©ç†æè´¨ã€‚ */ + export class PhysicsMaterial extends Asset { + /** !#en + Friction for this material. + !#zh + ç‰©ç†æè´¨çš„æ‘©æ“¦åŠ›ã€‚ */ + friction: number; + /** !#en + Restitution for this material. + !#zh + ç‰©ç†æè´¨çš„å¼¹åŠ›ã€‚ */ + restitution: number; + } + /** !#en + Each frame applies a constant force to a rigid body, depending on the RigidBody3D + !#zh + 在æ¯å¸§å¯¹ä¸€ä¸ªåˆšä½“æ–½åŠ æŒç»çš„力,ä¾èµ– RigidBody3D 组件 */ + export class ConstantForce extends Component { + /** !#en + Set the force used in the world coordinate system, use `this.force = otherVec3`. + !#zh + è®¾ç½®ä¸–ç•Œåæ ‡ç³»ä¸ä½¿ç”¨çš„力,设置时请用 `this.force = otherVec3` 的方å¼ã€‚ */ + force: Vec3; + /** !#en + Set the force used in the local coordinate system, using `this.localforce = otherVec3`. + !#zh + 获å–å’Œè®¾ç½®æœ¬åœ°åæ ‡ç³»ä¸ä½¿ç”¨çš„力,设置时请用 `this.localForce = otherVec3` 的方å¼ã€‚ */ + localForce: Vec3; + /** !#en + Torque applied to the world orientation + !#zh + 对世界æœå‘æ–½åŠ çš„æ‰çŸ© */ + torque: Vec3; + /** !#en + Torque applied to local orientation, using `this.localtorque = otherVec3`. + !#zh + 对本地æœå‘æ–½åŠ çš„æ‰çŸ©ï¼Œè®¾ç½®æ—¶è¯·ç”¨ `this.localTorque = otherVec3` 的方å¼ã€‚ */ + localTorque: Vec3; + } + /** !#en + RigidBody is the basic object that make up the physical world, and it can make a node physically affected and react. + !#zh + 刚体是组æˆç‰©ç†ä¸–界的基本对象,å¯ä»¥è®©ä¸€ä¸ªèŠ‚ç‚¹å—到物ç†å½±å“并产生å应。该组件在使用 Builtin 物ç†å¼•æ“Žæ—¶æ— æ•ˆã€‚ */ + export class RigidBody3D extends Component { + /** !#en + Whether sleep is allowed. + !#zh + 是å¦å…è®¸ä¼‘çœ ã€‚ */ + allowSleep: boolean; + /** !#en + The mass of the rigidbody. + !#zh + 刚体的质é‡ã€‚ */ + mass: number; + /** !#en + Used to reduce the linear rate of rigidbody. The larger the value, the slower the rigidbody moves. + !#zh + 线性阻尼,用于å‡å°åˆšä½“的线性速率,值越大物体移动越慢。 */ + linearDamping: number; + /** !#en + Used to reduce the rotation rate of rigidbody. The larger the value, the slower the rigidbody rotates. + !#zh + 角阻尼,用于å‡å°åˆšä½“的旋转速率,值越大刚体旋转越慢。 */ + angularDamping: number; + /** !#en + If enabled, the developer controls the displacement and rotation of the rigidbody, not the physics engine. + !#zh + 是å¦ç”±å¼€å‘è€…æ¥æŽ§åˆ¶åˆšä½“çš„ä½ç§»å’Œæ—‹è½¬ï¼Œè€Œä¸æ˜¯å—物ç†å¼•擎的影å“。 */ + isKinematic: boolean; + /** !#en + If enabled, the rigidbody is affected by gravity. + !#zh + 如果开å¯ï¼Œåˆšä½“会å—到é‡åЛ影å“。 */ + useGravity: boolean; + /** !#en + If enabled, the rigidbody will be fixed without rotation during a collision. + !#zh + 如果开å¯ï¼Œå‘生碰撞时会固定刚体ä¸äº§ç”Ÿæ—‹è½¬ã€‚ */ + fixedRotation: boolean; + /** !#en + It can affect the linear velocity change of the rigidbody in each axis. The larger the value, the faster the rigidbody moves. + !#zh + çº¿æ€§å› å,å¯å½±å“刚体在æ¯ä¸ªè½´å‘的线性速度å˜åŒ–,值越大刚体移动越快。 */ + linearFactor: Vec3; + /** !#en + It can affect the rotation speed change of the rigidbody in each axis. The larger the value, the faster the rigidbody rotates. + !#zh + æ—‹è½¬å› å,å¯å½±å“刚体在æ¯ä¸ªè½´å‘的旋转速度å˜åŒ–,值越大刚体旋转越快。 */ + angularFactor: Vec3; + /** !#en + The rigidbody is awake. + !#zh + 刚体是å¦ä¸ºå”¤é†’的状æ€ã€‚ */ + isAwake: boolean; + /** !#en + The rigidbody can enter hibernation. + !#zh + 刚体是å¦ä¸ºå¯è¿›å…¥ä¼‘çœ çš„çŠ¶æ€ã€‚ */ + isSleepy: boolean; + /** !#en + The rigidbody is sleeping. + !#zh + 刚体是å¦ä¸ºæ£åœ¨ä¼‘çœ çš„çŠ¶æ€ã€‚ */ + isSleeping: boolean; + /** !#en + Get the rigidbody object inside the physics engine. + !#zh + 获得物ç†å¼•擎内部刚体对象。 */ + rigidBody: IRigidBody; + /** + !#en + A force is applied to a rigid body at a point in world space. + !#zh + 在世界空间ä¸çš„æŸç‚¹ä¸Šå¯¹åˆšä½“æ–½åŠ ä¸€ä¸ªä½œç”¨åŠ›ã€‚ + @param force force + @param relativePoint The point of action, relative to the center of the rigid body. + */ + applyForce(force: Vec3, relativePoint: Vec3): void; + /** + !#en + Apply a force on the rigid body at a point in local space. + !#zh + 在本地空间ä¸çš„æŸç‚¹ä¸Šå¯¹åˆšä½“æ–½åŠ ä¸€ä¸ªä½œç”¨åŠ›ã€‚ + @param force force + @param localPoint Point of application + */ + applyLocalForce(force: Vec3, localPoint: Vec3): void; + /** + !#en + Apply an impulse to a rigid body at a point in world space. + !#zh + 在世界空间的æŸç‚¹ä¸Šå¯¹åˆšä½“æ–½åŠ ä¸€ä¸ªå†²é‡ã€‚ + @param impulse impulse + @param relativePoint The point of action, relative to the center of the rigid body. + */ + applyImpulse(impulse: Vec3, relativePoint: Vec3): void; + /** + !#en + Apply an impulse to the rigid body at a point in local space. + !#zh + 在本地空间的æŸç‚¹ä¸Šå¯¹åˆšä½“æ–½åŠ ä¸€ä¸ªå†²é‡ã€‚ + @param impulse impulse + @param localPoint Point of application + */ + applyLocalImpulse(impulse: Vec3, localPoint: Vec3): void; + /** + !#en + Apply a torque to the rigid body. + !#zh + å¯¹åˆšä½“æ–½åŠ æ‰è½¬åŠ›ã€‚ + @param torque torque + */ + applyTorque(torque: Vec3): void; + /** + !#en + Apply a local torque to the rigid body. + !#zh + å¯¹åˆšä½“æ–½åŠ æœ¬åœ°æ‰è½¬åŠ›ã€‚ + @param torque torque + */ + applyLocalTorque(torque: Vec3): void; + /** + !#en + Awaken the rigid body. + !#zh + 唤醒刚体。 + */ + wakeUp(): void; + /** + !#en + Dormant rigid body. + !#zh + ä¼‘çœ åˆšä½“ã€‚ + */ + sleep(): void; + /** + !#en + Get linear velocity. + !#zh + 获å–线性速度。 + @param out out + */ + getLinearVelocity(out: Vec3): void; + /** + !#en + Set linear speed. + !#zh + 设置线性速度。 + @param value value + */ + setLinearVelocity(value: Vec3): void; + /** + !#en + Gets the rotation speed. + !#zh + èŽ·å–æ—‹è½¬é€Ÿåº¦ã€‚ + @param out out + */ + getAngularVelocity(out: Vec3): void; + /** + !#en + Set rotation speed. + !#zh + 设置旋转速度。 + @param value value + */ + setAngularVelocity(value: Vec3): void; + } + /** !#en + Physics box collider + !#zh + 物ç†ç›’å碰撞器 */ + export class BoxCollider3D extends Collider3D { + /** !#en + Get or set the size of the box, in local space. + !#zh + èŽ·å–æˆ–设置盒的大å°ã€‚ */ + size: Vec3; + boxShape: IBoxShape; + } + /** !#en + The base class of the collider. + !#zh + 碰撞器的基类。 */ + export class Collider3D extends Component implements EventTarget { + sharedMaterial: PhysicsMaterial; + /** !#en + get or set the collider is trigger, this will be always trigger if using builtin. + !#zh + èŽ·å–æˆ–设置碰撞器是å¦ä¸ºè§¦å‘器。 */ + isTrigger: boolean; + /** !#en + get or set the center of the collider, in local space. + !#zh + èŽ·å–æˆ–设置碰撞器的ä¸å¿ƒç‚¹ã€‚ */ + center: Vec3; + /** !#en + get the collider attached rigidbody, this may be null. + !#zh + 获å–碰撞器所绑定的刚体组件,å¯èƒ½ä¸º null。 */ + attachedRigidbody: RigidBody3D|void; + /** !#en + get collider shape. + !#zh + 获å–碰撞器形状。 */ + shape: IBaseShape; + /** + !#en + Register an callback of a specific event type on the EventTarget. + This type of event should be triggered via `emit`. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒã€‚è¿™ç§ç±»åž‹çš„事件应该被 `emit` 触å‘。 + @param type The type of collider event can be `trigger-enter`, `trigger-stay`, `trigger-exit` or `collision-enter`, `collision-stay`, `collision-exit`. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null. + + @example + ```js + eventTarget.on('fire', function (event) { + // event is ITriggerEvent or ICollisionEvent + }, node); + ``` + */ + on<T extends Function>(type: string, callback: T, target?: any, useCapture?: boolean): T; + /** + !#en + Removes the listeners previously registered with the same type, callback, target and or useCapture, + if only type is passed as parameter, all listeners registered with that type will be removed. + !#zh + åˆ é™¤ä¹‹å‰ç”¨åŒç±»åž‹ï¼Œå›žè°ƒï¼Œç›®æ ‡æˆ– useCapture 注册的事件监å¬å™¨ï¼Œå¦‚æžœåªä¼ 递 typeï¼Œå°†ä¼šåˆ é™¤ type 类型的所有事件监å¬å™¨ã€‚ + @param type The type of collider event can be `trigger-enter`, `trigger-stay`, `trigger-exit` or `collision-enter`, `collision-stay`, `collision-exit`. + @param callback The callback to remove. + @param target The target (this object) to invoke the callback, if it's not given, only callback without target will be removed. + + @example + ```js + // register fire eventListener + var callback = eventTarget.on('fire', function () { + cc.log("fire in the hole"); + }, target); + // remove fire event listener + eventTarget.off('fire', callback, target); + // remove all fire event listeners + eventTarget.off('fire'); + ``` + */ + off(type: string, callback?: Function, target?: any): void; + /** + !#en + Register an callback of a specific event type on the EventTarget, + the callback will remove itself after the first time it is triggered. + !#zh + æ³¨å†Œäº‹ä»¶ç›®æ ‡çš„ç‰¹å®šäº‹ä»¶ç±»åž‹å›žè°ƒï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type The type of collider event can be `trigger-enter`, `trigger-stay`, `trigger-exit` or `collision-enter`, `collision-stay`, `collision-exit`. + @param callback The callback that will be invoked when the event is dispatched. + The callback is ignored if it is a duplicate (the callbacks are unique). + @param target The target (this object) to invoke the callback, can be null. + + @example + ```js + eventTarget.once('fire', function (event) { + // event is ITriggerEvent or ICollisionEvent + }, node); + ``` + */ + once(type: string, callback: (event: ITriggerEvent|ICollisionEvent) => void, target?: any): void; + /** + !#en Checks whether the EventTarget object has any callback registered for a specific type of event. + !#zh æ£€æŸ¥äº‹ä»¶ç›®æ ‡å¯¹è±¡æ˜¯å¦æœ‰ä¸ºç‰¹å®šç±»åž‹çš„事件注册的回调。 + @param type The type of event. + */ + hasEventListener(type: string): boolean; + /** + !#en Removes all callbacks previously registered with the same target (passed as parameter). + This is not for removing all listeners in the current event target, + and this is not for removing all listeners the target parameter have registered. + It's only for removing all listeners (callback and target couple) registered on the current event target by the target parameter. + !#zh åœ¨å½“å‰ EventTarget ä¸Šåˆ é™¤æŒ‡å®šç›®æ ‡ï¼ˆtarget 傿•°ï¼‰æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + è¿™ä¸ªå‡½æ•°æ— æ³•åˆ é™¤å½“å‰ EventTarget 的所有事件监å¬å™¨ï¼Œä¹Ÿæ— æ³•åˆ é™¤ target 傿•°æ‰€æ³¨å†Œçš„æ‰€æœ‰äº‹ä»¶ç›‘å¬å™¨ã€‚ + 这个函数åªèƒ½åˆ 除 target 傿•°åœ¨å½“å‰ EventTarget 上注册的所有事件监å¬å™¨ã€‚ + @param target The target to be searched for all related listeners + */ + targetOff(target: any): void; + /** + !#en + Send an event with the event object. + !#zh + 通过事件对象派å‘事件 + @param event event + */ + dispatchEvent(event: Event): void; + } + /** !#en + Physics sphere collider + !#zh + 物ç†çƒç¢°æ’žå™¨ */ + export class SphereCollider3D extends Collider3D { + /** !#en + Get or set the radius of the sphere. + !#zh + èŽ·å–æˆ–设置çƒçš„åŠå¾„。 */ + radius: number; + sphereShape: ISphereShape; + } + /**************************************************** + * TiledMap + *****************************************************/ + + export namespace TiledMap { + /** !#en The orientation of tiled map. + !#zh Tiled Map 地图方å‘。 */ + export enum Orientation { + ORTHO = 0, + HEX = 0, + ISO = 0, + } + } + + /**************************************************** + * TiledMap + *****************************************************/ + + export namespace TiledMap { + /** The property type of tiled map. */ + export enum Property { + NONE = 0, + MAP = 0, + LAYER = 0, + OBJECTGROUP = 0, + OBJECT = 0, + TILE = 0, + } + } + + /**************************************************** + * TiledMap + *****************************************************/ + + export namespace TiledMap { + /** The tile flags of tiled map. */ + export enum TileFlag { + HORIZONTAL = 0, + VERTICAL = 0, + DIAGONAL = 0, + FLIPPED_ALL = 0, + FLIPPED_MASK = 0, + } + } + + /**************************************************** + * TiledMap + *****************************************************/ + + export namespace TiledMap { + /** !#en The stagger axis of Hex tiled map. + !#zh å…边形地图的 stagger axis 值 */ + export enum StaggerAxis { + STAGGERAXIS_X = 0, + STAGGERAXIS_Y = 0, + } + } + + /**************************************************** + * TiledMap + *****************************************************/ + + export namespace TiledMap { + /** !#en The render order of tiled map. + !#zh åœ°å›¾çš„æ¸²æŸ“é¡ºåº */ + export enum RenderOrder { + STAGGERINDEX_ODD = 0, + STAGGERINDEX_EVEN = 0, + RightDown = 0, + RightUp = 0, + LeftDown = 0, + LeftUp = 0, + } + } + + /**************************************************** + * TiledMap + *****************************************************/ + + export namespace TiledMap { + /** !#en TiledMap Object Type + !#zh 地图物体类型 */ + export enum TMXObjectType { + RECT = 0, + ELLIPSE = 0, + POLYGON = 0, + POLYLINE = 0, + IMAGE = 0, + TEXT = 0, + } + } + + /**************************************************** + * ParticleSystem + *****************************************************/ + + export namespace ParticleSystem { + /** !#en Enum for emitter modes + !#zh å‘å°„æ¨¡å¼ */ + export enum EmitterMode { + GRAVITY = 0, + RADIUS = 0, + } + } + + /**************************************************** + * ParticleSystem + *****************************************************/ + + export namespace ParticleSystem { + /** !#en Enum for particles movement type. + !#zh ç²’åä½ç½®ç±»åž‹ */ + export enum PositionType { + FREE = 0, + RELATIVE = 0, + GROUPED = 0, + } + } + + /**************************************************** + * audioEngine + *****************************************************/ + + export namespace audioEngine { + /** !#en Audio state. + !#zh å£°éŸ³æ’æ”¾çŠ¶æ€ */ + export enum AudioState { + ERROR = 0, + INITIALZING = 0, + PLAYING = 0, + PAUSED = 0, + STOPPED = 0, + } + } + + /**************************************************** + * WebView + *****************************************************/ + + export namespace WebView { + /** !#en WebView event type + !#zh 网页视图事件类型 */ + export enum EventType { + LOADED = 0, + LOADING = 0, + ERROR = 0, + } + } + + /**************************************************** + * VideoPlayer + *****************************************************/ + + export namespace VideoPlayer { + /** !#en Video event type + !#zh 视频事件类型 */ + export enum EventType { + PLAYING = 0, + PAUSED = 0, + STOPPED = 0, + COMPLETED = 0, + META_LOADED = 0, + CLICKED = 0, + READY_TO_PLAY = 0, + } + } + + /**************************************************** + * VideoPlayer + *****************************************************/ + + export namespace VideoPlayer { + /** !#en Enum for video resouce type type. + !#zh è§†é¢‘æ¥æº */ + export enum ResourceType { + REMOTE = 0, + LOCAL = 0, + } + } + + /**************************************************** + * debug + *****************************************************/ + + export namespace debug { + /** !#en Enum for debug modes. + !#zh è°ƒè¯•æ¨¡å¼ */ + export enum DebugMode { + NONE = 0, + INFO = 0, + WARN = 0, + ERROR = 0, + INFO_FOR_WEB_PAGE = 0, + WARN_FOR_WEB_PAGE = 0, + ERROR_FOR_WEB_PAGE = 0, + } + } + + /**************************************************** + * Node + *****************************************************/ + + export namespace Node { + /** !#en Node's local dirty properties flag + !#zh Node 的本地属性 dirty 状æ€ä½ */ + export enum _LocalDirtyFlag { + POSITION = 0, + SCALE = 0, + ROTATION = 0, + SKEW = 0, + TRS = 0, + RS = 0, + TRS = 0, + PHYSICS_POSITION = 0, + PHYSICS_SCALE = 0, + PHYSICS_ROTATION = 0, + PHYSICS_TRS = 0, + PHYSICS_RS = 0, + ALL_POSITION = 0, + ALL_SCALE = 0, + ALL_ROTATION = 0, + ALL_TRS = 0, + ALL = 0, + } + } + + /**************************************************** + * Node + *****************************************************/ + + export namespace Node { + /** !#en The event type supported by Node + !#zh Node 支æŒçš„事件类型 */ + export class EventType { + /** !#en The event type for touch start event, you can use its value directly: 'touchstart' + !#zh 当手指触摸到å±å¹•时。 */ + static TOUCH_START: string; + /** !#en The event type for touch move event, you can use its value directly: 'touchmove' + !#zh 当手指在å±å¹•上移动时。 */ + static TOUCH_MOVE: string; + /** !#en The event type for touch end event, you can use its value directly: 'touchend' + !#zh å½“æ‰‹æŒ‡åœ¨ç›®æ ‡èŠ‚ç‚¹åŒºåŸŸå†…ç¦»å¼€å±å¹•时。 */ + static TOUCH_END: string; + /** !#en The event type for touch end event, you can use its value directly: 'touchcancel' + !#zh å½“æ‰‹æŒ‡åœ¨ç›®æ ‡èŠ‚ç‚¹åŒºåŸŸå¤–ç¦»å¼€å±å¹•时。 */ + static TOUCH_CANCEL: string; + /** !#en The event type for mouse down events, you can use its value directly: 'mousedown' + !#zh å½“é¼ æ ‡æŒ‰ä¸‹æ—¶è§¦å‘一次。 */ + static MOUSE_DOWN: string; + /** !#en The event type for mouse move events, you can use its value directly: 'mousemove' + !#zh å½“é¼ æ ‡åœ¨ç›®æ ‡èŠ‚ç‚¹åœ¨ç›®æ ‡èŠ‚ç‚¹åŒºåŸŸä¸ç§»åŠ¨æ—¶ï¼Œä¸è®ºæ˜¯å¦æŒ‰ä¸‹ã€‚ */ + static MOUSE_MOVE: string; + /** !#en The event type for mouse enter target events, you can use its value directly: 'mouseenter' + !#zh å½“é¼ æ ‡ç§»å…¥ç›®æ ‡èŠ‚ç‚¹åŒºåŸŸæ—¶ï¼Œä¸è®ºæ˜¯å¦æŒ‰ä¸‹ã€‚ */ + static MOUSE_ENTER: string; + /** !#en The event type for mouse leave target events, you can use its value directly: 'mouseleave' + !#zh å½“é¼ æ ‡ç§»å‡ºç›®æ ‡èŠ‚ç‚¹åŒºåŸŸæ—¶ï¼Œä¸è®ºæ˜¯å¦æŒ‰ä¸‹ã€‚ */ + static MOUSE_LEAVE: string; + /** !#en The event type for mouse up events, you can use its value directly: 'mouseup' + !#zh å½“é¼ æ ‡ä»ŽæŒ‰ä¸‹çŠ¶æ€æ¾å¼€æ—¶è§¦å‘一次。 */ + static MOUSE_UP: string; + /** !#en The event type for mouse wheel events, you can use its value directly: 'mousewheel' + !#zh å½“é¼ æ ‡æ»šè½®æ»šåŠ¨æ—¶ã€‚ */ + static MOUSE_WHEEL: string; + /** !#en The event type for position change events. + Performance note, this event will be triggered every time corresponding properties being changed, + if the event callback have heavy logic it may have great performance impact, try to avoid such scenario. + !#zh 当节点ä½ç½®æ”¹å˜æ—¶è§¦å‘的事件。 + 性能è¦å‘Šï¼šè¿™ä¸ªäº‹ä»¶ä¼šåœ¨æ¯æ¬¡å¯¹åº”的属性被修改时触å‘,如果事件回调æŸè€—较高,有å¯èƒ½å¯¹æ€§èƒ½æœ‰å¾ˆå¤§çš„è´Ÿé¢å½±å“,请尽é‡é¿å…è¿™ç§æƒ…况。 */ + static POSITION_CHANGED: string; + /** !#en The event type for rotation change events. + Performance note, this event will be triggered every time corresponding properties being changed, + if the event callback have heavy logic it may have great performance impact, try to avoid such scenario. + !#zh å½“èŠ‚ç‚¹æ—‹è½¬æ”¹å˜æ—¶è§¦å‘的事件。 + 性能è¦å‘Šï¼šè¿™ä¸ªäº‹ä»¶ä¼šåœ¨æ¯æ¬¡å¯¹åº”的属性被修改时触å‘,如果事件回调æŸè€—较高,有å¯èƒ½å¯¹æ€§èƒ½æœ‰å¾ˆå¤§çš„è´Ÿé¢å½±å“,请尽é‡é¿å…è¿™ç§æƒ…况。 */ + static ROTATION_CHANGED: string; + /** !#en The event type for scale change events. + Performance note, this event will be triggered every time corresponding properties being changed, + if the event callback have heavy logic it may have great performance impact, try to avoid such scenario. + !#zh å½“èŠ‚ç‚¹ç¼©æ”¾æ”¹å˜æ—¶è§¦å‘的事件。 + 性能è¦å‘Šï¼šè¿™ä¸ªäº‹ä»¶ä¼šåœ¨æ¯æ¬¡å¯¹åº”的属性被修改时触å‘,如果事件回调æŸè€—较高,有å¯èƒ½å¯¹æ€§èƒ½æœ‰å¾ˆå¤§çš„è´Ÿé¢å½±å“,请尽é‡é¿å…è¿™ç§æƒ…况。 */ + static SCALE_CHANGED: string; + /** !#en The event type for size change events. + Performance note, this event will be triggered every time corresponding properties being changed, + if the event callback have heavy logic it may have great performance impact, try to avoid such scenario. + !#zh å½“èŠ‚ç‚¹å°ºå¯¸æ”¹å˜æ—¶è§¦å‘的事件。 + 性能è¦å‘Šï¼šè¿™ä¸ªäº‹ä»¶ä¼šåœ¨æ¯æ¬¡å¯¹åº”的属性被修改时触å‘,如果事件回调æŸè€—较高,有å¯èƒ½å¯¹æ€§èƒ½æœ‰å¾ˆå¤§çš„è´Ÿé¢å½±å“,请尽é‡é¿å…è¿™ç§æƒ…况。 */ + static SIZE_CHANGED: string; + /** !#en The event type for anchor point change events. + Performance note, this event will be triggered every time corresponding properties being changed, + if the event callback have heavy logic it may have great performance impact, try to avoid such scenario. + !#zh å½“èŠ‚ç‚¹é”šç‚¹æ”¹å˜æ—¶è§¦å‘的事件。 + 性能è¦å‘Šï¼šè¿™ä¸ªäº‹ä»¶ä¼šåœ¨æ¯æ¬¡å¯¹åº”的属性被修改时触å‘,如果事件回调æŸè€—较高,有å¯èƒ½å¯¹æ€§èƒ½æœ‰å¾ˆå¤§çš„è´Ÿé¢å½±å“,请尽é‡é¿å…è¿™ç§æƒ…况。 */ + static ANCHOR_CHANGED: string; + /** !#en The event type for color change events. + Performance note, this event will be triggered every time corresponding properties being changed, + if the event callback have heavy logic it may have great performance impact, try to avoid such scenario. + !#zh å½“èŠ‚ç‚¹é¢œè‰²æ”¹å˜æ—¶è§¦å‘的事件。 + 性能è¦å‘Šï¼šè¿™ä¸ªäº‹ä»¶ä¼šåœ¨æ¯æ¬¡å¯¹åº”的属性被修改时触å‘,如果事件回调æŸè€—较高,有å¯èƒ½å¯¹æ€§èƒ½æœ‰å¾ˆå¤§çš„è´Ÿé¢å½±å“,请尽é‡é¿å…è¿™ç§æƒ…况。 */ + static COLOR_CHANGED: string; + /** !#en The event type for new child added events. + !#zh 当新的åèŠ‚ç‚¹è¢«æ·»åŠ æ—¶è§¦å‘的事件。 */ + static CHILD_ADDED: string; + /** !#en The event type for child removed events. + !#zh 当å节点被移除时触å‘的事件。 */ + static CHILD_REMOVED: string; + /** !#en The event type for children reorder events. + !#zh 当åèŠ‚ç‚¹é¡ºåºæ”¹å˜æ—¶è§¦å‘的事件。 */ + static CHILD_REORDER: string; + /** !#en The event type for node group changed events. + !#zh 当节点归属群组å‘生å˜åŒ–时触å‘的事件。 */ + static GROUP_CHANGED: string; + /** !#en The event type for node's sibling order changed. + !#zh 当节点在兄弟节点ä¸çš„顺åºå‘生å˜åŒ–时触å‘的事件。 */ + static SIBLING_ORDER_CHANGED: string; + } + } + + /**************************************************** + * Light + *****************************************************/ + + export namespace Light { + /** !#en The light source type + + !#zh å…‰æºç±»åž‹ */ + export enum Type { + DIRECTIONAL = 0, + POINT = 0, + SPOT = 0, + AMBIENT = 0, + } + } + + /**************************************************** + * Light + *****************************************************/ + + export namespace Light { + /** !#en The shadow type + + !#zh 阴影类型 */ + export enum ShadowType { + NONE = 0, + HARD = 0, + SOFT_PCF3X3 = 0, + SOFT_PCF5X5 = 0, + } + } + + /**************************************************** + * Collider + *****************************************************/ + + export namespace Collider { + /** !#en Defines a Box Collider . + !#zh 用æ¥å®šä¹‰åŒ…围盒碰撞体 */ + export class Box { + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Box size + !#zh åŒ…å›´ç›’å¤§å° */ + size: Size; + } + } + + /**************************************************** + * Collider + *****************************************************/ + + export namespace Collider { + /** !#en Defines a Circle Collider . + !#zh 用æ¥å®šä¹‰åœ†å½¢ç¢°æ’žä½“ */ + export class Circle { + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Circle radius + !#zh 圆形åŠå¾„ */ + radius: number; + } + } + + /**************************************************** + * Collider + *****************************************************/ + + export namespace Collider { + /** !#en Defines a Polygon Collider . + !#zh 用æ¥å®šä¹‰å¤šè¾¹å½¢ç¢°æ’žä½“ */ + export class Polygon { + /** !#en Position offset + !#zh ä½ç½®åç§»é‡ */ + offset: Vec2; + /** !#en Polygon points + !#zh 多边形顶点数组 */ + points: Vec2[]; + } + } + + /**************************************************** + * Prefab + *****************************************************/ + + export namespace Prefab { + /** !#zh + Prefab 创建实例所用的优化ç–略,é…åˆ {{#crossLink "Prefab.optimizationPolicy"}}cc.Prefab#optimizationPolicy{{/crossLink}} 使用。 + !#en + An enumeration used with the {{#crossLink "Prefab.optimizationPolicy"}}cc.Prefab#optimizationPolicy{{/crossLink}} + to specify how to optimize the instantiate operation. */ + export enum OptimizationPolicy { + AUTO = 0, + SINGLE_INSTANCE = 0, + MULTI_INSTANCE = 0, + } + } + + /**************************************************** + * RenderTexture + *****************************************************/ + + export namespace RenderTexture { + /** !#en The depth buffer and stencil buffer format for RenderTexture. + !#zh RenderTexture çš„æ·±åº¦ç¼“å†²ä»¥åŠæ¨¡æ¿ç¼“å†²æ ¼å¼ã€‚ */ + export enum DepthStencilFormat { + RB_FMT_D24S8 = 0, + RB_FMT_S8 = 0, + RB_FMT_D16 = 0, + } + } + + /**************************************************** + * Texture2D + *****************************************************/ + + export namespace Texture2D { + /** The texture pixel format, default value is RGBA8888, + you should note that textures loaded by normal image files (png, jpg) can only support RGBA8888 format, + other formats are supported by compressed file types or raw data. */ + export enum PixelFormat { + RGB565 = 0, + RGB5A1 = 0, + RGBA4444 = 0, + RGB888 = 0, + RGBA8888 = 0, + RGBA32F = 0, + A8 = 0, + I8 = 0, + AI88 = 0, + RGB_PVRTC_2BPPV1 = 0, + RGBA_PVRTC_2BPPV1 = 0, + RGB_A_PVRTC_2BPPV1 = 0, + RGB_PVRTC_4BPPV1 = 0, + RGBA_PVRTC_4BPPV1 = 0, + RGB_A_PVRTC_4BPPV1 = 0, + RGB_ETC1 = 0, + RGBA_ETC1 = 0, + RGB_ETC2 = 0, + RGBA_ETC2 = 0, + } + } + + /**************************************************** + * Texture2D + *****************************************************/ + + export namespace Texture2D { + /** The texture wrap mode */ + export enum WrapMode { + REPEAT = 0, + CLAMP_TO_EDGE = 0, + MIRRORED_REPEAT = 0, + } + } + + /**************************************************** + * Texture2D + *****************************************************/ + + export namespace Texture2D { + /** The texture filter mode */ + export enum Filter { + LINEAR = 0, + NEAREST = 0, + } + } + + /**************************************************** + * Camera + *****************************************************/ + + export namespace Camera { + /** !#en Values for Camera.clearFlags, determining what to clear when rendering a Camera. + !#zh æ‘„åƒæœºæ¸…é™¤æ ‡è®°ä½ï¼Œå†³å®šæ‘„åƒæœºæ¸²æŸ“æ—¶ä¼šæ¸…é™¤å“ªäº›çŠ¶æ€ */ + export enum ClearFlags { + COLOR = 0, + DEPTH = 0, + STENCIL = 0, + } + } + + /**************************************************** + * Event + *****************************************************/ + + export namespace Event { + /** !#en The mouse event + !#zh é¼ æ ‡äº‹ä»¶ç±»åž‹ */ + export class EventMouse extends Event { + /** + !#en Sets scroll data. + !#zh è®¾ç½®é¼ æ ‡çš„æ»šåŠ¨æ•°æ®ã€‚ + @param scrollX scrollX + @param scrollY scrollY + */ + setScrollData(scrollX: number, scrollY: number): void; + /** + !#en Returns the x axis scroll value. + !#zh 获å–é¼ æ ‡æ»šåŠ¨çš„Xè½´è·ç¦»ï¼Œåªæœ‰æ»šåŠ¨æ—¶æ‰æœ‰æ•ˆã€‚ + */ + getScrollX(): number; + /** + !#en Returns the y axis scroll value. + !#zh èŽ·å–æ»šè½®æ»šåŠ¨çš„ Y è½´è·ç¦»ï¼Œåªæœ‰æ»šåŠ¨æ—¶æ‰æœ‰æ•ˆã€‚ + */ + getScrollY(): number; + /** + !#en Sets cursor location. + !#zh 设置当å‰é¼ æ ‡ä½ç½®ã€‚ + @param x x + @param y y + */ + setLocation(x: number, y: number): void; + /** + !#en Returns cursor location. + !#zh 获å–é¼ æ ‡ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getLocation(): Vec2; + /** + !#en Returns the current cursor location in screen coordinates. + !#zh 获å–当å‰äº‹ä»¶åœ¨æ¸¸æˆçª—å£å†…çš„åæ ‡ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getLocationInView(): Vec2; + /** + !#en Returns the previous touch location. + !#zh 获å–é¼ æ ‡ç‚¹å‡»åœ¨ä¸Šä¸€æ¬¡äº‹ä»¶æ—¶çš„ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getPreviousLocation(): Vec2; + /** + !#en Returns the delta distance from the previous location to current location. + !#zh 获å–é¼ æ ‡è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„è·ç¦»å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getDelta(): Vec2; + /** + !#en Returns the X axis delta distance from the previous location to current location. + !#zh 获å–é¼ æ ‡è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„ X è½´è·ç¦»ã€‚ + */ + getDeltaX(): number; + /** + !#en Returns the Y axis delta distance from the previous location to current location. + !#zh 获å–é¼ æ ‡è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„ Y è½´è·ç¦»ã€‚ + */ + getDeltaY(): number; + /** + !#en Sets mouse button. + !#zh è®¾ç½®é¼ æ ‡æŒ‰é”®ã€‚ + @param button button + */ + setButton(button: number): void; + /** + !#en Returns mouse button. + !#zh 获å–é¼ æ ‡æŒ‰é”®ã€‚ + */ + getButton(): number; + /** + !#en Returns location X axis data. + !#zh 获å–é¼ æ ‡å½“å‰ä½ç½® X 轴。 + */ + getLocationX(): number; + /** + !#en Returns location Y axis data. + !#zh 获å–é¼ æ ‡å½“å‰ä½ç½® Y 轴。 + */ + getLocationY(): number; + /** !#en The none event code of mouse event. + !#zh æ— ã€‚ */ + static NONE: number; + /** !#en The event type code of mouse down event. + !#zh é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶ã€‚ */ + static DOWN: number; + /** !#en The event type code of mouse up event. + !#zh é¼ æ ‡æŒ‰ä¸‹åŽé‡Šæ”¾äº‹ä»¶ã€‚ */ + static UP: number; + /** !#en The event type code of mouse move event. + !#zh é¼ æ ‡ç§»åŠ¨äº‹ä»¶ã€‚ */ + static MOVE: number; + /** !#en The event type code of mouse scroll event. + !#zh é¼ æ ‡æ»šè½®äº‹ä»¶ã€‚ */ + static SCROLL: number; + /** !#en The tag of Mouse left button. + !#zh é¼ æ ‡å·¦é”®çš„æ ‡ç¾ã€‚ */ + static BUTTON_LEFT: number; + /** !#en The tag of Mouse right button (The right button number is 2 on browser). + !#zh é¼ æ ‡å³é”®çš„æ ‡ç¾ã€‚ */ + static BUTTON_RIGHT: number; + /** !#en The tag of Mouse middle button (The right button number is 1 on browser). + !#zh é¼ æ ‡ä¸é”®çš„æ ‡ç¾ã€‚ */ + static BUTTON_MIDDLE: number; + /** !#en The tag of Mouse button 4. + !#zh é¼ æ ‡æŒ‰é”® 4 çš„æ ‡ç¾ã€‚ */ + static BUTTON_4: number; + /** !#en The tag of Mouse button 5. + !#zh é¼ æ ‡æŒ‰é”® 5 çš„æ ‡ç¾ã€‚ */ + static BUTTON_5: number; + /** !#en The tag of Mouse button 6. + !#zh é¼ æ ‡æŒ‰é”® 6 çš„æ ‡ç¾ã€‚ */ + static BUTTON_6: number; + /** !#en The tag of Mouse button 7. + !#zh é¼ æ ‡æŒ‰é”® 7 çš„æ ‡ç¾ã€‚ */ + static BUTTON_7: number; + /** !#en The tag of Mouse button 8. + !#zh é¼ æ ‡æŒ‰é”® 8 çš„æ ‡ç¾ã€‚ */ + static BUTTON_8: number; + } + } + + /**************************************************** + * Event + *****************************************************/ + + export namespace Event { + /** !#en The touch event + !#zh 触摸事件 */ + export class EventTouch extends Event { + /** + + @param touchArr The array of the touches + @param bubbles A boolean indicating whether the event bubbles up through the tree or not + */ + constructor(touchArr: any[], bubbles: boolean); + /** !#en The current touch object + !#zh 当å‰è§¦ç‚¹å¯¹è±¡ */ + touch: Touch; + /** + !#en Returns event code. + !#zh 获å–事件类型。 + */ + getEventCode(): number; + /** + !#en Returns touches of event. + !#zh 获å–触摸点的列表。 + */ + getTouches(): any[]; + /** + !#en Sets touch location. + !#zh 设置当å‰è§¦ç‚¹ä½ç½® + @param x x + @param y y + */ + setLocation(x: number, y: number): void; + /** + !#en Returns touch location. + !#zh 获å–触点ä½ç½®ã€‚ + */ + getLocation(): Vec2; + /** + !#en Returns the current touch location in screen coordinates. + !#zh 获å–当å‰è§¦ç‚¹åœ¨æ¸¸æˆçª—å£ä¸çš„ä½ç½®ã€‚ + */ + getLocationInView(): Vec2; + /** + !#en Returns the previous touch location. + !#zh 获å–触点在上一次事件时的ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getPreviousLocation(): Vec2; + /** + !#en Returns the start touch location. + !#zh 获å–触点è½ä¸‹æ—¶çš„ä½ç½®å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getStartLocation(): Vec2; + /** + !#en Returns the id of cc.Touch. + !#zh è§¦ç‚¹çš„æ ‡è¯† ID,å¯ä»¥ç”¨æ¥åœ¨å¤šç‚¹è§¦æ‘¸ä¸è·Ÿè¸ªè§¦ç‚¹ã€‚ + */ + getID(): number; + /** + !#en Returns the delta distance from the previous location to current location. + !#zh 获å–触点è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„è·ç¦»å¯¹è±¡ï¼Œå¯¹è±¡åŒ…å« x å’Œ y 属性。 + */ + getDelta(): Vec2; + /** + !#en Returns the X axis delta distance from the previous location to current location. + !#zh 获å–触点è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„ x è½´è·ç¦»ã€‚ + */ + getDeltaX(): number; + /** + !#en Returns the Y axis delta distance from the previous location to current location. + !#zh 获å–触点è·ç¦»ä¸Šä¸€æ¬¡äº‹ä»¶ç§»åŠ¨çš„ y è½´è·ç¦»ã€‚ + */ + getDeltaY(): number; + /** + !#en Returns location X axis data. + !#zh 获å–当å‰è§¦ç‚¹ X è½´ä½ç½®ã€‚ + */ + getLocationX(): number; + /** + !#en Returns location Y axis data. + !#zh 获å–当å‰è§¦ç‚¹ Y è½´ä½ç½®ã€‚ + */ + getLocationY(): number; + } + } + + /**************************************************** + * Event + *****************************************************/ + + export namespace Event { + /** !#en The acceleration event + !#zh åŠ é€Ÿåº¦äº‹ä»¶ */ + export class EventAcceleration extends Event { + } + } + + /**************************************************** + * Event + *****************************************************/ + + export namespace Event { + /** !#en The keyboard event + !#zh 键盘事件 */ + export class EventKeyboard extends Event { + /** !#en + The keyCode read-only property represents a system and implementation dependent numerical code identifying the unmodified value of the pressed key. + This is usually the decimal ASCII (RFC 20) or Windows 1252 code corresponding to the key. + If the key can't be identified, this value is 0. + + !#zh + keyCode 是åªè¯»å±žæ€§å®ƒè¡¨ç¤ºä¸€ä¸ªç³»ç»Ÿå’Œä¾èµ–于实现的数å—代ç ,å¯ä»¥è¯†åˆ«æŒ‰é”®çš„æœªä¿®æ”¹å€¼ã€‚ + 这通常是å进制 ASCII (RFC20) 或者 Windows 1252 代ç ,所对应的密钥。 + å¦‚æžœæ— æ³•è¯†åˆ«è¯¥é”®ï¼Œåˆ™è¯¥å€¼ä¸º 0。 */ + keyCode: number; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** Aabb */ + export class Aabb { + /** + create a new aabb + @param px X coordinates for aabb's original point + @param py Y coordinates for aabb's original point + @param pz Z coordinates for aabb's original point + @param w the half of aabb width + @param h the half of aabb height + @param l the half of aabb length + */ + create(px: number, py: number, pz: number, w: number, h: number, l: number): Aabb; + /** + clone a new aabb + @param a the source aabb + */ + clone(a: Aabb): Aabb; + /** + copy the values from one aabb to another + @param out the receiving aabb + @param a the source aabb + */ + copy(out: Aabb, a: Aabb): Aabb; + /** + create a new aabb from two corner points + @param out the receiving aabb + @param minPos lower corner position of the aabb + @param maxPos upper corner position of the aabb + */ + fromPoints(out: Aabb, minPos: Vec3, maxPos: Vec3): Aabb; + /** + Set the components of a aabb to the given values + @param out the receiving aabb + @param px X coordinates for aabb's original point + @param py Y coordinates for aabb's original point + @param pz Z coordinates for aabb's original point + @param w the half of aabb width + @param h the half of aabb height + @param l the half of aabb length + */ + set(out: Aabb, px: number, py: number, pz: number, w: number, h: number, l: number): Aabb; + center: Vec3; + halfExtents: Vec3; + _type: number; + /** + Get the bounding points of this shape + @param minPos minPos + @param maxPos maxPos + */ + getBoundary(minPos: Vec3, maxPos: Vec3): void; + /** + Transform this shape + @param m the transform matrix + @param pos the position part of the transform + @param rot the rotation part of the transform + @param scale the scale part of the transform + @param out the target shape + */ + transform(m: Mat4, pos: Vec3, rot: Quat, scale: Vec3, out?: Aabb): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en Shape type. */ + export enum enums { + SHAPE_RAY = 0, + SHAPE_LINE = 0, + SHAPE_SPHERE = 0, + SHAPE_AABB = 0, + SHAPE_OBB = 0, + SHAPE_PLANE = 0, + SHAPE_TRIANGLE = 0, + SHAPE_FRUSTUM = 0, + SHAPE_FRUSTUM_ACCURATE = 0, + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en frustum + !#zh 平截头体 */ + export class Frustum { + /** Set whether to use accurate intersection testing function on this frustum */ + accurate: boolean; + /** + create a new frustum + */ + static create(): Frustum; + /** + Clone a frustum + @param f f + */ + static clone(f: Frustum): Frustum; + /** + Copy the values from one frustum to another + @param out out + @param f f + */ + copy(out: Frustum, f: Frustum): Frustum; + planes: geomUtils.Plane[]; + planes: Vec3[]; + /** + !#en Update the frustum information according to the given transform matrix. + Note that the resulting planes are not normalized under normal mode. + @param m the view-projection matrix + @param inv the inverse view-projection matrix + */ + update(m: Mat4, inv: Mat4): void; + /** + !#en transform by matrix + @param mat mat + */ + transform(mat: Mat4): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** undefined */ + export class intersect { + /** + !#en + Check whether ray intersect with nodes + !#zh + 检测射线是å¦ä¸Žç‰©ä½“有交集 + @param root If root is null, then traversal nodes from scene node + @param worldRay worldRay + @param handler handler + @param filter filter + */ + static ray_cast(root: Node, worldRay: geomUtils.Ray, handler: Function, filter: Function): any[]; + /** + !#en ray-plane intersect<br/> + !#zh 射线与平é¢çš„相交性检测。 + @param ray ray + @param plane plane + */ + static ray_plane(ray: geomUtils.Ray, plane: geomUtils.Plane): number; + /** + !#en line-plane intersect<br/> + !#zh 线段与平é¢çš„相交性检测。 + @param line line + @param plane plane + */ + static line_plane(line: geomUtils.Line, plane: geomUtils.Plane): number; + /** + !#en ray-triangle intersect<br/> + !#zh 射线与三角形的相交性检测。 + @param ray ray + @param triangle triangle + @param doubleSided doubleSided + */ + static ray_triangle(ray: geomUtils.Ray, triangle: geomUtils.Triangle, doubleSided: boolean): number; + /** + !#en line-triangle intersect<br/> + !#zh 线段与三角形的相交性检测。 + @param line line + @param triangle triangle + @param outPt optional, The intersection point + */ + static line_triangle(line: geomUtils.Line, triangle: geomUtils.Triangle, outPt: Vec3): number; + /** + !#en line-quad intersect<br/> + !#zh 线段与四边形的相交性检测。 + @param p A point on a line segment + @param q Another point on the line segment + @param a Quadrilateral point a + @param b Quadrilateral point b + @param c Quadrilateral point c + @param d Quadrilateral point d + @param outPt optional, The intersection point + */ + static line_quad(p: Vec3, q: Vec3, a: Vec3, b: Vec3, c: Vec3, d: Vec3, outPt: Vec3): number; + /** + !#en ray-sphere intersect<br/> + !#zh 射线和çƒçš„相交性检测。 + @param ray ray + @param sphere sphere + */ + static ray_sphere(ray: geomUtils.Ray, sphere: geomUtils.Sphere): number; + /** + !#en ray-aabb intersect<br/> + !#zh 射线和轴对é½åŒ…围盒的相交性检测。 + @param ray ray + @param aabb Align the axis around the box + */ + static ray_aabb(ray: geomUtils.Ray, aabb: Aabb): number; + /** + !#en ray-obb intersect<br/> + !#zh 射线和方å‘包围盒的相交性检测。 + @param ray ray + @param obb Direction box + */ + static ray_obb(ray: geomUtils.Ray, obb: geomUtils.Obb): number; + /** + !#en aabb-aabb intersect<br/> + !#zh 轴对é½åŒ…围盒和轴对é½åŒ…围盒的相交性检测。 + @param aabb1 Axis alignment surrounds box 1 + @param aabb2 Axis alignment surrounds box 2 + */ + static aabb_aabb(aabb1: Aabb, aabb2: Aabb): number; + /** + !#en aabb-obb intersect<br/> + !#zh 轴对é½åŒ…围盒和方å‘包围盒的相交性检测。 + @param aabb Align the axis around the box + @param obb Direction box + */ + static aabb_obb(aabb: Aabb, obb: geomUtils.Obb): number; + /** + !#en aabb-plane intersect<br/> + !#zh 轴对é½åŒ…围盒和平é¢çš„相交性检测。 + @param aabb Align the axis around the box + @param plane plane + */ + static aabb_plane(aabb: Aabb, plane: geomUtils.Plane): number; + /** + !#en aabb-frustum intersect, faster but has false positive corner cases<br/> + !#zh 轴对é½åŒ…围盒和锥å°ç›¸äº¤æ€§æ£€æµ‹ï¼Œé€Ÿåº¦å¿«ï¼Œä½†æœ‰é”™è¯¯æƒ…况。 + @param aabb Align the axis around the box + @param frustum frustum + */ + static aabb_frustum(aabb: Aabb, frustum: Frustum): number; + /** + !#en aabb-frustum intersect, handles most of the false positives correctly<br/> + !#zh 轴对é½åŒ…围盒和锥å°ç›¸äº¤æ€§æ£€æµ‹ï¼Œæ£ç¡®å¤„ç†å¤§å¤šæ•°é”™è¯¯æƒ…况。 + @param aabb Align the axis around the box + @param frustum frustum + */ + static aabb_frustum_accurate(aabb: Aabb, frustum: Frustum): number; + /** + !#en obb-point intersect<br/> + !#zh æ–¹å‘包围盒和点的相交性检测。 + @param obb Direction box + @param point point + */ + static obb_point(obb: geomUtils.Obb, point: geomUtils.Vec3): boolean; + /** + !#en obb-plane intersect<br/> + !#zh æ–¹å‘包围盒和平é¢çš„相交性检测。 + @param obb Direction box + @param plane plane + */ + static obb_plane(obb: geomUtils.Obb, plane: geomUtils.Plane): number; + /** + !#en obb-frustum intersect, faster but has false positive corner cases<br/> + !#zh æ–¹å‘包围盒和锥å°ç›¸äº¤æ€§æ£€æµ‹ï¼Œé€Ÿåº¦å¿«ï¼Œä½†æœ‰é”™è¯¯æƒ…况。 + @param obb Direction box + @param frustum frustum + */ + static obb_frustum(obb: geomUtils.Obb, frustum: Frustum): number; + /** + !#en obb-frustum intersect, handles most of the false positives correctly<br/> + !#zh æ–¹å‘包围盒和锥å°ç›¸äº¤æ€§æ£€æµ‹ï¼Œæ£ç¡®å¤„ç†å¤§å¤šæ•°é”™è¯¯æƒ…况。 + @param obb Direction box + @param frustum frustum + */ + static obb_frustum_accurate(obb: geomUtils.Obb, frustum: Frustum): number; + /** + !#en obb-obb intersect<br/> + !#zh æ–¹å‘包围盒和方å‘包围盒的相交性检测。 + @param obb1 Direction box1 + @param obb2 Direction box2 + */ + static obb_obb(obb1: geomUtils.Obb, obb2: geomUtils.Obb): number; + /** + !#en phere-plane intersect, not necessarily faster than obb-plane<br/> + due to the length calculation of the plane normal to factor out<br/> + the unnomalized plane distance<br/> + !#zh çƒä¸Žå¹³é¢çš„相交性检测。 + @param sphere sphere + @param plane plane + */ + static sphere_plane(sphere: geomUtils.Sphere, plane: geomUtils.Plane): number; + /** + !#en sphere-frustum intersect, faster but has false positive corner cases<br/> + !#zh çƒå’Œé”¥å°çš„相交性检测,速度快,但有错误情况。 + @param sphere sphere + @param frustum frustum + */ + static sphere_frustum(sphere: geomUtils.Sphere, frustum: Frustum): number; + /** + !#en sphere-frustum intersect, handles the false positives correctly<br/> + !#zh çƒå’Œé”¥å°çš„相交性检测,æ£ç¡®å¤„ç†å¤§å¤šæ•°é”™è¯¯æƒ…况。 + @param sphere sphere + @param frustum frustum + */ + static sphere_frustum_accurate(sphere: geomUtils.Sphere, frustum: Frustum): number; + /** + !#en sphere-sphere intersect<br/> + !#zh çƒå’Œçƒçš„相交性检测。 + @param sphere0 sphere0 + @param sphere1 sphere1 + */ + static sphere_sphere(sphere0: geomUtils.Sphere, sphere1: geomUtils.Sphere): boolean; + /** + !#en sphere-aabb intersect<br/> + !#zh çƒå’Œè½´å¯¹é½åŒ…围盒的相交性检测。 + @param sphere sphere + @param aabb aabb + */ + static sphere_aabb(sphere: geomUtils.Sphere, aabb: Aabb): boolean; + /** + !#en sphere-obb intersect<br/> + !#zh çƒå’Œæ–¹å‘包围盒的相交性检测。 + @param sphere sphere + @param obb obb + */ + static sphere_obb(sphere: geomUtils.Sphere, obb: geomUtils.Obb): boolean; + /** + !#en + The intersection detection of g1 and g2 can fill in the shape in the basic geometry. + !#zh + g1 å’Œ g2 的相交性检测,å¯å¡«å…¥åŸºç¡€å‡ 何ä¸çš„形状。 + @param g1 Geometry 1 + @param g2 Geometry 2 + @param outPt optional, Intersection point. (note: only partial shape detection with this return value) + */ + static resolve(g1: any, g2: any, outPt: any): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en + line + !#zh + 直线 */ + export class Line { + /** + !#en + create a new line + !#zh + 创建一个新的 line。 + @param sx The x part of the starting point. + @param sy The y part of the starting point. + @param sz The z part of the starting point. + @param ex The x part of the end point. + @param ey The y part of the end point. + @param ez The z part of the end point. + */ + create(sx: number, sy: number, sz: number, ex: number, ey: number, ez: number): Line; + /** + !#en + Creates a new line initialized with values from an existing line + !#zh + 克隆一个新的 line。 + @param a The source of cloning. + */ + clone(a: Line): Line; + /** + !#en + Copy the values from one line to another + !#zh + å¤åˆ¶ä¸€ä¸ªçº¿çš„值到å¦ä¸€ä¸ªã€‚ + @param out The object that accepts the action. + @param a The source of the copy. + */ + copy(out: Line, a: Line): Line; + /** + !#en + create a line from two points + !#zh + 用两个点创建一个线。 + @param out The object that accepts the action. + @param start The starting point. + @param end At the end. + */ + fromPoints(out: Line, start: Vec3, end: Vec3): Line; + /** + !#en + Set the components of a Vec3 to the given values + !#zh + 将给定线的属性设置为给定值。 + @param out The object that accepts the action. + @param sx The x part of the starting point. + @param sy The y part of the starting point. + @param sz The z part of the starting point. + @param ex The x part of the end point. + @param ey The y part of the end point. + @param ez The z part of the end point. + */ + set(out: Line, sx: number, sy: number, sz: number, ex: number, ey: number, ez: number): Line; + /** + !#en + Calculate the length of the line. + !#zh + 计算线的长度。 + @param a The line to calculate. + */ + len(a: Line): number; + /** !#en + Start points. + !#zh + 起点。 */ + s: Vec3; + /** !#en + End points. + !#zh + 终点。 */ + e: Vec3; + /** + !#en + Calculate the length of the line. + !#zh + 计算线的长度。 + */ + length(): number; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en obb + !#zh + åŸºç¡€å‡ ä½• æ–¹å‘包围盒。 */ + export class Obb { + /** !#zh + 获å–形状的类型。 */ + type: number; + /** + !#en + create a new obb + !#zh + 创建一个新的 obb 实例。 + @param cx X coordinates of the shape relative to the origin. + @param cy Y coordinates of the shape relative to the origin. + @param cz Z coordinates of the shape relative to the origin. + @param hw Obb is half the width. + @param hh Obb is half the height. + @param hl Obb is half the Length. + @param ox_1 Direction matrix parameter. + @param ox_2 Direction matrix parameter. + @param ox_3 Direction matrix parameter. + @param oy_1 Direction matrix parameter. + @param oy_2 Direction matrix parameter. + @param oy_3 Direction matrix parameter. + @param oz_1 Direction matrix parameter. + @param oz_2 Direction matrix parameter. + @param oz_3 Direction matrix parameter. + */ + create(cx: number, cy: number, cz: number, hw: number, hh: number, hl: number, ox_1: number, ox_2: number, ox_3: number, oy_1: number, oy_2: number, oy_3: number, oz_1: number, oz_2: number, oz_3: number): Obb; + /** + !#en + clone a new obb + !#zh + 克隆一个 obb。 + @param a The target of cloning. + */ + clone(a: Obb): Obb; + /** + !#en + copy the values from one obb to another + !#zh + 将从一个 obb 的值å¤åˆ¶åˆ°å¦ä¸€ä¸ª obb。 + @param out Obb that accepts the operation. + @param a Obb being copied. + */ + copy(out: Obb, a: Obb): Obb; + /** + !#en + create a new obb from two corner points + !#zh + 用两个点创建一个新的 obb。 + @param out Obb that accepts the operation. + @param minPos The smallest point of obb. + @param maxPos Obb's maximum point. + */ + fromPoints(out: Obb, minPos: Vec3, maxPos: Vec3): Obb; + /** + !#en + Set the components of a obb to the given values + !#zh + 将给定 obb 的属性设置为给定的值。 + @param cx X coordinates of the shape relative to the origin. + @param cy Y coordinates of the shape relative to the origin. + @param cz Z coordinates of the shape relative to the origin. + @param hw Obb is half the width. + @param hh Obb is half the height. + @param hl Obb is half the Length. + @param ox_1 Direction matrix parameter. + @param ox_2 Direction matrix parameter. + @param ox_3 Direction matrix parameter. + @param oy_1 Direction matrix parameter. + @param oy_2 Direction matrix parameter. + @param oy_3 Direction matrix parameter. + @param oz_1 Direction matrix parameter. + @param oz_2 Direction matrix parameter. + @param oz_3 Direction matrix parameter. + */ + set(cx: number, cy: number, cz: number, hw: number, hh: number, hl: number, ox_1: number, ox_2: number, ox_3: number, oy_1: number, oy_2: number, oy_3: number, oz_1: number, oz_2: number, oz_3: number): Obb; + /** !#en + The center of the local coordinate. + !#zh + æœ¬åœ°åæ ‡çš„ä¸å¿ƒç‚¹ã€‚ */ + center: Vec3; + /** !#en + Half the length, width, and height. + !#zh + 长宽高的一åŠã€‚ */ + halfExtents: Vec3; + /** !#en + Direction matrix. + !#zh + æ–¹å‘矩阵。 */ + orientation: Mat3; + /** + !#en + Get the bounding points of this shape + !#zh + èŽ·å– obb 的最å°ç‚¹å’Œæœ€å¤§ç‚¹ã€‚ + @param minPos minPos + @param maxPos maxPos + */ + getBoundary(minPos: Vec3, maxPos: Vec3): void; + /** + !#en Transform this shape + !#zh + å°† out æ ¹æ®è¿™ä¸ª obb 的数æ®è¿›è¡Œå˜æ¢ã€‚ + @param m The transformation matrix. + @param pos The position part of the transformation. + @param rot The rotating part of the transformation. + @param scale The scaling part of the transformation. + @param out Target of transformation. + */ + transform(m: Mat4, pos: Vec3, rot: Quat, scale: Vec3, out: Obb): void; + /** + !#en + Transform out based on this obb data. + !#zh + å°† out æ ¹æ®è¿™ä¸ª obb 的数æ®è¿›è¡Œå˜æ¢ã€‚ + @param m The transformation matrix. + @param rot The rotating part of the transformation. + @param out Target of transformation. + */ + translateAndRotate(m: Mat4, rot: Quat, out: Obb): void; + /** + !#en + Scale out based on this obb data. + !#zh + å°† out æ ¹æ®è¿™ä¸ª obb 的数æ®è¿›è¡Œç¼©æ”¾ã€‚ + @param scale Scale value. + @param out Scaled target. + */ + setScale(scale: Vec3, out: Obb): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en + plane。 + !#zh + å¹³é¢ã€‚ */ + export class Plane { + /** + !#en + create a new plane + !#zh + 创建一个新的 plane。 + @param nx The x part of the normal component. + @param ny The y part of the normal component. + @param nz The z part of the normal component. + @param d Distance from the origin. + */ + create(nx: number, ny: number, nz: number, d: number): Plane; + /** + !#en + clone a new plane + !#zh + 克隆一个新的 plane。 + @param p The source of cloning. + */ + clone(p: Plane): Plane; + /** + !#en + copy the values from one plane to another + !#zh + å¤åˆ¶ä¸€ä¸ªå¹³é¢çš„值到å¦ä¸€ä¸ªã€‚ + @param out The object that accepts the action. + @param p The source of the copy. + */ + copy(out: Plane, p: Plane): Plane; + /** + !#en + create a plane from three points + !#zh + 用三个点创建一个平é¢ã€‚ + @param out The object that accepts the action. + @param a Point a。 + @param b Point b。 + @param c Point c。 + */ + fromPoints(out: Plane, a: Vec3, b: Vec3, c: Vec3): Plane; + /** + !#en + Set the components of a plane to the given values + !#zh + 将给定平é¢çš„属性设置为给定值。 + @param out The object that accepts the action. + @param nx The x part of the normal component. + @param ny The y part of the normal component. + @param nz The z part of the normal component. + @param d Distance from the origin. + */ + set(out: Plane, nx: number, ny: number, nz: number, d: number): Plane; + /** + !#en + create plane from normal and point + !#zh + ç”¨ä¸€æ¡æ³•线和一个点创建平é¢ã€‚ + @param out The object that accepts the action. + @param normal The normal of a plane. + @param point A point on the plane. + */ + fromNormalAndPoint(out: Plane, normal: Vec3, point: Vec3): Plane; + /** + !#en + normalize a plane + !#zh + 归一化一个平é¢ã€‚ + @param out The object that accepts the action. + @param a Source data for operations. + */ + normalize(out: Plane, a: Plane): Plane; + /** !#en + A normal vector. + !#zh + 法线å‘é‡ã€‚ */ + n: Vec3; + /** !#en + The distance from the origin to the plane. + !#zh + 原点到平é¢çš„è·ç¦»ã€‚ */ + d: number; + /** + !#en + Transform a plane. + !#zh + å˜æ¢ä¸€ä¸ªå¹³é¢ã€‚ + @param mat mat + */ + transform(mat: Mat4): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en + ray + !#zh + 射线。 */ + export class Ray { + /** + !#en + create a new ray + !#zh + 创建一æ¡å°„线。 + @param ox The x part of the starting point. + @param oy The y part of the starting point. + @param oz The z part of the starting point. + @param dx X in the direction. + @param dy Y in the direction. + @param dz Z in the direction. + */ + create(ox: number, oy: number, oz: number, dx: number, dy: number, dz: number): Ray; + /** + !#en + Creates a new ray initialized with values from an existing ray + !#zh + 从一æ¡å°„çº¿å…‹éš†å‡ºä¸€æ¡æ–°çš„射线。 + @param a Clone target + */ + clone(a: Ray): Ray; + /** + !#en + Copy the values from one ray to another + !#zh + 将从一个 ray 的值å¤åˆ¶åˆ°å¦ä¸€ä¸ª ray。 + @param out Accept the ray of the operation. + @param a Copied ray. + */ + copy(out: Ray, a: Ray): Ray; + /** + !#en + create a ray from two points + !#zh + 用两个点创建一æ¡å°„线。 + @param out Receive the operating ray. + @param origin Origin of ray + @param target A point on a ray. + */ + fromPoints(out: Ray, origin: Vec3, target: Vec3): Ray; + /** + !#en + Set the components of a ray to the given values + !#zh + 将给定射线的属性设置为给定的值。 + @param out Receive the operating ray. + @param ox The x part of the starting point. + @param oy The y part of the starting point. + @param oz The z part of the starting point. + @param dx X in the direction. + @param dy Y in the direction. + @param dz Z in the direction. + */ + set(out: Ray, ox: number, oy: number, oz: number, dx: number, dy: number, dz: number): Ray; + /** !#en + Start point. + !#zh + 起点。 */ + o: Vec3; + /** !#e + Direction + !#zh + æ–¹å‘。 */ + d: Vec3; + /** + !#en Compute hit. + @param out out + @param distance distance + */ + computeHit(out: IVec3Like, distance: number): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** !#en + Sphere. + !#zh + 轴对é½çƒã€‚ */ + export class Sphere { + /** + !#en + create a new sphere + !#zh + 创建一个新的 sphere 实例。 + @param cx X coordinates of the shape relative to the origin. + @param cy Y coordinates of the shape relative to the origin. + @param cz Z coordinates of the shape relative to the origin. + @param r Radius of sphere + */ + create(cx: any, cy: any, cz: any, r: any): Sphere; + /** + !#en + clone a new sphere + !#zh + 克隆一个新的 sphere 实例。 + @param p The target of cloning. + */ + clone(p: Sphere): Sphere; + /** + !#en + copy the values from one sphere to another + !#zh + 将从一个 sphere 的值å¤åˆ¶åˆ°å¦ä¸€ä¸ª sphere。 + @param out Accept the sphere of operations. + @param a Sphere being copied. + */ + copy(out: Sphere, a: Sphere): Sphere; + /** + !#en + create a new bounding sphere from two corner points + !#zh + 从两个点创建一个新的 sphere。 + @param out Accept the sphere of operations. + @param minPos The smallest point of sphere. + @param maxPos The maximum point of sphere. + */ + fromPoints(out: any, minPos: any, maxPos: any): Sphere; + /** + !#en Set the components of a sphere to the given values + !#zh å°†çƒä½“的属性设置为给定的值。 + @param out Accept the sphere of operations. + @param cx X coordinates of the shape relative to the origin. + @param cy Y coordinates of the shape relative to the origin. + @param cz Z coordinates of the shape relative to the origin. + @param r Radius. + */ + set(out: Sphere, cx: any, cy: any, cz: any, r: number): Sphere; + /** !#en + The center of the local coordinate. + !#zh + æœ¬åœ°åæ ‡çš„ä¸å¿ƒç‚¹ã€‚ */ + center: Vec3; + /** !#zh + åŠå¾„。 */ + radius: number; + /** + !#en + Clone. + !#zh + 获得克隆。 + */ + clone(): void; + /** + !#en + Copy sphere + !#zh + æ‹·è´å¯¹è±¡ã€‚ + @param a Copy target. + */ + copy(a: any): void; + /** + !#en + Get the bounding points of this shape + !#zh + èŽ·å–æ¤å½¢çŠ¶çš„è¾¹ç•Œç‚¹ã€‚ + @param minPos minPos + @param maxPos maxPos + */ + getBoundary(minPos: Vec3, maxPos: Vec3): void; + /** + !#en + Transform this shape + !#zh + å°† out æ ¹æ®è¿™ä¸ª sphere 的数æ®è¿›è¡Œå˜æ¢ã€‚ + @param m The transformation matrix. + @param pos The position part of the transformation. + @param rot The rotating part of the transformation. + @param scale The scaling part of the transformation. + @param out The target of the transformation. + */ + transform(m: any, pos: any, rot: any, scale: any, out: any): void; + /** + !#en + Scale out based on the sphere data. + !#zh + å°† out æ ¹æ®è¿™ä¸ª sphere 的数æ®è¿›è¡Œç¼©æ”¾ã€‚ + @param scale Scale value + @param out Scale target + */ + setScale(scale: any, out: any): void; + } + } + + /**************************************************** + * geomUtils + *****************************************************/ + + export namespace geomUtils { + /** Triangle */ + export class Triangle { + /** + create a new triangle + @param ax ax + @param ay ay + @param az az + @param bx bx + @param by by + @param bz bz + @param cx cx + @param cy cy + @param cz cz + */ + create(ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): Triangle; + /** + clone a new triangle + @param t the source plane + */ + clone(t: Triangle): Triangle; + /** + copy the values from one triangle to another + @param out the receiving triangle + @param t the source triangle + */ + copy(out: Triangle, t: Triangle): Triangle; + /** + Create a triangle from three points + @param out the receiving triangle + @param a a + @param b b + @param c c + */ + fromPoints(out: Triangle, a: Vec3, b: Vec3, c: Vec3): Triangle; + /** + Set the components of a triangle to the given values + @param out the receiving plane + @param ax X component of a + @param ay Y component of a + @param az Z component of a + @param bx X component of b + @param by Y component of b + @param bz Z component of b + @param cx X component of c + @param cy Y component of c + @param cz Z component of c + */ + set(out: Triangle, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): Plane; + a: Vec3; + b: Vec3; + c: Vec3; + } + } + + /**************************************************** + * MeshRenderer + *****************************************************/ + + export namespace MeshRenderer { + /** !#en Shadow projection mode + + !#ch é˜´å½±æŠ•å°„æ–¹å¼ */ + export enum ShadowCastingMode { + OFF = 0, + ON = 0, + } + } + + /**************************************************** + * Animation + *****************************************************/ + + export namespace Animation { + /** !#en The event type supported by Animation + !#zh Animation 支æŒçš„事件类型 */ + export class EventType { + /** !#en Emit when begin playing animation + !#zh å¼€å§‹æ’æ”¾æ—¶è§¦å‘ */ + static PLAY: string; + /** !#en Emit when stop playing animation + !#zh åœæ¢æ’æ”¾æ—¶è§¦å‘ */ + static STOP: string; + /** !#en Emit when pause animation + !#zh æš‚åœæ’æ”¾æ—¶è§¦å‘ */ + static PAUSE: string; + /** !#en Emit when resume animation + !#zh æ¢å¤æ’æ”¾æ—¶è§¦å‘ */ + static RESUME: string; + /** !#en If animation repeat count is larger than 1, emit when animation play to the last frame + !#zh å‡å¦‚动画循环次数大于 1ï¼Œå½“åŠ¨ç”»æ’æ”¾åˆ°æœ€åŽä¸€å¸§æ—¶è§¦å‘ */ + static LASTFRAME: string; + /** !#en Emit when finish playing animation + !#zh åŠ¨ç”»æ’æ”¾å®Œæˆæ—¶è§¦å‘ */ + static FINISHED: string; + } + } + + /**************************************************** + * Button + *****************************************************/ + + export namespace Button { + /** !#en Enum for transition type. + !#zh 过渡类型 */ + export enum Transition { + NONE = 0, + COLOR = 0, + SPRITE = 0, + SCALE = 0, + } + } + + /**************************************************** + * Component + *****************************************************/ + + export namespace Component { + /** !#en + Component will register a event to target component's handler. + And it will trigger the handler when a certain event occurs. + + !@zh + “EventHandler†类用æ¥è®¾ç½®åœºæ™¯ä¸çš„事件回调, + 该类å…è®¸ç”¨æˆ·è®¾ç½®å›žè°ƒç›®æ ‡èŠ‚ç‚¹ï¼Œç›®æ ‡ç»„ä»¶å,组件方法å, + å¹¶å¯é€šè¿‡ emit æ–¹æ³•è°ƒç”¨ç›®æ ‡å‡½æ•°ã€‚ */ + export class EventHandler { + /** !#en the node that contains target callback, such as the node example script belongs to + !#zh 事件å“应函数所在节点 ,比如例åä¸è„šæœ¬å½’å±žçš„èŠ‚ç‚¹æœ¬èº« */ + target: Node; + /** !#en name of the component(script) that contains target callback, such as the name 'MainMenu' of script in example + !#zh 事件å“应函数所在组件å(脚本å), 比如例åä¸çš„脚本å 'MainMenu' */ + component: string; + /** !#en Event handler, such as function's name 'onClick' in example + !#zh å“应事件函数å,比如例åä¸çš„ 'onClick' */ + handler: string; + /** !#en Custom Event Data, such as 'eventType' in example + !#zh 自定义事件数æ®ï¼Œæ¯”如例åä¸çš„ eventType */ + customEventData: string; + /** + + @param events events + @param params params + */ + static emitEvents(events: EventHandler[], ...params: any[]): void; + /** + !#en Emit event with params + !#zh 触å‘ç›®æ ‡ç»„ä»¶ä¸Šçš„æŒ‡å®š handler å‡½æ•°ï¼Œè¯¥å‚æ•°æ˜¯å›žè°ƒå‡½æ•°çš„傿•°å€¼ï¼ˆå¯ä¸å¡«ï¼‰ã€‚ + @param params params + + @example + ```js + // Call Function + var eventHandler = new cc.Component.EventHandler(); + eventHandler.target = newTarget; + eventHandler.component = "MainMenu"; + eventHandler.handler = "OnClick" + eventHandler.emit(["param1", "param2", ....]); + ``` + */ + emit(params: any[]): void; + } + } + + /**************************************************** + * Label + *****************************************************/ + + export namespace Label { + /** !#en Enum for text alignment. + !#zh 文本横å‘对é½ç±»åž‹ */ + export enum HorizontalAlign { + LEFT = 0, + CENTER = 0, + RIGHT = 0, + } + } + + /**************************************************** + * Label + *****************************************************/ + + export namespace Label { + /** !#en Enum for vertical text alignment. + !#zh 文本垂直对é½ç±»åž‹ */ + export enum VerticalAlign { + TOP = 0, + CENTER = 0, + BOTTOM = 0, + } + } + + /**************************************************** + * Label + *****************************************************/ + + export namespace Label { + /** !#en Enum for Overflow. + !#zh Overflow 类型 */ + export enum Overflow { + NONE = 0, + CLAMP = 0, + SHRINK = 0, + RESIZE_HEIGHT = 0, + } + } + + /**************************************************** + * Label + *****************************************************/ + + export namespace Label { + /** !#en Enum for font type. + !#zh Type 类型 */ + export enum Type { + TTF = 0, + BMFont = 0, + SystemFont = 0, + } + } + + /**************************************************** + * Label + *****************************************************/ + + export namespace Label { + /** !#en Enum for cache mode. + !#zh CacheMode 类型 */ + export enum CacheMode { + NONE = 0, + BITMAP = 0, + CHAR = 0, + } + } + + /**************************************************** + * Layout + *****************************************************/ + + export namespace Layout { + /** !#en Enum for Layout type + !#zh 布局类型 */ + export enum Type { + NONE = 0, + HORIZONTAL = 0, + VERTICAL = 0, + GRID = 0, + } + } + + /**************************************************** + * Layout + *****************************************************/ + + export namespace Layout { + /** !#en Enum for Layout Resize Mode + !#zh ç¼©æ”¾æ¨¡å¼ */ + export enum ResizeMode { + NONE = 0, + CONTAINER = 0, + CHILDREN = 0, + } + } + + /**************************************************** + * Layout + *****************************************************/ + + export namespace Layout { + /** !#en Enum for Grid Layout start axis direction. + The items in grid layout will be arranged in each axis at first.; + !#zh 布局轴å‘,åªç”¨äºŽ GRID 布局。 */ + export enum AxisDirection { + HORIZONTAL = 0, + VERTICAL = 0, + } + } + + /**************************************************** + * Layout + *****************************************************/ + + export namespace Layout { + /** !#en Enum for vertical layout direction. + Used in Grid Layout together with AxisDirection is VERTICAL + !#zh 垂直方å‘å¸ƒå±€æ–¹å¼ */ + export enum VerticalDirection { + BOTTOM_TO_TOP = 0, + TOP_TO_BOTTOM = 0, + } + } + + /**************************************************** + * Layout + *****************************************************/ + + export namespace Layout { + /** !#en Enum for horizontal layout direction. + Used in Grid Layout together with AxisDirection is HORIZONTAL + !#zh 水平方å‘å¸ƒå±€æ–¹å¼ */ + export enum HorizontalDirection { + LEFT_TO_RIGHT = 0, + RIGHT_TO_LEFT = 0, + } + } + + /**************************************************** + * Mask + *****************************************************/ + + export namespace Mask { + /** !#en the type for mask. + !#zh é®ç½©ç»„件类型 */ + export enum Type { + RECT = 0, + ELLIPSE = 0, + IMAGE_STENCIL = 0, + } + } + + /**************************************************** + * PageView + *****************************************************/ + + export namespace PageView { + /** !#en The Page View Size Mode + !#zh 页é¢è§†å›¾æ¯ä¸ªé¡µé¢ç»Ÿä¸€çš„大å°ç±»åž‹ */ + export enum SizeMode { + Unified = 0, + Free = 0, + } + } + + /**************************************************** + * PageView + *****************************************************/ + + export namespace PageView { + /** !#en The Page View Direction + !#zh 页é¢è§†å›¾æ»šåŠ¨ç±»åž‹ */ + export enum Direction { + Horizontal = 0, + Vertical = 0, + } + } + + /**************************************************** + * PageView + *****************************************************/ + + export namespace PageView { + /** !#en Enum for ScrollView event type. + !#zh 滚动视图事件类型 */ + export enum EventType { + PAGE_TURNING = 0, + } + } + + /**************************************************** + * PageViewIndicator + *****************************************************/ + + export namespace PageViewIndicator { + /** !#en Enum for PageView Indicator direction + !#zh 页é¢è§†å›¾æŒ‡ç¤ºå™¨çš„æ‘†æ”¾æ–¹å‘ */ + export enum Direction { + HORIZONTAL = 0, + VERTICAL = 0, + } + } + + /**************************************************** + * ProgressBar + *****************************************************/ + + export namespace ProgressBar { + /** !#en Enum for ProgressBar mode + !#zh è¿›åº¦æ¡æ¨¡å¼ */ + export enum Mode { + HORIZONTAL = 0, + VERTICAL = 0, + FILLED = 0, + } + } + + /**************************************************** + * Scrollbar + *****************************************************/ + + export namespace Scrollbar { + /** Enum for Scrollbar direction */ + export enum Direction { + HORIZONTAL = 0, + VERTICAL = 0, + } + } + + /**************************************************** + * ScrollView + *****************************************************/ + + export namespace ScrollView { + /** !#en Enum for ScrollView event type. + !#zh 滚动视图事件类型 */ + export enum EventType { + SCROLL_TO_TOP = 0, + SCROLL_TO_BOTTOM = 0, + SCROLL_TO_LEFT = 0, + SCROLL_TO_RIGHT = 0, + SCROLLING = 0, + BOUNCE_TOP = 0, + BOUNCE_BOTTOM = 0, + BOUNCE_LEFT = 0, + BOUNCE_RIGHT = 0, + SCROLL_ENDED = 0, + TOUCH_UP = 0, + AUTOSCROLL_ENDED_WITH_THRESHOLD = 0, + SCROLL_BEGAN = 0, + } + } + + /**************************************************** + * Slider + *****************************************************/ + + export namespace Slider { + /** !#en The Slider Direction + !#zh æ»‘åŠ¨å™¨æ–¹å‘ */ + export enum Direction { + Horizontal = 0, + Vertical = 0, + } + } + + /**************************************************** + * Sprite + *****************************************************/ + + export namespace Sprite { + /** !#en Enum for sprite type. + !#zh Sprite 类型 */ + export enum Type { + SIMPLE = 0, + SLICED = 0, + TILED = 0, + FILLED = 0, + MESH = 0, + } + } + + /**************************************************** + * Sprite + *****************************************************/ + + export namespace Sprite { + /** !#en Enum for fill type. + !#zh 填充类型 */ + export enum FillType { + HORIZONTAL = 0, + VERTICAL = 0, + RADIAL = 0, + } + } + + /**************************************************** + * Sprite + *****************************************************/ + + export namespace Sprite { + /** !#en Sprite Size can track trimmed size, raw size or none. + !#zh ç²¾çµå°ºå¯¸è°ƒæ•´æ¨¡å¼ */ + export enum SizeMode { + CUSTOM = 0, + TRIMMED = 0, + RAW = 0, + } + } + + /**************************************************** + * Sprite + *****************************************************/ + + export namespace Sprite { + /** !#en Sprite state can choice the normal or grayscale. + !#zh ç²¾çµé¢œè‰²é€šé“模å¼ã€‚ */ + export enum State { + NORMAL = 0, + GRAY = 0, + } + } + + /**************************************************** + * Widget + *****************************************************/ + + export namespace Widget { + /** !#en Enum for Widget's alignment mode, indicating when the widget should refresh. + !#zh Widget çš„å¯¹é½æ¨¡å¼ï¼Œè¡¨ç¤º Widget 应该何时刷新。 */ + export enum AlignMode { + ONCE = 0, + ON_WINDOW_RESIZE = 0, + ALWAYS = 0, + } + } + + /**************************************************** + * Event + *****************************************************/ + + export namespace Event { + /** !#en The Custom event + !#zh 自定义事件 */ + export class EventCustom extends Event { + /** + + @param type The name of the event (case-sensitive), e.g. "click", "fire", or "submit" + @param bubbles A boolean indicating whether the event bubbles up through the tree or not + */ + constructor(type: string, bubbles: boolean); + /** !#en A reference to the detailed data of the event + !#zh äº‹ä»¶çš„è¯¦ç»†æ•°æ® */ + detail: any; + /** + !#en Sets user data + !#zh è®¾ç½®ç”¨æˆ·æ•°æ® + @param data data + */ + setUserData(data: any): void; + /** + !#en Gets user data + !#zh 获å–ç”¨æˆ·æ•°æ® + */ + getUserData(): any; + /** + !#en Gets event name + !#zh 获å–事件åç§° + */ + getEventName(): string; + } + } + + /**************************************************** + * SystemEvent + *****************************************************/ + + export namespace SystemEvent { + /** !#en The event type supported by SystemEvent + !#zh SystemEvent 支æŒçš„事件类型 */ + export class EventType { + /** !#en The event type for press the key down event, you can use its value directly: 'keydown' + !#zh 当按下按键时触å‘的事件 */ + static KEY_DOWN: string; + /** !#en The event type for press the key up event, you can use its value directly: 'keyup' + !#zh 当æ¾å¼€æŒ‰é”®æ—¶è§¦å‘的事件 */ + static KEY_UP: string; + /** !#en The event type for press the devicemotion event, you can use its value directly: 'devicemotion' + !#zh é‡åŠ›æ„Ÿåº” */ + static DEVICEMOTION: string; + } + } + + /**************************************************** + * PhysicsManager + *****************************************************/ + + export namespace PhysicsManager { + /** !#en + The draw bits for drawing physics debug information.<br> + example:<br> + ```js + cc.director.getPhysicsManager().debugDrawFlags = + // cc.PhysicsManager.DrawBits.e_aabbBit | + // cc.PhysicsManager.DrawBits.e_pairBit | + // cc.PhysicsManager.DrawBits.e_centerOfMassBit | + cc.PhysicsManager.DrawBits.e_jointBit | + cc.PhysicsManager.DrawBits.e_shapeBit; + ``` + !#zh + 指定物ç†ç³»ç»Ÿéœ€è¦ç»˜åˆ¶å“ªäº›è°ƒè¯•ä¿¡æ¯ã€‚<br> + example:<br> + ```js + cc.director.getPhysicsManager().debugDrawFlags = + // cc.PhysicsManager.DrawBits.e_aabbBit | + // cc.PhysicsManager.DrawBits.e_pairBit | + // cc.PhysicsManager.DrawBits.e_centerOfMassBit | + cc.PhysicsManager.DrawBits.e_jointBit | + cc.PhysicsManager.DrawBits.e_shapeBit; + ``` */ + export enum DrawBits { + e_aabbBit = 0, + e_jointBit = 0, + e_shapeBit = 0, + } + } + + /**************************************************** + * Graphics + *****************************************************/ + + export namespace Graphics { + /** !#en Enum for LineCap. + !#zh 线段末端属性 */ + export enum LineCap { + BUTT = 0, + ROUND = 0, + SQUARE = 0, + } + } + + /**************************************************** + * Graphics + *****************************************************/ + + export namespace Graphics { + /** !#en Enum for LineJoin. + !#zh 线段æ‹è§’属性 */ + export enum LineJoin { + BEVEL = 0, + ROUND = 0, + MITER = 0, + } + } + + /**************************************************** + * macro + *****************************************************/ + + export namespace macro { + /** !#en Key map for keyboard event + !#zh 键盘事件的按键值 */ + export enum KEY { + none = 0, + back = 0, + menu = 0, + backspace = 0, + tab = 0, + enter = 0, + shift = 0, + ctrl = 0, + alt = 0, + pause = 0, + capslock = 0, + escape = 0, + space = 0, + pageup = 0, + pagedown = 0, + end = 0, + home = 0, + left = 0, + up = 0, + right = 0, + down = 0, + select = 0, + insert = 0, + Delete = 0, + a = 0, + b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + t = 0, + u = 0, + v = 0, + w = 0, + x = 0, + y = 0, + z = 0, + num0 = 0, + num1 = 0, + num2 = 0, + num3 = 0, + num4 = 0, + num5 = 0, + num6 = 0, + num7 = 0, + num8 = 0, + num9 = 0, + '*' = 0, + '+' = 0, + '-' = 0, + numdel = 0, + '/' = 0, + f1 = 0, + f2 = 0, + f3 = 0, + f4 = 0, + f5 = 0, + f6 = 0, + f7 = 0, + f8 = 0, + f9 = 0, + f10 = 0, + f11 = 0, + f12 = 0, + numlock = 0, + scrolllock = 0, + ';' = 0, + semicolon = 0, + equal = 0, + '=' = 0, + ',' = 0, + comma = 0, + dash = 0, + '.' = 0, + period = 0, + forwardslash = 0, + grave = 0, + '[' = 0, + openbracket = 0, + backslash = 0, + ']' = 0, + closebracket = 0, + quote = 0, + dpadLeft = 0, + dpadRight = 0, + dpadUp = 0, + dpadDown = 0, + dpadCenter = 0, + } + } + + /**************************************************** + * macro + *****************************************************/ + + export namespace macro { + /** Image formats */ + export enum ImageFormat { + JPG = 0, + PNG = 0, + TIFF = 0, + WEBP = 0, + PVR = 0, + ETC = 0, + S3TC = 0, + ATITC = 0, + TGA = 0, + RAWDATA = 0, + UNKNOWN = 0, + } + } + + /**************************************************** + * macro + *****************************************************/ + + export namespace macro { + /** !#en + Enum for blend factor + Refer to: http://www.andersriggelsen.dk/glblendfunc.php + !#zh + æ··åˆå› å + å¯å‚考: http://www.andersriggelsen.dk/glblendfunc.php */ + export enum BlendFactor { + ONE = 0, + ZERO = 0, + SRC_ALPHA = 0, + SRC_COLOR = 0, + DST_ALPHA = 0, + DST_COLOR = 0, + ONE_MINUS_SRC_ALPHA = 0, + ONE_MINUS_SRC_COLOR = 0, + ONE_MINUS_DST_ALPHA = 0, + ONE_MINUS_DST_COLOR = 0, + } + } + + /**************************************************** + * macro + *****************************************************/ + + export namespace macro { + /** undefined */ + export enum TextAlignment { + LEFT = 0, + CENTER = 0, + RIGHT = 0, + } + } + + /**************************************************** + * sys + *****************************************************/ + + export namespace sys { + /** !#en + Network type enumeration + !#zh + 网络类型枚举 */ + export enum NetworkType { + NONE = 0, + LAN = 0, + WWAN = 0, + } + } + + /**************************************************** + * ParticleSystem3DAssembler + *****************************************************/ + + export namespace ParticleSystem3DAssembler { + /** undefined */ + export enum Space { + } + } + + /**************************************************** + * ParticleSystem3DAssembler + *****************************************************/ + + export namespace ParticleSystem3DAssembler { + /** ç²’åçš„ç”Ÿæˆæ¨¡å¼ */ + export enum RenderMode { + } + } + + /**************************************************** + * shapeModule + *****************************************************/ + + export namespace shapeModule { + /** ç²’åå‘射器类型 */ + export enum ShapeType { + Box = 0, + Circle = 0, + Cone = 0, + Sphere = 0, + Hemisphere = 0, + } + } + + /**************************************************** + * shapeModule + *****************************************************/ + + export namespace shapeModule { + /** ç²’å从å‘射器的哪个部ä½å‘å°„ */ + export enum EmitLocation { + Base = 0, + Edge = 0, + Shell = 0, + Volume = 0, + } + } + + /**************************************************** + * shapeModule + *****************************************************/ + + export namespace shapeModule { + /** ç²’å在扇形区域的å‘å°„æ–¹å¼ */ + export enum ArcMode { + Random = 0, + Loop = 0, + PingPong = 0, + } + } + + /**************************************************** + * trailModule + *****************************************************/ + + export namespace trailModule { + /** 选择如何为粒å系统生æˆè½¨è¿¹ */ + export enum TrailMode { + } + } + + /**************************************************** + * trailModule + *****************************************************/ + + export namespace trailModule { + /** 纹ç†å¡«å……æ¨¡å¼ */ + export enum TextureMode { + } + } + + /**************************************************** + * primitive + *****************************************************/ + + export namespace primitive { + /** undefined */ + export enum PolyhedronType { + Tetrahedron = 0, + Octahedron = 0, + Dodecahedron = 0, + Icosahedron = 0, + Rhombicuboctahedron = 0, + TriangularPrism = 0, + PentagonalPrism = 0, + HexagonalPrism = 0, + SquarePyramid = 0, + PentagonalPyramid = 0, + TriangularDipyramid = 0, + PentagonalDipyramid = 0, + ElongatedSquareDipyramid = 0, + ElongatedPentagonalDipyramid = 0, + ElongatedPentagonalCupola = 0, + } + } + + /**************************************************** + * primitive + *****************************************************/ + + export namespace primitive { + /** undefined */ + export class VertexData { + positions: number[]; + normals: number[]; + uvs: number[]; + indices: number[]; + minPos: Vec3; + maxPos: Vec3; + boundingRadius: number; + } + } + + /**************************************************** + * Material + *****************************************************/ + + export namespace Material { + /** !#en Material builtin name + !#zh 内置æè´¨åå— */ + export enum BUILTIN_NAME { + SPRITE = 0, + GRAY_SPRITE = 0, + UNLIT = 0, + } + } + + /**************************************************** + * EditBox + *****************************************************/ + + export namespace EditBox { + /** !#en Enum for keyboard return types + !#zh 键盘的返回键类型 */ + export enum KeyboardReturnType { + DEFAULT = 0, + DONE = 0, + SEND = 0, + SEARCH = 0, + GO = 0, + NEXT = 0, + } + } + + /**************************************************** + * EditBox + *****************************************************/ + + export namespace EditBox { + /** !#en The EditBox's InputMode defines the type of text that the user is allowed to enter. + !#zh è¾“å…¥æ¨¡å¼ */ + export enum InputMode { + ANY = 0, + EMAIL_ADDR = 0, + NUMERIC = 0, + PHONE_NUMBER = 0, + URL = 0, + DECIMAL = 0, + SINGLE_LINE = 0, + } + } + + /**************************************************** + * EditBox + *****************************************************/ + + export namespace EditBox { + /** !#en Enum for the EditBox's input flags + !#zh å®šä¹‰äº†ä¸€äº›ç”¨äºŽè®¾ç½®æ–‡æœ¬æ˜¾ç¤ºå’Œæ–‡æœ¬æ ¼å¼åŒ–çš„æ ‡å¿—ä½ã€‚ */ + export enum InputFlag { + PASSWORD = 0, + SENSITIVE = 0, + INITIAL_CAPS_WORD = 0, + INITIAL_CAPS_SENTENCE = 0, + INITIAL_CAPS_ALL_CHARACTERS = 0, + DEFAULT = 0, + } + } + + /**************************************************** + * textureAnimationModule + *****************************************************/ + + export namespace textureAnimationModule { + /** ç²’å贴图动画类型 */ + export enum Mode { + } + } + + /**************************************************** + * textureAnimationModule + *****************************************************/ + + export namespace textureAnimationModule { + /** è´´å›¾åŠ¨ç”»çš„æ’æ”¾æ–¹å¼ */ + export enum Animation { + } + } + +} + +/** !#en +The global main namespace of Spine, all classes, functions, +properties and constants of Spine are defined in this namespace +!#zh +Spine 的全局的命å空间, +与 Spine 相关的所有的类,函数,属性,常é‡éƒ½åœ¨è¿™ä¸ªå‘½å空间ä¸å®šä¹‰ã€‚ */ +declare namespace sp { + /** !#en The event type of spine skeleton animation. + !#zh 骨骼动画事件类型。 */ + export enum AnimationEventType { + START = 0, + END = 0, + COMPLETE = 0, + EVENT = 0, + } + /** !#en + The skeleton of Spine <br/> + <br/> + (Skeleton has a reference to a SkeletonData and stores the state for skeleton instance, + which consists of the current pose's bone SRT, slot colors, and which slot attachments are visible. <br/> + Multiple skeletons can use the same SkeletonData which includes all animations, skins, and attachments.) <br/> + !#zh + Spine 骨骼动画 <br/> + <br/> + (Skeleton 具有对骨骼数æ®çš„引用并且å˜å‚¨äº†éª¨éª¼å®žä¾‹çš„状æ€ï¼Œ + 它由当å‰çš„骨骼动作,slot 颜色,和å¯è§çš„ slot attachments 组æˆã€‚<br/> + 多个 Skeleton å¯ä»¥ä½¿ç”¨ç›¸åŒçš„骨骼数æ®ï¼Œå…¶ä¸åŒ…括所有的动画,皮肤和 attachments。 */ + export class Skeleton extends cc.RenderComponent { + /** !#en The skeletal animation is paused? + !#zh è¯¥éª¨éª¼åŠ¨ç”»æ˜¯å¦æš‚åœã€‚ */ + paused: boolean; + /** !#en + The skeleton data contains the skeleton information (bind pose bones, slots, draw order, + attachments, skins, etc) and animations but does not hold any state.<br/> + Multiple skeletons can share the same skeleton data. + !#zh + 骨骼数æ®åŒ…å«äº†éª¨éª¼ä¿¡æ¯ï¼ˆç»‘定骨骼动作,slots,渲染顺åºï¼Œ + attachments,皮肤ç‰ç‰ï¼‰å’ŒåŠ¨ç”»ä½†ä¸æŒæœ‰ä»»ä½•状æ€ã€‚<br/> + 多个 Skeleton å¯ä»¥å…±ç”¨ç›¸åŒçš„骨骼数æ®ã€‚ */ + skeletonData: SkeletonData; + /** !#en The name of default skin. + !#zh 默认的皮肤å称。 */ + defaultSkin: string; + /** !#en The name of default animation. + !#zh 默认的动画å称。 */ + defaultAnimation: string; + /** !#en The name of current playing animation. + !#zh 当剿’放的动画å称。 */ + animation: string; + _defaultSkinIndex: number; + /** !#en TODO + !#zh 是å¦å¾ªçŽ¯æ’æ”¾å½“å‰éª¨éª¼åŠ¨ç”»ã€‚ */ + loop: boolean; + /** !#en Indicates whether to enable premultiplied alpha. + You should disable this option when image's transparent area appears to have opaque pixels, + or enable this option when image's half transparent area appears to be darken. + !#zh 是å¦å¯ç”¨è´´å›¾é¢„乘。 + å½“å›¾ç‰‡çš„é€æ˜ŽåŒºåŸŸå‡ºçŽ°è‰²å—æ—¶éœ€è¦å…³é—该选项,当图片的åŠé€æ˜ŽåŒºåŸŸé¢œè‰²å˜é»‘时需è¦å¯ç”¨è¯¥é€‰é¡¹ã€‚ */ + premultipliedAlpha: boolean; + /** !#en The time scale of this skeleton. + !#zh 当å‰éª¨éª¼ä¸æ‰€æœ‰åŠ¨ç”»çš„æ—¶é—´ç¼©æ”¾çŽ‡ã€‚ */ + timeScale: number; + /** !#en Indicates whether open debug slots. + !#zh æ˜¯å¦æ˜¾ç¤º slot çš„ debug ä¿¡æ¯ã€‚ */ + debugSlots: boolean; + /** !#en Indicates whether open debug bones. + !#zh æ˜¯å¦æ˜¾ç¤º bone çš„ debug ä¿¡æ¯ã€‚ */ + debugBones: boolean; + /** !#en Indicates whether open debug mesh. + !#zh æ˜¯å¦æ˜¾ç¤º mesh çš„ debug ä¿¡æ¯ã€‚ */ + debugMesh: boolean; + /** !#en Enabled two color tint. + !#zh 是å¦å¯ç”¨æŸ“色效果。 */ + useTint: boolean; + /** !#en Enabled batch model, if skeleton is complex, do not enable batch, or will lower performance. + !#zh å¼€å¯åˆæ‰¹ï¼Œå¦‚果渲染大é‡ç›¸åŒçº¹ç†ï¼Œä¸”结构简å•的骨骼动画,开å¯åˆæ‰¹å¯ä»¥é™ä½Ždrawcall,å¦åˆ™è¯·ä¸è¦å¼€å¯ï¼Œcpu消耗会上å‡ã€‚ */ + enableBatch: boolean; + /** + !#en + Sets runtime skeleton data to sp.Skeleton.<br> + This method is different from the `skeletonData` property. This method is passed in the raw data provided by the Spine runtime, and the skeletonData type is the asset type provided by Creator. + !#zh + 设置底层è¿è¡Œæ—¶ç”¨åˆ°çš„ SkeletonData。<br> + è¿™ä¸ªæŽ¥å£æœ‰åˆ«äºŽ `skeletonData` 属性,这个接å£ä¼ 入的是 Spine runtime æä¾›çš„原始数æ®ï¼Œè€Œ skeletonData 的类型是 Creator æä¾›çš„资æºç±»åž‹ã€‚ + @param skeletonData skeletonData + */ + setSkeletonData(skeletonData: sp.spine.SkeletonData): void; + /** + !#en Sets slots visible range. + !#zh è®¾ç½®éª¨éª¼æ’æ§½å¯è§†èŒƒå›´ã€‚ + @param startSlotIndex startSlotIndex + @param endSlotIndex endSlotIndex + */ + setSlotsRange(startSlotIndex: number, endSlotIndex: number): void; + /** + !#en Sets animation state data.<br> + The parameter type is {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.AnimationStateData. + !#zh è®¾ç½®åŠ¨ç”»çŠ¶æ€æ•°æ®ã€‚<br> + 傿•°æ˜¯ {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.AnimationStateData。 + @param stateData stateData + */ + setAnimationStateData(stateData: sp.spine.AnimationStateData): void; + /** + !#en + It's best to set cache mode before set property 'dragonAsset', or will waste some cpu time. + If set the mode in editor, then no need to worry about order problem. + !#zh + è‹¥æƒ³åˆ‡æ¢æ¸²æŸ“模å¼ï¼Œæœ€å¥½åœ¨è®¾ç½®'dragonAsset'之å‰ï¼Œå…ˆè®¾ç½®å¥½æ¸²æŸ“模å¼ï¼Œå¦åˆ™æœ‰è¿è¡Œæ—¶å¼€é”€ã€‚ + 若在编辑ä¸è®¾ç½®æ¸²æŸ“模å¼ï¼Œåˆ™æ— 需担心设置次åºçš„问题。 + @param cacheMode cacheMode + + @example + ```js + skeleton.setAnimationCacheMode(sp.Skeleton.AnimationCacheMode.SHARED_CACHE); + ``` + */ + setAnimationCacheMode(cacheMode: Skeleton.AnimationCacheMode): void; + /** + !#en Whether in cached mode. + !#zh 当剿˜¯å¦å¤„äºŽç¼“å˜æ¨¡å¼ã€‚ + */ + isAnimationCached(): boolean; + /** + !#en Sets vertex effect delegate. + !#zh è®¾ç½®é¡¶ç‚¹åŠ¨ç”»ä»£ç† + @param effectDelegate effectDelegate + */ + setVertexEffectDelegate(effectDelegate: VertexEffectDelegate): void; + /** + !#en Computes the world SRT from the local SRT for each bone. + !#zh 釿–°æ›´æ–°æ‰€æœ‰éª¨éª¼çš„世界 Transform, + å½“èŽ·å– bone 的数值未更新时,å³å¯ä½¿ç”¨è¯¥å‡½æ•°è¿›è¡Œæ›´æ–°æ•°å€¼ã€‚ + + @example + ```js + var bone = spine.findBone('head'); + cc.log(bone.worldX); // return 0; + spine.updateWorldTransform(); + bone = spine.findBone('head'); + cc.log(bone.worldX); // return -23.12; + ``` + */ + updateWorldTransform(): void; + /** + !#en Sets the bones and slots to the setup pose. + !#zh 还原到起始动作 + */ + setToSetupPose(): void; + /** + !#en + Sets the bones to the setup pose, + using the values from the `BoneData` list in the `SkeletonData`. + !#zh + 设置 bone 到起始动作 + 使用 SkeletonData ä¸çš„ BoneData 列表ä¸çš„值。 + */ + setBonesToSetupPose(): void; + /** + !#en + Sets the slots to the setup pose, + using the values from the `SlotData` list in the `SkeletonData`. + !#zh + 设置 slot 到起始动作。 + 使用 SkeletonData ä¸çš„ SlotData 列表ä¸çš„值。 + */ + setSlotsToSetupPose(): void; + /** + !#en + Updating an animation cache to calculate all frame data in the animation is a cost in + performance due to calculating all data in a single frame. + To update the cache, use the invalidAnimationCache method with high performance. + !#zh + æ›´æ–°æŸä¸ªåŠ¨ç”»ç¼“å˜, é¢„è®¡ç®—åŠ¨ç”»ä¸æ‰€æœ‰å¸§æ•°æ®ï¼Œç”±äºŽåœ¨å•帧计算所有数æ®ï¼Œæ‰€ä»¥è¾ƒæ¶ˆè€—性能。 + 若想更新缓å˜ï¼Œå¯ä½¿ç”¨ invalidAnimationCache 方法,具有较高性能。 + @param animName animName + */ + updateAnimationCache(animName: string): void; + /** + !#en + Invalidates the animation cache, which is then recomputed on each frame.. + !#zh + 使动画缓å˜å¤±æ•ˆï¼Œä¹‹åŽä¼šåœ¨æ¯å¸§é‡æ–°è®¡ç®—。 + */ + invalidAnimationCache(): void; + /** + !#en + Finds a bone by name. + This does a string comparison for every bone.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Bone object. + !#zh + 通过å称查找 bone。 + 这里对æ¯ä¸ª bone çš„å称进行了对比。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Bone 对象。 + @param boneName boneName + */ + findBone(boneName: string): sp.spine.Bone; + /** + !#en + Finds a slot by name. This does a string comparison for every slot.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Slot object. + !#zh + 通过å称查找 slot。这里对æ¯ä¸ª slot çš„å称进行了比较。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Slot 对象。 + @param slotName slotName + */ + findSlot(slotName: string): sp.spine.Slot; + /** + !#en + Finds a skin by name and makes it the active skin. + This does a string comparison for every skin.<br> + Note that setting the skin does not change which attachments are visible.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Skin object. + !#zh + 按å称查找皮肤,激活该皮肤。这里对æ¯ä¸ªçš®è‚¤çš„å称进行了比较。<br> + 注æ„:设置皮肤ä¸ä¼šæ”¹å˜ attachment çš„å¯è§æ€§ã€‚<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Skin 对象。 + @param skinName skinName + */ + setSkin(skinName: string): void; + /** + !#en + Returns the attachment for the slot and attachment name. + The skeleton looks first in its skin, then in the skeleton data’s default skin.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Attachment object. + !#zh + 通过 slot å’Œ attachment çš„åç§°èŽ·å– attachment。Skeleton ä¼˜å…ˆæŸ¥æ‰¾å®ƒçš„çš®è‚¤ï¼Œç„¶åŽæ‰æ˜¯ Skeleton Data ä¸é»˜è®¤çš„皮肤。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.Attachment 对象。 + @param slotName slotName + @param attachmentName attachmentName + */ + getAttachment(slotName: string, attachmentName: string): sp.spine.Attachment; + /** + !#en + Sets the attachment for the slot and attachment name. + The skeleton looks first in its skin, then in the skeleton data’s default skin. + !#zh + 通过 slot å’Œ attachment çš„åå—æ¥è®¾ç½® attachment。 + Skeleton ä¼˜å…ˆæŸ¥æ‰¾å®ƒçš„çš®è‚¤ï¼Œç„¶åŽæ‰æ˜¯ Skeleton Data ä¸é»˜è®¤çš„皮肤。 + @param slotName slotName + @param attachmentName attachmentName + */ + setAttachment(slotName: string, attachmentName: string): void; + /** + Return the renderer of attachment. + @param regionAttachment regionAttachment + */ + getTextureAtlas(regionAttachment: sp.spine.RegionAttachment|spine.BoundingBoxAttachment): sp.spine.TextureAtlasRegion; + /** + !#en + Mix applies all keyframe values, + interpolated for the specified time and mixed with the current values. + !#zh 为所有关键帧设定混åˆåŠæ··åˆæ—¶é—´ï¼ˆä»Žå½“å‰å€¼å¼€å§‹å·®å€¼ï¼‰ã€‚ + @param fromAnimation fromAnimation + @param toAnimation toAnimation + @param duration duration + */ + setMix(fromAnimation: string, toAnimation: string, duration: number): void; + /** + !#en Set the current animation. Any queued animations are cleared.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.TrackEntry object. + !#zh 设置当å‰åŠ¨ç”»ã€‚é˜Ÿåˆ—ä¸çš„任何的动画将被清除。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.TrackEntry 对象。 + @param trackIndex trackIndex + @param name name + @param loop loop + */ + setAnimation(trackIndex: number, name: string, loop: boolean): sp.spine.TrackEntry; + /** + !#en Adds an animation to be played delay seconds after the current or last queued animation.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.TrackEntry object. + !#zh æ·»åŠ ä¸€ä¸ªåŠ¨ç”»åˆ°åŠ¨ç”»é˜Ÿåˆ—å°¾éƒ¨ï¼Œè¿˜å¯ä»¥å»¶è¿ŸæŒ‡å®šçš„秒数。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.TrackEntry 对象。 + @param trackIndex trackIndex + @param name name + @param loop loop + @param delay delay + */ + addAnimation(trackIndex: number, name: string, loop: boolean, delay?: number): sp.spine.TrackEntry; + /** + !#en Find animation with specified name. + !#zh 查找指定å称的动画 + @param name name + */ + findAnimation(name: string): sp.spine.Animation; + /** + !#en Returns track entry by trackIndex.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.TrackEntry object. + !#zh 通过 track ç´¢å¼•èŽ·å– TrackEntry。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.TrackEntry 对象。 + @param trackIndex trackIndex + */ + getCurrent(trackIndex: any): sp.spine.TrackEntry; + /** + !#en Clears all tracks of animation state. + !#zh 清除所有 track 的动画状æ€ã€‚ + */ + clearTracks(): void; + /** + !#en Clears track of animation state by trackIndex. + !#zh 清除出指定 track 的动画状æ€ã€‚ + @param trackIndex trackIndex + */ + clearTrack(trackIndex: number): void; + /** + !#en Set the start event listener. + !#zh 用æ¥è®¾ç½®å¼€å§‹æ’放动画的事件监å¬ã€‚ + @param listener listener + */ + setStartListener(listener: Function): void; + /** + !#en Set the interrupt event listener. + !#zh 用æ¥è®¾ç½®åŠ¨ç”»è¢«æ‰“æ–的事件监å¬ã€‚ + @param listener listener + */ + setInterruptListener(listener: Function): void; + /** + !#en Set the end event listener. + !#zh 用æ¥è®¾ç½®åŠ¨ç”»æ’æ”¾å®ŒåŽçš„事件监å¬ã€‚ + @param listener listener + */ + setEndListener(listener: Function): void; + /** + !#en Set the dispose event listener. + !#zh 用æ¥è®¾ç½®åŠ¨ç”»å°†è¢«é”€æ¯çš„事件监å¬ã€‚ + @param listener listener + */ + setDisposeListener(listener: Function): void; + /** + !#en Set the complete event listener. + !#zh 用æ¥è®¾ç½®åŠ¨ç”»æ’æ”¾ä¸€æ¬¡å¾ªçŽ¯ç»“æŸåŽçš„事件监å¬ã€‚ + @param listener listener + */ + setCompleteListener(listener: Function): void; + /** + !#en Set the animation event listener. + !#zh 用æ¥è®¾ç½®åŠ¨ç”»æ’æ”¾è¿‡ç¨‹ä¸å¸§äº‹ä»¶çš„监å¬ã€‚ + @param listener listener + */ + setEventListener(listener: Function): void; + /** + !#en Set the start event listener for specified TrackEntry. + !#zh 用æ¥ä¸ºæŒ‡å®šçš„ TrackEntry è®¾ç½®åŠ¨ç”»å¼€å§‹æ’æ”¾çš„事件监å¬ã€‚ + @param entry entry + @param listener listener + */ + setTrackStartListener(entry: sp.spine.TrackEntry, listener: Function): void; + /** + !#en Set the interrupt event listener for specified TrackEntry. + !#zh 用æ¥ä¸ºæŒ‡å®šçš„ TrackEntry 设置动画被打æ–的事件监å¬ã€‚ + @param entry entry + @param listener listener + */ + setTrackInterruptListener(entry: sp.spine.TrackEntry, listener: Function): void; + /** + !#en Set the end event listener for specified TrackEntry. + !#zh 用æ¥ä¸ºæŒ‡å®šçš„ TrackEntry è®¾ç½®åŠ¨ç”»æ’æ”¾ç»“æŸçš„事件监å¬ã€‚ + @param entry entry + @param listener listener + */ + setTrackEndListener(entry: sp.spine.TrackEntry, listener: Function): void; + /** + !#en Set the dispose event listener for specified TrackEntry. + !#zh 用æ¥ä¸ºæŒ‡å®šçš„ TrackEntry 设置动画å³å°†è¢«é”€æ¯çš„事件监å¬ã€‚ + @param entry entry + @param listener listener + */ + setTrackDisposeListener(entry: sp.spine.TrackEntry, listener: Function): void; + /** + !#en Set the complete event listener for specified TrackEntry. + !#zh 用æ¥ä¸ºæŒ‡å®šçš„ TrackEntry è®¾ç½®åŠ¨ç”»ä¸€æ¬¡å¾ªçŽ¯æ’æ”¾ç»“æŸçš„事件监å¬ã€‚ + @param entry entry + @param listener listener + */ + setTrackCompleteListener(entry: sp.spine.TrackEntry, listener: (entry: sp.spine.TrackEntry, loopCount: number) => void): void; + /** + !#en Set the event listener for specified TrackEntry. + !#zh 用æ¥ä¸ºæŒ‡å®šçš„ TrackEntry 设置动画帧事件的监å¬ã€‚ + @param entry entry + @param listener listener + */ + setTrackEventListener(entry: sp.spine.TrackEntry, listener: Function): void; + /** + !#en Get the animation state object + !#zh 获å–åŠ¨ç”»çŠ¶æ€ + */ + getState(): sp.spine.AnimationState; + } + /** !#en The skeleton data of spine. + !#zh Spine çš„ 骨骼数æ®ã€‚ */ + export class SkeletonData extends cc.Asset { + /** !#en See http://en.esotericsoftware.com/spine-json-format + !#zh 坿Ÿ¥çœ‹ Spine 官方文档 http://zh.esotericsoftware.com/spine-json-format */ + skeletonJson: any; + atlasText: string; + textures: cc.Texture2D[]; + /** !#en + A scale can be specified on the JSON or binary loader which will scale the bone positions, + image sizes, and animation translations. + This can be useful when using different sized images than were used when designing the skeleton + in Spine. For example, if using images that are half the size than were used in Spine, + a scale of 0.5 can be used. This is commonly used for games that can run with either low or high + resolution texture atlases. + see http://en.esotericsoftware.com/spine-using-runtimes#Scaling + !#zh 坿Ÿ¥çœ‹ Spine 官方文档: http://zh.esotericsoftware.com/spine-using-runtimes#Scaling */ + scale: number; + /** + !#en Get the included SkeletonData used in spine runtime.<br> + Returns a {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.SkeletonData object. + !#zh èŽ·å– Spine Runtime 使用的 SkeletonData。<br> + 返回一个 {{#crossLinkModule "sp.spine"}}sp.spine{{/crossLinkModule}}.SkeletonData 对象。 + @param quiet quiet + */ + getRuntimeData(quiet?: boolean): sp.spine.SkeletonData; + } + /** !#en + The delegate of spine vertex effect + !#zh + Spine é¡¶ç‚¹åŠ¨ç”»ä»£ç† */ + export class VertexEffectDelegate { + /** + !#en Clears vertex effect. + !#zh 清空顶点效果 + */ + clear(): void; + /** + !#en Inits delegate with jitter effect + !#zh 设置顶点抖动效果 + @param jitterX jitterX + @param jitterY jitterY + */ + initJitter(jitterX: number, jitterY: number): void; + /** + !#en Inits delegate with swirl effect + !#zh 设置顶点漩涡效果 + @param radius radius + @param power power + */ + initSwirlWithPow(radius: number, power: number): sp.spine.JitterEffect; + /** + !#en Inits delegate with swirl effect + !#zh 设置顶点漩涡效果 + @param radius radius + @param power power + */ + initSwirlWithPowOut(radius: number, power: number): sp.spine.SwirlEffect; + /** + !#en Gets jitter vertex effect + !#zh 获å–顶点抖动效果 + */ + getJitterVertexEffect(): sp.spine.JitterEffect; + /** + !#en Gets swirl vertex effect + !#zh 获å–顶点漩涡效果 + */ + getSwirlVertexEffect(): sp.spine.SwirlEffect; + /** + !#en Gets vertex effect + !#zh 获å–顶点效果 + */ + getVertexEffect(): sp.spine.JitterEffect; + /** + !#en Gets effect type + !#zh èŽ·å–æ•ˆæžœç±»åž‹ + */ + getEffectType(): string; + } + /**************************************************** + * sp + *****************************************************/ + + export namespace sp { + /** !#en Attach node tool + !#zh 挂点工具类 */ + export class AttachUtil { + /** + !#en Gets attached root node. + !#zh èŽ·å–æŒ‚æŽ¥èŠ‚ç‚¹æ ‘çš„æ ¹èŠ‚ç‚¹ + */ + getAttachedRootNode(): cc.Node; + /** + !#en Gets attached node which you want. + !#zh 获得对应的挂点 + @param boneName boneName + */ + getAttachedNodes(boneName: string): cc.Node[]; + /** + !#en Destroy attached node which you want. + !#zh 销æ¯å¯¹åº”的挂点 + @param boneName boneName + */ + destroyAttachedNodes(boneName: string): void; + /** + !#en Traverse all bones to generate the minimum node tree containing the given bone names, NOTE that make sure the skeleton has initialized before calling this interface. + !#zh éåŽ†æ‰€æœ‰æ’æ§½ï¼Œç”ŸæˆåŒ…嫿‰€æœ‰ç»™å®šæ’æ§½å称的最å°èŠ‚ç‚¹æ ‘ï¼Œæ³¨æ„,调用该接å£å‰è¯·ç¡®ä¿éª¨éª¼åŠ¨ç”»å·²ç»åˆå§‹åŒ–好。 + @param boneName boneName + */ + generateAttachedNodes(boneName: string): cc.Node[]; + /** + !#en Destroy all attached node. + !#zh é”€æ¯æ‰€æœ‰æŒ‚点 + */ + destroyAllAttachedNodes(): void; + /** + !#en Traverse all bones to generate a tree containing all bones nodes, NOTE that make sure the skeleton has initialized before calling this interface. + !#zh éåŽ†æ‰€æœ‰æ’æ§½ï¼Œç”ŸæˆåŒ…嫿‰€æœ‰æ’æ§½çš„èŠ‚ç‚¹æ ‘ï¼Œæ³¨æ„,调用该接å£å‰è¯·ç¡®ä¿éª¨éª¼åŠ¨ç”»å·²ç»åˆå§‹åŒ–好。 + */ + generateAllAttachedNodes(): cc.Node; + } + } + + /**************************************************** + * Skeleton + *****************************************************/ + + export namespace Skeleton { + /** !#en Enum for animation cache mode type. + !#zh Spine动画缓å˜ç±»åž‹ */ + export enum AnimationCacheMode { + REALTIME = 0, + SHARED_CACHE = 0, + PRIVATE_CACHE = 0, + } + } + +} + +/** !#en +`sp.spine` is the namespace for official Spine Runtime, which officially implemented and maintained by Spine.<br> +Please refer to the official documentation for its detailed usage: [http://en.esotericsoftware.com/spine-using-runtimes](http://en.esotericsoftware.com/spine-using-runtimes) +!#zh +sp.spine æ¨¡å—æ˜¯ Spine 官方è¿è¡Œåº“çš„ API å…¥å£ï¼Œç”± Spine 官方统一实现和维护,具体用法请å‚考:[http://zh.esotericsoftware.com/spine-using-runtimes](http://zh.esotericsoftware.com/spine-using-runtimes) */ +declare namespace sp.spine { +} + +/** !#en +The global main namespace of DragonBones, all classes, functions, +properties and constants of DragonBones are defined in this namespace +!#zh +DragonBones 的全局的命å空间, +与 DragonBones 相关的所有的类,函数,属性,常é‡éƒ½åœ¨è¿™ä¸ªå‘½å空间ä¸å®šä¹‰ã€‚ */ +declare namespace dragonBones { + /** !#en + The Armature Display of DragonBones <br/> + <br/> + (Armature Display has a reference to a DragonBonesAsset and stores the state for ArmatureDisplay instance, + which consists of the current pose's bone SRT, slot colors, and which slot attachments are visible. <br/> + Multiple Armature Display can use the same DragonBonesAsset which includes all animations, skins, and attachments.) <br/> + !#zh + DragonBones 骨骼动画 <br/> + <br/> + (Armature Display 具有对骨骼数æ®çš„引用并且å˜å‚¨äº†éª¨éª¼å®žä¾‹çš„状æ€ï¼Œ + 它由当å‰çš„骨骼动作,slot 颜色,和å¯è§çš„ slot attachments 组æˆã€‚<br/> + 多个 Armature Display å¯ä»¥ä½¿ç”¨ç›¸åŒçš„骨骼数æ®ï¼Œå…¶ä¸åŒ…括所有的动画,皮肤和 attachments。)<br/> */ + export class ArmatureDisplay extends cc.RenderComponent { + /** !#en + The DragonBones data contains the armatures information (bind pose bones, slots, draw order, + attachments, skins, etc) and animations but does not hold any state.<br/> + Multiple ArmatureDisplay can share the same DragonBones data. + !#zh + 骨骼数æ®åŒ…å«äº†éª¨éª¼ä¿¡æ¯ï¼ˆç»‘定骨骼动作,slots,渲染顺åºï¼Œ + attachments,皮肤ç‰ç‰ï¼‰å’ŒåŠ¨ç”»ä½†ä¸æŒæœ‰ä»»ä½•状æ€ã€‚<br/> + 多个 ArmatureDisplay å¯ä»¥å…±ç”¨ç›¸åŒçš„骨骼数æ®ã€‚ */ + dragonAsset: DragonBonesAsset; + /** !#en + The atlas asset for the DragonBones. + !#zh + éª¨éª¼æ•°æ®æ‰€éœ€çš„ Atlas Texture æ•°æ®ã€‚ */ + dragonAtlasAsset: DragonBonesAtlasAsset; + /** !#en The name of current armature. + !#zh 当å‰çš„ Armature å称。 */ + armatureName: string; + /** !#en The name of current playing animation. + !#zh 当剿’放的动画å称。 */ + animationName: string; + _defaultArmatureIndex: number; + /** !#en The time scale of this armature. + !#zh 当å‰éª¨éª¼ä¸æ‰€æœ‰åŠ¨ç”»çš„æ—¶é—´ç¼©æ”¾çŽ‡ã€‚ */ + timeScale: number; + /** !#en The play times of the default animation. + -1 means using the value of config file; + 0 means repeat for ever + >0 means repeat times + !#zh æ’æ”¾é»˜è®¤åŠ¨ç”»çš„å¾ªçŽ¯æ¬¡æ•° + -1 表示使用é…置文件ä¸çš„默认值; + 0 è¡¨ç¤ºæ— é™å¾ªçޝ + >0 表示循环次数 */ + playTimes: number; + /** !#en Indicates whether to enable premultiplied alpha. + You should disable this option when image's transparent area appears to have opaque pixels, + or enable this option when image's half transparent area appears to be darken. + !#zh 是å¦å¯ç”¨è´´å›¾é¢„乘。 + å½“å›¾ç‰‡çš„é€æ˜ŽåŒºåŸŸå‡ºçŽ°è‰²å—æ—¶éœ€è¦å…³é—该选项,当图片的åŠé€æ˜ŽåŒºåŸŸé¢œè‰²å˜é»‘时需è¦å¯ç”¨è¯¥é€‰é¡¹ã€‚ */ + premultipliedAlpha: boolean; + /** !#en Indicates whether open debug bones. + !#zh æ˜¯å¦æ˜¾ç¤º bone çš„ debug ä¿¡æ¯ã€‚ */ + debugBones: boolean; + /** !#en Enabled batch model, if skeleton is complex, do not enable batch, or will lower performance. + !#zh å¼€å¯åˆæ‰¹ï¼Œå¦‚果渲染大é‡ç›¸åŒçº¹ç†ï¼Œä¸”结构简å•的骨骼动画,开å¯åˆæ‰¹å¯ä»¥é™ä½Ždrawcall,å¦åˆ™è¯·ä¸è¦å¼€å¯ï¼Œcpu消耗会上å‡ã€‚ */ + enableBatch: boolean; + /** + !#en + The key of dragonbones cache data, which is regard as 'dragonbonesName', when you want to change dragonbones cloth. + !#zh + 缓å˜é¾™éª¨æ•°æ®çš„key值,æ¢è£…的时会使用到该值,作为dragonbonesName使用 + + @example + ```js + let factory = dragonBones.CCFactory.getInstance(); + let needChangeSlot = needChangeArmature.armature().getSlot("changeSlotName"); + factory.replaceSlotDisplay(toChangeArmature.getArmatureKey(), "armatureName", "slotName", "displayName", needChangeSlot); + ``` + */ + getArmatureKey(): string; + /** + !#en + It's best to set cache mode before set property 'dragonAsset', or will waste some cpu time. + If set the mode in editor, then no need to worry about order problem. + !#zh + è‹¥æƒ³åˆ‡æ¢æ¸²æŸ“模å¼ï¼Œæœ€å¥½åœ¨è®¾ç½®'dragonAsset'之å‰ï¼Œå…ˆè®¾ç½®å¥½æ¸²æŸ“模å¼ï¼Œå¦åˆ™æœ‰è¿è¡Œæ—¶å¼€é”€ã€‚ + 若在编辑ä¸è®¾ç½®æ¸²æŸ“模å¼ï¼Œåˆ™æ— 需担心设置次åºçš„问题。 + @param cacheMode cacheMode + + @example + ```js + armatureDisplay.setAnimationCacheMode(dragonBones.ArmatureDisplay.AnimationCacheMode.SHARED_CACHE); + ``` + */ + setAnimationCacheMode(cacheMode: ArmatureDisplay.AnimationCacheMode): void; + /** + !#en Whether in cached mode. + !#zh 当剿˜¯å¦å¤„äºŽç¼“å˜æ¨¡å¼ã€‚ + */ + isAnimationCached(): boolean; + /** + !#en + Play the specified animation. + Parameter animName specify the animation name. + Parameter playTimes specify the repeat times of the animation. + -1 means use the value of the config file. + 0 means play the animation for ever. + >0 means repeat times. + !#zh + æ’æ”¾æŒ‡å®šçš„动画. + animName æŒ‡å®šæ’æ”¾åŠ¨ç”»çš„å称。 + playTimes æŒ‡å®šæ’æ”¾åŠ¨ç”»çš„æ¬¡æ•°ã€‚ + -1 为使用é…置文件ä¸çš„æ¬¡æ•°ã€‚ + 0 ä¸ºæ— é™å¾ªçŽ¯æ’æ”¾ã€‚ + >0 为动画的é‡å¤æ¬¡æ•°ã€‚ + @param animName animName + @param playTimes playTimes + */ + playAnimation(animName: string, playTimes: number): dragonBones.AnimationState; + /** + !#en + Updating an animation cache to calculate all frame data in the animation is a cost in + performance due to calculating all data in a single frame. + To update the cache, use the invalidAnimationCache method with high performance. + !#zh + æ›´æ–°æŸä¸ªåŠ¨ç”»ç¼“å˜, é¢„è®¡ç®—åŠ¨ç”»ä¸æ‰€æœ‰å¸§æ•°æ®ï¼Œç”±äºŽåœ¨å•帧计算所有数æ®ï¼Œæ‰€ä»¥è¾ƒæ¶ˆè€—性能。 + 若想更新缓å˜ï¼Œå¯ä½¿ç”¨ invalidAnimationCache 方法,具有较高性能。 + @param animName animName + */ + updateAnimationCache(animName: string): void; + /** + !#en + Invalidates the animation cache, which is then recomputed on each frame.. + !#zh + 使动画缓å˜å¤±æ•ˆï¼Œä¹‹åŽä¼šåœ¨æ¯å¸§é‡æ–°è®¡ç®—。 + */ + invalidAnimationCache(): void; + /** + !#en + Get the all armature names in the DragonBones Data. + !#zh + èŽ·å– DragonBones æ•°æ®ä¸æ‰€æœ‰çš„ armature åç§° + */ + getArmatureNames(): any[]; + /** + !#en + Get the all animation names of specified armature. + !#zh + èŽ·å–æŒ‡å®šçš„ armature 的所有动画å称。 + @param armatureName armatureName + */ + getAnimationNames(armatureName: string): any[]; + /** + !#en + Add event listener for the DragonBones Event, the same to addEventListener. + !#zh + æ·»åŠ DragonBones 事件监å¬å™¨ï¼Œä¸Ž addEventListener 作用相åŒã€‚ + @param type A string representing the event type to listen for. + @param listener The callback that will be invoked when the event is dispatched. + @param target The target (this object) to invoke the callback, can be null + */ + on(type: string, listener: (event: cc.Event) => void, target?: any): void; + /** + !#en + Remove the event listener for the DragonBones Event, the same to removeEventListener. + !#zh + 移除 DragonBones 事件监å¬å™¨ï¼Œä¸Ž removeEventListener 作用相åŒã€‚ + @param type A string representing the event type to listen for. + @param listener listener + @param target target + */ + off(type: string, listener?: Function, target?: any): void; + /** + !#en + Add DragonBones one-time event listener, the callback will remove itself after the first time it is triggered. + !#zh + æ·»åŠ DragonBones 一次性事件监å¬å™¨ï¼Œå›žè°ƒä¼šåœ¨ç¬¬ä¸€æ—¶é—´è¢«è§¦å‘åŽåˆ 除自身。 + @param type A string representing the event type to listen for. + @param listener The callback that will be invoked when the event is dispatched. + @param target The target (this object) to invoke the callback, can be null + */ + once(type: string, listener: (event: cc.Event) => void, target?: any): void; + /** + !#en + Add event listener for the DragonBones Event. + !#zh + æ·»åŠ DragonBones 事件监å¬å™¨ã€‚ + @param type A string representing the event type to listen for. + @param listener The callback that will be invoked when the event is dispatched. + @param target The target (this object) to invoke the callback, can be null + */ + addEventListener(type: string, listener: (event: cc.Event) => void, target?: any): void; + /** + !#en + Remove the event listener for the DragonBones Event. + !#zh + 移除 DragonBones 事件监å¬å™¨ã€‚ + @param type A string representing the event type to listen for. + @param listener listener + @param target target + */ + removeEventListener(type: string, listener?: Function, target?: any): void; + /** + !#en + Build the armature for specified name. + !#zh + 构建指定åç§°çš„ armature 对象 + @param armatureName armatureName + @param node node + */ + buildArmature(armatureName: string, node: cc.Node): ArmatureDisplay; + /** + !#en + Get the current armature object of the ArmatureDisplay. + !#zh + èŽ·å– ArmatureDisplay 当å‰ä½¿ç”¨çš„ Armature 对象 + */ + armature(): any; + } + /** DragonBones factory */ + export class CCFactory extends BaseFactory { + /** + + + @example + ```js + let factory = dragonBones.CCFactory.getInstance(); + ``` + */ + static getInstance(): CCFactory; + } + /** !#en The skeleton data of dragonBones. + !#zh dragonBones çš„ 骨骼数æ®ã€‚ */ + export class DragonBonesAsset extends cc.Asset { + /** !#en See http://developer.egret.com/cn/github/egret-docs/DB/dbLibs/dataFormat/index.html + !#zh 坿Ÿ¥çœ‹ DragonBones 官方文档 http://developer.egret.com/cn/github/egret-docs/DB/dbLibs/dataFormat/index.html */ + dragonBonesJson: string; + } + /** !#en The skeleton atlas data of dragonBones. + !#zh dragonBones çš„éª¨éª¼çº¹ç†æ•°æ®ã€‚ */ + export class DragonBonesAtlasAsset extends cc.Asset { + atlasJson: string; + texture: cc.Texture2D; + } + /**************************************************** + * ArmatureDisplay + *****************************************************/ + + export namespace ArmatureDisplay { + /** !#en Enum for cache mode type. + !#zh Dragonbones渲染类型 */ + export enum AnimationCacheMode { + REALTIME = 0, + SHARED_CACHE = 0, + PRIVATE_CACHE = 0, + } + } + + /**************************************************** + * dragonBones + *****************************************************/ + + export namespace dragonBones { + /** !#en Attach node tool + !#zh 挂点工具类 */ + export class AttachUtil { + /** + !#en Gets attached root node. + !#zh èŽ·å–æŒ‚æŽ¥èŠ‚ç‚¹æ ‘çš„æ ¹èŠ‚ç‚¹ + */ + getAttachedRootNode(): cc.Node; + /** + !#en Gets attached node which you want. + !#zh 获得对应的挂点 + @param boneName boneName + */ + getAttachedNodes(boneName: string): cc.Node[]; + /** + !#en Destroy attached node which you want. + !#zh 销æ¯å¯¹åº”的挂点 + @param boneName boneName + */ + destroyAttachedNodes(boneName: string): void; + /** + !#en Traverse all bones to generate the minimum node tree containing the given bone names, NOTE that make sure the skeleton has initialized before calling this interface. + !#zh éåŽ†æ‰€æœ‰æ’æ§½ï¼Œç”ŸæˆåŒ…嫿‰€æœ‰ç»™å®šæ’æ§½å称的最å°èŠ‚ç‚¹æ ‘ï¼Œæ³¨æ„,调用该接å£å‰è¯·ç¡®ä¿éª¨éª¼åŠ¨ç”»å·²ç»åˆå§‹åŒ–好。 + @param boneName boneName + */ + generateAttachedNodes(boneName: string): cc.Node[]; + /** + !#en Destroy all attached node. + !#zh é”€æ¯æ‰€æœ‰æŒ‚点 + */ + destroyAllAttachedNodes(): void; + /** + !#en Traverse all bones to generate a tree containing all bones nodes, NOTE that make sure the skeleton has initialized before calling this interface. + !#zh éåŽ†æ‰€æœ‰æ’æ§½ï¼Œç”ŸæˆåŒ…嫿‰€æœ‰æ’æ§½çš„èŠ‚ç‚¹æ ‘ï¼Œæ³¨æ„,调用该接å£å‰è¯·ç¡®ä¿éª¨éª¼åŠ¨ç”»å·²ç»åˆå§‹åŒ–好。 + */ + generateAllAttachedNodes(): cc.Node; + } + } + +} + +/** !#en +This module controls asset's behaviors and information, include loading, releasing etc. +All member can be accessed with `cc.assetManager`. All class or enum can be accessed with `cc.AssetManager` + +!#zh +æ¤æ¨¡å—管ç†èµ„æºçš„行为和信æ¯ï¼ŒåŒ…æ‹¬åŠ è½½ï¼Œé‡Šæ”¾ç‰ï¼Œæ‰€æœ‰æˆå‘˜èƒ½å¤Ÿé€šè¿‡ `cc.assetManager` 调用. 所有类型或枚举能通过 `cc.AssetManager` 访问 */ +declare namespace cc.AssetManager { + /** !#en + This module contains the builtin asset, it's a singleton, all member can be accessed with `cc.assetManager.builtins` + + !#zh + æ¤æ¨¡å—包å«å†…建资æºï¼Œè¿™æ˜¯ä¸€ä¸ªå•例,所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.builtins` 访问 */ + export class Builtins { + /** + !#en + Initialize + + !#zh + åˆå§‹åŒ– + @param cb Callback when finish loading built-in assets + */ + init (cb: () => void): void; + /** + !#en + Get the built-in asset using specific type and name. + + !#zh + 通过特定的类型和å称获å–å†…å»ºèµ„æº + @param type The type of asset, such as `effect` + @param name The name of asset, such as `phong` + + @example + ```js + cc.assetManaer.builtins.getBuiltin('effect', 'phone'); + ``` + */ + getBuiltin(type?: string, name?: string): cc.Asset | Cache<cc.Asset>; + /** + !#en + Clear all builtin assets + + !#zh + æ¸…ç©ºæ‰€æœ‰å†…ç½®èµ„æº + */ + clear(): void; + } + /** !#en + A bundle contains an amount of assets(includes scene), you can load, preload, release asset which is in this bundle + + !#zh + 一个包å«ä¸€å®šæ•°é‡èµ„æºï¼ˆåŒ…æ‹¬åœºæ™¯ï¼‰çš„åŒ…ï¼Œä½ å¯ä»¥åŠ è½½ï¼Œé¢„åŠ è½½ï¼Œé‡Šæ”¾æ¤åŒ…å†…çš„èµ„æº */ + export class Bundle { + /** + !#en + Create a bundle + + !#zh + 创建一个 bundle + */ + constructor(); + /** !#en + The name of this bundle + + !#zh + æ¤ bundle çš„åç§° */ + name: string; + /** !#en + The dependency of this bundle + + !#zh + æ¤ bundle çš„ä¾èµ– */ + deps: string[]; + /** !#en + The root path of this bundle, such like 'http://example.com/bundle1' + + !#zh + æ¤ bundle çš„æ ¹è·¯å¾„, 例如 'http://example.com/bundle1' */ + base: string; + /** + !#en + Get asset's info using path, only valid when asset is in bundle folder. + + !#zh + 使用 path 获å–资æºçš„é…ç½®ä¿¡æ¯ + @param path The relative path of asset, such as 'images/a' + @param type The constructor of asset, such as `cc.Texture2D` + + @example + ```js + var info = bundle.getInfoWithPath('image/a', cc.Texture2D); + ``` + */ + getInfoWithPath (path: string, type?: typeof cc.Asset): Record<string, any>; + /** + !#en + Get all asset's info within specific folder + + !#zh + 获å–在æŸä¸ªæŒ‡å®šæ–‡ä»¶å¤¹ä¸‹çš„æ‰€æœ‰èµ„æºä¿¡æ¯ + @param path The relative path of folder, such as 'images' + @param type The constructor should be used to filter paths + @param out The output array + + @example + ```js + var infos = []; + bundle.getDirWithPath('images', cc.Texture2D, infos); + ``` + */ + getDirWithPath (path: string, type: typeof cc.Asset, out: Array<Record<string, any>>): Array<Record<string, any>>; + getDirWithPath (path: string, type: typeof cc.Asset): Array<Record<string, any>>; + getDirWithPath (path: string): Array<Record<string, any>>; + /** + !#en + Get asset's info with uuid + + !#zh + 通过 uuid 获å–资æºä¿¡æ¯ + @param uuid The asset's uuid + + @example + ```js + var info = bundle.getAssetInfo('fcmR3XADNLgJ1ByKhqcC5Z'); + ``` + */ + getAssetInfo (uuid: string): Record<string, any>; + /** + !#en + Get scene'info with name + + !#zh + 通过场景å获å–åœºæ™¯ä¿¡æ¯ + @param name The name of scene + + @example + ```js + var info = bundle.getSceneInfo('first.fire'); + ``` + */ + getSceneInfo(name: string): Record<string, any>; + /** + !#en + Initialize this bundle with options + + !#zh + åˆå§‹åŒ–æ¤ bundle + @param options options + */ + init(options: Record<string, any>): void; + /** + !#en + Load the asset within this bundle by the path which is relative to bundle's path + + !#zh + é€šè¿‡ç›¸å¯¹è·¯å¾„åŠ è½½åˆ†åŒ…ä¸çš„资æºã€‚路径是相对分包文件夹路径的相对路径 + @param paths Paths of the target assets.The path is relative to the bundle's folder, extensions must be omitted. + @param type Only asset of type will be loaded if this argument is supplied. + @param onProgress Callback invoked when progression change. + @param onComplete Callback invoked when all assets loaded. + + @example + ```js + // load the texture (${project}/assets/resources/textures/background.jpg) from resources + cc.resources.load('textures/background', cc.Texture2D, (err, texture) => console.log(err)); + + // load the audio (${project}/assets/resources/music/hit.mp3) from resources + cc.resources.load('music/hit', cc.AudioClip, (err, audio) => console.log(err)); + + // load the prefab (${project}/assets/bundle1/misc/character/cocos) from bundle1 folder + bundle1.load('misc/character/cocos', cc.Prefab, (err, prefab) => console.log(err)); + + // load the sprite frame (${project}/assets/some/xxx/bundle2/imgs/cocos.png) from bundle2 folder + bundle2.load('imgs/cocos', cc.SpriteFrame, null, (err, spriteFrame) => console.log(err)); + ``` + */ + load<T extends cc.Asset>(paths: string|string[], type: typeof cc.Asset, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, assets: T|Array<T>) => void): void; + load<T extends cc.Asset>(paths: string|string[], onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, assets: T|Array<T>) => void): void; + load<T extends cc.Asset>(paths: string|string[], type: typeof cc.Asset, onComplete: (error: Error, assets: T|Array<T>) => void): void; + load<T extends cc.Asset>(paths: string|string[], onComplete: (error: Error, assets: T|Array<T>) => void): void; + load<T extends cc.Asset>(paths: string|string[], type: typeof cc.Asset): void; + load<T extends cc.Asset>(paths: string|string[]): void; + /** + !#en + Preload the asset within this bundle by the path which is relative to bundle's path. + After calling this method, you still need to finish loading by calling `Bundle.load`. + It will be totally fine to call `Bundle.load` at any time even if the preloading is not + yet finished + + !#zh + é€šè¿‡ç›¸å¯¹è·¯å¾„é¢„åŠ è½½åˆ†åŒ…ä¸çš„资æºã€‚路径是相对分包文件夹路径的相对路径。调用完åŽï¼Œä½ ä»ç„¶éœ€è¦é€šè¿‡ `Bundle.load` æ¥å®ŒæˆåŠ è½½ã€‚ + å°±ç®—é¢„åŠ è½½è¿˜æ²¡å®Œæˆï¼Œä½ 也å¯ä»¥ç›´æŽ¥è°ƒç”¨ `Bundle.load`。 + @param paths Paths of the target asset.The path is relative to bundle folder, extensions must be omitted. + @param type Only asset of type will be loaded if this argument is supplied. + @param onProgress Callback invoked when progression change. + @param onComplete Callback invoked when the resource loaded. + + @example + ```js + // preload the texture (${project}/assets/resources/textures/background.jpg) from resources + cc.resources.preload('textures/background', cc.Texture2D); + + // preload the audio (${project}/assets/resources/music/hit.mp3) from resources + cc.resources.preload('music/hit', cc.AudioClip); + // wait for while + cc.resources.load('music/hit', cc.AudioClip, (err, audioClip) => {}); + + * // preload the prefab (${project}/assets/bundle1/misc/character/cocos) from bundle1 folder + bundle1.preload('misc/character/cocos', cc.Prefab); + + // load the sprite frame of (${project}/assets/bundle2/imgs/cocos.png) from bundle2 folder + bundle2.preload('imgs/cocos', cc.SpriteFrame); + // wait for while + bundle2.load('imgs/cocos', cc.SpriteFrame, (err, spriteFrame) => {}); + ``` + */ + preload(paths: string|string[], type: typeof cc.Asset, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, items: RequestItem[]) => void): void; + preload(paths: string|string[], onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, items: RequestItem[]) => void): void; + preload(paths: string|string[], type: typeof cc.Asset, onComplete: (error: Error, items: RequestItem[]) => void): void; + preload(paths: string|string[], type: typeof cc.Asset): void; + preload(paths: string|string[], onComplete: (error: Error, items: RequestItem[]) => void): void; + preload(paths: string|string[]): void; + /** + !#en + Load all assets under a folder inside the bundle folder.<br> + <br> + Note: All asset paths in Creator use forward slashes, paths using backslashes will not work. + + !#zh + åŠ è½½ç›®æ ‡æ–‡ä»¶å¤¹ä¸çš„æ‰€æœ‰èµ„æº, 注æ„:路径ä¸åªèƒ½ä½¿ç”¨æ–œæ ï¼Œåæ–œæ å°†åœæ¢å·¥ä½œ + @param dir path of the target folder.The path is relative to the bundle folder, extensions must be omitted. + @param type Only asset of type will be loaded if this argument is supplied. + @param onProgress Callback invoked when progression change. + @param onComplete A callback which is called when all assets have been loaded, or an error occurs. + + @example + ```js + // load all audios (resources/audios/) + cc.resources.loadDir('audios', cc.AudioClip, (err, audios) => {}); + + // load all textures in "resources/imgs/" + cc.resources.loadDir('imgs', cc.Texture2D, null, function (err, textures) { + var texture1 = textures[0]; + var texture2 = textures[1]; + }); + + // load all prefabs (${project}/assets/bundle1/misc/characters/) from bundle1 folder + bundle1.loadDir('misc/characters', cc.Prefab, (err, prefabs) => console.log(err)); + + // load all sprite frame (${project}/assets/some/xxx/bundle2/skills/) from bundle2 folder + bundle2.loadDir('skills', cc.SpriteFrame, null, (err, spriteFrames) => console.log(err)); + ``` + */ + loadDir<T extends cc.Asset>(dir: string, type: typeof cc.Asset, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, assets: Array<T>) => void): void; + loadDir<T extends cc.Asset>(dir: string, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, assets: Array<T>) => void): void; + loadDir<T extends cc.Asset>(dir: string, type: typeof cc.Asset, onComplete: (error: Error, assets: Array<T>) => void): void; + loadDir<T extends cc.Asset>(dir: string, type: typeof cc.Asset): void; + loadDir<T extends cc.Asset>(dir: string, onComplete: (error: Error, assets: Array<T>) => void): void; + loadDir<T extends cc.Asset>(dir: string): void; + /** + !#en + Preload all assets under a folder inside the bundle folder.<br> After calling this method, you still need to finish loading by calling `Bundle.loadDir`. + It will be totally fine to call `Bundle.loadDir` at any time even if the preloading is not yet finished + + !#zh + é¢„åŠ è½½ç›®æ ‡æ–‡ä»¶å¤¹ä¸çš„æ‰€æœ‰èµ„æºã€‚调用完åŽï¼Œä½ ä»ç„¶éœ€è¦é€šè¿‡ `Bundle.loadDir` æ¥å®ŒæˆåŠ è½½ã€‚ + å°±ç®—é¢„åŠ è½½è¿˜æ²¡å®Œæˆï¼Œä½ 也å¯ä»¥ç›´æŽ¥è°ƒç”¨ `Bundle.loadDir`。 + @param dir path of the target folder.The path is relative to the bundle folder, extensions must be omitted. + @param type Only asset of type will be preloaded if this argument is supplied. + @param onProgress Callback invoked when progression change. + @param onComplete A callback which is called when all assets have been loaded, or an error occurs. + + @example + ```js + // preload all audios (resources/audios/) + cc.resources.preloadDir('audios', cc.AudioClip); + + // preload all textures in "resources/imgs/" + cc.resources.preloadDir('imgs', cc.Texture2D); + // wait for while + cc.resources.loadDir('imgs', cc.Texture2D, (err, textures) => {}); + + // preload all prefabs (${project}/assets/bundle1/misc/characters/) from bundle1 folder + bundle1.preloadDir('misc/characters', cc.Prefab); + + // preload all sprite frame (${project}/assets/some/xxx/bundle2/skills/) from bundle2 folder + bundle2.preloadDir('skills', cc.SpriteFrame); + // wait for while + bundle2.loadDir('skills', cc.SpriteFrame, (err, spriteFrames) => {}); + ``` + */ + preloadDir(dir: string, type: typeof cc.Asset, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, items: RequestItem[]) => void): void; + preloadDir(dir: string, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, items: RequestItem[]) => void): void; + preloadDir(dir: string, type: typeof cc.Asset, onComplete: (error: Error, items: RequestItem[]) => void): void; + preloadDir(dir: string, type: typeof cc.Asset): void; + preloadDir(dir: string, onComplete: (error: Error, items: RequestItem[]) => void): void; + preloadDir(dir: string): void; + /** + !#en + Loads the scene within this bundle by its name. + + !#zh + 通过场景åç§°åŠ è½½åˆ†åŒ…ä¸çš„场景。 + @param sceneName The name of the scene to load. + @param options Some optional parameters + @param onProgress Callback invoked when progression change. + @param onComplete callback, will be called after scene launched. + + @example + ```js + bundle1.loadScene('first', (err, sceneAsset) => cc.director.runScene(sceneAsset)); + ``` + */ + loadScene(sceneName: string, options: Record<string, any>, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, sceneAsset: cc.SceneAsset) => void): void; + loadScene(sceneName: string, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error, sceneAsset: cc.SceneAsset) => void): void; + loadScene(sceneName: string, options: Record<string, any>, onComplete: (error: Error, sceneAsset: cc.SceneAsset) => void): void; + loadScene(sceneName: string, options: Record<string, any>): void; + loadScene(sceneName: string, onComplete: (error: Error, sceneAsset: cc.SceneAsset) => void): void; + loadScene(sceneName: string): void; + /** + !#en + Preloads the scene within this bundle by its name. After calling this method, you still need to finish loading by calling `Bundle.loadScene` or `cc.director.loadScene`. + It will be totally fine to call `Bundle.loadDir` at any time even if the preloading is not yet finished + + !#zh + 通过场景åç§°é¢„åŠ è½½åˆ†åŒ…ä¸çš„场景.调用完åŽï¼Œä½ ä»ç„¶éœ€è¦é€šè¿‡ `Bundle.loadScene` 或 `cc.director.loadScene` æ¥å®ŒæˆåŠ è½½ã€‚ + å°±ç®—é¢„åŠ è½½è¿˜æ²¡å®Œæˆï¼Œä½ 也å¯ä»¥ç›´æŽ¥è°ƒç”¨ `Bundle.loadScene` 或 `cc.director.loadScene`。 + @param sceneName The name of the scene to preload. + @param options Some optional parameters + @param onProgress callback, will be called when the load progression change. + @param onComplete callback, will be called after scene loaded. + + @example + ```js + bundle1.preloadScene('first'); + // wait for a while + bundle1.loadScene('first', (err, scene) => cc.director.runScene(scene)); + ``` + */ + preloadScene(sceneName: string, options: Record<string, any>, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error) => void): void; + preloadScene(sceneName: string, onProgress: (finish: number, total: number, item: RequestItem) => void, onComplete: (error: Error) => void): void; + preloadScene(sceneName: string, options: Record<string, any>, onComplete: (error: Error) => void): void; + preloadScene(sceneName: string, options: Record<string, any>): void; + preloadScene(sceneName: string, onComplete: (error: Error) => void): void; + preloadScene(sceneName: string): void; + /** + !#en + Get asset within this bundle by path and type. <br> + After you load asset with {{#crossLink "Bundle/load:method"}}{{/crossLink}} or {{#crossLink "Bundle/loadDir:method"}}{{/crossLink}}, + you can acquire them by passing the path to this API. + + !#zh + 通过路径与类型获å–资æºã€‚åœ¨ä½ ä½¿ç”¨ {{#crossLink "Bundle/load:method"}}{{/crossLink}} 或者 {{#crossLink "Bundle/loadDir:method"}}{{/crossLink}} 之åŽï¼Œ + ä½ èƒ½é€šè¿‡ä¼ è·¯å¾„é€šè¿‡è¿™ä¸ª API 获å–到这些资æºã€‚ + @param path The path of asset + @param type Only asset of type will be returned if this argument is supplied. + + @example + ```js + bundle1.get('music/hit', cc.AudioClip); + ``` + */ + get (path: string, type?: typeof cc.Asset): cc.Asset; + /** + !#en + Release the asset loaded by {{#crossLink "Bundle/load:method"}}{{/crossLink}} or {{#crossLink "Bundle/loadDir:method"}}{{/crossLink}} and it's dependencies. + Refer to {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} for detailed informations. + + !#zh + 释放通过 {{#crossLink "Bundle/load:method"}}{{/crossLink}} 或者 {{#crossLink "Bundle/loadDir:method"}}{{/crossLink}} åŠ è½½çš„èµ„æºã€‚详细信æ¯è¯·å‚考 {{#crossLink "AssetManager/releaseAsset:method"}}{{/crossLink}} + @param path The path of asset + @param type Only asset of type will be released if this argument is supplied. + + @example + ```js + // release a texture which is no longer need + bundle1.release('misc/character/cocos'); + ``` + */ + release(path: string, type: typeof cc.Asset): void; + release(path: string): void; + /** + !#en + Release all assets within this bundle. Refer to {{#crossLink "AssetManager/releaseAll:method"}}{{/crossLink}} for detailed informations. + + !#zh + 释放æ¤åŒ…ä¸çš„æ‰€æœ‰èµ„æºã€‚详细信æ¯è¯·å‚考 {{#crossLink "AssetManager/releaseAll:method"}}{{/crossLink}} + + @example + ```js + // release all asset within bundle1 + bundle1.releaseAll(); + ``` + */ + releaseAll(): void; + } + /** !#en + Cache manager is a module which controls all caches downloaded from server in non-web platform, it is a singleton + All member can be accessed with `cc.assetManager.cacheManager`. + + !#zh + 缓å˜ç®¡ç†å™¨æ˜¯ä¸€ä¸ªæ¨¡å—ï¼Œåœ¨éž WEB å¹³å°ä¸Šï¼Œç”¨äºŽç®¡ç†æ‰€æœ‰ä»ŽæœåŠ¡å™¨ä¸Šä¸‹è½½ä¸‹æ¥çš„缓å˜ï¼Œè¿™æ˜¯ä¸€ä¸ªå•例,所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.cacheManager` 访问。 */ + export class CacheManager { + /** !#en + The name of cacheDir + + !#zh + 缓å˜ç›®å½•çš„åç§° */ + cacheDir: string; + /** !#en + Whether or not cache asset into user's storage space, this property only works on mini-game platforms + + !#zh + 是å¦ç¼“å˜èµ„æºåˆ°ç”¨æˆ·å˜å‚¨ç©ºé—´ï¼Œæ¤å±žæ€§åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ */ + cacheEnabled: boolean; + /** !#en + Whether or not auto clear cache when storage ran out, this property only works on mini-game platforms + + !#zh + 是å¦åœ¨å˜å‚¨ç©ºé—´æ»¡äº†åŽè‡ªåŠ¨æ¸…ç†ç¼“å˜ï¼Œæ¤å±žæ€§åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ */ + autoClear: boolean; + /** !#en + The interval between caching resources, this property only works on mini-game platforms + + !#zh + 缓å˜èµ„æºçš„间隔时间,æ¤å±žæ€§åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ */ + cacheInterval: number; + /** !#en + The interval between deleting resources, when you use `cleanLRU`, the resources will be deleted as this interval + + !#zh + 清ç†èµ„æºçš„é—´éš”æ—¶é—´ï¼Œå½“ä½ ä½¿ç”¨ `cleanLRU` 时,资æºå°†ä»¥æ¤é—´éš”è¢«åˆ é™¤ */ + deleteInterval: number; + /** + !#en + Get cached path with origin url + + !#zh + 通过原始 url 获å–缓å˜åŽçš„路径 + @param originUrl originUrl + */ + getCache(originUrl: string): string; + /** + !#en + Get temporary path with origin url, this method only works on mini-game platforms + + !#zh + 通过原始 url 获å–ä¸´æ—¶æ–‡ä»¶çš„è·¯å¾„ï¼Œæ¤æ–¹æ³•åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ + @param originUrl originUrl + */ + getTemp(originUrl: string): string; + /** + !#en + Clear all caches, please use with caution, If necessary, we recommend using it before the game is launched + + !#zh + 清空所有缓å˜ï¼Œè¯·è°¨æ…Žä½¿ç”¨ï¼Œå¦‚果必è¦çš„è¯ï¼Œæˆ‘们建议在游æˆå¯åЍ之å‰ä½¿ç”¨ + */ + clearCache(): void; + /** + !#en + Clear part of caches with LRU strategy + + !#zh + 使用 LRU ç–ç•¥æ¸…ç©ºéƒ¨åˆ†ç¼“å˜ + */ + clearLRU(): void; + /** + !#en + Remove cache with origin url + + !#zh + 通过原始 url ç§»é™¤ç¼“å˜ + */ + removeCache(): void; + } + /** !#en + use to cache something + + !#zh + ç”¨äºŽç¼“å˜æŸäº›å†…容 */ + export class Cache<T = any> { + /** + !#en + Create a cache + + !#zh + 创建一个 cache + @param map An object used to initialize + */ + constructor(map?: Record<string, T>); + /** + !#en + Add Key-Value to cache + + !#zh + å¢žåŠ é”®å€¼å¯¹åˆ°ç¼“å˜ä¸ + @param key The key + @param val The value + + @example + ```js + var cache = new Cache(); + cache.add('test', null); + ``` + */ + add(key: string, val: T): T; + /** + !#en + Get the cached content by key + + !#zh + 通过 key 获å–对应的 value + @param key The key + + @example + ```js + var cache = new Cache(); + var test = cache.get('test'); + ``` + */ + get(key: string): T; + /** + !#en + Check whether or not content exists by key + + !#zh + 通过 Key åˆ¤æ–æ˜¯å¦å˜åœ¨å¯¹åº”的内容 + @param key The key + + @example + ```js + var cache = new Cache(); + var exist = cache.has('test'); + ``` + */ + has(key: string): boolean; + /** + !#en + Remove the cached content by key + + !#zh + 通过 Key 移除对应的内容 + @param key The key + + @example + ```js + var cache = new Cache(); + var content = cache.remove('test'); + ``` + */ + remove(key: string): T; + /** + !#en + Clear all content + + !#zh + 清除所有内容 + + @example + ```js + var cache = new Cache(); + cache.clear(); + ``` + */ + clear():void; + /** + !#en + Enumerate all content and invoke function + + !#zh + 枚举所有内容并执行方法 + @param func Function to be invoked + + @example + ```js + var cache = new Cache(); + cache.forEach((val, key) => console.log(key)); + ``` + */ + forEach(func: (val: T, key: string) => void): void; + /** + !#en + Enumerate all content to find one element which can fulfill condition + + !#zh + 枚举所有内容,找到一个å¯ä»¥æ»¡è¶³æ¡ä»¶çš„å…ƒç´ + @param predicate The condition + + @example + ```js + var cache = new Cache(); + var val = cache.find((val, key) => key === 'test'); + ``` + */ + find(predicate: (val: T, key: string) => boolean): T; + /** !#en + The count of cached content + + !#zh + ç¼“å˜æ•°é‡ */ + count: number; + /** + !#en + Destroy this cache + + !#zh + 销æ¯è¿™ä¸ª cache + */ + destroy(): void; + } + /** !#en + Control asset's dependency list, it is a singleton. All member can be accessed with `cc.assetManager.dependUtil` + + !#zh + 控制资æºçš„ä¾èµ–列表,这是一个å•例, 所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.dependUtil` 访问 */ + export class DependUtil { + /** + !#en + Get asset's native dependency. For example, Texture's native dependency is image. + + !#zh + 获å–资æºçš„原生ä¾èµ–,例如 Texture 的原生ä¾èµ–是图片 + @param uuid asset's uuid + + @example + ```js + var dep = dependUtil.getNativeDep('fcmR3XADNLgJ1ByKhqcC5Z'); + ``` + */ + getNativeDep(uuid: string): Record<string, any>; + /** + !#en + Get asset's direct referencing non-native dependency list. For example, Material's non-native dependencies are Texture. + + !#zh + 获å–资æºç›´æŽ¥å¼•用的éžåŽŸç”Ÿä¾èµ–列表,例如,æè´¨çš„éžåŽŸç”Ÿä¾èµ–是 Texture + @param uuid asset's uuid + + @example + ```js + var deps = dependUtil.getDeps('fcmR3XADNLgJ1ByKhqcC5Z'); + ``` + */ + getDeps(uuid: string): string[]; + /** + !#en + Get non-native dependency list of the loaded asset, include indirect reference. + The returned array stores the dependencies with their uuid, after retrieve dependencies, + + !#zh + èŽ·å–æŸä¸ªå·²ç»åŠ è½½å¥½çš„èµ„æºçš„æ‰€æœ‰éžåŽŸç”Ÿä¾èµ–资æºåˆ—表,包括间接引用的资æºï¼Œå¹¶ä¿å˜åœ¨æ•°ç»„ä¸è¿”回。 + 返回的数组将仅ä¿å˜ä¾èµ–资æºçš„ uuid。 + @param uuid The asset's uuid + + @example + ```js + var deps = dependUtil.getDepsRecursively('fcmR3XADNLgJ1ByKhqcC5Z'); + ``` + */ + getDepsRecursively(uuid: string): string[]; + } + /** !#en + Control all download process, it is a singleton. All member can be accessed with `cc.assetManager.downloader` , it can download several types of files: + 1. Text + 2. Image + 3. Audio + 4. Assets + 5. Scripts + + !#zh + ç®¡ç†æ‰€æœ‰ä¸‹è½½è¿‡ç¨‹ï¼Œdownloader 是个å•例,所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.downloader` è®¿é—®ï¼Œå®ƒèƒ½ä¸‹è½½ä»¥ä¸‹å‡ ç§ç±»åž‹çš„æ–‡ä»¶ï¼š + 1. 文本 + 2. 图片 + 3. 音频 + 4. èµ„æº + 5. 脚本 */ + export class Downloader { + /** !#en + The maximum number of concurrent when downloading + + !#zh + ä¸‹è½½æ—¶çš„æœ€å¤§å¹¶å‘æ•° */ + maxConcurrency: number; + /** !#en + The maximum number of request can be launched per frame when downloading + + !#zh + 下载时æ¯å¸§å¯ä»¥å¯åŠ¨çš„æœ€å¤§è¯·æ±‚æ•° */ + maxRequestsPerFrame: number; + /** !#en + The max number of retries when fail + + !#zh + 失败é‡è¯•次数 */ + maxRetryCount: number; + /** !#en + Wait for while before another retry, unit: ms + + !#zh + é‡è¯•的间隔时间 */ + retryInterval: number; + /** + !#en + Use Image element to download image + + !#zh + 使用 Image å…ƒç´ æ¥ä¸‹è½½å›¾ç‰‡ + @param url Url of the image + @param options Some optional paramters + @param onComplete Callback when image loaded or failed + + @example + ```js + downloadDomImage('http://example.com/test.jpg', null, (err, img) => console.log(err)); + ``` + */ + downloadDomImage(url: string, options?: Record<string, any> , onComplete?: (err: Error, img: HTMLImageElement) => void): HTMLImageElement; + downloadDomImage(url: string, onComplete?: (err: Error, img: HTMLImageElement) => void): HTMLImageElement; + /** + !#en + Use audio element to download audio + + !#zh + 使用 Audio å…ƒç´ æ¥ä¸‹è½½éŸ³é¢‘ + @param url Url of the audio + @param options Some optional paramters + @param onComplete Callback invoked when audio loaded or failed + + @example + ```js + downloadDomAudio('http://example.com/test.mp3', null, (err, audio) => console.log(err)); + ``` + */ + downloadDomAudio(url: string, options?: Record<string, any>, onComplete?: (err: Error, audio: HTMLAudioElement) => void): HTMLAudioElement; + downloadDomAudio(url: string, onComplete?: (err: Error, audio: HTMLAudioElement) => void): HTMLAudioElement; + /** + !#en + Use XMLHttpRequest to download file + + !#zh + 使用 XMLHttpRequest æ¥ä¸‹è½½æ–‡ä»¶ + @param url Url of the file + @param options Some optional paramters + @param onFileProgress Callback continuously during download is processing + @param onComplete Callback when file loaded or failed + + @example + ```js + downloadFile('http://example.com/test.bin', {responseType: 'arraybuffer'}, null, (err, arrayBuffer) => console.log(err)); + ``` + */ + downloadFile(url: string, options?: Record<string, any>, onFileProgress?: (loaded: Number, total: Number) => void, onComplete?: (err: Error, response: any) => void): XMLHttpRequest; + downloadFile(url: string, onFileProgress?: (loaded: Number, total: Number) => void, onComplete?: (err: Error, response: any) => void): XMLHttpRequest; + downloadFile(url: string, options?: Record<string, any>, onComplete?: (err: Error, response: any) => void): XMLHttpRequest; + downloadFile(url: string, onComplete?: (err: Error, response: any) => void): XMLHttpRequest; + /** + !#en + Load script + + !#zh + åŠ è½½è„šæœ¬ + @param url Url of the script + @param options Some optional paramters + @param onComplete Callback when script loaded or failed + + @example + ```js + downloadScript('http://localhost:8080/index.js', null, (err) => console.log(err)); + ``` + */ + downloadScript(url: string, options?: Record<string, any>, onComplete?: (err: Error) => void): void;; + downloadScript(url: string, onComplete?: (err: Error) => void): void;; + /** + !#en + Register custom handler if you want to change default behavior or extend downloader to download other format file + + !#zh + å½“ä½ æƒ³ä¿®æ”¹é»˜è®¤è¡Œä¸ºæˆ–è€…æ‹“å±• downloader æ¥ä¸‹è½½å…¶ä»–æ ¼å¼æ–‡ä»¶æ—¶å¯ä»¥æ³¨å†Œè‡ªå®šä¹‰çš„ handler + @param type Extension likes '.jpg' or map likes {'.jpg': jpgHandler, '.png': pngHandler} + @param handler handler + + @example + ```js + downloader.register('.tga', (url, options, onComplete) => onComplete(null, null)); + downloader.register({'.tga': (url, options, onComplete) => onComplete(null, null), '.ext': (url, options, onComplete) => onComplete(null, null)}); + ``` + */ + register(type: string, handler: (url: string, options: Record<string, any>, onComplete: (err: Error, content: any) => void) => void): void; + register(map: Record<string, (url: string, options: Record<string, any>, onComplete: (err: Error, content: any) => void) => void>): void; + /** + !#en + Use corresponding handler to download file under limitation + + !#zh + 在é™åˆ¶ä¸‹ä½¿ç”¨å¯¹åº”çš„ handler æ¥ä¸‹è½½æ–‡ä»¶ + @param url The url should be downloaded + @param type The type indicates that which handler should be used to download, such as '.jpg' + @param options some optional paramters will be transferred to the corresponding handler. + @param onComplete callback when finishing downloading + + @example + ```js + download('http://example.com/test.tga', '.tga', {onFileProgress: (loaded, total) => console.lgo(loaded/total)}, onComplete: (err) => console.log(err)); + ``` + */ + download(id: string, url: string, type: string, options: Record<string, any>, onComplete: (err: Error, content: any) => void): void; + } + /** !#en + Provide some helpful function, it is a singleton. All member can be accessed with `cc.assetManager.utils` + + !#zh + æä¾›ä¸€äº›è¾…助方法,helper 是一个å•例, 所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.utils` 访问 */ + export class Helper { + /** + !#en + Decode uuid, returns the original uuid + + !#zh + è§£ç uuid,返回原始 uuid + @param base64 the encoded uuid + + @example + ```js + var uuid = 'fcmR3XADNLgJ1ByKhqcC5Z'; + var originalUuid = decodeUuid(uuid); // fc991dd7-0033-4b80-9d41-c8a86a702e59 + ``` + */ + decodeUuid(base64: string): string; + /** + !#en + Extract uuid from url + + !#zh + 从 url ä¸æå– uuid + @param url url + + @example + ```js + var url = 'res/import/fc/fc991dd7-0033-4b80-9d41-c8a86a702e59.json'; + var uuid = getUuidFromURL(url); // fc991dd7-0033-4b80-9d41-c8a86a702e59 + ``` + */ + getUuidFromURL(url: string): string; + /** + !#en + Transform uuid to url + + !#zh + è½¬æ¢ uuid 为 url + @param uuid The uuid of asset + @param options Some optional parameters + + @example + ```js + var url = getUrlWithUuid('fcmR3XADNLgJ1ByKhqcC5Z', {isNative: false}); + ``` + */ + getUrlWithUuid(uuid: string, options?: Record<string, any>): string; + /** + !#en + Check if the type of data is cc.Scene or cc.Prefab + + !#zh + 检测数æ®çš„ç±»åž‹æ˜¯å¦æ˜¯ Scene 或者 Prefab + @param json serialized data + */ + isSceneObj(json: any): boolean; + /** + !#en + Check if the type of asset is scene + + !#zh + 检查资æºç±»åž‹æ˜¯å¦æ˜¯åœºæ™¯ + @param asset asset + */ + isScene(asset: any): boolean; + /** + !#en + Normalize url, strip './' and '/' + + !#zh + æ ‡å‡†åŒ– url ,去除 './' å’Œ '/' + @param url url + */ + normalize(url: string): string; + } + /** !#en + Parse the downloaded file, it's a singleton, all member can be accessed with `cc.assetManager.parser` + + !#zh + è§£æžå·²ä¸‹è½½çš„æ–‡ä»¶ï¼Œparser 是一个å•例, 所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManaager.parser` 访问 */ + export class Parser { + /** + !#en + Parse image file + + !#zh + è§£æžå›¾ç‰‡æ–‡ä»¶ + @param file The downloaded file + @param options Some optional paramters + @param onComplete callback when finish parsing. + + @example + ```js + downloader.downloadFile('test.jpg', {responseType: 'blob'}, null, (err, file) => { + parser.parseImage(file, null, (err, img) => console.log(err)); + }); + ``` + */ + parseImage(file: Blob, options: Record<string, any>, onComplete?: (err: Error, img: ImageBitmap|HTMLImageElement) => void): void; + /** + !#en + Parse audio file + + !#zh + è§£æžéŸ³é¢‘文件 + @param file The downloaded file + @param options Some optional paramters + @param onComplete Callback when finish parsing. + + @example + ```js + downloader.downloadFile('test.mp3', {responseType: 'arraybuffer'}, null, (err, file) => { + parser.parseAudio(file, null, (err, audio) => console.log(err)); + }); + ``` + */ + parseAudio(file: ArrayBuffer|HTMLAudioElement, options: Record<string, any>, onComplete?: (err: Error, audio: AudioBuffer|HTMLAudioElement) => void): void; + /** + !#en + Parse pvr file + + !#zh + è§£æžåŽ‹ç¼©çº¹ç†æ ¼å¼ pvr 文件 + @param file The downloaded file + @param options Some optional paramters + @param onComplete Callback when finish parsing. + + @example + ```js + downloader.downloadFile('test.pvr', {responseType: 'arraybuffer'}, null, (err, file) => { + parser.parsePVRTex(file, null, (err, pvrAsset) => console.log(err)); + }); + ``` + */ + parsePVRTex(file: ArrayBuffer|ArrayBufferView, options: Record<string, any>, onComplete: (err: Error, pvrAsset: {_data: Uint8Array, _compressed: boolean, width: number, height: number}) => void): void; + /** + !#en + Parse pkm file + + !#zh + è§£æžåŽ‹ç¼©çº¹ç†æ ¼å¼ pkm 文件 + @param file The downloaded file + @param options Some optional paramters + @param onComplete Callback when finish parsing. + + @example + ```js + downloader.downloadFile('test.pkm', {responseType: 'arraybuffer'}, null, (err, file) => { + parser.parsePKMTex(file, null, (err, etcAsset) => console.log(err)); + }); + ``` + */ + parsePKMTex(file: ArrayBuffer|ArrayBufferView, options: Record<string, any>, onComplete: (err: Error, etcAsset: {_data: Uint8Array, _compressed: boolean, width: number, height: number}) => void): void; + /** + !#en + Parse plist file + + !#zh + è§£æž plist 文件 + @param file The downloaded file + @param options Some optional paramters + @param onComplete Callback when finish parsing + + @example + ```js + downloader.downloadFile('test.plist', {responseType: 'text'}, null, (err, file) => { + parser.parsePlist(file, null, (err, data) => console.log(err)); + }); + ``` + */ + parsePlist(file: string, options: Record<string, any>, onComplete?: (err: Error, data: any) => void): void; + /** + !#en + Deserialize asset file + + !#zh + ååºåˆ—åŒ–èµ„æºæ–‡ä»¶ + @param file The serialized json + @param options Some optional paramters + @param onComplete Callback when finish parsing + + @example + ```js + downloader.downloadFile('test.json', {responseType: 'json'}, null, (err, file) => { + parser.parseImport(file, null, (err, data) => console.log(err)); + }); + ``` + */ + parseImport (file: any, options: Record<string, any>, onComplete?: (err: Error, asset: cc.Asset) => void): void; + /** + !#en + Register custom handler if you want to change default behavior or extend parser to parse other format file + + !#zh + å½“ä½ æƒ³ä¿®æ”¹é»˜è®¤è¡Œä¸ºæˆ–è€…æ‹“å±• parser æ¥è§£æžå…¶ä»–æ ¼å¼æ–‡ä»¶æ—¶å¯ä»¥æ³¨å†Œè‡ªå®šä¹‰çš„handler + @param type Extension likes '.jpg' or map likes {'.jpg': jpgHandler, '.png': pngHandler} + @param handler The corresponding handler + + @example + ```js + parser.register('.tga', (file, options, onComplete) => onComplete(null, null)); + parser.register({'.tga': (file, options, onComplete) => onComplete(null, null), '.ext': (file, options, onComplete) => onComplete(null, null)}); + ``` + */ + register(type: string, handler: (file: any, options: Record<string, any>, onComplete: (err: Error, data: any) => void) => void): void; + register(map: Record<string, (file: any, options: Record<string, any>, onComplete: (err: Error, data: any) => void) => void>): void; + /** + !#en + Use corresponding handler to parse file + + !#zh + 使用对应的handleræ¥è§£æžæ–‡ä»¶ + @param id The id of file + @param file File + @param type The corresponding type of file, likes '.jpg'. + @param options Some optional paramters will be transferred to the corresponding handler. + @param onComplete callback when finishing downloading + + @example + ```js + downloader.downloadFile('test.jpg', {responseType: 'blob'}, null, (err, file) => { + parser.parse('test.jpg', file, '.jpg', null, (err, img) => console.log(err)); + }); + ``` + */ + parse(id: string, file: any, type: string, options: Record<string, any>, onComplete: (err: Error, content: any) => void): void; + } + /** !#en + The builtin bundles + + !#zh + 内置 bundle */ + export enum BuiltinBundleName { + RESOURCES = 0, + INTERNAL = 0, + MAIN = 0, + START_SCENE = 0, + } + /** !#en + A collection of information about a request + + !#zh + 请求的相关信æ¯é›†åˆ */ + export class RequestItem { + /** !#en + The uuid of request + + !#zh + 请求资æºçš„uuid */ + uuid: string; + /** !#en + The final url of request + + !#zh + 请求的最终url */ + url: string; + /** !#en + The extension name of asset + + !#zh + 资æºçš„æ‰©å±•å */ + ext: string; + /** !#en + The content of asset + + !#zh + 资æºçš„内容 */ + content: any; + /** !#en + The file of asset + + !#zh + 资æºçš„æ–‡ä»¶ */ + file: any; + /** !#en + The information of asset + + !#zh + 资æºçš„ç›¸å…³ä¿¡æ¯ */ + info: any; + /** !#en + Whether or not it is native asset + + !#zh + èµ„æºæ˜¯å¦æ˜¯åŽŸç”Ÿèµ„æº */ + isNative: boolean; + /** !#en + Custom options + + !#zh + è‡ªå®šä¹‰å‚æ•° */ + options: any; + /** + !#en + Create a request item + + !#zh + 创建一个 request item + */ + constructor(); + /** !#en + The id of request, combined from uuid and isNative + + !#zh + 请求的 id, ç”± uuid å’Œ isNative 组åˆè€Œæˆ */ + id: string; + /** + !#en + Recycle this for reuse + + !#zh + 回收 requestItem 用于å¤ç”¨ + */ + recycle(): void; + /** + !#en + Create a new request item from pool + + !#zh + ä»Žå¯¹è±¡æ± ä¸åˆ›å»º requestItem + */ + static create(): RequestItem; + } + /** !#en + Task is used to run in the pipeline for some effect + + !#zh + 任务用于在管线ä¸è¿è¡Œä»¥è¾¾æˆæŸç§æ•ˆæžœ */ + export class Task { + /** !#en + The id of task + + !#zh + 任务id */ + id: number; + /** !#en + The callback when task is completed + + !#zh + 完æˆå›žè°ƒ */ + onComplete: Function; + /** !#en + The callback of progression + + !#zh + 进度回调 */ + onProgress: Function; + /** !#en + The callback when something goes wrong + + !#zh + 错误回调 */ + onError: Function; + /** !#en + The source of task + + !#zh + ä»»åŠ¡çš„æº */ + source: any; + /** !#en + The output of task + + !#zh + 任务的输出 */ + output: any; + /** !#en + The input of task + + !#zh + 任务的输入 */ + input: any; + /** !#en + The progression of task + + !#zh + 任务的进度 */ + progress: any; + /** !#en + Custom options + + !#zh + è‡ªå®šä¹‰å‚æ•° */ + options: any; + /** + !#en + Create a new Task + + !#zh + 创建一个任务 + @param options Some optional paramters + */ + constructor(options?: {onComplete?: (err: Error, result: any) => void, onError?: () => void, onProgress?: Function, input: any, progress?: any, options?: Record<string, any>}); + /** + !#en + Set paramters of this task + + !#zh + è®¾ç½®ä»»åŠ¡çš„å‚æ•° + @param options Some optional paramters + + @example + ```js + var task = new Task(); + task.set({input: ['test'], onComplete: (err, result) => console.log(err), onProgress: (finish, total) => console.log(finish / total)}); + ``` + */ + set(options?: {onComplete?: (err: Error, result: any) => void, onError?: () => void, onProgress?: Function, input: any, progress?: any, options?: Record<string, any>}): void; + /** + !#en + Dispatch event + + !#zh + å‘布事件 + @param event The event name + @param param1 Parameter 1 + @param param2 Parameter 2 + @param param3 Parameter 3 + @param param4 Parameter 4 + + @example + ```js + var task = Task.create(); + Task.onComplete = (msg) => console.log(msg); + Task.dispatch('complete', 'hello world'); + ``` + */ + dispatch(event: string, param1?: any, param2?: any, param3?: any, param4?: any): void; + /** + !#en + Recycle this for reuse + + !#zh + 回收 task 用于å¤ç”¨ + */ + recycle(): void; + /** !#en + Whether or not this task is completed + + !#zh + æ¤ä»»åŠ¡æ˜¯å¦å·²ç»å®Œæˆ */ + isFinish: boolean; + /** + !#en + Create a new task from pool + + !#zh + ä»Žå¯¹è±¡æ± ä¸åˆ›å»º task + @param options Some optional paramters + */ + static create(options?: {onComplete?: (err: Error, result: any) => void, onError?: () => void, onProgress?: Function, input: any, progress?: any, options?: Record<string, any>}): Task; + } + /** !#en + Handle the packed asset, include unpacking, loading, cache and so on. It is a singleton. All member can be accessed with `cc.assetManager.packManager` + + !#zh + å¤„ç†æ‰“包资æºï¼ŒåŒ…æ‹¬æ‹†åŒ…ï¼ŒåŠ è½½ï¼Œç¼“å˜ç‰ç‰ï¼Œè¿™æ˜¯ä¸€ä¸ªå•例, 所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.packManager` 访问 */ + export class PackManager { + /** + !#en + Unpack the json, revert to what it was before packing + + !#zh + 拆解 json 包,æ¢å¤ä¸ºæ‰“包之å‰çš„内容 + @param pack The pack + @param json The content of pack + @param options Some optional parameters + @param onComplete Callback when finish unpacking + + @example + ```js + downloader.downloadFile('pack.json', {responseType: 'json'}, null, (err, file) => { + packManager.unpackJson(['a', 'b'], file, null, (err, data) => console.log(err)); + }); + ``` + */ + unpackJson(pack: string[], json: any, options: Record<string, any>, onComplete?: (err: Error, content: any) => void): void; + /** + !#en + Register custom handler if you want to change default behavior or extend packManager to unpack other format pack + + !#zh + å½“ä½ æƒ³ä¿®æ”¹é»˜è®¤è¡Œä¸ºæˆ–è€…æ‹“å±• packManager æ¥æ‹†åˆ†å…¶ä»–æ ¼å¼çš„包时å¯ä»¥æ³¨å†Œè‡ªå®šä¹‰çš„ handler + @param type Extension likes '.bin' or map likes {'.bin': binHandler, '.ab': abHandler} + @param handler handler + + @example + ```js + packManager.register('.bin', (packUuid, file, options, onComplete) => onComplete(null, null)); + packManager.register({'.bin': (packUuid, file, options, onComplete) => onComplete(null, null), '.ab': (packUuid, file, options, onComplete) => onComplete(null, null)}); + ``` + */ + register(type: string, handler: (packUuid: string, data: any, options: Record<string, any>, onComplete: (err: Error, content: any) => void) => void): void; + register(map: Record<string, (packUuid: string, data: any, options: Record<string, any>, onComplete: (err: Error, content: any) => void) => void>): void; + /** + !#en + Use corresponding handler to unpack package + + !#zh + 用对应的 handler æ¥è¿›è¡Œè§£åŒ… + @param pack The uuid of packed assets + @param data The packed data + @param type The type indicates that which handler should be used to download, such as '.jpg' + @param options Some optional parameter + @param onComplete callback when finishing unpacking + + @example + ```js + downloader.downloadFile('pack.json', {responseType: 'json'}, null, (err, file) => { + packManager.unpack(['2fawq123d', '1zsweq23f'], file, '.json', null, (err, data) => console.log(err)); + }); + ``` + */ + unpack(pack: string[], data: any, type: string, options: Record<string, any>, onComplete?: (err: Error, data: any) => void): void; + /** + !#en + Download request item, If item is not in any package, download as usual. Otherwise, download the corresponding package and unpack it. + And then retrieve the corresponding content form it. + + !#zh + 下载请求对象,如果请求对象ä¸åœ¨ä»»ä½•包内,则æ£å¸¸ä¸‹è½½ï¼Œå¦åˆ™ä¸‹è½½å¯¹åº”çš„ package 并进行拆解,并å–回包内对应的内容 + @param item Some item you want to download + @param options Some optional parameters + @param onComplete Callback when finished + + @example + ```js + var requestItem = cc.AssetManager.RequestItem.create(); + requestItem.uuid = 'fcmR3XADNLgJ1ByKhqcC5Z'; + requestItem.info = config.getAssetInfo('fcmR3XADNLgJ1ByKhqcC5Z'); + packManager.load(requestItem, null, (err, data) => console.log(err)); + ``` + */ + load(item: RequestItem, options: Record<string, any>, onComplete: (err: Error, data: any) => void): void; + } + /** !#en + Pipeline can execute the task for some effect. + + !#zh + 管线能执行任务达到æŸä¸ªæ•ˆæžœ */ + export class Pipeline { + /** !#en + The id of pipeline + + !#zh + 管线的 id */ + id: number; + /** !#en + The name of pipeline + + !#zh + 管线的åå— */ + name: string; + /** !#en + All pipes of pipeline + + !#zh + æ‰€æœ‰çš„ç®¡é“ */ + pipes: Function[]; + /** + !#en + Create a new pipeline + + !#zh + 创建一个管线 + @param name The name of pipeline + @param funcs The array of pipe, every pipe must be function which take two parameters, the first is a `Task` flowed in pipeline, the second is complete callback + + @example + ```js + var pipeline = new Pipeline('download', [ + (task, done) => { + var url = task.input; + cc.assetManager.downloader.downloadFile(url, null, null, (err, result) => { + task.output = result; + done(err); + }); + }, + (task, done) => { + var text = task.input; + var json = JSON.stringify(text); + task.output = json; + done(); + } + ]); + ``` + */ + constructor(name: string, funcs: Array<(task: Task, done?: (err: Error) => void) => void>); + /** + !#en + At specific point insert a new pipe to pipeline + + !#zh + 在æŸä¸ªç‰¹å®šçš„点为管线æ’入一个新的 pipe + @param func The new pipe + @param index The specific point you want to insert at. + + @example + ```js + var pipeline = new Pipeline('test', []); + pipeline.insert((task, done) => { + // do something + done(); + }, 0); + ``` + */ + insert(func: (task: Task, callback?: (err: Error) => void) => void, index: number): Pipeline; + /** + !#en + Append a new pipe to the pipeline + + !#zh + æ·»åŠ ä¸€ä¸ªç®¡é“åˆ°ç®¡çº¿ä¸ + @param func The new pipe + + @example + ```js + var pipeline = new Pipeline('test', []); + pipeline.append((task, done) => { + // do something + done(); + }); + ``` + */ + append(func: (task: Task, callback?: (err: Error) => void) => void): Pipeline; + /** + !#en + Remove pipe which at specific point + + !#zh + 移除特定ä½ç½®çš„ç®¡é“ + @param index The specific point + + @example + ```js + var pipeline = new Pipeline('test', (task, done) => { + // do something + done(); + }); + pipeline.remove(0); + ``` + */ + remove(index: number): Pipeline; + /** + !#en + Execute task synchronously + + !#zh + åŒæ¥æ‰§è¡Œä»»åŠ¡ + @param task The task will be executed + + @example + ```js + var pipeline = new Pipeline('sync', [(task) => { + let input = task.input; + task.output = doSomething(task.input); + }]); + + var task = new Task({input: 'test'}); + console.log(pipeline.sync(task)); + ``` + */ + sync(task: Task): any; + /** + !#en + Execute task asynchronously + + !#zh + å¼‚æ¥æ‰§è¡Œä»»åŠ¡ + @param task The task will be executed + + @example + ```js + var pipeline = new Pipeline('sync', [(task, done) => { + let input = task.input; + task.output = doSomething(task.input); + done(); + }]); + var task = new Task({input: 'test', onComplete: (err, result) => console.log(result)}); + pipeline.async(task); + ``` + */ + async(task: Task): void; + } +} + +/** Some helpful utilities */ +declare namespace cc.geomUtils { + /** + !#en + the distance between a point and a plane + !#zh + 计算点和平é¢ä¹‹é—´çš„è·ç¦»ã€‚ + @param point point + @param plane plane + */ + export function point_plane(point: cc.Vec3, plane: cc.Plane): number; + /** + !#en + the closest point on plane to a given point + !#zh + 计算平é¢ä¸Šæœ€æŽ¥è¿‘给定点的点。 + @param out Closest point + @param point Given point + @param plane plane + */ + export function pt_point_plane(out: cc.Vec3, point: cc.Vec3, plane: cc.Plane): cc.Vec3; + /** + !#en + the closest point on aabb to a given point + !#zh + 计算 aabb 上最接近给定点的点。 + @param out Closest point. + @param point Given point. + @param aabb Align the axis around the box. + */ + export function pt_point_aabb(out: cc.Vec3, point: cc.Vec3, aabb: cc.Aabb): cc.Vec3; + /** + !#en + the closest point on obb to a given point + !#zh + 计算 obb 上最接近给定点的点。 + @param out Closest point + @param point Given point + @param obb Direction box + */ + export function pt_point_obb(out: cc.Vec3, point: cc.Vec3, obb: cc.Obb): cc.Vec3; +} + +/** !#en Some JavaScript decorators which can be accessed with "cc._decorator". +!#zh 一些 JavaScript 装饰器,目å‰å¯ä»¥é€šè¿‡ "cc._decorator" æ¥è®¿é—®ã€‚ +(这些 API ä»ä¸å®Œå…¨ç¨³å®šï¼Œæœ‰å¯èƒ½éšç€ JavaScript è£…é¥°å™¨çš„æ ‡å‡†å®žçŽ°è€Œè°ƒæ•´ï¼‰ */ +declare namespace cc._decorator { + /** + !#en + Declare the standard [ES6 Class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) + as CCClass, please see [Class](../../../manual/en/scripting/class.html) for details. + !#zh + å°†æ ‡å‡†å†™æ³•çš„ [ES6 Class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) 声明为 CCClass,具体用法请å‚阅[类型定义](../../../manual/zh/scripting/class.html)。 + @param name The class name used for serialization. + + @example + ```js + const {ccclass} = cc._decorator; + + // define a CCClass, omit the name + @ccclass + class NewScript extends cc.Component { + // ... + } + + // define a CCClass with a name + @ccclass('LoginData') + class LoginData { + // ... + } + ``` + */ + export function ccclass(name?: string): Function; + export function ccclass(_class?: Function): void; + /** + !#en + Declare property for [CCClass](../../../manual/en/scripting/reference/attributes.html). + !#zh + 定义 [CCClass](../../../manual/zh/scripting/reference/attributes.html) 所用的属性。 + @param options an object with some property attributes + + @example + ```js + const {ccclass, property} = cc._decorator; + + @ccclass + class NewScript extends cc.Component { + @property({ + type: cc.Node + }) + targetNode1 = null; + + @property(cc.Node) + targetNode2 = null; + + @property(cc.Button) + targetButton = null; + + @property + _width = 100; + + @property + get width () { + return this._width; + } + + @property + set width (value) { + this._width = value; + } + + @property + offset = new cc.Vec2(100, 100); + + @property(cc.Vec2) + offsets = []; + + @property(cc.SpriteFrame) + frame = null; + } + + // above is equivalent to (上é¢çš„代ç 相当于): + + var NewScript = cc.Class({ + properties: { + targetNode1: { + default: null, + type: cc.Node + }, + + targetNode2: { + default: null, + type: cc.Node + }, + + targetButton: { + default: null, + type: cc.Button + }, + + _width: 100, + + width: { + get () { + return this._width; + }, + set (value) { + this._width = value; + } + }, + + offset: new cc.Vec2(100, 100) + + offsets: { + default: [], + type: cc.Vec2 + } + + frame: { + default: null, + type: cc.SpriteFrame + }, + } + }); + ``` + */ + export function property(options?: {type?: any; visible?: boolean|(() => boolean); displayName?: string; tooltip?: string; multiline?: boolean; readonly?: boolean; min?: number; max?: number; step?: number; range?: number[]; slide?: boolean; serializable?: boolean; formerlySerializedAs?: string; editorOnly?: boolean; override?: boolean; animatable?: boolean} | any[]|Function|cc.ValueType|number|string|boolean): Function; + export function property(_target: Object, _key: any, _desc?: any): void; + /** + !#en + Makes a CCClass that inherit from component execute in edit mode.<br> + By default, all components are only executed in play mode, + which means they will not have their callback functions executed while the Editor is in edit mode. + !#zh + å…许继承自 Component çš„ CCClass 在编辑器里执行。<br> + 默认情况下,所有 Component 都åªä¼šåœ¨è¿è¡Œæ—¶æ‰ä¼šæ‰§è¡Œï¼Œä¹Ÿå°±æ˜¯è¯´å®ƒä»¬çš„生命周期回调ä¸ä¼šåœ¨ç¼–辑器里触å‘。 + + @example + ```js + const {ccclass, executeInEditMode} = cc._decorator; + + @ccclass + @executeInEditMode + class NewScript extends cc.Component { + // ... + } + ``` + */ + export function executeInEditMode(): Function; + export function executeInEditMode(_class: Function): void; + /** + !#en + Automatically add required component as a dependency for the CCClass that inherit from component. + !#zh + 为声明为 CCClass çš„ç»„ä»¶æ·»åŠ ä¾èµ–çš„å…¶å®ƒç»„ä»¶ã€‚å½“ç»„ä»¶æ·»åŠ åˆ°èŠ‚ç‚¹ä¸Šæ—¶ï¼Œå¦‚æžœä¾èµ–的组件ä¸å˜åœ¨ï¼Œå¼•擎将会自动将ä¾èµ–ç»„ä»¶æ·»åŠ åˆ°åŒä¸€ä¸ªèŠ‚ç‚¹ï¼Œé˜²æ¢è„šæœ¬å‡ºé”™ã€‚è¯¥è®¾ç½®åœ¨è¿è¡Œæ—¶åŒæ ·æœ‰æ•ˆã€‚ + @param requiredComponent requiredComponent + + @example + ```js + const {ccclass, requireComponent} = cc._decorator; + + @ccclass + @requireComponent(cc.Sprite) + class SpriteCtrl extends cc.Component { + // ... + } + ``` + */ + export function requireComponent(requiredComponent: typeof cc.Component): Function; + /** + !#en + The menu path to register a component to the editors "Component" menu. Eg. "Rendering/CameraCtrl". + !#zh + 将当å‰ç»„ä»¶æ·»åŠ åˆ°ç»„ä»¶èœå•ä¸ï¼Œæ–¹ä¾¿ç”¨æˆ·æŸ¥æ‰¾ã€‚例如 "Rendering/CameraCtrl"。 + @param path The path is the menu represented like a pathname. + For example the menu could be "Rendering/CameraCtrl". + + @example + ```js + const {ccclass, menu} = cc._decorator; + + @ccclass + @menu("Rendering/CameraCtrl") + class NewScript extends cc.Component { + // ... + } + ``` + */ + export function menu(path: string): Function; + /** + !#en + The execution order of lifecycle methods for Component. + Those less than 0 will execute before while those greater than 0 will execute after. + The order will only affect onLoad, onEnable, start, update and lateUpdate while onDisable and onDestroy will not be affected. + !#zh + 设置脚本生命周期方法调用的优先级。优先级å°äºŽ 0 的组件将会优先执行,优先级大于 0 çš„ç»„ä»¶å°†ä¼šå»¶åŽæ‰§è¡Œã€‚ä¼˜å…ˆçº§ä»…ä¼šå½±å“ onLoad, onEnable, start, update å’Œ lateUpdate,而 onDisable å’Œ onDestroy ä¸å—å½±å“。 + @param order The execution order of lifecycle methods for Component. Those less than 0 will execute before while those greater than 0 will execute after. + + @example + ```js + const {ccclass, executionOrder} = cc._decorator; + + @ccclass + @executionOrder(1) + class CameraCtrl extends cc.Component { + // ... + } + ``` + */ + export function executionOrder(order: number): Function; + /** + !#en + Prevents Component of the same type (or subtype) to be added more than once to a Node. + !#zh + 防æ¢å¤šä¸ªç›¸åŒç±»åž‹ï¼ˆæˆ–åç±»åž‹ï¼‰çš„ç»„ä»¶è¢«æ·»åŠ åˆ°åŒä¸€ä¸ªèŠ‚ç‚¹ã€‚ + + @example + ```js + const {ccclass, disallowMultiple} = cc._decorator; + + @ccclass + @disallowMultiple + class CameraCtrl extends cc.Component { + // ... + } + ``` + */ + export function disallowMultiple(): Function; + export function disallowMultiple(_class: Function): void; + /** + !#en + If specified, the editor's scene view will keep updating this node in 60 fps when it is selected, otherwise, it will update only if necessary.<br> + This property is only available if executeInEditMode is true. + !#zh + 当指定了 "executeInEditMode" 以åŽï¼ŒplayOnFocus å¯ä»¥åœ¨é€‰ä¸å½“å‰ç»„件所在的节点时,æé«˜ç¼–辑器的场景刷新频率到 60 FPS,å¦åˆ™åœºæ™¯å°±åªä¼šåœ¨å¿…è¦çš„æ—¶å€™è¿›è¡Œé‡ç»˜ã€‚ + + @example + ```js + const {ccclass, playOnFocus, executeInEditMode} = cc._decorator; + + @ccclass + @executeInEditMode + @playOnFocus + class CameraCtrl extends cc.Component { + // ... + } + ``` + */ + export function playOnFocus(): Function; + export function playOnFocus(_class: Function): void; + /** + !#en + Specifying the url of the custom html to draw the component in **Properties**. + !#zh + 自定义当å‰ç»„件在 **属性检查器** 䏿¸²æŸ“时所用的网页 url。 + @param url url + + @example + ```js + const {ccclass, inspector} = cc._decorator; + + @ccclass + @inspector("packages://inspector/inspectors/comps/camera-ctrl.js") + class NewScript extends cc.Component { + // ... + } + ``` + */ + export function inspector(path: string): Function; + /** + !#en + The custom documentation URL. + !#zh + 指定当å‰ç»„件的帮助文档的 url,设置过åŽï¼Œåœ¨ **属性检查器** ä¸å°±ä¼šå‡ºçŽ°ä¸€ä¸ªå¸®åŠ©å›¾æ ‡ï¼Œç”¨æˆ·ç‚¹å‡»å°†æ‰“å¼€æŒ‡å®šçš„ç½‘é¡µã€‚ + @param url url + + @example + ```js + const {ccclass, help} = cc._decorator; + + @ccclass + @help("app://docs/html/components/spine.html") + class NewScript extends cc.Component { + // ... + } + ``` + */ + export function help(path: string): Function; + /** + NOTE:<br> + The old mixins implemented in cc.Class(ES5) behaves exact the same as multiple inheritance. + But since ES6, class constructor can't be function-called and class methods become non-enumerable, + so we can not mix in ES6 Classes.<br> + See:<br> + [https://esdiscuss.org/topic/traits-are-now-impossible-in-es6-until-es7-since-rev32](https://esdiscuss.org/topic/traits-are-now-impossible-in-es6-until-es7-since-rev32)<br> + One possible solution (but IDE unfriendly):<br> + [http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)<br> + <br> + NOTE:<br> + You must manually call mixins constructor, this is different from cc.Class(ES5). + @param ctor constructors to mix, only support ES5 constructors or classes defined by using `cc.Class`, + not support ES6 Classes. + + @example + ```js + const {ccclass, mixins} = cc._decorator; + + class Animal { ... } + + const Fly = cc.Class({ + constructor () { ... } + }); + + @ccclass + @mixins(cc.EventTarget, Fly) + class Bird extends Animal { + constructor () { + super(); + + // You must manually call mixins constructor, this is different from cc.Class(ES5) + cc.EventTarget.call(this); + Fly.call(this); + } + // ... + } + ``` + */ + export function mixins(ctor: Function, ...rest: Function[]): Function; +} + +/** !#en This module provides some JavaScript utilities. All members can be accessed with `cc.js`. +!#zh 这个模å—å°è£…了 JavaScript ç›¸å…³çš„ä¸€äº›å®žç”¨å‡½æ•°ï¼Œä½ å¯ä»¥é€šè¿‡ `cc.js` æ¥è®¿é—®è¿™ä¸ªæ¨¡å—。 */ +declare namespace cc.js { + /** + Check the obj whether is number or not + If a number is created by using 'new Number(10086)', the typeof it will be "object"... + Then you can use this function if you care about this case. + @param obj obj + */ + export function isNumber(obj: any): boolean; + /** + Check the obj whether is string or not. + If a string is created by using 'new String("blabla")', the typeof it will be "object"... + Then you can use this function if you care about this case. + @param obj obj + */ + export function isString(obj: any): boolean; + /** + Copy all properties not defined in obj from arguments[1...n] + @param obj object to extend its properties + @param sourceObj source object to copy properties from + */ + export function addon(obj: any, ...sourceObj: any[]): any; + /** + copy all properties from arguments[1...n] to obj + @param obj obj + @param sourceObj sourceObj + */ + export function mixin(obj: any, ...sourceObj: any[]): any; + /** + Derive the class from the supplied base class. + Both classes are just native javascript constructors, not created by cc.Class, so + usually you will want to inherit using {{#crossLink "cc/Class:method"}}cc.Class {{/crossLink}} instead. + @param cls cls + @param base the baseclass to inherit + */ + export function extend(cls: Function, base: Function): Function; + /** + Get super class + @param ctor the constructor of subclass + */ + export function getSuper(ctor: Function): Function; + /** + Checks whether subclass is child of superclass or equals to superclass + @param subclass subclass + @param superclass superclass + */ + export function isChildClassOf(subclass: Function, superclass: Function): boolean; + /** + Removes all enumerable properties from object + @param obj obj + */ + export function clear(obj: any): void; + /** + Checks whether obj is an empty object + @param obj obj + */ + export function isEmptyObject(obj: any): boolean; + /** + Get property descriptor in object and all its ancestors + @param obj obj + @param name name + */ + export function getPropertyDescriptor(obj: any, name: string): any; + /** + Define value, just help to call Object.defineProperty.<br> + The configurable will be true. + @param obj obj + @param prop prop + @param value value + @param writable writable + @param enumerable enumerable + */ + export function value(obj: any, prop: string, value: any, writable?: boolean, enumerable?: boolean): void; + /** + Define get set accessor, just help to call Object.defineProperty(...) + @param obj obj + @param prop prop + @param getter getter + @param setter setter + @param enumerable enumerable + @param configurable configurable + */ + export function getset(obj: any, prop: string, getter: Function, setter?: Function, enumerable?: boolean, configurable?: boolean): void; + /** + Define get accessor, just help to call Object.defineProperty(...) + @param obj obj + @param prop prop + @param getter getter + @param enumerable enumerable + @param configurable configurable + */ + export function get(obj: any, prop: string, getter: Function, enumerable?: boolean, configurable?: boolean): void; + /** + Define set accessor, just help to call Object.defineProperty(...) + @param obj obj + @param prop prop + @param setter setter + @param enumerable enumerable + @param configurable configurable + */ + export function set(obj: any, prop: string, setter: Function, enumerable?: boolean, configurable?: boolean): void; + /** + Get class name of the object, if object is just a {} (and which class named 'Object'), it will return "". + (modified from <a href="http://stackoverflow.com/questions/1249531/how-to-get-a-javascript-objects-class">the code from this stackoverflow post</a>) + @param objOrCtor instance or constructor + */ + export function getClassName(objOrCtor: any|Function): string; + /** !#en All classes registered in the engine, indexed by ID. + !#zh 引擎ä¸å·²æ³¨å†Œçš„æ‰€æœ‰ç±»åž‹ï¼Œé€šè¿‡ ID 进行索引。 */ + export var _registeredClassIds: any; + /** !#en All classes registered in the engine, indexed by name. + !#zh 引擎ä¸å·²æ³¨å†Œçš„æ‰€æœ‰ç±»åž‹ï¼Œé€šè¿‡å称进行索引。 */ + export var _registeredClassNames: any; + /** + Register the class by specified name manually + @param className className + @param constructor constructor + */ + export function setClassName(className: string, constructor: Function): void; + /** + Unregister a class from fireball. + + If you dont need a registered class anymore, you should unregister the class so that Fireball will not keep its reference anymore. + Please note that its still your responsibility to free other references to the class. + @param constructor the class you will want to unregister, any number of classes can be added + */ + export function unregisterClass(...constructor: Function[]): void; + /** + Get the registered class by name + @param classname classname + */ + export function getClassByName(classname: string): Function; + /** + Defines a polyfill field for deprecated codes. + @param obj YourObject or YourClass.prototype + @param obsoleted "OldParam" or "YourClass.OldParam" + @param newExpr "NewParam" or "YourClass.NewParam" + @param writable writable + */ + export function obsolete(obj: any, obsoleted: string, newExpr: string, writable?: boolean): void; + /** + Defines all polyfill fields for obsoleted codes corresponding to the enumerable properties of props. + @param obj YourObject or YourClass.prototype + @param objName "YourObject" or "YourClass" + @param props props + @param writable writable + */ + export function obsoletes(obj: any, objName: any, props: any, writable?: boolean): void; + /** + A string tool to construct a string with format string. + @param msg A JavaScript string containing zero or more substitution strings (%s). + @param subst JavaScript objects with which to replace substitution strings within msg. This gives you additional control over the format of the output. + + @example + ```js + cc.js.formatStr("a: %s, b: %s", a, b); + cc.js.formatStr(a, b, c); + ``` + */ + export function formatStr(msg: string|any, ...subst: any[]): string; + /** + !#en + A simple wrapper of `Object.create(null)` which ensures the return object have no prototype (and thus no inherited members). So we can skip `hasOwnProperty` calls on property lookups. It is a worthwhile optimization than the `{}` literal when `hasOwnProperty` calls are necessary. + !#zh + 该方法是对 `Object.create(null)` 的简å•å°è£…。`Object.create(null)` ç”¨äºŽåˆ›å»ºæ— prototype ï¼ˆä¹Ÿå°±æ— ç»§æ‰¿ï¼‰çš„ç©ºå¯¹è±¡ã€‚è¿™æ ·æˆ‘ä»¬åœ¨è¯¥å¯¹è±¡ä¸ŠæŸ¥æ‰¾å±žæ€§æ—¶ï¼Œå°±ä¸ç”¨è¿›è¡Œ `hasOwnProperty` 判æ–。在需è¦é¢‘ç¹åˆ¤æ– `hasOwnProperty` 时,使用这个方法性能会比 `{}` 更高。 + @param forceDictMode Apply the delete operator to newly created map object. This causes V8 to put the object in "dictionary mode" and disables creation of hidden classes which are very expensive for objects that are constantly changing shape. + */ + export function createMap(forceDictMode?: boolean): any; + /** undefined */ + export class array { + /** + Removes the array item at the specified index. + @param array array + @param index index + */ + static removeAt(array: any[], index: number): void; + /** + Removes the array item at the specified index. + It's faster but the order of the array will be changed. + @param array array + @param index index + */ + static fastRemoveAt(array: any[], index: number): void; + /** + Removes the first occurrence of a specific object from the array. + @param array array + @param value value + */ + static remove(array: any[], value: any): boolean; + /** + Removes the first occurrence of a specific object from the array. + It's faster but the order of the array will be changed. + @param array array + @param value value + */ + static fastRemove(array: any[], value: number): void; + /** + Verify array's Type + @param array array + @param type type + */ + static verifyType(array: any[], type: Function): boolean; + /** + Removes from array all values in minusArr. For each Value in minusArr, the first matching instance in array will be removed. + @param array Source Array + @param minusArr minus Array + */ + static removeArray(array: any[], minusArr: any[]): void; + /** + Inserts some objects at index + @param array array + @param addObjs addObjs + @param index index + */ + static appendObjectsAt(array: any[], addObjs: any[], index: number): any[]; + /** + Determines whether the array contains a specific value. + @param array array + @param value value + */ + static contains(array: any[], value: any): boolean; + /** + Copy an array's item to a new array (its performance is better than Array.slice) + @param array array + */ + static copy(array: any[]): any[]; + } + /** !#en + A fixed-length object pool designed for general type.<br> + The implementation of this object pool is very simple, + it can helps you to improve your game performance for objects which need frequent release and recreate operations<br/> + !#zh + é•¿åº¦å›ºå®šçš„å¯¹è±¡ç¼“å˜æ± ,å¯ä»¥ç”¨æ¥ç¼“å˜å„ç§å¯¹è±¡ç±»åž‹ã€‚<br/> + è¿™ä¸ªå¯¹è±¡æ± çš„å®žçŽ°éžå¸¸ç²¾ç®€ï¼Œå®ƒå¯ä»¥å¸®åŠ©æ‚¨æé«˜æ¸¸æˆæ€§èƒ½ï¼Œé€‚用于优化对象的åå¤åˆ›å»ºå’Œé”€æ¯ã€‚ */ + export class Pool { + /** + !#en + Constructor for creating an object pool for the specific object type. + You can pass a callback argument for process the cleanup logic when the object is recycled. + !#zh + ä½¿ç”¨æž„é€ å‡½æ•°æ¥åˆ›å»ºä¸€ä¸ªæŒ‡å®šå¯¹è±¡ç±»åž‹çš„å¯¹è±¡æ± ï¼Œæ‚¨å¯ä»¥ä¼ 递一个回调函数,用于处ç†å¯¹è±¡å›žæ”¶æ—¶çš„æ¸…ç†é€»è¾‘。 + @param cleanupFunc the callback method used to process the cleanup logic when the object is recycled. + @param size initializes the length of the array + */ + constructor(cleanupFunc: (obj: any) => void, size: number); + constructor(size: number); + /** + !#en + Get and initialize an object from pool. This method defaults to null and requires the user to implement it. + !#zh + 获å–å¹¶åˆå§‹åŒ–å¯¹è±¡æ± ä¸çš„对象。这个方法默认为空,需è¦ç”¨æˆ·è‡ªå·±å®žçŽ°ã€‚ + @param params parameters to used to initialize the object + */ + get(...params: any[]): any; + /** !#en + The current number of available objects, the default is 0, it will gradually increase with the recycle of the object, + the maximum will not exceed the size specified when the constructor is called. + !#zh + 当å‰å¯ç”¨å¯¹è±¡æ•°é‡ï¼Œä¸€å¼€å§‹é»˜è®¤æ˜¯ 0,éšç€å¯¹è±¡çš„å›žæ”¶ä¼šé€æ¸å¢žå¤§ï¼Œæœ€å¤§ä¸ä¼šè¶…è¿‡è°ƒç”¨æž„é€ å‡½æ•°æ—¶æŒ‡å®šçš„ size。 */ + count: number; + /** + !#en + Get an object from pool, if no available object in the pool, null will be returned. + !#zh + 获å–å¯¹è±¡æ± ä¸çš„å¯¹è±¡ï¼Œå¦‚æžœå¯¹è±¡æ± æ²¡æœ‰å¯ç”¨å¯¹è±¡ï¼Œåˆ™è¿”回空。 + */ + _get(): any; + /** + !#en Put an object into the pool. + !#zh å‘å¯¹è±¡æ± è¿”è¿˜ä¸€ä¸ªä¸å†éœ€è¦çš„对象。 + */ + put(): void; + /** + !#en Resize the pool. + !#zh è®¾ç½®å¯¹è±¡æ± å®¹é‡ã€‚ + */ + resize(): void; + } +} + +/** !#en A basic module for creating vertex data for 3D objects. You can access this module by `cc.primitive`. +!#zh 一个创建 3D 物体顶点数æ®çš„基础模å—ï¼Œä½ å¯ä»¥é€šè¿‡ `cc.primitive` æ¥è®¿é—®è¿™ä¸ªæ¨¡å—。 */ +declare namespace cc.primitive { + /** + !#en Create box vertex data + !#zh åˆ›å»ºé•¿æ–¹ä½“é¡¶ç‚¹æ•°æ® + @param width width + @param height height + @param length length + @param opts opts + */ + export function box(width: number, height: number, length: number, opts: {widthSegments: number; heightSegments: number; lengthSegments: number; }): cc.VertexData; + /** + !#en Create cone vertex data + !#zh åˆ›å»ºåœ†é”¥ä½“é¡¶ç‚¹æ•°æ® + @param radius radius + @param height height + @param opts opts + */ + export function cone(radius: number, height: number, opts: {radialSegments: number; heightSegments: number; capped: boolean; arc: number; }): cc.VertexData; + /** + !#en Create cylinder vertex data + !#zh åˆ›å»ºåœ†æŸ±ä½“é¡¶ç‚¹æ•°æ® + @param radiusTop radiusTop + @param radiusBottom radiusBottom + @param height height + @param opts opts + */ + export function cylinder(radiusTop: number, radiusBottom: number, height: number, opts: {radialSegments: number; heightSegments: number; capped: boolean; arc: number; }): cc.VertexData; + /** + !#en Create plane vertex data + !#zh 创建平å°é¡¶ç‚¹æ•°æ® + @param width width + @param length length + @param opts opts + */ + export function plane(width: number, length: number, opts: {widthSegments: number; lengthSegments: number; }): cc.VertexData; + /** + !#en Create quad vertex data + !#zh 创建é¢ç‰‡é¡¶ç‚¹æ•°æ® + */ + export function quad(): cc.VertexData; + /** + !#en Create sphere vertex data + !#zh 创建çƒä½“é¡¶ç‚¹æ•°æ® + @param radius radius + @param opts opts + */ + export function sphere(radius: number, opts: {segments: number; }): cc.VertexData; + /** + !#en Create torus vertex data + !#zh åˆ›å»ºåœ†çŽ¯é¡¶ç‚¹æ•°æ® + @param radius radius + @param tube tube + @param opts opts + */ + export function torus(radius: number, tube: number, opts: {radialSegments: number; tubularSegments: number; arc: number; }): cc.VertexData; + /** + !#en Create capsule vertex data + !#zh åˆ›å»ºèƒ¶å›Šä½“é¡¶ç‚¹æ•°æ® + @param radiusTop radiusTop + @param radiusBottom radiusBottom + @param height height + @param opts opts + */ + export function capsule(radiusTop: number, radiusBottom: number, height: number, opts: {sides: number; heightSegments: number; capped: boolean; arc: number; }): cc.VertexData; + /** + !#en Create polyhedron vertex data + !#zh 创建多é¢ä½“é¡¶ç‚¹æ•°æ® + @param type type + @param Size Size + @param opts opts + */ + export function polyhedron(type: cc.primitive.PolyhedronType, Size: number, opts: {sizeX: number; sizeY: number; sizeZ: number; }): cc.VertexData; +} + +declare let CC_JSB: boolean +declare let CC_NATIVERENDERER: boolean +declare let CC_EDITOR: boolean + +declare let cc: { + // polyfills: { + // destroyObject? (object: any): void; + // }; + [x: string]: any; +} + +// https://medium.com/dailyjs/typescript-create-a-condition-based-subset-types-9d902cea5b8c +type FlagExcludedType<Base, Type> = { [Key in keyof Base]: Base[Key] extends Type ? never : Key }; +type AllowedNames<Base, Type> = FlagExcludedType<Base, Type>[keyof Base]; +type KeyPartial<T, K extends keyof T> = { [P in K]?: T[P] }; +type OmitType<Base, Type> = KeyPartial<Base, AllowedNames<Base, Type>>; +type ConstructorType<T> = OmitType<T, Function>; + +declare interface IWritableArrayLike<T> { + readonly length: number; + [index: number]: T; +} + +declare let module: { + exports: object +} + + +declare interface Math { + sign(v: number); +} + +declare interface Object { + assign(target: {}, source: {}); +} + +/** + * @module cc.AssetManager + */ + +declare namespace cc.AssetManager { + /** + * !#en + * Cache manager is a module which controls all caches downloaded from server in non-web platform, it is a singleton + * All member can be accessed with `cc.assetManager.cacheManager`. + * + * !#zh + * 缓å˜ç®¡ç†å™¨æ˜¯ä¸€ä¸ªæ¨¡å—ï¼Œåœ¨éž WEB å¹³å°ä¸Šï¼Œç”¨äºŽç®¡ç†æ‰€æœ‰ä»ŽæœåŠ¡å™¨ä¸Šä¸‹è½½ä¸‹æ¥çš„缓å˜ï¼Œè¿™æ˜¯ä¸€ä¸ªå•例,所有æˆå‘˜èƒ½é€šè¿‡ `cc.assetManager.cacheManager` 访问。 + * + * @class CacheManager + */ + class CacheManager { + /** + * !#en + * The name of cacheDir + * + * !#zh + * 缓å˜ç›®å½•çš„åç§° + * + * @property cacheDir + * @type {String} + * @default 'gamecaches' + */ + public cacheDir: String; + + /** + * !#en + * Whether or not cache asset into user's storage space, this property only works on mini-game platforms + * + * !#zh + * 是å¦ç¼“å˜èµ„æºåˆ°ç”¨æˆ·å˜å‚¨ç©ºé—´ï¼Œæ¤å±žæ€§åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ + * + * @property cacheEnabled + * @type {Boolean} + * @default true + */ + public cacheEnabled: Boolean; + + /** + * !#en + * Whether or not auto clear cache when storage ran out, this property only works on mini-game platforms + * + * !#zh + * 是å¦åœ¨å˜å‚¨ç©ºé—´æ»¡äº†åŽè‡ªåŠ¨æ¸…ç†ç¼“å˜ï¼Œæ¤å±žæ€§åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ + * + * @property autoClear + * @type {Boolean} + * @default true + */ + public autoClear: Boolean; + + /** + * !#en + * The interval between caching resources, this property only works on mini-game platforms + * + * !#zh + * 缓å˜èµ„æºçš„间隔时间,æ¤å±žæ€§åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ + * + * @property cacheInterval + * @type {Number} + * @default 500 + */ + public cacheInterval: Number; + + /** + * !#en + * The interval between deleting resources, when you use `cleanLRU`, the resources will be deleted as this interval + * + * !#zh + * 清ç†èµ„æºçš„é—´éš”æ—¶é—´ï¼Œå½“ä½ ä½¿ç”¨ `cleanLRU` 时,资æºå°†ä»¥æ¤é—´éš”è¢«åˆ é™¤ + * + * @property deleteInterval + * @type {Number} + * @default 500 + */ + public deleteInterval: Number; + + /** + * !#en + * Get cached path with origin url + * + * !#zh + * 通过原始 url 获å–缓å˜åŽçš„路径 + * + * @method getCache + * @param {string} originUrl + * @returns {String} The cached path + */ + public getCache (originUrl: string): string; + + /** + * !#en + * Get temporary path with origin url, this method only works on mini-game platforms + * + * !#zh + * 通过原始 url 获å–ä¸´æ—¶æ–‡ä»¶çš„è·¯å¾„ï¼Œæ¤æ–¹æ³•åªåœ¨å°æ¸¸æˆå¹³å°æœ‰æ•ˆ + * + * @method getTemp + * @param {string} originUrl + * @returns {String} The temp path + */ + public getTemp (originUrl: string): string; + + /** + * !#en + * Clear all caches, please use with caution, If necessary, we recommend using it before the game is launched + * + * !#zh + * 清空所有缓å˜ï¼Œè¯·è°¨æ…Žä½¿ç”¨ï¼Œå¦‚果必è¦çš„è¯ï¼Œæˆ‘们建议在游æˆå¯åЍ之å‰ä½¿ç”¨ + * + * @method clearCache + */ + public clearCache (): void; + + /** + * !#en + * Clear part of caches with LRU strategy + * + * !#zh + * 使用 LRU ç–ç•¥æ¸…ç©ºéƒ¨åˆ†ç¼“å˜ + * + * @method clearLRU + */ + public clearLRU (): void; + + /** + * !#en + * Remove cache with origin url + * + * !#zh + * 通过原始 url ç§»é™¤ç¼“å˜ + * + * @method removeCache + */ + public removeCache (originUrl: string): void; + } +} + +type FloatArray = Float64Array | Float32Array; + +interface IColorLike { + r: number; + g: number; + b: number; + a: number; + _val: number; + +} + +interface IMat3Like { + m: FloatArray +} + +interface IMat4Like { + m: FloatArray +} + +interface IQuatLike { + x: number; + y: number; + z: number; + w: number; +} + +interface IRectLike { + x: number; + y: number; + width: number; + height: number; +} + +interface ISizeLike { + width: number; + height: number; +} + +interface IVec2Like { + x: number; + y: number; +} + +interface IVec3Like { + x: number; + y: number; + z: number; +} + +interface IVec4Like { + x: number; + y: number; + z: number; + w: number; +} +declare namespace dragonBones { + /** + * @internal + * @private + */ + const webAssemblyModule: { + HEAP16: Int16Array; + _malloc(byteSize: number): number; + _free(pointer: number): void; + setDataBinary(data: DragonBonesData, binaryPointer: number, intBytesLength: number, floatBytesLength: number, frameIntBytesLength: number, frameFloatBytesLength: number, frameBytesLength: number, timelineBytesLength: number): void; + }; +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + const enum BinaryOffset { + WeigthBoneCount = 0, + WeigthFloatOffset = 1, + WeigthBoneIndices = 2, + MeshVertexCount = 0, + MeshTriangleCount = 1, + MeshFloatOffset = 2, + MeshWeightOffset = 3, + MeshVertexIndices = 4, + TimelineScale = 0, + TimelineOffset = 1, + TimelineKeyFrameCount = 2, + TimelineFrameValueCount = 3, + TimelineFrameValueOffset = 4, + TimelineFrameOffset = 5, + FramePosition = 0, + FrameTweenType = 1, + FrameTweenEasingOrCurveSampleCount = 2, + FrameCurveSamples = 3, + DeformMeshOffset = 0, + DeformCount = 1, + DeformValueCount = 2, + DeformValueOffset = 3, + DeformFloatOffset = 4, + } + /** + * @internal + * @private + */ + const enum ArmatureType { + Armature = 0, + MovieClip = 1, + Stage = 2, + } + /** + * @internal + * @private + */ + const enum BoneType { + Bone = 0, + Surface = 1, + } + /** + * @private + */ + const enum DisplayType { + Image = 0, + Armature = 1, + Mesh = 2, + BoundingBox = 3, + } + /** + * - Bounding box type. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 边界框类型。 + * @version DragonBones 5.0 + * @language zh_CN + */ + const enum BoundingBoxType { + Rectangle = 0, + Ellipse = 1, + Polygon = 2, + } + /** + * @internal + * @private + */ + const enum ActionType { + Play = 0, + Frame = 10, + Sound = 11, + } + /** + * @internal + * @private + */ + const enum BlendMode { + Normal = 0, + Add = 1, + Alpha = 2, + Darken = 3, + Difference = 4, + Erase = 5, + HardLight = 6, + Invert = 7, + Layer = 8, + Lighten = 9, + Multiply = 10, + Overlay = 11, + Screen = 12, + Subtract = 13, + } + /** + * @internal + * @private + */ + const enum TweenType { + None = 0, + Line = 1, + Curve = 2, + QuadIn = 3, + QuadOut = 4, + QuadInOut = 5, + } + /** + * @internal + * @private + */ + const enum TimelineType { + Action = 0, + ZOrder = 1, + BoneAll = 10, + BoneTranslate = 11, + BoneRotate = 12, + BoneScale = 13, + Surface = 50, + SlotDisplay = 20, + SlotColor = 21, + SlotFFD = 22, + IKConstraint = 30, + AnimationTime = 40, + AnimationWeight = 41, + } + /** + * - Offset mode. + * @version DragonBones 5.5 + * @language en_US + */ + /** + * - å移模å¼ã€‚ + * @version DragonBones 5.5 + * @language zh_CN + */ + const enum OffsetMode { + None = 0, + Additive = 1, + Override = 2, + } + /** + * - Animation fade out mode. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画淡出模å¼ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + const enum AnimationFadeOutMode { + /** + * - Do not fade out of any animation states. + * @language en_US + */ + /** + * - 䏿·¡å‡ºä»»ä½•的动画状æ€ã€‚ + * @language zh_CN + */ + None = 0, + /** + * - Fade out the animation states of the same layer. + * @language en_US + */ + /** + * - 淡出åŒå±‚的动画状æ€ã€‚ + * @language zh_CN + */ + SameLayer = 1, + /** + * - Fade out the animation states of the same group. + * @language en_US + */ + /** + * - 淡出åŒç»„的动画状æ€ã€‚ + * @language zh_CN + */ + SameGroup = 2, + /** + * - Fade out the animation states of the same layer and group. + * @language en_US + */ + /** + * - 淡出åŒå±‚并且åŒç»„的动画状æ€ã€‚ + * @language zh_CN + */ + SameLayerAndGroup = 3, + /** + * - Fade out of all animation states. + * @language en_US + */ + /** + * - 淡出所有的动画状æ€ã€‚ + * @language zh_CN + */ + All = 4, + /** + * - Does not replace the animation state with the same name. + * @language en_US + */ + /** + * - 䏿›¿æ¢åŒå的动画状æ€ã€‚ + * @language zh_CN + */ + Single = 5, + } + /** + * @private + */ + interface Map<T> { + [key: string]: T; + } + /** + * @private + */ + class DragonBones { + static readonly VERSION: string; + static yDown: boolean; + static debug: boolean; + static debugDraw: boolean; + static webAssembly: boolean; + private readonly _clock; + private readonly _events; + private readonly _objects; + private _eventManager; + constructor(eventManager: IEventDispatcher); + advanceTime(passedTime: number): void; + bufferEvent(value: EventObject): void; + bufferObject(object: BaseObject): void; + readonly clock: WorldClock; + readonly eventManager: IEventDispatcher; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The BaseObject is the base class for all objects in the DragonBones framework. + * All BaseObject instances are cached to the object pool to reduce the performance consumption of frequent requests for memory or memory recovery. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 基础对象,通常 DragonBones 的对象都继承自该类。 + * 所有基础对象的实例都会缓å˜åˆ°å¯¹è±¡æ± ,以å‡å°‘频ç¹ç”³è¯·å†…å˜æˆ–内å˜å›žæ”¶çš„æ€§èƒ½æ¶ˆè€—。 + * @version DragonBones 4.5 + * @language zh_CN + */ + abstract class BaseObject { + private static _hashCode; + private static _defaultMaxCount; + private static readonly _maxCountMap; + private static readonly _poolsMap; + private static _returnObject(object); + static toString(): string; + /** + * - Set the maximum cache count of the specify object pool. + * @param objectConstructor - The specify class. (Set all object pools max cache count if not set) + * @param maxCount - Max count. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - è®¾ç½®ç‰¹å®šå¯¹è±¡æ± çš„æœ€å¤§ç¼“å˜æ•°é‡ã€‚ + * @param objectConstructor - 特定的类。 (ä¸è®¾ç½®åˆ™è®¾ç½®æ‰€æœ‰å¯¹è±¡æ± çš„æœ€å¤§ç¼“å˜æ•°é‡) + * @param maxCount - æœ€å¤§ç¼“å˜æ•°é‡ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + static setMaxCount(objectConstructor: (typeof BaseObject) | null, maxCount: number): void; + /** + * - Clear the cached instances of a specify object pool. + * @param objectConstructor - Specify class. (Clear all cached instances if not set) + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - æ¸…é™¤ç‰¹å®šå¯¹è±¡æ± çš„ç¼“å˜å®žä¾‹ã€‚ + * @param objectConstructor - 特定的类。 (ä¸è®¾ç½®åˆ™æ¸…除所有缓å˜çš„实例) + * @version DragonBones 4.5 + * @language zh_CN + */ + static clearPool(objectConstructor?: (typeof BaseObject) | null): void; + /** + * - Get an instance of the specify class from object pool. + * @param objectConstructor - The specify class. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - ä»Žå¯¹è±¡æ± ä¸èŽ·å–特定类的实例。 + * @param objectConstructor - 特定的类。 + * @version DragonBones 4.5 + * @language zh_CN + */ + static borrowObject<T extends BaseObject>(objectConstructor: { + new (): T; + }): T; + /** + * - A unique identification number assigned to the object. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 分é…ç»™æ¤å®žä¾‹çš„å”¯ä¸€æ ‡è¯†å·ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly hashCode: number; + private _isInPool; + /** + * @private + */ + protected abstract _onClear(): void; + /** + * - Clear the object and return it back to object pool。 + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 清除该实例的所有数æ®å¹¶å°†å…¶è¿”è¿˜å¯¹è±¡æ± ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + returnToPool(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - 2D Transform matrix. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 2D 转æ¢çŸ©é˜µã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class Matrix { + /** + * - The value that affects the positioning of pixels along the x axis when scaling or rotating an image. + * @default 1.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ç¼©æ”¾æˆ–æ—‹è½¬å›¾åƒæ—¶å½±å“åƒç´ 沿 x 轴定ä½çš„值。 + * @default 1.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + a: number; + /** + * - The value that affects the positioning of pixels along the y axis when rotating or skewing an image. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ—‹è½¬æˆ–å€¾æ–œå›¾åƒæ—¶å½±å“åƒç´ 沿 y 轴定ä½çš„值。 + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + b: number; + /** + * - The value that affects the positioning of pixels along the x axis when rotating or skewing an image. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ—‹è½¬æˆ–å€¾æ–œå›¾åƒæ—¶å½±å“åƒç´ 沿 x 轴定ä½çš„值。 + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + c: number; + /** + * - The value that affects the positioning of pixels along the y axis when scaling or rotating an image. + * @default 1.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ç¼©æ”¾æˆ–æ—‹è½¬å›¾åƒæ—¶å½±å“åƒç´ 沿 y 轴定ä½çš„值。 + * @default 1.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + d: number; + /** + * - The distance by which to translate each point along the x axis. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 沿 x 轴平移æ¯ä¸ªç‚¹çš„è·ç¦»ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + tx: number; + /** + * - The distance by which to translate each point along the y axis. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 沿 y 轴平移æ¯ä¸ªç‚¹çš„è·ç¦»ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + ty: number; + /** + * @private + */ + constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number); + toString(): string; + /** + * @private + */ + copyFrom(value: Matrix): Matrix; + /** + * @private + */ + copyFromArray(value: Array<number>, offset?: number): Matrix; + /** + * - Convert to unit matrix. + * The resulting matrix has the following properties: a=1, b=0, c=0, d=1, tx=0, ty=0. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 转æ¢ä¸ºå•ä½çŸ©é˜µã€‚ + * 该矩阵具有以下属性:a=1ã€b=0ã€c=0ã€d=1ã€tx=0ã€ty=0。 + * @version DragonBones 3.0 + * @language zh_CN + */ + identity(): Matrix; + /** + * - Multiplies the current matrix with another matrix. + * @param value - The matrix that needs to be multiplied. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 将当å‰çŸ©é˜µä¸Žå¦ä¸€ä¸ªçŸ©é˜µç›¸ä¹˜ã€‚ + * @param value - 需è¦ç›¸ä¹˜çš„矩阵。 + * @version DragonBones 3.0 + * @language zh_CN + */ + concat(value: Matrix): Matrix; + /** + * - Convert to inverse matrix. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 转æ¢ä¸ºé€†çŸ©é˜µã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + invert(): Matrix; + /** + * - Apply a matrix transformation to a specific point. + * @param x - X coordinate. + * @param y - Y coordinate. + * @param result - The point after the transformation is applied. + * @param delta - Whether to ignore tx, ty's conversion to point. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 将矩阵转æ¢åº”用于特定点。 + * @param x - æ¨ªåæ ‡ã€‚ + * @param y - çºµåæ ‡ã€‚ + * @param result - 应用转æ¢ä¹‹åŽçš„点。 + * @param delta - 是å¦å¿½ç•¥ tx,ty 对点的转æ¢ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + transformPoint(x: number, y: number, result: { + x: number; + y: number; + }, delta?: boolean): void; + /** + * @private + */ + transformRectangle(rectangle: { + x: number; + y: number; + width: number; + height: number; + }, delta?: boolean): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - 2D Transform. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 2D å˜æ¢ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class Transform { + /** + * @private + */ + static readonly PI: number; + /** + * @private + */ + static readonly PI_D: number; + /** + * @private + */ + static readonly PI_H: number; + /** + * @private + */ + static readonly PI_Q: number; + /** + * @private + */ + static readonly RAD_DEG: number; + /** + * @private + */ + static readonly DEG_RAD: number; + /** + * @private + */ + static normalizeRadian(value: number): number; + /** + * - Horizontal translate. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ°´å¹³ä½ç§»ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + x: number; + /** + * - Vertical translate. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 垂直ä½ç§»ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + y: number; + /** + * - Skew. (In radians) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 倾斜。 (以弧度为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + skew: number; + /** + * - rotation. (In radians) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 旋转。 (以弧度为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + rotation: number; + /** + * - Horizontal Scaling. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 水平缩放。 + * @version DragonBones 3.0 + * @language zh_CN + */ + scaleX: number; + /** + * - Vertical scaling. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 垂直缩放。 + * @version DragonBones 3.0 + * @language zh_CN + */ + scaleY: number; + /** + * @private + */ + constructor(x?: number, y?: number, skew?: number, rotation?: number, scaleX?: number, scaleY?: number); + toString(): string; + /** + * @private + */ + copyFrom(value: Transform): Transform; + /** + * @private + */ + identity(): Transform; + /** + * @private + */ + add(value: Transform): Transform; + /** + * @private + */ + minus(value: Transform): Transform; + /** + * @private + */ + fromMatrix(matrix: Matrix): Transform; + /** + * @private + */ + toMatrix(matrix: Matrix): Transform; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + class ColorTransform { + alphaMultiplier: number; + redMultiplier: number; + greenMultiplier: number; + blueMultiplier: number; + alphaOffset: number; + redOffset: number; + greenOffset: number; + blueOffset: number; + constructor(alphaMultiplier?: number, redMultiplier?: number, greenMultiplier?: number, blueMultiplier?: number, alphaOffset?: number, redOffset?: number, greenOffset?: number, blueOffset?: number); + copyFrom(value: ColorTransform): void; + identity(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The Point object represents a location in a two-dimensional coordinate system. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - Point å¯¹è±¡è¡¨ç¤ºäºŒç»´åæ ‡ç³»ç»Ÿä¸çš„æŸä¸ªä½ç½®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class Point { + /** + * - The horizontal coordinate. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - è¯¥ç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + x: number; + /** + * - The vertical coordinate. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - è¯¥ç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + y: number; + /** + * - Creates a new point. If you pass no parameters to this method, a point is created at (0,0). + * @param x - The horizontal coordinate. + * @param y - The vertical coordinate. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 创建一个 egret.Point 对象.è‹¥ä¸ä¼ 入任何傿•°ï¼Œå°†ä¼šåˆ›å»ºä¸€ä¸ªä½äºŽï¼ˆ0,0)ä½ç½®çš„点。 + * @param x - 该对象的x属性值,默认为 0.0。 + * @param y - 该对象的y属性值,默认为 0.0。 + * @version DragonBones 3.0 + * @language zh_CN + */ + constructor(x?: number, y?: number); + /** + * @private + */ + copyFrom(value: Point): void; + /** + * @private + */ + clear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - A Rectangle object is an area defined by its position, as indicated by its top-left corner point (x, y) and by its + * width and its height.<br/> + * The x, y, width, and height properties of the Rectangle class are independent of each other; changing the value of + * one property has no effect on the others. However, the right and bottom properties are integrally related to those + * four properties. For example, if you change the value of the right property, the value of the width property changes; + * if you change the bottom property, the value of the height property changes. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - Rectangle 对象是按其ä½ç½®ï¼ˆç”±å®ƒå·¦ä¸Šè§’的点 (x, y) 确定)以åŠå®½åº¦å’Œé«˜åº¦å®šä¹‰çš„区域。<br/> + * Rectangle 类的 xã€yã€width å’Œ height 属性相互独立;更改一个属性的值ä¸ä¼šå½±å“其他属性。 + * 但是,right å’Œ bottom 属性与这四个属性是整体相关的。例如,如果更改 right 属性的值,则 width + * 属性的值将å‘生å˜åŒ–;如果更改 bottom 属性,则 height 属性的值将å‘生å˜åŒ–。 + * @version DragonBones 3.0 + * @language zh_CN + */ + class Rectangle { + /** + * - The x coordinate of the top-left corner of the rectangle. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 矩形左上角的 x åæ ‡ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + x: number; + /** + * - The y coordinate of the top-left corner of the rectangle. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 矩形左上角的 y åæ ‡ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + y: number; + /** + * - The width of the rectangle, in pixels. + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 矩形的宽度(以åƒç´ 为å•ä½ï¼‰ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + width: number; + /** + * - 矩形的高度(以åƒç´ 为å•ä½ï¼‰ã€‚ + * @default 0.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - The height of the rectangle, in pixels. + * @default 0.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + height: number; + /** + * @private + */ + constructor(x?: number, y?: number, width?: number, height?: number); + /** + * @private + */ + copyFrom(value: Rectangle): void; + /** + * @private + */ + clear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The user custom data. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 用户自定义数æ®ã€‚ + * @version DragonBones 5.0 + * @language zh_CN + */ + class UserData extends BaseObject { + static toString(): string; + /** + * - The custom int numbers. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 自定义整数。 + * @version DragonBones 5.0 + * @language zh_CN + */ + readonly ints: Array<number>; + /** + * - The custom float numbers. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 自定义浮点数。 + * @version DragonBones 5.0 + * @language zh_CN + */ + readonly floats: Array<number>; + /** + * - The custom strings. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 自定义å—符串。 + * @version DragonBones 5.0 + * @language zh_CN + */ + readonly strings: Array<string>; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @internal + * @private + */ + addInt(value: number): void; + /** + * @internal + * @private + */ + addFloat(value: number): void; + /** + * @internal + * @private + */ + addString(value: string): void; + /** + * - Get the custom int number. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 获å–自定义整数。 + * @version DragonBones 5.0 + * @language zh_CN + */ + getInt(index?: number): number; + /** + * - Get the custom float number. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 获å–自定义浮点数。 + * @version DragonBones 5.0 + * @language zh_CN + */ + getFloat(index?: number): number; + /** + * - Get the custom string. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 获å–自定义å—符串。 + * @version DragonBones 5.0 + * @language zh_CN + */ + getString(index?: number): string; + } + /** + * @internal + * @private + */ + class ActionData extends BaseObject { + static toString(): string; + type: ActionType; + name: string; + bone: BoneData | null; + slot: SlotData | null; + data: UserData | null; + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The DragonBones data. + * A DragonBones data contains multiple armature data. + * @see dragonBones.ArmatureData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 龙骨数æ®ã€‚ + * 一个龙骨数æ®åŒ…å«å¤šä¸ªéª¨æž¶æ•°æ®ã€‚ + * @see dragonBones.ArmatureData + * @version DragonBones 3.0 + * @language zh_CN + */ + class DragonBonesData extends BaseObject { + static toString(): string; + /** + * @private + */ + autoSearch: boolean; + /** + * - The animation frame rate. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画帧频。 + * @version DragonBones 3.0 + * @language zh_CN + */ + frameRate: number; + /** + * - The data version. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ•°æ®ç‰ˆæœ¬ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + version: string; + /** + * - The DragonBones data name. + * The name is consistent with the DragonBones project name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 龙骨数æ®å称。 + * 该å称与龙骨项目åä¿æŒä¸€è‡´ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * @private + */ + stage: ArmatureData | null; + /** + * @internal + * @private + */ + readonly frameIndices: Array<number>; + /** + * @internal + * @private + */ + readonly cachedFrames: Array<number>; + /** + * - All armature data names. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 所有的骨架数æ®å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly armatureNames: Array<string>; + /** + * @private + */ + readonly armatures: Map<ArmatureData>; + /** + * @internal + * @private + */ + binary: ArrayBuffer; + /** + * @internal + * @private + */ + intArray: Int16Array; + /** + * @internal + * @private + */ + floatArray: Float32Array; + /** + * @internal + * @private + */ + frameIntArray: Int16Array; + /** + * @internal + * @private + */ + frameFloatArray: Float32Array; + /** + * @internal + * @private + */ + frameArray: Int16Array; + /** + * @internal + * @private + */ + timelineArray: Uint16Array; + /** + * @private + */ + userData: UserData | null; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @internal + * @private + */ + addArmature(value: ArmatureData): void; + /** + * - Get a specific armature data. + * @param name - The armature data name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定的骨架数æ®ã€‚ + * @param name - 骨架数æ®å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + getArmature(name: string): ArmatureData | null; + /** + * - Deprecated, please refer to {@link #dragonBones.BaseFactory#removeDragonBonesData()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #dragonBones.BaseFactory#removeDragonBonesData()}。 + * @deprecated + * @language zh_CN + */ + dispose(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The armature data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨架数æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class ArmatureData extends BaseObject { + static toString(): string; + /** + * @private + */ + type: ArmatureType; + /** + * - The animation frame rate. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画帧率。 + * @version DragonBones 3.0 + * @language zh_CN + */ + frameRate: number; + /** + * @private + */ + cacheFrameRate: number; + /** + * @private + */ + scale: number; + /** + * - The armature name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨架å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * @private + */ + readonly aabb: Rectangle; + /** + * - The names of all the animation data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 所有的动画数æ®å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly animationNames: Array<string>; + /** + * @private + */ + readonly sortedBones: Array<BoneData>; + /** + * @private + */ + readonly sortedSlots: Array<SlotData>; + /** + * @private + */ + readonly defaultActions: Array<ActionData>; + /** + * @private + */ + readonly actions: Array<ActionData>; + /** + * @private + */ + readonly bones: Map<BoneData>; + /** + * @private + */ + readonly slots: Map<SlotData>; + /** + * @private + */ + readonly constraints: Map<ConstraintData>; + /** + * @private + */ + readonly skins: Map<SkinData>; + /** + * @private + */ + readonly animations: Map<AnimationData>; + /** + * - The default skin data. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - é»˜è®¤æ’æ§½æ•°æ®ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + defaultSkin: SkinData | null; + /** + * - The default animation data. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 默认动画数æ®ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + defaultAnimation: AnimationData | null; + /** + * @private + */ + canvas: CanvasData | null; + /** + * @private + */ + userData: UserData | null; + /** + * @private + */ + parent: DragonBonesData; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @internal + * @private + */ + sortBones(): void; + /** + * @internal + * @private + */ + cacheFrames(frameRate: number): void; + /** + * @internal + * @private + */ + setCacheFrame(globalTransformMatrix: Matrix, transform: Transform): number; + /** + * @internal + * @private + */ + getCacheFrame(globalTransformMatrix: Matrix, transform: Transform, arrayOffset: number): void; + /** + * @internal + * @private + */ + addBone(value: BoneData): void; + /** + * @internal + * @private + */ + addSlot(value: SlotData): void; + /** + * @internal + * @private + */ + addConstraint(value: ConstraintData): void; + /** + * @internal + * @private + */ + addSkin(value: SkinData): void; + /** + * @internal + * @private + */ + addAnimation(value: AnimationData): void; + /** + * @internal + * @private + */ + addAction(value: ActionData, isDefault: boolean): void; + /** + * - Get a specific done data. + * @param name - The bone name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定的骨骼数æ®ã€‚ + * @param name - 骨骼å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + getBone(name: string): BoneData | null; + /** + * - Get a specific slot data. + * @param name - The slot name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–ç‰¹å®šçš„æ’æ§½æ•°æ®ã€‚ + * @param name - æ’æ§½å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + getSlot(name: string): SlotData | null; + /** + * @private + */ + getConstraint(name: string): ConstraintData | null; + /** + * - Get a specific skin data. + * @param name - The skin name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定皮肤数æ®ã€‚ + * @param name - 皮肤å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + getSkin(name: string): SkinData | null; + /** + * @internal + * @private + */ + getMesh(skinName: string, slotName: string, meshName: string): MeshDisplayData | null; + /** + * - Get a specific animation data. + * @param name - The animation name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定的动画数æ®ã€‚ + * @param name - 动画å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + getAnimation(name: string): AnimationData | null; + } + /** + * - The bone data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨骼数æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class BoneData extends BaseObject { + static toString(): string; + /** + * @private + */ + inheritTranslation: boolean; + /** + * @private + */ + inheritRotation: boolean; + /** + * @private + */ + inheritScale: boolean; + /** + * @private + */ + inheritReflection: boolean; + /** + * @private + */ + type: BoneType; + /** + * - The bone length. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨骼长度。 + * @version DragonBones 3.0 + * @language zh_CN + */ + length: number; + /** + * - The bone name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨骼å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * @private + */ + readonly transform: Transform; + /** + * @private + */ + userData: UserData | null; + /** + * - The parent bone data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 父骨骼数æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + parent: BoneData | null; + /** + * @inheritDoc + */ + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class SurfaceData extends BoneData { + static toString(): string; + segmentX: number; + segmentY: number; + readonly vertices: Array<number>; + /** + * @inheritDoc + */ + protected _onClear(): void; + } + /** + * - The slot data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ§½æ•°æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class SlotData extends BaseObject { + /** + * @internal + * @private + */ + static readonly DEFAULT_COLOR: ColorTransform; + /** + * @internal + * @private + */ + static createColor(): ColorTransform; + static toString(): string; + /** + * @private + */ + blendMode: BlendMode; + /** + * @private + */ + displayIndex: number; + /** + * @private + */ + zOrder: number; + /** + * - The slot name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ§½å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * @private + */ + color: ColorTransform; + /** + * @private + */ + userData: UserData | null; + /** + * - The parent bone data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 父骨骼数æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + parent: BoneData; + /** + * @inheritDoc + */ + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + abstract class ConstraintData extends BaseObject { + order: number; + name: string; + target: BoneData; + root: BoneData; + bone: BoneData | null; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class IKConstraintData extends ConstraintData { + static toString(): string; + scaleEnabled: boolean; + bendPositive: boolean; + weight: number; + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + class CanvasData extends BaseObject { + static toString(): string; + hasBackground: boolean; + color: number; + x: number; + y: number; + width: number; + height: number; + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The skin data, typically a armature data instance contains at least one skinData. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 皮肤数æ®ï¼Œé€šå¸¸ä¸€ä¸ªéª¨æž¶æ•°æ®è‡³å°‘包å«ä¸€ä¸ªçš®è‚¤æ•°æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class SkinData extends BaseObject { + static toString(): string; + /** + * - The skin name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 皮肤å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * @private + */ + readonly displays: Map<Array<DisplayData | null>>; + /** + * @private + */ + parent: ArmatureData; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @internal + * @private + */ + addDisplay(slotName: string, value: DisplayData | null): void; + /** + * @private + */ + getDisplay(slotName: string, displayName: string): DisplayData | null; + /** + * @private + */ + getDisplays(slotName: string): Array<DisplayData | null> | null; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + abstract class DisplayData extends BaseObject { + type: DisplayType; + name: string; + path: string; + parent: SkinData; + readonly transform: Transform; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class ImageDisplayData extends DisplayData { + static toString(): string; + readonly pivot: Point; + texture: TextureData | null; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class ArmatureDisplayData extends DisplayData { + static toString(): string; + inheritAnimation: boolean; + readonly actions: Array<ActionData>; + armature: ArmatureData | null; + protected _onClear(): void; + /** + * @private + */ + addAction(value: ActionData): void; + } + /** + * @internal + * @private + */ + class MeshDisplayData extends DisplayData { + static toString(): string; + inheritDeform: boolean; + offset: number; + weight: WeightData | null; + glue: GlueData | null; + texture: TextureData | null; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class BoundingBoxDisplayData extends DisplayData { + static toString(): string; + boundingBox: BoundingBoxData | null; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class WeightData extends BaseObject { + static toString(): string; + count: number; + offset: number; + readonly bones: Array<BoneData>; + protected _onClear(): void; + addBone(value: BoneData): void; + } + /** + * @internal + * @private + */ + class GlueData extends BaseObject { + static toString(): string; + readonly weights: Array<number>; + readonly meshes: Array<MeshDisplayData | null>; + protected _onClear(): void; + addMesh(value: MeshDisplayData | null): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The base class of bounding box data. + * @see dragonBones.RectangleData + * @see dragonBones.EllipseData + * @see dragonBones.PolygonData + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 边界框数æ®åŸºç±»ã€‚ + * @see dragonBones.RectangleData + * @see dragonBones.EllipseData + * @see dragonBones.PolygonData + * @version DragonBones 5.0 + * @language zh_CN + */ + abstract class BoundingBoxData extends BaseObject { + /** + * - The bounding box type. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 边界框类型。 + * @version DragonBones 5.0 + * @language zh_CN + */ + type: BoundingBoxType; + /** + * @private + */ + color: number; + /** + * @private + */ + width: number; + /** + * @private + */ + height: number; + /** + * @private + */ + protected _onClear(): void; + /** + * - Check whether the bounding box contains a specific point. (Local coordinate system) + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 检查边界框是å¦åŒ…å«ç‰¹å®šç‚¹ã€‚ï¼ˆæœ¬åœ°åæ ‡ç³»ï¼‰ + * @version DragonBones 5.0 + * @language zh_CN + */ + abstract containsPoint(pX: number, pY: number): boolean; + /** + * - Check whether the bounding box intersects a specific segment. (Local coordinate system) + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 检查边界框是å¦ä¸Žç‰¹å®šçº¿æ®µç›¸äº¤ã€‚ï¼ˆæœ¬åœ°åæ ‡ç³»ï¼‰ + * @version DragonBones 5.0 + * @language zh_CN + */ + abstract intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA: { + x: number; + y: number; + } | null, intersectionPointB: { + x: number; + y: number; + } | null, normalRadians: { + x: number; + y: number; + } | null): number; + } + /** + * - The rectangle bounding box data. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - 矩形边界框数æ®ã€‚ + * @version DragonBones 5.1 + * @language zh_CN + */ + class RectangleBoundingBoxData extends BoundingBoxData { + static toString(): string; + /** + * - Compute the bit code for a point (x, y) using the clip rectangle + */ + private static _computeOutCode(x, y, xMin, yMin, xMax, yMax); + /** + * @private + */ + static rectangleIntersectsSegment(xA: number, yA: number, xB: number, yB: number, xMin: number, yMin: number, xMax: number, yMax: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + /** + * @inheritDoc + * @private + */ + protected _onClear(): void; + /** + * @inheritDoc + */ + containsPoint(pX: number, pY: number): boolean; + /** + * @inheritDoc + */ + intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + } + /** + * - The ellipse bounding box data. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - æ¤åœ†è¾¹ç•Œæ¡†æ•°æ®ã€‚ + * @version DragonBones 5.1 + * @language zh_CN + */ + class EllipseBoundingBoxData extends BoundingBoxData { + static toString(): string; + /** + * @private + */ + static ellipseIntersectsSegment(xA: number, yA: number, xB: number, yB: number, xC: number, yC: number, widthH: number, heightH: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + /** + * @inheritDoc + * @private + */ + protected _onClear(): void; + /** + * @inheritDoc + */ + containsPoint(pX: number, pY: number): boolean; + /** + * @inheritDoc + */ + intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + } + /** + * - The polygon bounding box data. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - 多边形边界框数æ®ã€‚ + * @version DragonBones 5.1 + * @language zh_CN + */ + class PolygonBoundingBoxData extends BoundingBoxData { + static toString(): string; + /** + * @private + */ + static polygonIntersectsSegment(xA: number, yA: number, xB: number, yB: number, vertices: Array<number>, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + /** + * @private + */ + x: number; + /** + * @private + */ + y: number; + /** + * - The polygon vertices. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - 多边形顶点。 + * @version DragonBones 5.1 + * @language zh_CN + */ + readonly vertices: Array<number>; + /** + * @private + */ + weight: WeightData | null; + /** + * @inheritDoc + * @private + */ + protected _onClear(): void; + /** + * @inheritDoc + */ + containsPoint(pX: number, pY: number): boolean; + /** + * @inheritDoc + */ + intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The animation data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画数æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + class AnimationData extends BaseObject { + static toString(): string; + /** + * - FrameIntArray. + * @internal + * @private + */ + frameIntOffset: number; + /** + * - FrameFloatArray. + * @internal + * @private + */ + frameFloatOffset: number; + /** + * - FrameArray. + * @internal + * @private + */ + frameOffset: number; + /** + * - The frame count of the animation. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画的帧数。 + * @version DragonBones 3.0 + * @language zh_CN + */ + frameCount: number; + /** + * - The play times of the animation. [0: Loop play, [1~N]: Play N times] + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åŠ¨ç”»çš„æ’æ”¾æ¬¡æ•°ã€‚ [0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] + * @version DragonBones 3.0 + * @language zh_CN + */ + playTimes: number; + /** + * - The duration of the animation. (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画的æŒç»æ—¶é—´ã€‚ (以秒为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + duration: number; + /** + * @private + */ + scale: number; + /** + * - The fade in time of the animation. (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画的淡入时间。 (以秒为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + fadeInTime: number; + /** + * @private + */ + cacheFrameRate: number; + /** + * - The animation name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * @private + */ + readonly cachedFrames: Array<boolean>; + /** + * @private + */ + readonly boneTimelines: Map<Array<TimelineData>>; + /** + * @private + */ + readonly surfaceTimelines: Map<Array<TimelineData>>; + /** + * @private + */ + readonly slotTimelines: Map<Array<TimelineData>>; + /** + * @private + */ + readonly constraintTimelines: Map<Array<TimelineData>>; + /** + * @private + */ + readonly animationTimelines: Map<Array<TimelineData>>; + /** + * @private + */ + readonly boneCachedFrameIndices: Map<Array<number>>; + /** + * @private + */ + readonly slotCachedFrameIndices: Map<Array<number>>; + /** + * @private + */ + actionTimeline: TimelineData | null; + /** + * @private + */ + zOrderTimeline: TimelineData | null; + /** + * @private + */ + parent: ArmatureData; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @internal + * @private + */ + cacheFrames(frameRate: number): void; + /** + * @private + */ + addBoneTimeline(bone: BoneData, timeline: TimelineData): void; + /** + * @private + */ + addSurfaceTimeline(surface: SurfaceData, timeline: TimelineData): void; + /** + * @private + */ + addSlotTimeline(slot: SlotData, timeline: TimelineData): void; + /** + * @private + */ + addConstraintTimeline(constraint: ConstraintData, timeline: TimelineData): void; + /** + * @private + */ + addAnimationTimeline(name: string, timeline: TimelineData): void; + /** + * @private + */ + getBoneTimelines(name: string): Array<TimelineData> | null; + /** + * @private + */ + getSurfaceTimelines(name: string): Array<TimelineData> | null; + /** + * @private + */ + getSlotTimelines(name: string): Array<TimelineData> | null; + /** + * @private + */ + getConstraintTimelines(name: string): Array<TimelineData> | null; + /** + * @private + */ + getAnimationTimelines(name: string): Array<TimelineData> | null; + /** + * @private + */ + getBoneCachedFrameIndices(name: string): Array<number> | null; + /** + * @private + */ + getSlotCachedFrameIndices(name: string): Array<number> | null; + } + /** + * @internal + * @private + */ + class TimelineData extends BaseObject { + static toString(): string; + type: TimelineType; + offset: number; + frameIndicesOffset: number; + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The animation config is used to describe all the information needed to play an animation state. + * The API is still in the experimental phase and may encounter bugs or stability or compatibility issues when used. + * @see dragonBones.AnimationState + * @beta + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 动画é…ç½®ç”¨æ¥æè¿°æ’æ”¾ä¸€ä¸ªåŠ¨ç”»çŠ¶æ€æ‰€éœ€è¦çš„全部信æ¯ã€‚ + * 该 API ä»åœ¨å®žéªŒé˜¶æ®µï¼Œä½¿ç”¨æ—¶å¯èƒ½éé‡ bug 或稳定性或兼容性问题。 + * @see dragonBones.AnimationState + * @beta + * @version DragonBones 5.0 + * @language zh_CN + */ + class AnimationConfig extends BaseObject { + static toString(): string; + /** + * @private + */ + pauseFadeOut: boolean; + /** + * - Fade out the pattern of other animation states when the animation state is fade in. + * This property is typically used to specify the substitution of multiple animation states blend. + * @default dragonBones.AnimationFadeOutMode.All + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ·¡å…¥åŠ¨ç”»çŠ¶æ€æ—¶æ·¡å‡ºå…¶ä»–动画状æ€çš„æ¨¡å¼ã€‚ + * è¯¥å±žæ€§é€šå¸¸ç”¨æ¥æŒ‡å®šå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ··åˆæ—¶çš„相互替æ¢å…³ç³»ã€‚ + * @default dragonBones.AnimationFadeOutMode.All + * @version DragonBones 5.0 + * @language zh_CN + */ + fadeOutMode: AnimationFadeOutMode; + /** + * @private + */ + fadeOutTweenType: TweenType; + /** + * @private + */ + fadeOutTime: number; + /** + * @private + */ + pauseFadeIn: boolean; + /** + * @private + */ + actionEnabled: boolean; + /** + * @private + */ + additiveBlending: boolean; + /** + * - Whether the animation state has control over the display property of the slots. + * Sometimes blend a animation state does not want it to control the display properties of the slots, + * especially if other animation state are controlling the display properties of the slots. + * @default true + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - åŠ¨ç”»çŠ¶æ€æ˜¯å¦å¯¹æ’槽的显示对象属性有控制æƒã€‚ + * 有时混åˆä¸€ä¸ªåŠ¨ç”»çŠ¶æ€å¹¶ä¸å¸Œæœ›å…¶æŽ§åˆ¶æ’槽的显示对象属性, + * å°¤å…¶æ˜¯å…¶ä»–åŠ¨ç”»çŠ¶æ€æ£åœ¨æŽ§åˆ¶è¿™äº›æ’槽的显示对象属性时。 + * @default true + * @version DragonBones 5.0 + * @language zh_CN + */ + displayControl: boolean; + /** + * - Whether to reset the objects without animation to the armature pose when the animation state is start to play. + * This property should usually be set to false when blend multiple animation states. + * @default true + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - å¼€å§‹æ’æ”¾åŠ¨ç”»çŠ¶æ€æ—¶æ˜¯å¦å°†æ²¡æœ‰åŠ¨ç”»çš„å¯¹è±¡é‡ç½®ä¸ºéª¨æž¶åˆå§‹å€¼ã€‚ + * 通常在混åˆå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ—¶åº”该将该属性设置为 false。 + * @default true + * @version DragonBones 5.1 + * @language zh_CN + */ + resetToPose: boolean; + /** + * @private + */ + fadeInTweenType: TweenType; + /** + * - The play times. [0: Loop play, [1~N]: Play N times] + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾æ¬¡æ•°ã€‚ [0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] + * @version DragonBones 3.0 + * @language zh_CN + */ + playTimes: number; + /** + * - The blend layer. + * High layer animation state will get the blend weight first. + * When the blend weight is assigned more than 1, the remaining animation states will no longer get the weight assigned. + * @readonly + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ··åˆå›¾å±‚。 + * 图层高的动画状æ€ä¼šä¼˜å…ˆèŽ·å–æ··åˆæƒé‡ã€‚ + * å½“æ··åˆæƒé‡åˆ†é…超过 1 时,剩余的动画状æ€å°†ä¸å†èŽ·å¾—æƒé‡åˆ†é…。 + * @readonly + * @version DragonBones 5.0 + * @language zh_CN + */ + layer: number; + /** + * - The start time of play. (In seconds) + * @default 0.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ’æ”¾çš„开始时间。 (以秒为å•ä½ï¼‰ + * @default 0.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + position: number; + /** + * - The duration of play. + * [-1: Use the default value of the animation data, 0: Stop play, (0~N]: The duration] (In seconds) + * @default -1.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ’æ”¾çš„æŒç»æ—¶é—´ã€‚ + * [-1: 使用动画数æ®é»˜è®¤å€¼, 0: åŠ¨ç”»åœæ¢, (0~N]: æŒç»æ—¶é—´] (以秒为å•ä½ï¼‰ + * @default -1.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + duration: number; + /** + * - The play speed. + * The value is an overlay relationship with {@link dragonBones.Animation#timeScale}. + * [(-N~0): Reverse play, 0: Stop play, (0~1): Slow play, 1: Normal play, (1~N): Fast play] + * @default 1.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾é€Ÿåº¦ã€‚ + * 该值与 {@link dragonBones.Animation#timeScale} 是å åŠ å…³ç³»ã€‚ + * [(-N~0): å€’è½¬æ’æ”¾, 0: åœæ¢æ’放, (0~1): æ…¢é€Ÿæ’æ”¾, 1: æ£å¸¸æ’放, (1~N): å¿«é€Ÿæ’æ”¾] + * @default 1.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + timeScale: number; + /** + * - The blend weight. + * @default 1.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ··åˆæƒé‡ã€‚ + * @default 1.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + weight: number; + /** + * - The fade in time. + * [-1: Use the default value of the animation data, [0~N]: The fade in time] (In seconds) + * @default -1.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 淡入时间。 + * [-1: 使用动画数æ®é»˜è®¤å€¼, [0~N]: 淡入时间] (以秒为å•ä½ï¼‰ + * @default -1.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + fadeInTime: number; + /** + * - The auto fade out time when the animation state play completed. + * [-1: Do not fade out automatically, [0~N]: The fade out time] (In seconds) + * @default -1.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - åŠ¨ç”»çŠ¶æ€æ’放完æˆåŽçš„自动淡出时间。 + * [-1: ä¸è‡ªåŠ¨æ·¡å‡º, [0~N]: 淡出时间] (以秒为å•ä½ï¼‰ + * @default -1.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + autoFadeOutTime: number; + /** + * - The name of the animation state. (Can be different from the name of the animation data) + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 动画状æ€å称。 (å¯ä»¥ä¸åŒäºŽåŠ¨ç”»æ•°æ®ï¼‰ + * @version DragonBones 5.0 + * @language zh_CN + */ + name: string; + /** + * - The animation data name. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 动画数æ®å称。 + * @version DragonBones 5.0 + * @language zh_CN + */ + animation: string; + /** + * - The blend group name of the animation state. + * This property is typically used to specify the substitution of multiple animation states blend. + * @readonly + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ··åˆç»„å称。 + * è¯¥å±žæ€§é€šå¸¸ç”¨æ¥æŒ‡å®šå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ··åˆæ—¶çš„相互替æ¢å…³ç³»ã€‚ + * @readonly + * @version DragonBones 5.0 + * @language zh_CN + */ + group: string; + /** + * @private + */ + readonly boneMask: Array<string>; + /** + * @private + */ + protected _onClear(): void; + /** + * @private + */ + clear(): void; + /** + * @private + */ + copyFrom(value: AnimationConfig): void; + /** + * @private + */ + containsBoneMask(name: string): boolean; + /** + * @private + */ + addBoneMask(armature: Armature, name: string, recursive?: boolean): void; + /** + * @private + */ + removeBoneMask(armature: Armature, name: string, recursive?: boolean): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The texture atlas data. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 贴图集数æ®ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + abstract class TextureAtlasData extends BaseObject { + /** + * @private + */ + autoSearch: boolean; + /** + * @private + */ + width: number; + /** + * @private + */ + height: number; + /** + * @private + */ + scale: number; + /** + * - The texture atlas name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 贴图集å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + name: string; + /** + * - The image path of the texture atlas. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 贴图集图片路径。 + * @version DragonBones 3.0 + * @language zh_CN + */ + imagePath: string; + /** + * @private + */ + readonly textures: Map<TextureData>; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @private + */ + copyFrom(value: TextureAtlasData): void; + /** + * @internal + * @private + */ + abstract createTexture(): TextureData; + /** + * @internal + * @private + */ + addTexture(value: TextureData): void; + /** + * @private + */ + getTexture(name: string): TextureData | null; + } + /** + * @internal + * @private + */ + abstract class TextureData extends BaseObject { + static createRectangle(): Rectangle; + rotated: boolean; + name: string; + readonly region: Rectangle; + parent: TextureAtlasData; + frame: Rectangle | null; + protected _onClear(): void; + copyFrom(value: TextureData): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The armature proxy interface, the docking engine needs to implement it concretely. + * @see dragonBones.Armature + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - éª¨æž¶ä»£ç†æŽ¥å£ï¼Œå¯¹æŽ¥çš„引擎需è¦å¯¹å…¶è¿›è¡Œå…·ä½“实现。 + * @see dragonBones.Armature + * @version DragonBones 5.0 + * @language zh_CN + */ + interface IArmatureProxy extends IEventDispatcher { + /** + * @internal + * @private + */ + dbInit(armature: Armature): void; + /** + * @internal + * @private + */ + dbClear(): void; + /** + * @internal + * @private + */ + dbUpdate(): void; + /** + * - Dispose the instance and the Armature instance. (The Armature instance will return to the object pool) + * @example + * <pre> + * removeChild(armatureDisplay); + * armatureDisplay.dispose(); + * </pre> + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 释放该实例和骨架。 ï¼ˆéª¨æž¶ä¼šå›žæ”¶åˆ°å¯¹è±¡æ± ï¼‰ + * @example + * <pre> + * removeChild(armatureDisplay); + * armatureDisplay.dispose(); + * </pre> + * @version DragonBones 4.5 + * @language zh_CN + */ + dispose(disposeProxy: boolean): void; + /** + * - The armature. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 骨架。 + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly armature: Armature; + /** + * - The animation player. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åŠ¨ç”»æ’æ”¾å™¨ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly animation: Animation; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - Armature is the core of the skeleton animation system. + * @see dragonBones.ArmatureData + * @see dragonBones.Bone + * @see dragonBones.Slot + * @see dragonBones.Animation + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - éª¨æž¶æ˜¯éª¨éª¼åŠ¨ç”»ç³»ç»Ÿçš„æ ¸å¿ƒã€‚ + * @see dragonBones.ArmatureData + * @see dragonBones.Bone + * @see dragonBones.Slot + * @see dragonBones.Animation + * @version DragonBones 3.0 + * @language zh_CN + */ + class Armature extends BaseObject implements IAnimatable { + static toString(): string; + private static _onSortSlots(a, b); + /** + * - Whether to inherit the animation control of the parent armature. + * True to try to have the child armature play an animation with the same name when the parent armature play the animation. + * @default true + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 是å¦ç»§æ‰¿çˆ¶éª¨æž¶çš„动画控制。 + * 如果该值为 trueï¼Œå½“çˆ¶éª¨æž¶æ’æ”¾åŠ¨ç”»æ—¶ï¼Œä¼šå°è¯•让åéª¨æž¶æ’æ”¾åŒå动画。 + * @default true + * @version DragonBones 4.5 + * @language zh_CN + */ + inheritAnimation: boolean; + /** + * @private + */ + userData: any; + private _lockUpdate; + private _bonesDirty; + private _slotsDirty; + private _zOrderDirty; + private _flipX; + private _flipY; + /** + * @internal + * @private + */ + _cacheFrameIndex: number; + private readonly _bones; + private readonly _slots; + /** + * @internal + * @private + */ + readonly _glueSlots: Array<Slot>; + /** + * @internal + * @private + */ + readonly _constraints: Array<Constraint>; + private readonly _actions; + /** + * @internal + * @private + */ + _armatureData: ArmatureData; + private _animation; + private _proxy; + private _display; + /** + * @internal + * @private + */ + _replaceTextureAtlasData: TextureAtlasData | null; + private _replacedTexture; + /** + * @internal + * @private + */ + _dragonBones: DragonBones; + private _clock; + /** + * @internal + * @private + */ + _parent: Slot | null; + /** + * @private + */ + protected _onClear(): void; + private _sortBones(); + private _sortSlots(); + /** + * @internal + * @private + */ + _sortZOrder(slotIndices: Array<number> | Int16Array | null, offset: number): void; + /** + * @internal + * @private + */ + _addBoneToBoneList(value: Bone): void; + /** + * @internal + * @private + */ + _removeBoneFromBoneList(value: Bone): void; + /** + * @internal + * @private + */ + _addSlotToSlotList(value: Slot): void; + /** + * @internal + * @private + */ + _removeSlotFromSlotList(value: Slot): void; + /** + * @internal + * @private + */ + _bufferAction(action: ActionData, append: boolean): void; + /** + * - Dispose the armature. (Return to the object pool) + * @example + * <pre> + * removeChild(armature.display); + * armature.dispose(); + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 释放骨架。 ï¼ˆå›žæ”¶åˆ°å¯¹è±¡æ± ï¼‰ + * @example + * <pre> + * removeChild(armature.display); + * armature.dispose(); + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + dispose(): void; + /** + * @internal + * @private + */ + init(armatureData: ArmatureData, proxy: IArmatureProxy, display: any, dragonBones: DragonBones): void; + /** + * @inheritDoc + */ + advanceTime(passedTime: number): void; + /** + * - Forces a specific bone or its owning slot to update the transform or display property in the next frame. + * @param boneName - The bone name. (If not set, all bones will be update) + * @param updateSlot - Whether to update the bone's slots. (Default: false) + * @see dragonBones.Bone#invalidUpdate() + * @see dragonBones.Slot#invalidUpdate() + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - å¼ºåˆ¶ç‰¹å®šéª¨éª¼æˆ–å…¶æ‹¥æœ‰çš„æ’æ§½åœ¨ä¸‹ä¸€å¸§æ›´æ–°å˜æ¢æˆ–显示属性。 + * @param boneName - 骨骼å称。 (如果未设置,将更新所有骨骼) + * @param updateSlot - æ˜¯å¦æ›´æ–°éª¨éª¼çš„æ’æ§½ã€‚ (默认: false) + * @see dragonBones.Bone#invalidUpdate() + * @see dragonBones.Slot#invalidUpdate() + * @version DragonBones 3.0 + * @language zh_CN + */ + invalidUpdate(boneName?: string | null, updateSlot?: boolean): void; + /** + * - Check whether a specific point is inside a custom bounding box in a slot. + * The coordinate system of the point is the inner coordinate system of the armature. + * Custom bounding boxes need to be customized in Dragonbones Pro. + * @param x - The horizontal coordinate of the point. + * @param y - The vertical coordinate of the point. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 检查特定点是å¦åœ¨æŸä¸ªæ’槽的自定义边界框内。 + * ç‚¹çš„åæ ‡ç³»ä¸ºéª¨æž¶å†…åæ ‡ç³»ã€‚ + * 自定义边界框需è¦åœ¨ DragonBones Pro ä¸è‡ªå®šä¹‰ã€‚ + * @param x - ç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @param y - ç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @version DragonBones 5.0 + * @language zh_CN + */ + containsPoint(x: number, y: number): Slot | null; + /** + * - Check whether a specific segment intersects a custom bounding box for a slot in the armature. + * The coordinate system of the segment and intersection is the inner coordinate system of the armature. + * Custom bounding boxes need to be customized in Dragonbones Pro. + * @param xA - The horizontal coordinate of the beginning of the segment. + * @param yA - The vertical coordinate of the beginning of the segment. + * @param xB - The horizontal coordinate of the end point of the segment. + * @param yB - The vertical coordinate of the end point of the segment. + * @param intersectionPointA - The first intersection at which a line segment intersects the bounding box from the beginning to the end. (If not set, the intersection point will not calculated) + * @param intersectionPointB - The first intersection at which a line segment intersects the bounding box from the end to the beginning. (If not set, the intersection point will not calculated) + * @param normalRadians - The normal radians of the tangent of the intersection boundary box. [x: Normal radian of the first intersection tangent, y: Normal radian of the second intersection tangent] (If not set, the normal will not calculated) + * @returns The slot of the first custom bounding box where the segment intersects from the start point to the end point. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 检查特定线段是å¦ä¸Žéª¨æž¶çš„æŸä¸ªæ’æ§½çš„自定义边界框相交。 + * çº¿æ®µå’Œäº¤ç‚¹çš„åæ ‡ç³»å‡ä¸ºéª¨æž¶å†…åæ ‡ç³»ã€‚ + * 自定义边界框需è¦åœ¨ DragonBones Pro ä¸è‡ªå®šä¹‰ã€‚ + * @param xA - çº¿æ®µèµ·ç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @param yA - çº¿æ®µèµ·ç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @param xB - çº¿æ®µç»ˆç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @param yB - çº¿æ®µç»ˆç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @param intersectionPointA - 线段从起点到终点与边界框相交的第一个交点。 (如果未设置,则ä¸è®¡ç®—交点) + * @param intersectionPointB - 线段从终点到起点与边界框相交的第一个交点。 (如果未设置,则ä¸è®¡ç®—交点) + * @param normalRadians - 交点边界框切线的法线弧度。 [x: 第一个交点切线的法线弧度, y: 第二个交点切线的法线弧度] (如果未设置,则ä¸è®¡ç®—法线) + * @returns çº¿æ®µä»Žèµ·ç‚¹åˆ°ç»ˆç‚¹ç›¸äº¤çš„ç¬¬ä¸€ä¸ªè‡ªå®šä¹‰è¾¹ç•Œæ¡†çš„æ’æ§½ã€‚ + * @version DragonBones 5.0 + * @language zh_CN + */ + intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): Slot | null; + /** + * - Get a specific bone. + * @param name - The bone name. + * @see dragonBones.Bone + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定的骨骼。 + * @param name - 骨骼å称。 + * @see dragonBones.Bone + * @version DragonBones 3.0 + * @language zh_CN + */ + getBone(name: string): Bone | null; + /** + * - Get a specific bone by the display. + * @param display - The display object. + * @see dragonBones.Bone + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 通过显示对象获å–特定的骨骼。 + * @param display - 显示对象。 + * @see dragonBones.Bone + * @version DragonBones 3.0 + * @language zh_CN + */ + getBoneByDisplay(display: any): Bone | null; + /** + * - Get a specific slot. + * @param name - The slot name. + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–ç‰¹å®šçš„æ’æ§½ã€‚ + * @param name - æ’æ§½å称。 + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language zh_CN + */ + getSlot(name: string): Slot | null; + /** + * - Get a specific slot by the display. + * @param display - The display object. + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 通过显示对象获å–ç‰¹å®šçš„æ’æ§½ã€‚ + * @param display - 显示对象。 + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language zh_CN + */ + getSlotByDisplay(display: any): Slot | null; + /** + * @deprecated + */ + addBone(value: Bone, parentName: string): void; + /** + * @deprecated + */ + addSlot(value: Slot, parentName: string): void; + /** + * @private + */ + addConstraint(value: Constraint): void; + /** + * @deprecated + */ + removeBone(value: Bone): void; + /** + * @deprecated + */ + removeSlot(value: Slot): void; + /** + * - Get all bones. + * @see dragonBones.Bone + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - èŽ·å–æ‰€æœ‰çš„骨骼。 + * @see dragonBones.Bone + * @version DragonBones 3.0 + * @language zh_CN + */ + getBones(): Array<Bone>; + /** + * - Get all slots. + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - èŽ·å–æ‰€æœ‰çš„æ’æ§½ã€‚ + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language zh_CN + */ + getSlots(): Array<Slot>; + /** + * - Whether to flip the armature horizontally. + * @version DragonBones 5.5 + * @language en_US + */ + /** + * - 是å¦å°†éª¨æž¶æ°´å¹³ç¿»è½¬ã€‚ + * @version DragonBones 5.5 + * @language zh_CN + */ + flipX: boolean; + /** + * - Whether to flip the armature vertically. + * @version DragonBones 5.5 + * @language en_US + */ + /** + * - 是å¦å°†éª¨æž¶åž‚直翻转。 + * @version DragonBones 5.5 + * @language zh_CN + */ + flipY: boolean; + /** + * - The animation cache frame rate, which turns on the animation cache when the set value is greater than 0. + * There is a certain amount of memory overhead to improve performance by caching animation data in memory. + * The frame rate should not be set too high, usually with the frame rate of the animation is similar and lower than the program running frame rate. + * When the animation cache is turned on, some features will fail, such as the offset property of bone. + * @example + * <pre> + * armature.cacheFrameRate = 24; + * </pre> + * @see dragonBones.DragonBonesData#frameRate + * @see dragonBones.ArmatureData#frameRate + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画缓å˜å¸§çŽ‡ï¼Œå½“è®¾ç½®çš„å€¼å¤§äºŽ 0 的时,将会开å¯åŠ¨ç”»ç¼“å˜ã€‚ + * 通过将动画数æ®ç¼“å˜åœ¨å†…å˜ä¸æ¥æé«˜è¿è¡Œæ€§èƒ½ï¼Œä¼šæœ‰ä¸€å®šçš„内å˜å¼€é”€ã€‚ + * 帧率ä¸å®œè®¾ç½®çš„过高,通常跟动画的帧率相当且低于程åºè¿è¡Œçš„帧率。 + * å¼€å¯åŠ¨ç”»ç¼“å˜åŽï¼ŒæŸäº›åŠŸèƒ½å°†ä¼šå¤±æ•ˆï¼Œæ¯”å¦‚éª¨éª¼çš„ offset 属性ç‰ã€‚ + * @example + * <pre> + * armature.cacheFrameRate = 24; + * </pre> + * @see dragonBones.DragonBonesData#frameRate + * @see dragonBones.ArmatureData#frameRate + * @version DragonBones 4.5 + * @language zh_CN + */ + cacheFrameRate: number; + /** + * - The armature name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨架å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly name: string; + /** + * - The armature data. + * @see dragonBones.ArmatureData + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 骨架数æ®ã€‚ + * @see dragonBones.ArmatureData + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly armatureData: ArmatureData; + /** + * - The animation player. + * @see dragonBones.Animation + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åŠ¨ç”»æ’æ”¾å™¨ã€‚ + * @see dragonBones.Animation + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly animation: Animation; + /** + * @pivate + */ + readonly proxy: IArmatureProxy; + /** + * - The EventDispatcher instance of the armature. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 该骨架的 EventDispatcher 实例。 + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly eventDispatcher: IEventDispatcher; + /** + * - The display container. + * The display of the slot is displayed as the parent. + * Depending on the rendering engine, the type will be different, usually the DisplayObjectContainer type. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 显示容器实例。 + * æ’æ§½çš„æ˜¾ç¤ºå¯¹è±¡éƒ½ä¼šä»¥æ¤æ˜¾ç¤ºå®¹å™¨ä¸ºçˆ¶çº§ã€‚ + * æ ¹æ®æ¸²æŸ“引擎的ä¸åŒï¼Œç±»åž‹ä¼šä¸åŒï¼Œé€šå¸¸æ˜¯ DisplayObjectContainer 类型。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly display: any; + /** + * @private + */ + replacedTexture: any; + /** + * @inheritDoc + */ + clock: WorldClock | null; + /** + * - Get the parent slot which the armature belongs to. + * @see dragonBones.Slot + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - è¯¥éª¨æž¶æ‰€å±žçš„çˆ¶æ’æ§½ã€‚ + * @see dragonBones.Slot + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly parent: Slot | null; + /** + * @deprecated + * @private + */ + replaceTexture(texture: any): void; + /** + * - Deprecated, please refer to {@link #eventDispatcher}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #eventDispatcher}。 + * @deprecated + * @language zh_CN + */ + hasEventListener(type: EventStringType): boolean; + /** + * - Deprecated, please refer to {@link #eventDispatcher}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #eventDispatcher}。 + * @deprecated + * @language zh_CN + */ + addEventListener(type: EventStringType, listener: Function, target: any): void; + /** + * - Deprecated, please refer to {@link #eventDispatcher}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #eventDispatcher}。 + * @deprecated + * @language zh_CN + */ + removeEventListener(type: EventStringType, listener: Function, target: any): void; + /** + * - Deprecated, please refer to {@link #cacheFrameRate}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #cacheFrameRate}。 + * @deprecated + * @language zh_CN + */ + enableAnimationCache(frameRate: number): void; + /** + * - Deprecated, please refer to {@link #display}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #display}。 + * @deprecated + * @language zh_CN + */ + getDisplay(): any; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The base class of the transform object. + * @see dragonBones.Transform + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - å˜æ¢å¯¹è±¡çš„基类。 + * @see dragonBones.Transform + * @version DragonBones 4.5 + * @language zh_CN + */ + abstract class TransformObject extends BaseObject { + /** + * @private + */ + protected static readonly _helpMatrix: Matrix; + /** + * @private + */ + protected static readonly _helpTransform: Transform; + /** + * @private + */ + protected static readonly _helpPoint: Point; + /** + * - A matrix relative to the armature coordinate system. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ç›¸å¯¹äºŽéª¨æž¶åæ ‡ç³»çš„矩阵。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly globalTransformMatrix: Matrix; + /** + * - A transform relative to the armature coordinate system. + * @see #updateGlobalTransform() + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ç›¸å¯¹äºŽéª¨æž¶åæ ‡ç³»çš„å˜æ¢ã€‚ + * @see #updateGlobalTransform() + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly global: Transform; + /** + * - The offset transform relative to the armature or the parent bone coordinate system. + * @see #dragonBones.Bone#invalidUpdate() + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ç›¸å¯¹äºŽéª¨æž¶æˆ–çˆ¶éª¨éª¼åæ ‡ç³»çš„åç§»å˜æ¢ã€‚ + * @see #dragonBones.Bone#invalidUpdate() + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly offset: Transform; + /** + * @private + */ + origin: Transform | null; + /** + * @private + */ + userData: any; + /** + * @private + */ + protected _globalDirty: boolean; + /** + * @internal + * @private + */ + _armature: Armature; + /** + * @internal + * @private + */ + _parent: Bone; + /** + * @private + */ + protected _onClear(): void; + /** + * @internal + * @private + */ + _setArmature(value: Armature | null): void; + /** + * @internal + * @private + */ + _setParent(value: Bone | null): void; + /** + * - For performance considerations, rotation or scale in the {@link #global} attribute of the bone or slot is not always properly accessible, + * some engines do not rely on these attributes to update rendering, such as Egret. + * The use of this method ensures that the access to the {@link #global} property is correctly rotation or scale. + * @example + * <pre> + * bone.updateGlobalTransform(); + * let rotation = bone.global.rotation; + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - å‡ºäºŽæ€§èƒ½çš„è€ƒè™‘ï¼Œéª¨éª¼æˆ–æ’æ§½çš„ {@link #global} 属性ä¸çš„æ—‹è½¬æˆ–ç¼©æ”¾å¹¶ä¸æ€»æ˜¯æ£ç¡®å¯è®¿é—®çš„,有些引擎并ä¸ä¾èµ–这些属性更新渲染,比如 Egret。 + * ä½¿ç”¨æ¤æ–¹æ³•å¯ä»¥ä¿è¯è®¿é—®åˆ° {@link #global} å±žæ€§ä¸æ£ç¡®çš„æ—‹è½¬æˆ–缩放。 + * @example + * <pre> + * bone.updateGlobalTransform(); + * let rotation = bone.global.rotation; + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + updateGlobalTransform(): void; + /** + * - The armature to which it belongs. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 所属的骨架。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly armature: Armature; + /** + * - The parent bone to which it belongs. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 所属的父骨骼。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly parent: Bone; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - Bone is one of the most important logical units in the armature animation system, + * and is responsible for the realization of translate, rotation, scaling in the animations. + * A armature can contain multiple bones. + * @see dragonBones.BoneData + * @see dragonBones.Armature + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - éª¨éª¼åœ¨éª¨éª¼åŠ¨ç”»ä½“ç³»ä¸æ˜¯æœ€é‡è¦çš„逻辑å•元之一,负责动画ä¸çš„å¹³ç§»ã€æ—‹è½¬ã€ç¼©æ”¾çš„实现。 + * 一个骨架ä¸å¯ä»¥åŒ…å«å¤šä¸ªéª¨éª¼ã€‚ + * @see dragonBones.BoneData + * @see dragonBones.Armature + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language zh_CN + */ + class Bone extends TransformObject { + static toString(): string; + /** + * - The offset mode. + * @see #offset + * @version DragonBones 5.5 + * @language en_US + */ + /** + * - å移模å¼ã€‚ + * @see #offset + * @version DragonBones 5.5 + * @language zh_CN + */ + offsetMode: OffsetMode; + /** + * @internal + * @private + */ + readonly animationPose: Transform; + /** + * @internal + * @private + */ + _transformDirty: boolean; + /** + * @internal + * @private + */ + _childrenTransformDirty: boolean; + protected _localDirty: boolean; + /** + * @internal + * @private + */ + _hasConstraint: boolean; + private _visible; + protected _cachedFrameIndex: number; + /** + * @internal + * @private + */ + readonly _blendState: BlendState; + /** + * @internal + * @private + */ + _boneData: BoneData; + /** + * @internal + * @private + */ + _cachedFrameIndices: Array<number> | null; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @private + */ + protected _updateGlobalTransformMatrix(isCache: boolean): void; + /** + * @inheritDoc + */ + _setArmature(value: Armature | null): void; + /** + * @internal + * @private + */ + init(boneData: BoneData): void; + /** + * @internal + * @private + */ + update(cacheFrameIndex: number): void; + /** + * @internal + * @private + */ + updateByConstraint(): void; + /** + * - Forces the bone to update the transform in the next frame. + * When the bone is not animated or its animation state is finished, the bone will not continue to update, + * and when the skeleton must be updated for some reason, the method needs to be called explicitly. + * @example + * <pre> + * let bone = armature.getBone("arm"); + * bone.offset.scaleX = 2.0; + * bone.invalidUpdate(); + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - å¼ºåˆ¶éª¨éª¼åœ¨ä¸‹ä¸€å¸§æ›´æ–°å˜æ¢ã€‚ + * å½“è¯¥éª¨éª¼æ²¡æœ‰åŠ¨ç”»çŠ¶æ€æˆ–å…¶åŠ¨ç”»çŠ¶æ€æ’æ”¾å®Œæˆæ—¶ï¼Œéª¨éª¼å°†ä¸åœ¨ç»§ç»æ›´æ–°ï¼Œè€Œæ¤æ—¶ç”±äºŽæŸäº›åŽŸå› å¿…é¡»æ›´æ–°éª¨éª¼æ—¶ï¼Œåˆ™éœ€è¦æ˜¾å¼è°ƒç”¨è¯¥æ–¹æ³•。 + * @example + * <pre> + * let bone = armature.getBone("arm"); + * bone.offset.scaleX = 2.0; + * bone.invalidUpdate(); + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + invalidUpdate(): void; + /** + * - Check whether the bone contains a specific bone or slot. + * @see dragonBones.Bone + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 检查该骨骼是å¦åŒ…å«ç‰¹å®šçš„éª¨éª¼æˆ–æ’æ§½ã€‚ + * @see dragonBones.Bone + * @see dragonBones.Slot + * @version DragonBones 3.0 + * @language zh_CN + */ + contains(value: TransformObject): boolean; + /** + * - The bone data. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 骨骼数æ®ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly boneData: BoneData; + /** + * - The visible of all slots in the bone. + * @default true + * @see dragonBones.Slot#visible + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ¤éª¨éª¼æ‰€æœ‰æ’槽的å¯è§ã€‚ + * @default true + * @see dragonBones.Slot#visible + * @version DragonBones 3.0 + * @language zh_CN + */ + visible: boolean; + /** + * - The bone name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 骨骼å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly name: string; + /** + * - Deprecated, please refer to {@link dragonBones.Armature#getBones()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.Armature#getBones()}。 + * @deprecated + * @language zh_CN + */ + getBones(): Array<Bone>; + /** + * - Deprecated, please refer to {@link dragonBones.Armature#getSlots()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.Armature#getSlots()}。 + * @deprecated + * @language zh_CN + */ + getSlots(): Array<Slot>; + /** + * - Deprecated, please refer to {@link dragonBones.Armature#getSlot()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.Armature#getSlot()}。 + * @deprecated + * @language zh_CN + */ + readonly slot: Slot | null; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + class Surface extends Bone { + static toString(): string; + private _dX; + private _dY; + private _k; + private _kX; + private _kY; + /** + * For debug draw. + * @internal + * @private + */ + readonly _vertices: Array<number>; + /** + * For timeline state. + * @internal + * @private + */ + readonly _deformVertices: Array<number>; + /** + * x1, y1, x2, y2, x3, y3, x4, y4, d1X, d1Y, d2X, d2Y + */ + private readonly _hullCache; + /** + * Inside [flag, a, b, c, d, tx, ty], Outside [flag, a, b, c, d, tx, ty] + */ + private readonly _matrixCahce; + /** + * @inheritDoc + */ + protected _onClear(): void; + private _getAffineTransform(x, y, lX, lY, aX, aY, bX, bY, cX, cY, transform, matrix, isDown); + private _updateVertices(); + /** + * @private + */ + protected _updateGlobalTransformMatrix(isCache: boolean): void; + _getGlobalTransformMatrix(x: number, y: number): Matrix; + init(surfaceData: SurfaceData): void; + /** + * @internal + * @private + */ + update(cacheFrameIndex: number): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The slot attached to the armature, controls the display status and properties of the display object. + * A bone can contain multiple slots. + * A slot can contain multiple display objects, displaying only one of the display objects at a time, + * but you can toggle the display object into frame animation while the animation is playing. + * The display object can be a normal texture, or it can be a display of a child armature, a grid display object, + * and a custom other display object. + * @see dragonBones.Armature + * @see dragonBones.Bone + * @see dragonBones.SlotData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ§½é™„ç€åœ¨éª¨éª¼ä¸Šï¼ŒæŽ§åˆ¶æ˜¾ç¤ºå¯¹è±¡çš„æ˜¾ç¤ºçжæ€å’Œå±žæ€§ã€‚ + * 一个骨骼上å¯ä»¥åŒ…å«å¤šä¸ªæ’槽。 + * ä¸€ä¸ªæ’æ§½ä¸å¯ä»¥åŒ…å«å¤šä¸ªæ˜¾ç¤ºå¯¹è±¡ï¼ŒåŒä¸€æ—¶é—´åªèƒ½æ˜¾ç¤ºå…¶ä¸çš„一个显示对象,但å¯ä»¥åœ¨åŠ¨ç”»æ’æ”¾çš„过程ä¸åˆ‡æ¢æ˜¾ç¤ºå¯¹è±¡å®žçŽ°å¸§åŠ¨ç”»ã€‚ + * 显示对象å¯ä»¥æ˜¯æ™®é€šçš„图片纹ç†ï¼Œä¹Ÿå¯ä»¥æ˜¯åéª¨æž¶çš„æ˜¾ç¤ºå®¹å™¨ï¼Œç½‘æ ¼æ˜¾ç¤ºå¯¹è±¡ï¼Œè¿˜å¯ä»¥æ˜¯è‡ªå®šä¹‰çš„其他显示对象。 + * @see dragonBones.Armature + * @see dragonBones.Bone + * @see dragonBones.SlotData + * @version DragonBones 3.0 + * @language zh_CN + */ + abstract class Slot extends TransformObject { + /** + * - Displays the animated state or mixed group name controlled by the object, set to null to be controlled by all animation states. + * @default null + * @see dragonBones.AnimationState#displayControl + * @see dragonBones.AnimationState#name + * @see dragonBones.AnimationState#group + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 显示对象å—åˆ°æŽ§åˆ¶çš„åŠ¨ç”»çŠ¶æ€æˆ–æ··åˆç»„å称,设置为 null åˆ™è¡¨ç¤ºå—æ‰€æœ‰çš„åŠ¨ç”»çŠ¶æ€æŽ§åˆ¶ã€‚ + * @default null + * @see dragonBones.AnimationState#displayControl + * @see dragonBones.AnimationState#name + * @see dragonBones.AnimationState#group + * @version DragonBones 4.5 + * @language zh_CN + */ + displayController: string | null; + /** + * @private + */ + protected _displayDirty: boolean; + /** + * @private + */ + protected _zOrderDirty: boolean; + /** + * @private + */ + protected _visibleDirty: boolean; + /** + * @private + */ + protected _blendModeDirty: boolean; + /** + * @internal + * @private + */ + _colorDirty: boolean; + /** + * @internal + * @private + */ + _meshDirty: boolean; + /** + * @private + */ + protected _transformDirty: boolean; + /** + * @private + */ + protected _visible: boolean; + /** + * @private + */ + protected _blendMode: BlendMode; + /** + * @private + */ + protected _displayIndex: number; + /** + * @private + */ + protected _animationDisplayIndex: number; + /** + * @internal + * @private + */ + _zOrder: number; + /** + * @private + */ + protected _cachedFrameIndex: number; + /** + * @internal + * @private + */ + _pivotX: number; + /** + * @internal + * @private + */ + _pivotY: number; + /** + * @private + */ + protected readonly _localMatrix: Matrix; + /** + * @internal + * @private + */ + readonly _colorTransform: ColorTransform; + /** + * @internal + * @private + */ + readonly _deformVertices: Array<number>; + /** + * @private + */ + readonly _displayDatas: Array<DisplayData | null>; + /** + * @private + */ + protected readonly _displayList: Array<any | Armature>; + /** + * @private + */ + protected readonly _meshBones: Array<Bone | null>; + /** + * @private + */ + protected readonly _meshSlots: Array<Slot | null>; + /** + * @internal + * @private + */ + _slotData: SlotData; + /** + * @private + */ + protected _rawDisplayDatas: Array<DisplayData | null> | null; + /** + * @private + */ + protected _displayData: DisplayData | null; + /** + * @private + */ + protected _textureData: TextureData | null; + /** + * @internal + * @private + */ + _meshData: MeshDisplayData | null; + /** + * @private + */ + protected _boundingBoxData: BoundingBoxData | null; + /** + * @private + */ + protected _rawDisplay: any; + /** + * @private + */ + protected _meshDisplay: any; + /** + * @private + */ + protected _display: any; + /** + * @private + */ + protected _childArmature: Armature | null; + /** + * @internal + * @private + */ + _cachedFrameIndices: Array<number> | null; + /** + * @inheritDoc + */ + protected _onClear(): void; + /** + * @private + */ + protected abstract _initDisplay(value: any, isRetain: boolean): void; + /** + * @private + */ + protected abstract _disposeDisplay(value: any, isRelease: boolean): void; + /** + * @private + */ + protected abstract _onUpdateDisplay(): void; + /** + * @private + */ + protected abstract _addDisplay(): void; + /** + * @private + */ + protected abstract _replaceDisplay(value: any): void; + /** + * @private + */ + protected abstract _removeDisplay(): void; + /** + * @private + */ + protected abstract _updateZOrder(): void; + /** + * @private + */ + abstract _updateVisible(): void; + /** + * @private + */ + protected abstract _updateBlendMode(): void; + /** + * @private + */ + protected abstract _updateColor(): void; + /** + * @private + */ + protected abstract _updateFrame(): void; + /** + * @private + */ + protected abstract _updateMesh(): void; + /** + * @internal + * @private + */ + abstract _updateGlueMesh(): void; + /** + * @private + */ + protected abstract _updateTransform(): void; + /** + * @private + */ + protected abstract _identityTransform(): void; + /** + * @private + */ + protected _getDefaultRawDisplayData(): DisplayData | null; + /** + * @private + */ + protected _updateDisplayData(): void; + /** + * @private + */ + protected _updateDisplay(): void; + /** + * @private + */ + protected _updateGlobalTransformMatrix(isCache: boolean): void; + /** + * @private + */ + protected _isMeshBonesUpdate(): boolean; + /** + * @inheritDoc + */ + _setArmature(value: Armature | null): void; + /** + * @internal + * @private + */ + _setDisplayIndex(value: number, isAnimation?: boolean): boolean; + /** + * @internal + * @private + */ + _setZorder(value: number): boolean; + /** + * @internal + * @private + */ + _setColor(value: ColorTransform): boolean; + /** + * @internal + * @private + */ + _setDisplayList(value: Array<any> | null): boolean; + /** + * @internal + * @private + */ + init(slotData: SlotData, displayDatas: Array<DisplayData | null> | null, rawDisplay: any, meshDisplay: any): void; + /** + * @internal + * @private + */ + update(cacheFrameIndex: number): void; + /** + * @private + */ + updateTransformAndMatrix(): void; + /** + * @private + */ + replaceDisplayData(value: DisplayData | null, displayIndex?: number): void; + /** + * - Check whether a specific point is inside a custom bounding box in the slot. + * The coordinate system of the point is the inner coordinate system of the armature. + * Custom bounding boxes need to be customized in Dragonbones Pro. + * @param x - The horizontal coordinate of the point. + * @param y - The vertical coordinate of the point. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 检查特定点是å¦åœ¨æ’槽的自定义边界框内。 + * ç‚¹çš„åæ ‡ç³»ä¸ºéª¨æž¶å†…åæ ‡ç³»ã€‚ + * 自定义边界框需è¦åœ¨ DragonBones Pro ä¸è‡ªå®šä¹‰ã€‚ + * @param x - ç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @param y - ç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @version DragonBones 5.0 + * @language zh_CN + */ + containsPoint(x: number, y: number): boolean; + /** + * - Check whether a specific segment intersects a custom bounding box for the slot. + * The coordinate system of the segment and intersection is the inner coordinate system of the armature. + * Custom bounding boxes need to be customized in Dragonbones Pro. + * @param xA - The horizontal coordinate of the beginning of the segment. + * @param yA - The vertical coordinate of the beginning of the segment. + * @param xB - The horizontal coordinate of the end point of the segment. + * @param yB - The vertical coordinate of the end point of the segment. + * @param intersectionPointA - The first intersection at which a line segment intersects the bounding box from the beginning to the end. (If not set, the intersection point will not calculated) + * @param intersectionPointB - The first intersection at which a line segment intersects the bounding box from the end to the beginning. (If not set, the intersection point will not calculated) + * @param normalRadians - The normal radians of the tangent of the intersection boundary box. [x: Normal radian of the first intersection tangent, y: Normal radian of the second intersection tangent] (If not set, the normal will not calculated) + * @returns Intersection situation. [1: Disjoint and segments within the bounding box, 0: Disjoint, 1: Intersecting and having a nodal point and ending in the bounding box, 2: Intersecting and having a nodal point and starting at the bounding box, 3: Intersecting and having two intersections, N: Intersecting and having N intersections] + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 检查特定线段是å¦ä¸Žæ’槽的自定义边界框相交。 + * çº¿æ®µå’Œäº¤ç‚¹çš„åæ ‡ç³»å‡ä¸ºéª¨æž¶å†…åæ ‡ç³»ã€‚ + * 自定义边界框需è¦åœ¨ DragonBones Pro ä¸è‡ªå®šä¹‰ã€‚ + * @param xA - çº¿æ®µèµ·ç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @param yA - çº¿æ®µèµ·ç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @param xB - çº¿æ®µç»ˆç‚¹çš„æ°´å¹³åæ ‡ã€‚ + * @param yB - çº¿æ®µç»ˆç‚¹çš„åž‚ç›´åæ ‡ã€‚ + * @param intersectionPointA - 线段从起点到终点与边界框相交的第一个交点。 (如果未设置,则ä¸è®¡ç®—交点) + * @param intersectionPointB - 线段从终点到起点与边界框相交的第一个交点。 (如果未设置,则ä¸è®¡ç®—交点) + * @param normalRadians - 交点边界框切线的法线弧度。 [x: 第一个交点切线的法线弧度, y: 第二个交点切线的法线弧度] (如果未设置,则ä¸è®¡ç®—法线) + * @returns 相交的情况。 [-1: ä¸ç›¸äº¤ä¸”线段在包围盒内, 0: ä¸ç›¸äº¤, 1: 相交且有一个交点且终点在包围盒内, 2: 相交且有一个交点且起点在包围盒内, 3: 相交且有两个交点, N: 相交且有 N 个交点] + * @version DragonBones 5.0 + * @language zh_CN + */ + intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: { + x: number; + y: number; + } | null, intersectionPointB?: { + x: number; + y: number; + } | null, normalRadians?: { + x: number; + y: number; + } | null): number; + /** + * - Forces the slot to update the state of the display object in the next frame. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - å¼ºåˆ¶æ’æ§½åœ¨ä¸‹ä¸€å¸§æ›´æ–°æ˜¾ç¤ºå¯¹è±¡çš„状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + invalidUpdate(): void; + /** + * - The visible of slot's display object. + * @default true + * @version DragonBones 5.6 + * @language en_US + */ + /** + * - æ’æ§½çš„æ˜¾ç¤ºå¯¹è±¡çš„å¯è§ã€‚ + * @default true + * @version DragonBones 5.6 + * @language zh_CN + */ + visible: boolean; + /** + * - The index of the display object displayed in the display list. + * @example + * <pre> + * let slot = armature.getSlot("weapon"); + * slot.displayIndex = 3; + * slot.displayController = "none"; + * </pre> + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - æ¤æ—¶æ˜¾ç¤ºçš„æ˜¾ç¤ºå¯¹è±¡åœ¨æ˜¾ç¤ºåˆ—表ä¸çš„索引。 + * @example + * <pre> + * let slot = armature.getSlot("weapon"); + * slot.displayIndex = 3; + * slot.displayController = "none"; + * </pre> + * @version DragonBones 4.5 + * @language zh_CN + */ + displayIndex: number; + /** + * - The slot name. + * @see dragonBones.SlotData#name + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ§½å称。 + * @see dragonBones.SlotData#name + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly name: string; + /** + * - Contains a display list of display objects or child armatures. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åŒ…å«æ˜¾ç¤ºå¯¹è±¡æˆ–å骨架的显示列表。 + * @version DragonBones 3.0 + * @language zh_CN + */ + displayList: Array<any>; + /** + * - The slot data. + * @see dragonBones.SlotData + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - æ’æ§½æ•°æ®ã€‚ + * @see dragonBones.SlotData + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly slotData: SlotData; + /** + * @private + */ + rawDisplayDatas: Array<DisplayData | null> | null; + /** + * - The custom bounding box data for the slot at current time. + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ’æ§½æ¤æ—¶çš„自定义包围盒数æ®ã€‚ + * @version DragonBones 5.0 + * @language zh_CN + */ + readonly boundingBoxData: BoundingBoxData | null; + /** + * @private + */ + readonly rawDisplay: any; + /** + * @private + */ + readonly meshDisplay: any; + /** + * - The display object that the slot displays at this time. + * @example + * <pre> + * let slot = armature.getSlot("text"); + * slot.display = new yourEngine.TextField(); + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ§½æ¤æ—¶æ˜¾ç¤ºçš„æ˜¾ç¤ºå¯¹è±¡ã€‚ + * @example + * <pre> + * let slot = armature.getSlot("text"); + * slot.display = new yourEngine.TextField(); + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + display: any; + /** + * - The child armature that the slot displayed at current time. + * @example + * <pre> + * let slot = armature.getSlot("weapon"); + * slot.childArmature = factory.buildArmature("weapon_blabla", "weapon_blabla_project"); + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ§½æ¤æ—¶æ˜¾ç¤ºçš„å骨架。 + * @example + * <pre> + * let slot = armature.getSlot("weapon"); + * slot.childArmature = factory.buildArmature("weapon_blabla", "weapon_blabla_project"); + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + childArmature: Armature | null; + /** + * - Deprecated, please refer to {@link #display}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #display}。 + * @deprecated + * @language zh_CN + */ + getDisplay(): any; + /** + * - Deprecated, please refer to {@link #display}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #display}。 + * @deprecated + * @language zh_CN + */ + setDisplay(value: any): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + abstract class Constraint extends BaseObject { + protected static readonly _helpMatrix: Matrix; + protected static readonly _helpTransform: Transform; + protected static readonly _helpPoint: Point; + /** + * - For timeline state. + * @internal + */ + _constraintData: ConstraintData; + protected _armature: Armature; + /** + * - For sort bones. + * @internal + */ + _target: Bone; + /** + * - For sort bones. + * @internal + */ + _root: Bone; + protected _bone: Bone | null; + protected _onClear(): void; + abstract init(constraintData: ConstraintData, armature: Armature): void; + abstract update(): void; + abstract invalidUpdate(): void; + readonly name: string; + } + /** + * @internal + * @private + */ + class IKConstraint extends Constraint { + static toString(): string; + private _scaleEnabled; + /** + * - For timeline state. + * @internal + */ + _bendPositive: boolean; + /** + * - For timeline state. + * @internal + */ + _weight: number; + protected _onClear(): void; + private _computeA(); + private _computeB(); + init(constraintData: ConstraintData, armature: Armature): void; + update(): void; + invalidUpdate(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - Play animation interface. (Both Armature and Wordclock implement the interface) + * Any instance that implements the interface can be added to the Worldclock instance and advance time by Worldclock instance uniformly. + * @see dragonBones.WorldClock + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾åŠ¨ç”»æŽ¥å£ã€‚ (Armature å’Œ WordClock 都实现了该接å£) + * ä»»ä½•å®žçŽ°äº†æ¤æŽ¥å£çš„实例都å¯ä»¥æ·»åŠ åˆ° WorldClock 实例ä¸ï¼Œç”± WorldClock 实例统一更新时间。 + * @see dragonBones.WorldClock + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language zh_CN + */ + interface IAnimatable { + /** + * - Advance time. + * @param passedTime - Passed time. (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 更新时间。 + * @param passedTime - å‰è¿›çš„æ—¶é—´ã€‚ (以秒为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + advanceTime(passedTime: number): void; + /** + * - The Wordclock instance to which the current belongs. + * @example + * <pre> + * armature.clock = factory.clock; // Add armature to clock. + * armature.clock = null; // Remove armature from clock. + * </pre> + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 当剿‰€å±žçš„ WordClock 实例。 + * @example + * <pre> + * armature.clock = factory.clock; // å°†éª¨æž¶æ·»åŠ åˆ°æ—¶é’Ÿã€‚ + * armature.clock = null; // 将骨架从时钟移除。 + * </pre> + * @version DragonBones 5.0 + * @language zh_CN + */ + clock: WorldClock | null; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - Worldclock provides clock support for animations, advance time for each IAnimatable object added to the instance. + * @see dragonBones.IAnimateble + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - WorldClock 对动画æä¾›æ—¶é’Ÿæ”¯æŒï¼Œä¸ºæ¯ä¸ªåŠ å…¥åˆ°è¯¥å®žä¾‹çš„ IAnimatable 对象更新时间。 + * @see dragonBones.IAnimateble + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language zh_CN + */ + class WorldClock implements IAnimatable { + /** + * - Current time. (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 当å‰çš„æ—¶é—´ã€‚ (以秒为å•ä½) + * @version DragonBones 3.0 + * @language zh_CN + */ + time: number; + /** + * - The play speed, used to control animation speed-shift play. + * [0: Stop play, (0~1): Slow play, 1: Normal play, (1~N): Fast play] + * @default 1.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾é€Ÿåº¦ï¼Œç”¨äºŽæŽ§åˆ¶åŠ¨ç”»å˜é€Ÿæ’放。 + * [0: åœæ¢æ’放, (0~1): æ…¢é€Ÿæ’æ”¾, 1: æ£å¸¸æ’放, (1~N): å¿«é€Ÿæ’æ”¾] + * @default 1.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + timeScale: number; + private readonly _animatebles; + private _clock; + /** + * - Creating a Worldclock instance. Typically, you do not need to create Worldclock instance. + * When multiple Worldclock instances are running at different speeds, can achieving some specific animation effects, such as bullet time. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 创建一个 WorldClock 实例。通常并ä¸éœ€è¦åˆ›å»º WorldClock 实例。 + * 当多个 WorldClock 实例使用ä¸åŒçš„速度è¿è¡Œæ—¶ï¼Œå¯ä»¥å®žçŽ°ä¸€äº›ç‰¹æ®Šçš„åŠ¨ç”»æ•ˆæžœï¼Œæ¯”å¦‚å弹时间ç‰ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + constructor(time?: number); + /** + * - Advance time for all IAnimatable instances. + * @param passedTime - Passed time. [-1: Automatically calculates the time difference between the current frame and the previous frame, [0~N): Passed time] (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 为所有的 IAnimatable 实例更新时间。 + * @param passedTime - å‰è¿›çš„æ—¶é—´ã€‚ [-1: 自动计算当å‰å¸§ä¸Žä¸Šä¸€å¸§çš„æ—¶é—´å·®, [0~N): å‰è¿›çš„æ—¶é—´] (以秒为å•ä½) + * @version DragonBones 3.0 + * @language zh_CN + */ + advanceTime(passedTime: number): void; + /** + * - Check whether contains a specific instance of IAnimatable. + * @param value - The IAnimatable instance. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 检查是å¦åŒ…å«ç‰¹å®šçš„ IAnimatable 实例。 + * @param value - IAnimatable 实例。 + * @version DragonBones 3.0 + * @language zh_CN + */ + contains(value: IAnimatable): boolean; + /** + * - Add IAnimatable instance. + * @param value - The IAnimatable instance. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ·»åŠ IAnimatable 实例。 + * @param value - IAnimatable 实例。 + * @version DragonBones 3.0 + * @language zh_CN + */ + add(value: IAnimatable): void; + /** + * - Removes a specified IAnimatable instance. + * @param value - The IAnimatable instance. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 移除特定的 IAnimatable 实例。 + * @param value - IAnimatable 实例。 + * @version DragonBones 3.0 + * @language zh_CN + */ + remove(value: IAnimatable): void; + /** + * - Clear all IAnimatable instances. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 清除所有的 IAnimatable 实例。 + * @version DragonBones 3.0 + * @language zh_CN + */ + clear(): void; + /** + * @inheritDoc + */ + clock: WorldClock | null; + /** + * - Deprecated, please refer to {@link dragonBones.BaseFactory#clock}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.BaseFactory#clock}。 + * @deprecated + * @language zh_CN + */ + static readonly clock: WorldClock; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The animation player is used to play the animation data and manage the animation states. + * @see dragonBones.AnimationData + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åŠ¨ç”»æ’æ”¾å™¨ç”¨æ¥æ’放动画数æ®å’Œç®¡ç†åŠ¨ç”»çŠ¶æ€ã€‚ + * @see dragonBones.AnimationData + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language zh_CN + */ + class Animation extends BaseObject { + static toString(): string; + /** + * - The play speed of all animations. [0: Stop, (0~1): Slow, 1: Normal, (1~N): Fast] + * @default 1.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ‰€æœ‰åŠ¨ç”»çš„æ’æ”¾é€Ÿåº¦ã€‚ [0: åœæ¢æ’放, (0~1): æ…¢é€Ÿæ’æ”¾, 1: æ£å¸¸æ’放, (1~N): å¿«é€Ÿæ’æ”¾] + * @default 1.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + timeScale: number; + private _lockUpdate; + private _animationDirty; + private _inheritTimeScale; + private readonly _animationNames; + private readonly _animationStates; + private readonly _animations; + private _armature; + private _animationConfig; + private _lastAnimationState; + /** + * @private + */ + protected _onClear(): void; + private _fadeOut(animationConfig); + /** + * @internal + * @private + */ + init(armature: Armature): void; + /** + * @internal + * @private + */ + advanceTime(passedTime: number): void; + /** + * - Clear all animations states. + * @see dragonBones.AnimationState + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 清除所有的动画状æ€ã€‚ + * @see dragonBones.AnimationState + * @version DragonBones 4.5 + * @language zh_CN + */ + reset(): void; + /** + * - Pause a specific animation state. + * @param animationName - The name of animation state. (If not set, it will pause all animations) + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æš‚åœæŒ‡å®šåŠ¨ç”»çŠ¶æ€çš„æ’æ”¾ã€‚ + * @param animationName - 动画状æ€å称。 ï¼ˆå¦‚æžœæœªè®¾ç½®ï¼Œåˆ™æš‚åœæ‰€æœ‰åŠ¨ç”»ï¼‰ + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language zh_CN + */ + stop(animationName?: string | null): void; + /** + * - Play animation with a specific animation config. + * The API is still in the experimental phase and may encounter bugs or stability or compatibility issues when used. + * @param animationConfig - The animation config. + * @returns The playing animation state. + * @see dragonBones.AnimationConfig + * @beta + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 通过指定的动画é…ç½®æ¥æ’放动画。 + * 该 API ä»åœ¨å®žéªŒé˜¶æ®µï¼Œä½¿ç”¨æ—¶å¯èƒ½éé‡ bug 或稳定性或兼容性问题。 + * @param animationConfig - 动画é…置。 + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @see dragonBones.AnimationConfig + * @beta + * @version DragonBones 5.0 + * @language zh_CN + */ + playConfig(animationConfig: AnimationConfig): AnimationState | null; + /** + * - Play a specific animation. + * @param animationName - The name of animation data. (If not set, The default animation will be played, or resume the animation playing from pause status, or replay the last playing animation) + * @param playTimes - Playing repeat times. [-1: Use default value of the animation data, 0: No end loop playing, [1~N]: Repeat N times] (default: -1) + * @returns The playing animation state. + * @example + * <pre> + * armature.animation.play("walk"); + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾æŒ‡å®šåŠ¨ç”»ã€‚ + * @param animationName - 动画数æ®å称。 ï¼ˆå¦‚æžœæœªè®¾ç½®ï¼Œåˆ™æ’æ”¾é»˜è®¤åŠ¨ç”»ï¼Œæˆ–å°†æš‚åœçжæ€åˆ‡æ¢ä¸ºæ’放状æ€ï¼Œæˆ–釿–°æ’æ”¾ä¹‹å‰æ’放的动画) + * @param playTimes - å¾ªçŽ¯æ’æ”¾æ¬¡æ•°ã€‚ [-1: 使用动画数æ®é»˜è®¤å€¼, 0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] (默认: -1) + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @example + * <pre> + * armature.animation.play("walk"); + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + play(animationName?: string | null, playTimes?: number): AnimationState | null; + /** + * - Fade in a specific animation. + * @param animationName - The name of animation data. + * @param fadeInTime - The fade in time. [-1: Use the default value of animation data, [0~N]: The fade in time (In seconds)] (Default: -1) + * @param playTimes - playing repeat times. [-1: Use the default value of animation data, 0: No end loop playing, [1~N]: Repeat N times] (Default: -1) + * @param layer - The blending layer, the animation states in high level layer will get the blending weights with high priority, when the total blending weights are more than 1.0, there will be no more weights can be allocated to the other animation states. (Default: 0) + * @param group - The blending group name, it is typically used to specify the substitution of multiple animation states blending. (Default: null) + * @param fadeOutMode - The fade out mode, which is typically used to specify alternate mode of multiple animation states blending. (Default: AnimationFadeOutMode.SameLayerAndGroup) + * @returns The playing animation state. + * @example + * <pre> + * armature.animation.fadeIn("walk", 0.3, 0, 0, "normalGroup").resetToPose = false; + * armature.animation.fadeIn("attack", 0.3, 1, 0, "attackGroup").resetToPose = false; + * </pre> + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - æ·¡å…¥æ’æ”¾æŒ‡å®šçš„动画。 + * @param animationName - 动画数æ®å称。 + * @param fadeInTime - 淡入时间。 [-1: 使用动画数æ®é»˜è®¤å€¼, [0~N]: 淡入时间 (以秒为å•ä½)] (默认: -1) + * @param playTimes - æ’æ”¾æ¬¡æ•°ã€‚ [-1: 使用动画数æ®é»˜è®¤å€¼, 0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] (默认: -1) + * @param layer - æ··åˆå›¾å±‚,图层高的动画状æ€ä¼šä¼˜å…ˆèŽ·å–æ··åˆæƒé‡ï¼Œå½“æ··åˆæƒé‡åˆ†é…总和超过 1.0 时,剩余的动画状æ€å°†ä¸èƒ½å†èŽ·å¾—æƒé‡åˆ†é…。 (默认: 0) + * @param group - æ··åˆç»„åç§°ï¼Œè¯¥å±žæ€§é€šå¸¸ç”¨æ¥æŒ‡å®šå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ··åˆæ—¶çš„相互替æ¢å…³ç³»ã€‚ (默认: null) + * @param fadeOutMode - 淡出模å¼ï¼Œè¯¥å±žæ€§é€šå¸¸ç”¨æ¥æŒ‡å®šå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ··åˆæ—¶çš„ç›¸äº’æ›¿æ¢æ¨¡å¼ã€‚ (默认: AnimationFadeOutMode.SameLayerAndGroup) + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @example + * <pre> + * armature.animation.fadeIn("walk", 0.3, 0, 0, "normalGroup").resetToPose = false; + * armature.animation.fadeIn("attack", 0.3, 1, 0, "attackGroup").resetToPose = false; + * </pre> + * @version DragonBones 4.5 + * @language zh_CN + */ + fadeIn(animationName: string, fadeInTime?: number, playTimes?: number, layer?: number, group?: string | null, fadeOutMode?: AnimationFadeOutMode): AnimationState | null; + /** + * - Play a specific animation from the specific time. + * @param animationName - The name of animation data. + * @param time - The start time point of playing. (In seconds) + * @param playTimes - Playing repeat times. [-1: Use the default value of animation data, 0: No end loop playing, [1~N]: Repeat N times] (Default: -1) + * @returns The played animation state. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - ä»ŽæŒ‡å®šæ—¶é—´å¼€å§‹æ’æ”¾æŒ‡å®šçš„动画。 + * @param animationName - 动画数æ®å称。 + * @param time - æ’æ”¾å¼€å§‹çš„æ—¶é—´ã€‚ (以秒为å•ä½) + * @param playTimes - å¾ªçŽ¯æ’æ”¾æ¬¡æ•°ã€‚ [-1: 使用动画数æ®é»˜è®¤å€¼, 0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] (默认: -1) + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + gotoAndPlayByTime(animationName: string, time?: number, playTimes?: number): AnimationState | null; + /** + * - Play a specific animation from the specific frame. + * @param animationName - The name of animation data. + * @param frame - The start frame of playing. + * @param playTimes - Playing repeat times. [-1: Use the default value of animation data, 0: No end loop playing, [1~N]: Repeat N times] (Default: -1) + * @returns The played animation state. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - ä»ŽæŒ‡å®šå¸§å¼€å§‹æ’æ”¾æŒ‡å®šçš„动画。 + * @param animationName - 动画数æ®å称。 + * @param frame - æ’æ”¾å¼€å§‹çš„帧数。 + * @param playTimes - æ’æ”¾æ¬¡æ•°ã€‚ [-1: 使用动画数æ®é»˜è®¤å€¼, 0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] (默认: -1) + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + gotoAndPlayByFrame(animationName: string, frame?: number, playTimes?: number): AnimationState | null; + /** + * - Play a specific animation from the specific progress. + * @param animationName - The name of animation data. + * @param progress - The start progress value of playing. + * @param playTimes - Playing repeat times. [-1: Use the default value of animation data, 0: No end loop playing, [1~N]: Repeat N times] (Default: -1) + * @returns The played animation state. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - ä»ŽæŒ‡å®šè¿›åº¦å¼€å§‹æ’æ”¾æŒ‡å®šçš„动画。 + * @param animationName - 动画数æ®å称。 + * @param progress - å¼€å§‹æ’æ”¾çš„进度。 + * @param playTimes - æ’æ”¾æ¬¡æ•°ã€‚ [-1: 使用动画数æ®é»˜è®¤å€¼, 0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] (默认: -1) + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + gotoAndPlayByProgress(animationName: string, progress?: number, playTimes?: number): AnimationState | null; + /** + * - Stop a specific animation at the specific time. + * @param animationName - The name of animation data. + * @param time - The stop time. (In seconds) + * @returns The played animation state. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åœ¨æŒ‡å®šæ—¶é—´åœæ¢æŒ‡å®šåŠ¨ç”»æ’æ”¾ + * @param animationName - 动画数æ®å称。 + * @param time - åœæ¢çš„æ—¶é—´ã€‚ (以秒为å•ä½) + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + gotoAndStopByTime(animationName: string, time?: number): AnimationState | null; + /** + * - Stop a specific animation at the specific frame. + * @param animationName - The name of animation data. + * @param frame - The stop frame. + * @returns The played animation state. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åœ¨æŒ‡å®šå¸§åœæ¢æŒ‡å®šåŠ¨ç”»çš„æ’æ”¾ + * @param animationName - 动画数æ®å称。 + * @param frame - åœæ¢çš„帧数。 + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + gotoAndStopByFrame(animationName: string, frame?: number): AnimationState | null; + /** + * - Stop a specific animation at the specific progress. + * @param animationName - The name of animation data. + * @param progress - The stop progress value. + * @returns The played animation state. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åœ¨æŒ‡å®šçš„è¿›åº¦åœæ¢æŒ‡å®šçš„åŠ¨ç”»æ’æ”¾ã€‚ + * @param animationName - 动画数æ®å称。 + * @param progress - åœæ¢è¿›åº¦ã€‚ + * @returns æ’æ”¾çš„动画状æ€ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + gotoAndStopByProgress(animationName: string, progress?: number): AnimationState | null; + /** + * - Get a specific animation state. + * @param animationName - The name of animation state. + * @example + * <pre> + * armature.animation.play("walk"); + * let walkState = armature.animation.getState("walk"); + * walkState.timeScale = 0.5; + * </pre> + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - èŽ·å–æŒ‡å®šçš„åŠ¨ç”»çŠ¶æ€ + * @param animationName - 动画状æ€å称。 + * @example + * <pre> + * armature.animation.play("walk"); + * let walkState = armature.animation.getState("walk"); + * walkState.timeScale = 0.5; + * </pre> + * @version DragonBones 3.0 + * @language zh_CN + */ + getState(animationName: string): AnimationState | null; + /** + * - Check whether a specific animation data is included. + * @param animationName - The name of animation data. + * @see dragonBones.AnimationData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 检查是å¦åŒ…嫿Œ‡å®šçš„åŠ¨ç”»æ•°æ® + * @param animationName - 动画数æ®å称。 + * @see dragonBones.AnimationData + * @version DragonBones 3.0 + * @language zh_CN + */ + hasAnimation(animationName: string): boolean; + /** + * - Get all the animation states. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - èŽ·å–æ‰€æœ‰çš„åŠ¨ç”»çŠ¶æ€ + * @version DragonBones 5.1 + * @language zh_CN + */ + getStates(): Array<AnimationState>; + /** + * - Check whether there is an animation state is playing + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ£€æŸ¥æ˜¯å¦æœ‰åŠ¨ç”»çŠ¶æ€æ£åœ¨æ’放 + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly isPlaying: boolean; + /** + * - Check whether all the animation states' playing were finished. + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ£€æŸ¥æ˜¯å¦æ‰€æœ‰çš„动画状æ€å‡å·²æ’放完毕。 + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly isCompleted: boolean; + /** + * - The name of the last playing animation state. + * @see #lastAnimationState + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ä¸Šä¸€ä¸ªæ’æ”¾çš„动画状æ€åç§° + * @see #lastAnimationState + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly lastAnimationName: string; + /** + * - The name of all animation data + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 所有动画数æ®çš„åç§° + * @version DragonBones 4.5 + * @language zh_CN + */ + readonly animationNames: Array<string>; + /** + * - All animation data. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 所有的动画数æ®ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + animations: Map<AnimationData>; + /** + * - An AnimationConfig instance that can be used quickly. + * @see dragonBones.AnimationConfig + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 一个å¯ä»¥å¿«é€Ÿä½¿ç”¨çš„动画é…置实例。 + * @see dragonBones.AnimationConfig + * @version DragonBones 5.0 + * @language zh_CN + */ + readonly animationConfig: AnimationConfig; + /** + * - The last playing animation state + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ä¸Šä¸€ä¸ªæ’æ”¾çš„åŠ¨ç”»çŠ¶æ€ + * @see dragonBones.AnimationState + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly lastAnimationState: AnimationState | null; + /** + * - Deprecated, please refer to {@link #play()} {@link #fadeIn()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #play()} {@link #fadeIn()}。 + * @deprecated + * @language zh_CN + */ + gotoAndPlay(animationName: string, fadeInTime?: number, duration?: number, playTimes?: number, layer?: number, group?: string | null, fadeOutMode?: AnimationFadeOutMode, pauseFadeOut?: boolean, pauseFadeIn?: boolean): AnimationState | null; + /** + * - Deprecated, please refer to {@link #gotoAndStopByTime()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #gotoAndStopByTime()}。 + * @deprecated + * @language zh_CN + */ + gotoAndStop(animationName: string, time?: number): AnimationState | null; + /** + * - Deprecated, please refer to {@link #animationNames}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #animationNames}。 + * @deprecated + * @language zh_CN + */ + readonly animationList: Array<string>; + /** + * - Deprecated, please refer to {@link #animationNames}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #animationNames}。 + * @deprecated + * @language zh_CN + */ + readonly animationDataList: Array<AnimationData>; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The animation state is generated when the animation data is played. + * @see dragonBones.Animation + * @see dragonBones.AnimationData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画状æ€ç”±æ’æ”¾åŠ¨ç”»æ•°æ®æ—¶äº§ç”Ÿã€‚ + * @see dragonBones.Animation + * @see dragonBones.AnimationData + * @version DragonBones 3.0 + * @language zh_CN + */ + class AnimationState extends BaseObject { + static toString(): string; + /** + * @private + */ + actionEnabled: boolean; + /** + * @private + */ + additiveBlending: boolean; + /** + * - Whether the animation state has control over the display object properties of the slots. + * Sometimes blend a animation state does not want it to control the display object properties of the slots, + * especially if other animation state are controlling the display object properties of the slots. + * @default true + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - åŠ¨ç”»çŠ¶æ€æ˜¯å¦å¯¹æ’槽的显示对象属性有控制æƒã€‚ + * 有时混åˆä¸€ä¸ªåŠ¨ç”»çŠ¶æ€å¹¶ä¸å¸Œæœ›å…¶æŽ§åˆ¶æ’槽的显示对象属性, + * å°¤å…¶æ˜¯å…¶ä»–åŠ¨ç”»çŠ¶æ€æ£åœ¨æŽ§åˆ¶è¿™äº›æ’槽的显示对象属性时。 + * @default true + * @version DragonBones 5.0 + * @language zh_CN + */ + displayControl: boolean; + /** + * - Whether to reset the objects without animation to the armature pose when the animation state is start to play. + * This property should usually be set to false when blend multiple animation states. + * @default true + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - å¼€å§‹æ’æ”¾åŠ¨ç”»çŠ¶æ€æ—¶æ˜¯å¦å°†æ²¡æœ‰åŠ¨ç”»çš„å¯¹è±¡é‡ç½®ä¸ºéª¨æž¶åˆå§‹å€¼ã€‚ + * 通常在混åˆå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ—¶åº”该将该属性设置为 false。 + * @default true + * @version DragonBones 5.1 + * @language zh_CN + */ + resetToPose: boolean; + /** + * - The play times. [0: Loop play, [1~N]: Play N times] + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾æ¬¡æ•°ã€‚ [0: æ— é™å¾ªçŽ¯æ’æ”¾, [1~N]: å¾ªçŽ¯æ’æ”¾ N 次] + * @version DragonBones 3.0 + * @language zh_CN + */ + playTimes: number; + /** + * - The blend layer. + * High layer animation state will get the blend weight first. + * When the blend weight is assigned more than 1, the remaining animation states will no longer get the weight assigned. + * @readonly + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ··åˆå›¾å±‚。 + * 图层高的动画状æ€ä¼šä¼˜å…ˆèŽ·å–æ··åˆæƒé‡ã€‚ + * å½“æ··åˆæƒé‡åˆ†é…超过 1 时,剩余的动画状æ€å°†ä¸å†èŽ·å¾—æƒé‡åˆ†é…。 + * @readonly + * @version DragonBones 5.0 + * @language zh_CN + */ + layer: number; + /** + * - The play speed. + * The value is an overlay relationship with {@link dragonBones.Animation#timeScale}. + * [(-N~0): Reverse play, 0: Stop play, (0~1): Slow play, 1: Normal play, (1~N): Fast play] + * @default 1.0 + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ’æ”¾é€Ÿåº¦ã€‚ + * 该å€¼ä¸Ž {@link dragonBones.Animation#timeScale} 是å åŠ å…³ç³»ã€‚ + * [(-N~0): å€’è½¬æ’æ”¾, 0: åœæ¢æ’放, (0~1): æ…¢é€Ÿæ’æ”¾, 1: æ£å¸¸æ’放, (1~N): å¿«é€Ÿæ’æ”¾] + * @default 1.0 + * @version DragonBones 3.0 + * @language zh_CN + */ + timeScale: number; + /** + * - The blend weight. + * @default 1.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ··åˆæƒé‡ã€‚ + * @default 1.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + weight: number; + /** + * - The auto fade out time when the animation state play completed. + * [-1: Do not fade out automatically, [0~N]: The fade out time] (In seconds) + * @default -1.0 + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - åŠ¨ç”»çŠ¶æ€æ’放完æˆåŽçš„自动淡出时间。 + * [-1: ä¸è‡ªåŠ¨æ·¡å‡º, [0~N]: 淡出时间] (以秒为å•ä½ï¼‰ + * @default -1.0 + * @version DragonBones 5.0 + * @language zh_CN + */ + autoFadeOutTime: number; + /** + * @private + */ + fadeTotalTime: number; + /** + * - The name of the animation state. (Can be different from the name of the animation data) + * @readonly + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 动画状æ€å称。 (å¯ä»¥ä¸åŒäºŽåŠ¨ç”»æ•°æ®ï¼‰ + * @readonly + * @version DragonBones 5.0 + * @language zh_CN + */ + name: string; + /** + * - The blend group name of the animation state. + * This property is typically used to specify the substitution of multiple animation states blend. + * @readonly + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - æ··åˆç»„å称。 + * è¯¥å±žæ€§é€šå¸¸ç”¨æ¥æŒ‡å®šå¤šä¸ªåŠ¨ç”»çŠ¶æ€æ··åˆæ—¶çš„相互替æ¢å…³ç³»ã€‚ + * @readonly + * @version DragonBones 5.0 + * @language zh_CN + */ + group: string; + private _timelineDirty; + /** + * - xx: Play Enabled, Fade Play Enabled + * @internal + * @private + */ + _playheadState: number; + /** + * -1: Fade in, 0: Fade complete, 1: Fade out; + * @internal + * @private + */ + _fadeState: number; + /** + * -1: Fade start, 0: Fading, 1: Fade complete; + * @internal + * @private + */ + _subFadeState: number; + /** + * @internal + * @private + */ + _position: number; + /** + * @internal + * @private + */ + _duration: number; + private _fadeTime; + private _time; + /** + * @internal + * @private + */ + _fadeProgress: number; + /** + * @internal + * @private + */ + _weightResult: number; + /** + * @internal + * @private + */ + readonly _blendState: BlendState; + private readonly _boneMask; + private readonly _boneTimelines; + private readonly _surfaceTimelines; + private readonly _slotTimelines; + private readonly _constraintTimelines; + private readonly _animationTimelines; + private readonly _poseTimelines; + private readonly _bonePoses; + /** + * @internal + * @private + */ + _animationData: AnimationData; + private _armature; + /** + * @internal + * @private + */ + _actionTimeline: ActionTimelineState; + private _zOrderTimeline; + /** + * @internal + * @private + */ + _parent: AnimationState; + /** + * @private + */ + protected _onClear(): void; + private _updateTimelines(); + private _updateBoneAndSlotTimelines(); + private _advanceFadeTime(passedTime); + /** + * @internal + * @private + */ + init(armature: Armature, animationData: AnimationData, animationConfig: AnimationConfig): void; + /** + * @internal + * @private + */ + advanceTime(passedTime: number, cacheFrameRate: number): void; + /** + * - Continue play. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - ç»§ç»æ’放。 + * @version DragonBones 3.0 + * @language zh_CN + */ + play(): void; + /** + * - Stop play. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æš‚åœæ’放。 + * @version DragonBones 3.0 + * @language zh_CN + */ + stop(): void; + /** + * - Fade out the animation state. + * @param fadeOutTime - The fade out time. (In seconds) + * @param pausePlayhead - Whether to pause the animation playing when fade out. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 淡出动画状æ€ã€‚ + * @param fadeOutTime - 淡出时间。 (以秒为å•ä½ï¼‰ + * @param pausePlayhead - æ·¡å‡ºæ—¶æ˜¯å¦æš‚åœæ’放。 + * @version DragonBones 3.0 + * @language zh_CN + */ + fadeOut(fadeOutTime: number, pausePlayhead?: boolean): void; + /** + * - Check if a specific bone mask is included. + * @param name - The bone name. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 检查是å¦åŒ…å«ç‰¹å®šéª¨éª¼é®ç½©ã€‚ + * @param name - 骨骼å称。 + * @version DragonBones 3.0 + * @language zh_CN + */ + containsBoneMask(name: string): boolean; + /** + * - Add a specific bone mask. + * @param name - The bone name. + * @param recursive - Whether or not to add a mask to the bone's sub-bone. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ·»åŠ ç‰¹å®šçš„éª¨éª¼é®ç½©ã€‚ + * @param name - 骨骼å称。 + * @param recursive - 是å¦ä¸ºè¯¥éª¨éª¼çš„åéª¨éª¼æ·»åŠ é®ç½©ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + addBoneMask(name: string, recursive?: boolean): void; + /** + * - Remove the mask of a specific bone. + * @param name - The bone name. + * @param recursive - Whether to remove the bone's sub-bone mask. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åˆ é™¤ç‰¹å®šéª¨éª¼çš„é®ç½©ã€‚ + * @param name - 骨骼å称。 + * @param recursive - 是å¦åˆ 除该骨骼的å骨骼é®ç½©ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + removeBoneMask(name: string, recursive?: boolean): void; + /** + * - Remove all bone masks. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - åˆ é™¤æ‰€æœ‰éª¨éª¼é®ç½©ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + removeAllBoneMask(): void; + /** + * - Whether the animation state is fading in. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - æ˜¯å¦æ£åœ¨æ·¡å…¥ã€‚ + * @version DragonBones 5.1 + * @language zh_CN + */ + readonly isFadeIn: boolean; + /** + * - Whether the animation state is fading out. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - æ˜¯å¦æ£åœ¨æ·¡å‡ºã€‚ + * @version DragonBones 5.1 + * @language zh_CN + */ + readonly isFadeOut: boolean; + /** + * - Whether the animation state is fade completed. + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - æ˜¯å¦æ·¡å…¥æˆ–淡出完毕。 + * @version DragonBones 5.1 + * @language zh_CN + */ + readonly isFadeComplete: boolean; + /** + * - Whether the animation state is playing. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ˜¯å¦æ£åœ¨æ’放。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly isPlaying: boolean; + /** + * - Whether the animation state is play completed. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ˜¯å¦æ’放完毕。 + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly isCompleted: boolean; + /** + * - The times has been played. + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - å·²ç»å¾ªçŽ¯æ’æ”¾çš„æ¬¡æ•°ã€‚ + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly currentPlayTimes: number; + /** + * - The total time. (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - æ€»æ’æ”¾æ—¶é—´ã€‚ (以秒为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly totalTime: number; + /** + * - The time is currently playing. (In seconds) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 当剿’放的时间。 (以秒为å•ä½ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + currentTime: number; + /** + * - The animation data. + * @see dragonBones.AnimationData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 动画数æ®ã€‚ + * @see dragonBones.AnimationData + * @version DragonBones 3.0 + * @language zh_CN + */ + readonly animationData: AnimationData; + } + /** + * @internal + * @private + */ + class BonePose extends BaseObject { + static toString(): string; + readonly current: Transform; + readonly delta: Transform; + readonly result: Transform; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + class BlendState { + dirty: boolean; + layer: number; + leftWeight: number; + layerWeight: number; + blendWeight: number; + update(weight: number, layer: number): number; + clear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + const enum TweenState { + None = 0, + Once = 1, + Always = 2, + } + /** + * @internal + * @private + */ + abstract class TimelineState extends BaseObject { + playState: number; + currentPlayTimes: number; + currentTime: number; + protected _tweenState: TweenState; + protected _frameRate: number; + protected _frameValueOffset: number; + protected _frameCount: number; + protected _frameOffset: number; + protected _frameIndex: number; + protected _frameRateR: number; + protected _position: number; + protected _duration: number; + protected _timeScale: number; + protected _timeOffset: number; + protected _dragonBonesData: DragonBonesData; + protected _animationData: AnimationData; + protected _timelineData: TimelineData | null; + protected _armature: Armature; + protected _animationState: AnimationState; + protected _actionTimeline: TimelineState; + protected _frameArray: Array<number> | Int16Array; + protected _frameIntArray: Array<number> | Int16Array; + protected _frameFloatArray: Array<number> | Int16Array; + protected _timelineArray: Array<number> | Uint16Array; + protected _frameIndices: Array<number>; + protected _onClear(): void; + protected abstract _onArriveAtFrame(): void; + protected abstract _onUpdateFrame(): void; + protected _setCurrentTime(passedTime: number): boolean; + init(armature: Armature, animationState: AnimationState, timelineData: TimelineData | null): void; + fadeOut(): void; + update(passedTime: number): void; + } + /** + * @internal + * @private + */ + abstract class TweenTimelineState extends TimelineState { + private static _getEasingValue(tweenType, progress, easing); + private static _getEasingCurveValue(progress, samples, count, offset); + protected _tweenType: TweenType; + protected _curveCount: number; + protected _framePosition: number; + protected _frameDurationR: number; + protected _tweenProgress: number; + protected _tweenEasing: number; + protected _onClear(): void; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + } + /** + * @internal + * @private + */ + abstract class BoneTimelineState extends TweenTimelineState { + bone: Bone; + bonePose: BonePose; + protected _onClear(): void; + blend(state: number): void; + } + /** + * @internal + * @private + */ + abstract class SlotTimelineState extends TweenTimelineState { + slot: Slot; + protected _onClear(): void; + } + /** + * @internal + * @private + */ + abstract class ConstraintTimelineState extends TweenTimelineState { + constraint: Constraint; + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + class ActionTimelineState extends TimelineState { + static toString(): string; + private _onCrossFrame(frameIndex); + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + update(passedTime: number): void; + setCurrentTime(value: number): void; + } + /** + * @internal + * @private + */ + class ZOrderTimelineState extends TimelineState { + static toString(): string; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + } + /** + * @internal + * @private + */ + class BoneAllTimelineState extends BoneTimelineState { + static toString(): string; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + fadeOut(): void; + } + /** + * @internal + * @private + */ + class BoneTranslateTimelineState extends BoneTimelineState { + static toString(): string; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + } + /** + * @internal + * @private + */ + class BoneRotateTimelineState extends BoneTimelineState { + static toString(): string; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + fadeOut(): void; + } + /** + * @internal + * @private + */ + class BoneScaleTimelineState extends BoneTimelineState { + static toString(): string; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + } + /** + * @internal + * @private + */ + class SurfaceTimelineState extends TweenTimelineState { + static toString(): string; + surface: Surface; + private _frameFloatOffset; + private _valueCount; + private _deformCount; + private _valueOffset; + private readonly _current; + private readonly _delta; + private readonly _result; + protected _onClear(): void; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + init(armature: Armature, animationState: AnimationState, timelineData: TimelineData | null): void; + blend(state: number): void; + } + /** + * @internal + * @private + */ + class SlotDislayTimelineState extends SlotTimelineState { + static toString(): string; + protected _onArriveAtFrame(): void; + } + /** + * @internal + * @private + */ + class SlotColorTimelineState extends SlotTimelineState { + static toString(): string; + private _dirty; + private readonly _current; + private readonly _delta; + private readonly _result; + protected _onClear(): void; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + fadeOut(): void; + update(passedTime: number): void; + } + /** + * @internal + * @private + */ + class SlotFFDTimelineState extends SlotTimelineState { + static toString(): string; + meshOffset: number; + private _dirty; + private _frameFloatOffset; + private _valueCount; + private _deformCount; + private _valueOffset; + private readonly _current; + private readonly _delta; + private readonly _result; + protected _onClear(): void; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + init(armature: Armature, animationState: AnimationState, timelineData: TimelineData | null): void; + fadeOut(): void; + update(passedTime: number): void; + } + /** + * @internal + * @private + */ + class IKConstraintTimelineState extends ConstraintTimelineState { + static toString(): string; + private _current; + private _delta; + protected _onClear(): void; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + } + /** + * @internal + * @private + */ + class AnimationTimelineState extends TweenTimelineState { + static toString(): string; + animationState: AnimationState; + private readonly _floats; + protected _onClear(): void; + protected _onArriveAtFrame(): void; + protected _onUpdateFrame(): void; + blend(state: number): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - The properties of the object carry basic information about an event, + * which are passed as parameter or parameter's parameter to event listeners when an event occurs. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - äº‹ä»¶å¯¹è±¡ï¼ŒåŒ…å«æœ‰å…³äº‹ä»¶çš„基本信æ¯ï¼Œå½“å‘ç”Ÿäº‹ä»¶æ—¶ï¼Œè¯¥å®žä¾‹å°†ä½œä¸ºå‚æ•°æˆ–傿•°çš„傿•°ä¼ 递给事件侦å¬å™¨ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + class EventObject extends BaseObject { + /** + * - Animation start play. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åŠ¨ç”»å¼€å§‹æ’æ”¾ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly START: string; + /** + * - Animation loop play complete once. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åŠ¨ç”»å¾ªçŽ¯æ’æ”¾å®Œæˆä¸€æ¬¡ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly LOOP_COMPLETE: string; + /** + * - Animation play complete. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åŠ¨ç”»æ’æ”¾å®Œæˆã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly COMPLETE: string; + /** + * - Animation fade in start. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画淡入开始。 + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly FADE_IN: string; + /** + * - Animation fade in complete. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画淡入完æˆã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly FADE_IN_COMPLETE: string; + /** + * - Animation fade out start. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画淡出开始。 + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly FADE_OUT: string; + /** + * - Animation fade out complete. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画淡出完æˆã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly FADE_OUT_COMPLETE: string; + /** + * - Animation frame event. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画帧事件。 + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly FRAME_EVENT: string; + /** + * - Animation frame sound event. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 动画帧声音事件。 + * @version DragonBones 4.5 + * @language zh_CN + */ + static readonly SOUND_EVENT: string; + static toString(): string; + /** + * - If is a frame event, the value is used to describe the time that the event was in the animation timeline. (In seconds) + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 如果是帧事件,æ¤å€¼ç”¨æ¥æè¿°è¯¥äº‹ä»¶åœ¨åŠ¨ç”»æ—¶é—´è½´ä¸æ‰€å¤„的时间。(以秒为å•ä½ï¼‰ + * @version DragonBones 4.5 + * @language zh_CN + */ + time: number; + /** + * - The event type。 + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 事件类型。 + * @version DragonBones 4.5 + * @language zh_CN + */ + type: EventStringType; + /** + * - The event name. (The frame event name or the frame sound name) + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 事件å称。 (帧事件的å称或帧声音的åç§°) + * @version DragonBones 4.5 + * @language zh_CN + */ + name: string; + /** + * - The armature that dispatch the event. + * @see dragonBones.Armature + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - å‘出该事件的骨架。 + * @see dragonBones.Armature + * @version DragonBones 4.5 + * @language zh_CN + */ + armature: Armature; + /** + * - The bone that dispatch the event. + * @see dragonBones.Bone + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - å‘出该事件的骨骼。 + * @see dragonBones.Bone + * @version DragonBones 4.5 + * @language zh_CN + */ + bone: Bone | null; + /** + * - The slot that dispatch the event. + * @see dragonBones.Slot + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - å‘å‡ºè¯¥äº‹ä»¶çš„æ’æ§½ã€‚ + * @see dragonBones.Slot + * @version DragonBones 4.5 + * @language zh_CN + */ + slot: Slot | null; + /** + * - The animation state that dispatch the event. + * @see dragonBones.AnimationState + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - å‘出该事件的动画状æ€ã€‚ + * @see dragonBones.AnimationState + * @version DragonBones 4.5 + * @language zh_CN + */ + animationState: AnimationState; + /** + * - The custom data. + * @see dragonBones.CustomData + * @version DragonBones 5.0 + * @language en_US + */ + /** + * - 自定义数æ®ã€‚ + * @see dragonBones.CustomData + * @version DragonBones 5.0 + * @language zh_CN + */ + data: UserData | null; + /** + * @private + */ + protected _onClear(): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @private + */ + type EventStringType = string | "start" | "loopComplete" | "complete" | "fadeIn" | "fadeInComplete" | "fadeOut" | "fadeOutComplete" | "frameEvent" | "soundEvent"; + /** + * - The event dispatcher interface. + * Dragonbones event dispatch usually relies on docking engine to implement, which defines the event method to be implemented when docking the engine. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - äº‹ä»¶æ´¾å‘æŽ¥å£ã€‚ + * DragonBones 的事件派å‘通常ä¾èµ–于对接的引擎æ¥å®žçŽ°ï¼Œè¯¥æŽ¥å£å®šä¹‰äº†å¯¹æŽ¥å¼•擎时需è¦å®žçŽ°çš„äº‹ä»¶æ–¹æ³•ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + interface IEventDispatcher { + /** + * - Checks whether the object has any listeners registered for a specific type of event。 + * @param type - Event type. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 检查是å¦ä¸ºç‰¹å®šçš„事件类型注册了任何侦å¬å™¨ã€‚ + * @param type - 事件类型。 + * @version DragonBones 4.5 + * @language zh_CN + */ + hasDBEventListener(type: EventStringType): boolean; + /** + * - Dispatches an event into the event flow. + * @param type - Event type. + * @param eventObject - Event object. + * @see dragonBones.EventObject + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 分派特定的事件到事件æµä¸ã€‚ + * @param type - 事件类型。 + * @param eventObject - 事件数æ®ã€‚ + * @see dragonBones.EventObject + * @version DragonBones 4.5 + * @language zh_CN + */ + dispatchDBEvent(type: EventStringType, eventObject: EventObject): void; + /** + * - Add an event listener object so that the listener receives notification of an event. + * @param type - Event type. + * @param listener - Event listener. + * @param thisObject - The listener function's "this". + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - æ·»åŠ ç‰¹å®šäº‹ä»¶ç±»åž‹çš„äº‹ä»¶ä¾¦å¬å™¨ï¼Œä»¥ä½¿ä¾¦å¬å™¨èƒ½å¤ŸæŽ¥æ”¶äº‹ä»¶é€šçŸ¥ã€‚ + * @param type - 事件类型。 + * @param listener - 事件侦å¬å™¨ã€‚ + * @param thisObject - 侦å¬å‡½æ•°ç»‘定的 this 对象。 + * @version DragonBones 4.5 + * @language zh_CN + */ + addDBEventListener(type: EventStringType, listener: Function, thisObject: any): void; + /** + * - Removes a listener from the object. + * @param type - Event type. + * @param listener - Event listener. + * @param thisObject - The listener function's "this". + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - åˆ é™¤ç‰¹å®šäº‹ä»¶ç±»åž‹çš„ä¾¦å¬å™¨ã€‚ + * @param type - 事件类型。 + * @param listener - 事件侦å¬å™¨ã€‚ + * @param thisObject - 侦å¬å‡½æ•°ç»‘定的 this 对象。 + * @version DragonBones 4.5 + * @language zh_CN + */ + removeDBEventListener(type: EventStringType, listener: Function, thisObject: any): void; + /** + * - Deprecated, please refer to {@link #hasDBEventListener()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #hasDBEventListener()}。 + * @deprecated + * @language zh_CN + */ + hasEvent(type: EventStringType): boolean; + /** + * - Deprecated, please refer to {@link #addDBEventListener()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #addDBEventListener()}。 + * @deprecated + * @language zh_CN + */ + addEvent(type: EventStringType, listener: Function, thisObject: any): void; + /** + * - Deprecated, please refer to {@link #removeDBEventListener()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #removeDBEventListener()}。 + * @deprecated + * @language zh_CN + */ + removeEvent(type: EventStringType, listener: Function, thisObject: any): void; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + abstract class DataParser { + protected static readonly DATA_VERSION_2_3: string; + protected static readonly DATA_VERSION_3_0: string; + protected static readonly DATA_VERSION_4_0: string; + protected static readonly DATA_VERSION_4_5: string; + protected static readonly DATA_VERSION_5_0: string; + protected static readonly DATA_VERSION_5_5: string; + protected static readonly DATA_VERSION: string; + protected static readonly DATA_VERSIONS: Array<string>; + protected static readonly TEXTURE_ATLAS: string; + protected static readonly SUB_TEXTURE: string; + protected static readonly FORMAT: string; + protected static readonly IMAGE_PATH: string; + protected static readonly WIDTH: string; + protected static readonly HEIGHT: string; + protected static readonly ROTATED: string; + protected static readonly FRAME_X: string; + protected static readonly FRAME_Y: string; + protected static readonly FRAME_WIDTH: string; + protected static readonly FRAME_HEIGHT: string; + protected static readonly DRADON_BONES: string; + protected static readonly USER_DATA: string; + protected static readonly ARMATURE: string; + protected static readonly BONE: string; + protected static readonly SURFACE: string; + protected static readonly SLOT: string; + protected static readonly CONSTRAINT: string; + protected static readonly IK: string; + protected static readonly SKIN: string; + protected static readonly DISPLAY: string; + protected static readonly ANIMATION: string; + protected static readonly Z_ORDER: string; + protected static readonly FFD: string; + protected static readonly FRAME: string; + protected static readonly TRANSLATE_FRAME: string; + protected static readonly ROTATE_FRAME: string; + protected static readonly SCALE_FRAME: string; + protected static readonly DISPLAY_FRAME: string; + protected static readonly COLOR_FRAME: string; + protected static readonly DEFAULT_ACTIONS: string; + protected static readonly ACTIONS: string; + protected static readonly EVENTS: string; + protected static readonly INTS: string; + protected static readonly FLOATS: string; + protected static readonly STRINGS: string; + protected static readonly CANVAS: string; + protected static readonly TRANSFORM: string; + protected static readonly PIVOT: string; + protected static readonly AABB: string; + protected static readonly COLOR: string; + protected static readonly VERSION: string; + protected static readonly COMPATIBLE_VERSION: string; + protected static readonly FRAME_RATE: string; + protected static readonly TYPE: string; + protected static readonly SUB_TYPE: string; + protected static readonly NAME: string; + protected static readonly PARENT: string; + protected static readonly TARGET: string; + protected static readonly STAGE: string; + protected static readonly SHARE: string; + protected static readonly PATH: string; + protected static readonly LENGTH: string; + protected static readonly DISPLAY_INDEX: string; + protected static readonly BLEND_MODE: string; + protected static readonly INHERIT_TRANSLATION: string; + protected static readonly INHERIT_ROTATION: string; + protected static readonly INHERIT_SCALE: string; + protected static readonly INHERIT_REFLECTION: string; + protected static readonly INHERIT_ANIMATION: string; + protected static readonly INHERIT_DEFORM: string; + protected static readonly SEGMENT_X: string; + protected static readonly SEGMENT_Y: string; + protected static readonly BEND_POSITIVE: string; + protected static readonly CHAIN: string; + protected static readonly WEIGHT: string; + protected static readonly FADE_IN_TIME: string; + protected static readonly PLAY_TIMES: string; + protected static readonly SCALE: string; + protected static readonly OFFSET: string; + protected static readonly POSITION: string; + protected static readonly DURATION: string; + protected static readonly TWEEN_EASING: string; + protected static readonly TWEEN_ROTATE: string; + protected static readonly TWEEN_SCALE: string; + protected static readonly CLOCK_WISE: string; + protected static readonly CURVE: string; + protected static readonly SOUND: string; + protected static readonly EVENT: string; + protected static readonly ACTION: string; + protected static readonly X: string; + protected static readonly Y: string; + protected static readonly SKEW_X: string; + protected static readonly SKEW_Y: string; + protected static readonly SCALE_X: string; + protected static readonly SCALE_Y: string; + protected static readonly VALUE: string; + protected static readonly ROTATE: string; + protected static readonly SKEW: string; + protected static readonly ALPHA_OFFSET: string; + protected static readonly RED_OFFSET: string; + protected static readonly GREEN_OFFSET: string; + protected static readonly BLUE_OFFSET: string; + protected static readonly ALPHA_MULTIPLIER: string; + protected static readonly RED_MULTIPLIER: string; + protected static readonly GREEN_MULTIPLIER: string; + protected static readonly BLUE_MULTIPLIER: string; + protected static readonly UVS: string; + protected static readonly VERTICES: string; + protected static readonly TRIANGLES: string; + protected static readonly WEIGHTS: string; + protected static readonly SLOT_POSE: string; + protected static readonly BONE_POSE: string; + protected static readonly GLUE_WEIGHTS: string; + protected static readonly GLUE_MESHES: string; + protected static readonly GOTO_AND_PLAY: string; + protected static readonly DEFAULT_NAME: string; + protected static _getArmatureType(value: string): ArmatureType; + protected static _getBoneType(value: string): BoneType; + protected static _getDisplayType(value: string): DisplayType; + protected static _getBoundingBoxType(value: string): BoundingBoxType; + protected static _getActionType(value: string): ActionType; + protected static _getBlendMode(value: string): BlendMode; + abstract parseDragonBonesData(rawData: any, scale: number): DragonBonesData | null; + abstract parseTextureAtlasData(rawData: any, textureAtlasData: TextureAtlasData, scale: number): boolean; + /** + * - Deprecated, please refer to {@link dragonBones.BaseFactory#parsetTextureAtlasData()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.BaseFactory#parsetTextureAtlasData()}。 + * @deprecated + * @language zh_CN + */ + static parseDragonBonesData(rawData: any): DragonBonesData | null; + /** + * - Deprecated, please refer to {@link dragonBones.BaseFactory#parsetTextureAtlasData()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.BaseFactory#parsetTextureAtlasData()}。 + * @deprecated + * @language zh_CN + */ + static parseTextureAtlasData(rawData: any, scale?: number): any; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + class ObjectDataParser extends DataParser { + protected static _getBoolean(rawData: any, key: string, defaultValue: boolean): boolean; + protected static _getNumber(rawData: any, key: string, defaultValue: number): number; + protected static _getString(rawData: any, key: string, defaultValue: string): string; + protected _rawTextureAtlasIndex: number; + protected readonly _rawBones: Array<BoneData>; + protected _data: DragonBonesData; + protected _armature: ArmatureData; + protected _bone: BoneData; + protected _surface: SurfaceData; + protected _slot: SlotData; + protected _skin: SkinData; + protected _mesh: MeshDisplayData; + protected _animation: AnimationData; + protected _timeline: TimelineData; + protected _rawTextureAtlases: Array<any> | null; + private _defaultColorOffset; + private _prevClockwise; + private _prevRotation; + private readonly _helpMatrixA; + private readonly _helpMatrixB; + private readonly _helpTransform; + private readonly _helpColorTransform; + private readonly _helpPoint; + private readonly _helpArray; + private readonly _intArray; + private readonly _floatArray; + private readonly _frameIntArray; + private readonly _frameFloatArray; + private readonly _frameArray; + private readonly _timelineArray; + private readonly _cacheRawMeshes; + private readonly _cacheMeshes; + private readonly _actionFrames; + private readonly _weightSlotPose; + private readonly _weightBonePoses; + private readonly _cacheBones; + private readonly _slotChildActions; + private _getCurvePoint(x1, y1, x2, y2, x3, y3, x4, y4, t, result); + private _samplingEasingCurve(curve, samples); + private _parseActionDataInFrame(rawData, frameStart, bone, slot); + private _mergeActionFrame(rawData, frameStart, type, bone, slot); + protected _parseArmature(rawData: any, scale: number): ArmatureData; + protected _parseBone(rawData: any): BoneData; + protected _parseIKConstraint(rawData: any): ConstraintData | null; + protected _parseSlot(rawData: any, zOrder: number): SlotData; + protected _parseSkin(rawData: any): SkinData; + protected _parseDisplay(rawData: any): DisplayData | null; + protected _parsePivot(rawData: any, display: ImageDisplayData): void; + protected _parseMesh(rawData: any, mesh: MeshDisplayData): void; + protected _parseMeshGlue(rawData: any, mesh: MeshDisplayData): void; + protected _parseBoundingBox(rawData: any): BoundingBoxData | null; + protected _parsePolygonBoundingBox(rawData: any): PolygonBoundingBoxData; + protected _parseAnimation(rawData: any): AnimationData; + protected _parseTimeline(rawData: any, rawFrames: Array<any> | null, framesKey: string, type: TimelineType, addIntOffset: boolean, addFloatOffset: boolean, frameValueCount: number, frameParser: (rawData: any, frameStart: number, frameCount: number) => number): TimelineData | null; + protected _parseBoneTimeline(rawData: any): void; + protected _parseSlotTimeline(rawData: any): void; + protected _parseFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseTweenFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseActionFrame(frame: ActionFrame, frameStart: number, frameCount: number): number; + protected _parseZOrderFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseBoneAllFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseBoneTranslateFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseBoneRotateFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseBoneScaleFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseSurfaceFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseSlotDisplayFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseSlotColorFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseSlotFFDFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseIKConstraintFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseAnimationFrame(rawData: any, frameStart: number, frameCount: number): number; + protected _parseActionData(rawData: any, type: ActionType, bone: BoneData | null, slot: SlotData | null): Array<ActionData>; + protected _parseTransform(rawData: any, transform: Transform, scale: number): void; + protected _parseColorTransform(rawData: any, color: ColorTransform): void; + protected _parseArray(rawData: any): void; + protected _modifyArray(): void; + parseDragonBonesData(rawData: any, scale?: number): DragonBonesData | null; + parseTextureAtlasData(rawData: any, textureAtlasData: TextureAtlasData, scale?: number): boolean; + private static _objectDataParserInstance; + /** + * - Deprecated, please refer to {@link dragonBones.BaseFactory#parseDragonBonesData()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.BaseFactory#parseDragonBonesData()}。 + * @deprecated + * @language zh_CN + */ + static getInstance(): ObjectDataParser; + } + /** + * @internal + * @private + */ + class ActionFrame { + frameStart: number; + readonly actions: Array<number>; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * @internal + * @private + */ + class BinaryDataParser extends ObjectDataParser { + private _binaryOffset; + private _binary; + private _intArrayBuffer; + private _floatArrayBuffer; + private _frameIntArrayBuffer; + private _frameFloatArrayBuffer; + private _frameArrayBuffer; + private _timelineArrayBuffer; + private _inRange(a, min, max); + private _decodeUTF8(data); + private _getUTF16Key(value); + private _parseBinaryTimeline(type, offset, timelineData?); + protected _parseMesh(rawData: any, mesh: MeshDisplayData): void; + protected _parseAnimation(rawData: any): AnimationData; + protected _parseArray(rawData: any): void; + parseDragonBonesData(rawData: any, scale?: number): DragonBonesData | null; + private static _binaryDataParserInstance; + /** + * - Deprecated, please refer to {@link dragonBones.BaseFactory#parseDragonBonesData()}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link dragonBones.BaseFactory#parseDragonBonesData()}。 + * @deprecated + * @language zh_CN + */ + static getInstance(): BinaryDataParser; + } +} +/** + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 DragonBones team and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +declare namespace dragonBones { + /** + * - Base class for the factory that create the armatures. (Typically only one global factory instance is required) + * The factory instance create armatures by parsed and added DragonBonesData instances and TextureAtlasData instances. + * Once the data has been parsed, it has been cached in the factory instance and does not need to be parsed again until it is cleared by the factory instance. + * @see dragonBones.DragonBonesData + * @see dragonBones.TextureAtlasData + * @see dragonBones.ArmatureData + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 创建骨架的工厂基类。 (通常åªéœ€è¦ä¸€ä¸ªå…¨å±€å·¥åŽ‚å®žä¾‹ï¼‰ + * 工厂通过解æžå¹¶æ·»åŠ çš„ DragonBonesData 实例和 TextureAtlasData 实例æ¥åˆ›å»ºéª¨æž¶ã€‚ + * 当数æ®è¢«è§£æžè¿‡ä¹‹åŽï¼Œå·²ç»æ·»åŠ åˆ°å·¥åŽ‚ä¸ï¼Œåœ¨æ²¡æœ‰è¢«å·¥åŽ‚æ¸…ç†ä¹‹å‰ï¼Œä¸éœ€è¦å†æ¬¡è§£æžã€‚ + * @see dragonBones.DragonBonesData + * @see dragonBones.TextureAtlasData + * @see dragonBones.ArmatureData + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language zh_CN + */ + abstract class BaseFactory { + /** + * @private + */ + protected static _objectParser: ObjectDataParser; + /** + * @private + */ + protected static _binaryParser: BinaryDataParser; + /** + * @private + */ + autoSearch: boolean; + /** + * @private + */ + protected readonly _dragonBonesDataMap: Map<DragonBonesData>; + /** + * @private + */ + protected readonly _textureAtlasDataMap: Map<Array<TextureAtlasData>>; + /** + * @private + */ + protected _dragonBones: DragonBones; + /** + * @private + */ + protected _dataParser: DataParser; + /** + * - Create a factory instance. (typically only one global factory instance is required) + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 创建一个工厂实例。 (通常åªéœ€è¦ä¸€ä¸ªå…¨å±€å·¥åŽ‚å®žä¾‹ï¼‰ + * @version DragonBones 3.0 + * @language zh_CN + */ + constructor(dataParser?: DataParser | null); + /** + * @private + */ + protected _isSupportMesh(): boolean; + /** + * @private + */ + protected _getTextureData(textureAtlasName: string, textureName: string): TextureData | null; + /** + * @private + */ + protected _fillBuildArmaturePackage(dataPackage: BuildArmaturePackage, dragonBonesName: string, armatureName: string, skinName: string, textureAtlasName: string): boolean; + /** + * @private + */ + protected _buildBones(dataPackage: BuildArmaturePackage, armature: Armature): void; + /** + * @private + */ + protected _buildSlots(dataPackage: BuildArmaturePackage, armature: Armature): void; + /** + * @private + */ + protected _buildChildArmature(dataPackage: BuildArmaturePackage | null, slot: Slot, displayData: DisplayData): Armature | null; + /** + * @private + */ + protected _getSlotDisplay(dataPackage: BuildArmaturePackage | null, displayData: DisplayData, rawDisplayData: DisplayData | null, slot: Slot): any; + /** + * @private + */ + protected abstract _buildTextureAtlasData(textureAtlasData: TextureAtlasData | null, textureAtlas: any): TextureAtlasData; + /** + * @private + */ + protected abstract _buildArmature(dataPackage: BuildArmaturePackage): Armature; + /** + * @private + */ + protected abstract _buildSlot(dataPackage: BuildArmaturePackage, slotData: SlotData, displays: Array<DisplayData | null> | null, armature: Armature): Slot; + /** + * - Parse the raw data to a DragonBonesData instance and cache it to the factory. + * @param rawData - The raw data. + * @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (If not set, use the instance name instead) + * @param scale - Specify a scaling value for all armatures. (Default: 1.0) + * @returns DragonBonesData instance + * @see #getDragonBonesData() + * @see #addDragonBonesData() + * @see #removeDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 将原始数æ®è§£æžä¸º DragonBonesData 实例,并缓å˜åˆ°å·¥åŽ‚ä¸ã€‚ + * @param rawData - 原始数æ®ã€‚ + * @param name - 为该实例指定一个缓å˜å称,以便å¯ä»¥é€šè¿‡æ¤å称获å–该实例。 (如果未设置,则使用该实例ä¸çš„å称) + * @param scale - 为所有的骨架指定一个缩放值。 (默认: 1.0) + * @returns DragonBonesData 实例 + * @see #getDragonBonesData() + * @see #addDragonBonesData() + * @see #removeDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 4.5 + * @language zh_CN + */ + parseDragonBonesData(rawData: any, name?: string | null, scale?: number): DragonBonesData | null; + /** + * - Parse the raw texture atlas data and the texture atlas object to a TextureAtlasData instance and cache it to the factory. + * @param rawData - The raw texture atlas data. + * @param textureAtlas - The texture atlas object. + * @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (If not set, use the instance name instead) + * @param scale - Specify a scaling value for the map set. (Default: 1.0) + * @returns TextureAtlasData instance + * @see #getTextureAtlasData() + * @see #addTextureAtlasData() + * @see #removeTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 将原始贴图集数æ®å’Œè´´å›¾é›†å¯¹è±¡è§£æžä¸º TextureAtlasData 实例,并缓å˜åˆ°å·¥åŽ‚ä¸ã€‚ + * @param rawData - 原始贴图集数æ®ã€‚ + * @param textureAtlas - 贴图集对象。 + * @param name - 为该实例指定一个缓å˜å称,以便å¯ä»¥é€šè¿‡æ¤å称获å–该实例。 (如果未设置,则使用该实例ä¸çš„å称) + * @param scale - 为贴图集指定一个缩放值。 (默认: 1.0) + * @returns TextureAtlasData 实例 + * @see #getTextureAtlasData() + * @see #addTextureAtlasData() + * @see #removeTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 4.5 + * @language zh_CN + */ + parseTextureAtlasData(rawData: any, textureAtlas: any, name?: string | null, scale?: number): TextureAtlasData; + /** + * @private + */ + updateTextureAtlasData(name: string, textureAtlases: Array<any>): void; + /** + * - Get a specific DragonBonesData instance. + * @param name - The DragonBonesData instance cache name. + * @returns DragonBonesData instance + * @see #parseDragonBonesData() + * @see #addDragonBonesData() + * @see #removeDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定的 DragonBonesData 实例。 + * @param name - DragonBonesData 实例的缓å˜å称。 + * @returns DragonBonesData 实例 + * @see #parseDragonBonesData() + * @see #addDragonBonesData() + * @see #removeDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 3.0 + * @language zh_CN + */ + getDragonBonesData(name: string): DragonBonesData | null; + /** + * - Cache a DragonBonesData instance to the factory. + * @param data - The DragonBonesData instance. + * @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (if not set, use the instance name instead) + * @see #parseDragonBonesData() + * @see #getDragonBonesData() + * @see #removeDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - å°† DragonBonesData 实例缓å˜åˆ°å·¥åŽ‚ä¸ã€‚ + * @param data - DragonBonesData 实例。 + * @param name - 为该实例指定一个缓å˜å称,以便å¯ä»¥é€šè¿‡æ¤å称获å–该实例。 (如果未设置,则使用该实例ä¸çš„å称) + * @see #parseDragonBonesData() + * @see #getDragonBonesData() + * @see #removeDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 3.0 + * @language zh_CN + */ + addDragonBonesData(data: DragonBonesData, name?: string | null): void; + /** + * - Remove a DragonBonesData instance. + * @param name - The DragonBonesData instance cache name. + * @param disposeData - Whether to dispose data. (Default: true) + * @see #parseDragonBonesData() + * @see #getDragonBonesData() + * @see #addDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 移除 DragonBonesData 实例。 + * @param name - DragonBonesData 实例缓å˜å称。 + * @param disposeData - 是å¦é‡Šæ”¾æ•°æ®ã€‚ (默认: true) + * @see #parseDragonBonesData() + * @see #getDragonBonesData() + * @see #addDragonBonesData() + * @see dragonBones.DragonBonesData + * @version DragonBones 3.0 + * @language zh_CN + */ + removeDragonBonesData(name: string, disposeData?: boolean): void; + /** + * - Get a list of specific TextureAtlasData instances. + * @param name - The TextureAtlasData cahce name. + * @see #parseTextureAtlasData() + * @see #addTextureAtlasData() + * @see #removeTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 获å–特定的 TextureAtlasData 实例列表。 + * @param name - TextureAtlasData 实例缓å˜å称。 + * @see #parseTextureAtlasData() + * @see #addTextureAtlasData() + * @see #removeTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 3.0 + * @language zh_CN + */ + getTextureAtlasData(name: string): Array<TextureAtlasData> | null; + /** + * - Cache a TextureAtlasData instance to the factory. + * @param data - The TextureAtlasData instance. + * @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (if not set, use the instance name instead) + * @see #parseTextureAtlasData() + * @see #getTextureAtlasData() + * @see #removeTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - å°† TextureAtlasData 实例缓å˜åˆ°å·¥åŽ‚ä¸ã€‚ + * @param data - TextureAtlasData 实例。 + * @param name - 为该实例指定一个缓å˜å称,以便å¯ä»¥é€šè¿‡æ¤å称获å–该实例。 (如果未设置,则使用该实例ä¸çš„å称) + * @see #parseTextureAtlasData() + * @see #getTextureAtlasData() + * @see #removeTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 3.0 + * @language zh_CN + */ + addTextureAtlasData(data: TextureAtlasData, name?: string | null): void; + /** + * - Remove a TextureAtlasData instance. + * @param name - The TextureAtlasData instance cache name. + * @param disposeData - Whether to dispose data. + * @see #parseTextureAtlasData() + * @see #getTextureAtlasData() + * @see #addTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 移除 TextureAtlasData 实例。 + * @param name - TextureAtlasData 实例的缓å˜å称。 + * @param disposeData - 是å¦é‡Šæ”¾æ•°æ®ã€‚ + * @see #parseTextureAtlasData() + * @see #getTextureAtlasData() + * @see #addTextureAtlasData() + * @see dragonBones.TextureAtlasData + * @version DragonBones 3.0 + * @language zh_CN + */ + removeTextureAtlasData(name: string, disposeData?: boolean): void; + /** + * - Get a specific armature data. + * @param name - The armature data name. + * @param dragonBonesName - The cached name for DragonbonesData instance. + * @see dragonBones.ArmatureData + * @version DragonBones 5.1 + * @language en_US + */ + /** + * - 获å–特定的骨架数æ®ã€‚ + * @param name - 骨架数æ®å称。 + * @param dragonBonesName - DragonBonesData 实例的缓å˜å称。 + * @see dragonBones.ArmatureData + * @version DragonBones 5.1 + * @language zh_CN + */ + getArmatureData(name: string, dragonBonesName?: string): ArmatureData | null; + /** + * - Clear all cached DragonBonesData instances and TextureAtlasData instances. + * @param disposeData - Whether to dispose data. + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - 清除缓å˜çš„æ‰€æœ‰ DragonBonesData 实例和 TextureAtlasData 实例。 + * @param disposeData - 是å¦é‡Šæ”¾æ•°æ®ã€‚ + * @version DragonBones 4.5 + * @language zh_CN + */ + clear(disposeData?: boolean): void; + /** + * - Create a armature from cached DragonBonesData instances and TextureAtlasData instances. + * @param armatureName - The armature data name. + * @param dragonBonesName - The cached name of the DragonBonesData instance. (If not set, all DragonBonesData instances are retrieved, and when multiple DragonBonesData instances contain a the same name armature data, it may not be possible to accurately create a specific armature) + * @param skinName - The skin name, you can set a different ArmatureData name to share it's skin data. (If not set, use the default skin data) + * @returns The armature. + * @example + * <pre> + * let armature = factory.buildArmature("armatureName", "dragonBonesName"); + * armature.clock = factory.clock; + * </pre> + * @see dragonBones.DragonBonesData + * @see dragonBones.ArmatureData + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language en_US + */ + /** + * - 通过缓å˜çš„ DragonBonesData 实例和 TextureAtlasData 实例创建一个骨架。 + * @param armatureName - 骨架数æ®å称。 + * @param dragonBonesName - DragonBonesData 实例的缓å˜å称。 (如果未设置,将检索所有的 DragonBonesData 实例,当多个 DragonBonesData 实例ä¸åŒ…å«åŒåçš„éª¨æž¶æ•°æ®æ—¶ï¼Œå¯èƒ½æ— 法准确的创建出特定的骨架) + * @param skinName - 皮肤å称,å¯ä»¥è®¾ç½®ä¸€ä¸ªå…¶ä»–骨架数æ®åç§°æ¥å…±äº«å…¶çš®è‚¤æ•°æ®ï¼ˆå¦‚果未设置,则使用默认的皮肤数æ®ï¼‰ã€‚ + * @returns 骨架。 + * @example + * <pre> + * let armature = factory.buildArmature("armatureName", "dragonBonesName"); + * armature.clock = factory.clock; + * </pre> + * @see dragonBones.DragonBonesData + * @see dragonBones.ArmatureData + * @see dragonBones.Armature + * @version DragonBones 3.0 + * @language zh_CN + */ + buildArmature(armatureName: string, dragonBonesName?: string, skinName?: string, textureAtlasName?: string): Armature | null; + /** + * @private + */ + replaceDisplay(slot: Slot, displayData: DisplayData, displayIndex?: number): void; + /** + * - Replaces the current display data for a particular slot with a specific display data. + * Specify display data with "dragonBonesName/armatureName/slotName/displayName". + * @param dragonBonesName - The DragonBonesData instance cache name. + * @param armatureName - The armature data name. + * @param slotName - The slot data name. + * @param displayName - The display data name. + * @param slot - The slot. + * @param displayIndex - The index of the display data that is replaced. (If it is not set, replaces the current display data) + * @example + * <pre> + * let slot = armature.getSlot("weapon"); + * factory.replaceSlotDisplay("dragonBonesName", "armatureName", "slotName", "displayName", slot); + * </pre> + * @version DragonBones 4.5 + * @language en_US + */ + /** + * - ç”¨ç‰¹å®šçš„æ˜¾ç¤ºå¯¹è±¡æ•°æ®æ›¿æ¢ç‰¹å®šæ’槽当å‰çš„æ˜¾ç¤ºå¯¹è±¡æ•°æ®ã€‚ + * 用 "dragonBonesName/armatureName/slotName/displayName" 指定显示对象数æ®ã€‚ + * @param dragonBonesName - DragonBonesData 实例的缓å˜å称。 + * @param armatureName - 骨架数æ®å称。 + * @param slotName - æ’æ§½æ•°æ®å称。 + * @param displayName - 显示对象数æ®å称。 + * @param slot - æ’æ§½ã€‚ + * @param displayIndex - 被替æ¢çš„æ˜¾ç¤ºå¯¹è±¡æ•°æ®çš„索引。 (如果未设置,则替æ¢å½“å‰çš„æ˜¾ç¤ºå¯¹è±¡æ•°æ®ï¼‰ + * @example + * <pre> + * let slot = armature.getSlot("weapon"); + * factory.replaceSlotDisplay("dragonBonesName", "armatureName", "slotName", "displayName", slot); + * </pre> + * @version DragonBones 4.5 + * @language zh_CN + */ + replaceSlotDisplay(dragonBonesName: string, armatureName: string, slotName: string, displayName: string, slot: Slot, displayIndex?: number): boolean; + /** + * @private + */ + replaceSlotDisplayList(dragonBonesName: string | null, armatureName: string, slotName: string, slot: Slot): boolean; + /** + * - Share specific skin data with specific armature. + * @param armature - The armature. + * @param skin - The skin data. + * @param isOverride - Whether it completely override the original skin. (Default: false) + * @param exclude - A list of slot names that do not need to be replace. + * @example + * <pre> + * let armatureA = factory.buildArmature("armatureA", "dragonBonesA"); + * let armatureDataB = factory.getArmatureData("armatureB", "dragonBonesB"); + * if (armatureDataB && armatureDataB.defaultSkin) { + * factory.replaceSkin(armatureA, armatureDataB.defaultSkin, false, ["arm_l", "weapon_l"]); + * } + * </pre> + * @see dragonBones.Armature + * @see dragonBones.SkinData + * @version DragonBones 5.6 + * @language en_US + */ + /** + * - 将特定的皮肤数æ®å…±äº«ç»™ç‰¹å®šçš„骨架使用。 + * @param armature - 骨架。 + * @param skin - 皮肤数æ®ã€‚ + * @param isOverride - 是å¦å®Œå…¨è¦†ç›–原æ¥çš„皮肤。 (默认: false) + * @param exclude - ä¸éœ€è¦è¢«æ›¿æ¢çš„æ’æ§½å称列表。 + * @example + * <pre> + * let armatureA = factory.buildArmature("armatureA", "dragonBonesA"); + * let armatureDataB = factory.getArmatureData("armatureB", "dragonBonesB"); + * if (armatureDataB && armatureDataB.defaultSkin) { + * factory.replaceSkin(armatureA, armatureDataB.defaultSkin, false, ["arm_l", "weapon_l"]); + * } + * </pre> + * @see dragonBones.Armature + * @see dragonBones.SkinData + * @version DragonBones 5.6 + * @language zh_CN + */ + replaceSkin(armature: Armature, skin: SkinData, isOverride?: boolean, exclude?: Array<string> | null): boolean; + /** + * - Replaces the existing animation data for a specific armature with the animation data for the specific armature data. + * This enables you to make a armature template so that other armature without animations can share it's animations. + * @param armature - The armtaure. + * @param armatureData - The armature data. + * @param isOverride - Whether to completely overwrite the original animation. (Default: false) + * @example + * <pre> + * let armatureA = factory.buildArmature("armatureA", "dragonBonesA"); + * let armatureDataB = factory.getArmatureData("armatureB", "dragonBonesB"); + * if (armatureDataB) { + * factory.replaceAnimation(armatureA, armatureDataB); + * } + * </pre> + * @see dragonBones.Armature + * @see dragonBones.ArmatureData + * @version DragonBones 5.6 + * @language en_US + */ + /** + * - 用特定骨架数æ®çš„åŠ¨ç”»æ•°æ®æ›¿æ¢ç‰¹å®šéª¨æž¶çŽ°æœ‰çš„åŠ¨ç”»æ•°æ®ã€‚ + * è¿™æ ·å°±èƒ½å®žçŽ°åˆ¶ä½œä¸€ä¸ªéª¨æž¶åŠ¨ç”»æ¨¡æ¿ï¼Œè®©å…¶ä»–没有制作动画的骨架共享该动画。 + * @param armature - 骨架。 + * @param armatureData - 骨架数æ®ã€‚ + * @param isOverride - 是å¦å®Œå…¨è¦†ç›–原æ¥çš„动画。(默认: false)。 + * @example + * <pre> + * let armatureA = factory.buildArmature("armatureA", "dragonBonesA"); + * let armatureDataB = factory.getArmatureData("armatureB", "dragonBonesB"); + * if (armatureDataB) { + * factory.replaceAnimation(armatureA, armatureDataB); + * } + * </pre> + * @see dragonBones.Armature + * @see dragonBones.ArmatureData + * @version DragonBones 5.6 + * @language zh_CN + */ + replaceAnimation(armature: Armature, armatureData: ArmatureData, isOverride?: boolean): boolean; + /** + * @private + */ + getAllDragonBonesData(): Map<DragonBonesData>; + /** + * @private + */ + getAllTextureAtlasData(): Map<Array<TextureAtlasData>>; + /** + * - An Worldclock instance updated by engine. + * @version DragonBones 5.7 + * @language en_US + */ + /** + * - 由引擎驱动的 WorldClock 实例。 + * @version DragonBones 5.7 + * @language zh_CN + */ + readonly clock: WorldClock; + /** + * @private + */ + readonly dragonBones: DragonBones; + /** + * - Deprecated, please refer to {@link #replaceSkin}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #replaceSkin}。 + * @deprecated + * @language zh_CN + */ + changeSkin(armature: Armature, skin: SkinData, exclude?: Array<string> | null): boolean; + /** + * - Deprecated, please refer to {@link #replaceAnimation}. + * @deprecated + * @language en_US + */ + /** + * - 已废弃,请å‚考 {@link #replaceAnimation}。 + * @deprecated + * @language zh_CN + */ + copyAnimationsToArmature(toArmature: Armature, fromArmatreName: string, fromSkinName?: string, fromDragonBonesDataName?: string, replaceOriginalAnimation?: boolean): boolean; + } + /** + * @internal + * @private + */ + class BuildArmaturePackage { + dataName: string; + textureAtlasName: string; + data: DragonBonesData; + armature: ArmatureData; + skin: SkinData | null; + } +} + +declare namespace sp.spine { + class Animation { + name: string; + timelines: Array<Timeline>; + timelineIds: Array<boolean>; + duration: number; + constructor(name: string, timelines: Array<Timeline>, duration: number); + hasTimeline(id: number): boolean; + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + static binarySearch(values: ArrayLike<number>, target: number, step?: number): number; + static linearSearch(values: ArrayLike<number>, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + getPropertyId(): number; + } + enum MixBlend { + setup = 0, + first = 1, + replace = 2, + add = 3 + } + enum MixDirection { + mixIn = 0, + mixOut = 1 + } + enum TimelineType { + rotate = 0, + translate = 1, + scale = 2, + shear = 3, + attachment = 4, + color = 5, + deform = 6, + event = 7, + drawOrder = 8, + ikConstraint = 9, + transformConstraint = 10, + pathConstraintPosition = 11, + pathConstraintSpacing = 12, + pathConstraintMix = 13, + twoColor = 14 + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + abstract getPropertyId(): number; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class TwoColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static PREV_R2: number; + static PREV_G2: number; + static PREV_B2: number; + static R: number; + static G: number; + static B: number; + static A: number; + static R2: number; + static G2: number; + static B2: number; + slotIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike<number>; + attachmentNames: Array<string>; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class DeformTimeline extends CurveTimeline { + slotIndex: number; + attachment: VertexAttachment; + frames: ArrayLike<number>; + frameVertices: Array<ArrayLike<number>>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike<number>; + events: Array<Event>; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, event: Event): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike<number>; + drawOrders: Array<Array<number>>; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_SOFTNESS: number; + static PREV_BEND_DIRECTION: number; + static PREV_COMPRESS: number; + static PREV_STRETCH: number; + static MIX: number; + static SOFTNESS: number; + static BEND_DIRECTION: number; + static COMPRESS: number; + static STRETCH: number; + ikConstraintIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike<number>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; + } +} +declare namespace sp.spine { + class AnimationState { + static emptyAnimation: Animation; + static SUBSEQUENT: number; + static FIRST: number; + static HOLD: number; + static HOLD_MIX: number; + static NOT_LAST: number; + data: AnimationStateData; + tracks: TrackEntry[]; + timeScale: number; + events: Event[]; + listeners: AnimationStateListener[]; + queue: EventQueue; + propertyIDs: IntSet; + animationsChanged: boolean; + trackEntryPool: Pool<TrackEntry>; + constructor(data: AnimationStateData); + update(delta: number): void; + updateMixingFrom(to: TrackEntry, delta: number): boolean; + apply(skeleton: Skeleton): boolean; + applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; + applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array<number>, i: number, firstFrame: boolean): void; + queueEvents(entry: TrackEntry, animationTime: number): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + setEmptyAnimation(trackIndex: number, mixDuration: number): TrackEntry; + addEmptyAnimation(trackIndex: number, mixDuration: number, delay: number): TrackEntry; + setEmptyAnimations(mixDuration: number): void; + expandToIndex(index: number): TrackEntry; + trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; + disposeNext(entry: TrackEntry): void; + _animationsChanged(): void; + computeHold(entry: TrackEntry): void; + computeNotLast(entry: TrackEntry): void; + getCurrent(trackIndex: number): TrackEntry; + addListener(listener: AnimationStateListener): void; + removeListener(listener: AnimationStateListener): void; + clearListeners(): void; + clearListenerNotifications(): void; + } + class TrackEntry { + animation: Animation; + next: TrackEntry; + mixingFrom: TrackEntry; + mixingTo: TrackEntry; + listener: AnimationStateListener; + trackIndex: number; + loop: boolean; + holdPrevious: boolean; + eventThreshold: number; + attachmentThreshold: number; + drawOrderThreshold: number; + animationStart: number; + animationEnd: number; + animationLast: number; + nextAnimationLast: number; + delay: number; + trackTime: number; + trackLast: number; + nextTrackLast: number; + trackEnd: number; + timeScale: number; + alpha: number; + mixTime: number; + mixDuration: number; + interruptAlpha: number; + totalAlpha: number; + mixBlend: MixBlend; + timelineMode: number[]; + timelineHoldMix: TrackEntry[]; + timelinesRotation: number[]; + reset(): void; + getAnimationTime(): number; + setAnimationLast(animationLast: number): void; + isComplete(): boolean; + resetRotationDirections(): void; + } + class EventQueue { + objects: Array<any>; + drainDisabled: boolean; + animState: AnimationState; + constructor(animState: AnimationState); + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + drain(): void; + clear(): void; + } + enum EventType { + start = 0, + interrupt = 1, + end = 2, + dispose = 3, + complete = 4, + event = 5 + } + interface AnimationStateListener { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + } + abstract class AnimationStateAdapter implements AnimationStateListener { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + } +} +declare namespace sp.spine { + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map<number>; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } +} +declare namespace sp.spine { + class AssetManager implements Disposable { + private pathPrefix; + private textureLoader; + private assets; + private errors; + private toLoad; + private loaded; + constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string); + private static downloadText; + private static downloadBinary; + loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, error: string) => void): void; + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + loadTextureData(path: string, data: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, error: string) => void): void; + get(path: string): any; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + getToLoad(): number; + getLoaded(): number; + dispose(): void; + hasErrors(): boolean; + getErrors(): Map<string>; + } +} +declare namespace sp.spine { + class AtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; + } +} +declare namespace sp.spine { + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3 + } +} +declare namespace sp.spine { + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + ax: number; + ay: number; + arotation: number; + ascaleX: number; + ascaleY: number; + ashearX: number; + ashearY: number; + appliedValid: boolean; + a: number; + b: number; + c: number; + d: number; + worldY: number; + worldX: number; + sorted: boolean; + active: boolean; + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + isActive(): boolean; + update(): void; + updateWorldTransform(): void; + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + updateAppliedTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + worldToLocalRotation(worldRotation: number): number; + localToWorldRotation(localRotation: number): number; + rotateWorld(degrees: number): void; + } +} +declare namespace sp.spine { + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + transformMode: TransformMode; + skinRequired: boolean; + color: Color; + constructor(index: number, name: string, parent: BoneData); + } + enum TransformMode { + Normal = 0, + OnlyTranslation = 1, + NoRotationOrReflection = 2, + NoScale = 3, + NoScaleOrReflection = 4 + } +} +declare namespace sp.spine { + abstract class ConstraintData { + name: string; + order: number; + skinRequired: boolean; + constructor(name: string, order: number, skinRequired: boolean); + } +} +declare namespace sp.spine { + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + volume: number; + balance: number; + constructor(time: number, data: EventData); + } +} +declare namespace sp.spine { + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + audioPath: string; + volume: number; + balance: number; + constructor(name: string); + } +} +declare namespace sp.spine { + class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array<Bone>; + target: Bone; + bendDirection: number; + compress: boolean; + stretch: boolean; + mix: number; + softness: number; + active: boolean; + constructor(data: IkConstraintData, skeleton: Skeleton); + isActive(): boolean; + apply(): void; + update(): void; + apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; + } +} +declare namespace sp.spine { + class IkConstraintData extends ConstraintData { + bones: BoneData[]; + target: BoneData; + bendDirection: number; + compress: boolean; + stretch: boolean; + uniform: boolean; + mix: number; + softness: number; + constructor(name: string); + } +} +declare namespace sp.spine { + class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + static epsilon: number; + data: PathConstraintData; + bones: Array<Bone>; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + active: boolean; + constructor(data: PathConstraintData, skeleton: Skeleton); + isActive(): boolean; + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; + addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void; + } +} +declare namespace sp.spine { + class PathConstraintData extends ConstraintData { + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1 + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2 + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2 + } +} +declare namespace sp.spine { + class SharedAssetManager implements Disposable { + private pathPrefix; + private clientAssets; + private queuedAssets; + private rawAssets; + private errors; + constructor(pathPrefix?: string); + private queueAsset; + loadText(clientId: string, path: string): void; + loadJson(clientId: string, path: string): void; + loadTexture(clientId: string, textureLoader: (image: HTMLImageElement) => any, path: string): void; + get(clientId: string, path: string): any; + private updateClientAssets; + isLoadingComplete(clientId: string): boolean; + dispose(): void; + hasErrors(): boolean; + getErrors(): Map<string>; + } +} +declare namespace sp.spine { + class Skeleton { + data: SkeletonData; + bones: Array<Bone>; + slots: Array<Slot>; + drawOrder: Array<Slot>; + ikConstraints: Array<IkConstraint>; + transformConstraints: Array<TransformConstraint>; + pathConstraints: Array<PathConstraint>; + _updateCache: Updatable[]; + updateCacheReset: Updatable[]; + skin: Skin; + color: Color; + time: number; + scaleX: number; + scaleY: number; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortIkConstraint(constraint: IkConstraint): void; + sortPathConstraint(constraint: PathConstraint): void; + sortTransformConstraint(constraint: TransformConstraint): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array<Bone>): void; + updateWorldTransform(): void; + setToSetupPose(): void; + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + getRootBone(): Bone; + findBone(boneName: string): Bone; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): Slot; + findSlotIndex(slotName: string): number; + setSkinByName(skinName: string): void; + setSkin(newSkin: Skin): void; + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + getAttachment(slotIndex: number, attachmentName: string): Attachment; + setAttachment(slotName: string, attachmentName: string): void; + findIkConstraint(constraintName: string): IkConstraint; + findTransformConstraint(constraintName: string): TransformConstraint; + findPathConstraint(constraintName: string): PathConstraint; + getBounds(offset: Vector2, size: Vector2, temp?: Array<number>): void; + update(delta: number): void; + } +} +declare namespace sp.spine { + class SkeletonBinary { + static AttachmentTypeValues: number[]; + static TransformModeValues: TransformMode[]; + static PositionModeValues: PositionMode[]; + static SpacingModeValues: SpacingMode[]; + static RotateModeValues: RotateMode[]; + static BlendModeValues: BlendMode[]; + static BONE_ROTATE: number; + static BONE_TRANSLATE: number; + static BONE_SCALE: number; + static BONE_SHEAR: number; + static SLOT_ATTACHMENT: number; + static SLOT_COLOR: number; + static SLOT_TWO_COLOR: number; + static PATH_POSITION: number; + static PATH_SPACING: number; + static PATH_MIX: number; + static CURVE_LINEAR: number; + static CURVE_STEPPED: number; + static CURVE_BEZIER: number; + scale: number; + attachmentLoader: AttachmentLoader; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(binary: Uint8Array): SkeletonData; + private readSkin; + private readAttachment; + private readVertices; + private readFloatArray; + private readShortArray; + private readAnimation; + private readCurve; + setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + } +} +declare namespace sp.spine { + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike<number>[]; + private polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + aabbContainsPoint(x: number, y: number): boolean; + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + containsPoint(x: number, y: number): BoundingBoxAttachment; + containsPointPolygon(polygon: ArrayLike<number>, x: number, y: number): boolean; + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + intersectsSegmentPolygon(polygon: ArrayLike<number>, x1: number, y1: number, x2: number, y2: number): boolean; + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike<number>; + getWidth(): number; + getHeight(): number; + } +} +declare namespace sp.spine { + class SkeletonClipping { + private triangulator; + private clippingPolygon; + private clipOutput; + clippedVertices: number[]; + clippedTriangles: number[]; + private scratch; + private clipAttachment; + private clippingPolygons; + clipStart(slot: Slot, clip: ClippingAttachment): number; + clipEndWithSlot(slot: Slot): void; + clipEnd(): void; + isClipping(): boolean; + clipTriangles(vertices: ArrayLike<number>, verticesLength: number, triangles: ArrayLike<number>, trianglesLength: number, uvs: ArrayLike<number>, light: Color, dark: Color, twoColor: boolean): void; + clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array<number>, output: Array<number>): boolean; + static makeClockwise(polygon: ArrayLike<number>): void; + } +} +declare namespace sp.spine { + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + x: number; + y: number; + width: number; + height: number; + version: string; + hash: string; + fps: number; + imagesPath: string; + audioPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } +} +declare namespace sp.spine { + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string | any): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + static transformModeFromString(str: string): TransformMode; + } +} +declare namespace sp.spine { + class SkinEntry { + slotIndex: number; + name: string; + attachment: Attachment; + constructor(slotIndex: number, name: string, attachment: Attachment); + } + class Skin { + name: string; + attachments: Map<Attachment>[]; + bones: BoneData[]; + constraints: ConstraintData[]; + constructor(name: string); + setAttachment(slotIndex: number, name: string, attachment: Attachment): void; + addSkin(skin: Skin): void; + copySkin(skin: Skin): void; + getAttachment(slotIndex: number, name: string): Attachment; + removeAttachment(slotIndex: number, name: string): void; + getAttachments(): Array<SkinEntry>; + getAttachmentsForSlot(slotIndex: number, attachments: Array<SkinEntry>): void; + clear(): void; + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } +} +declare namespace sp.spine { + class Slot { + data: SlotData; + bone: Bone; + color: Color; + darkColor: Color; + private attachment; + private attachmentTime; + deform: number[]; + constructor(data: SlotData, bone: Bone); + getSkeleton(): Skeleton; + getAttachment(): Attachment; + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + getAttachmentTime(): number; + setToSetupPose(): void; + } +} +declare namespace sp.spine { + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + darkColor: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } +} +declare namespace sp.spine { + abstract class Texture { + protected _image: HTMLImageElement; + constructor(image: HTMLImageElement); + getImage(): HTMLImageElement; + abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + abstract dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest = 9728, + Linear = 9729, + MipMap = 9987, + MipMapNearestNearest = 9984, + MipMapLinearNearest = 9985, + MipMapNearestLinear = 9986, + MipMapLinearLinear = 9987 + } + enum TextureWrap { + MirroredRepeat = 33648, + ClampToEdge = 33071, + Repeat = 10497 + } + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } + class FakeTexture extends Texture { + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + dispose(): void; + } +} +declare namespace sp.spine { + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => any); + private load; + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + degrees: number; + texture: Texture; + } +} +declare namespace sp.spine { + class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array<Bone>; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + active: boolean; + constructor(data: TransformConstraintData, skeleton: Skeleton); + isActive(): boolean; + apply(): void; + update(): void; + applyAbsoluteWorld(): void; + applyRelativeWorld(): void; + applyAbsoluteLocal(): void; + applyRelativeLocal(): void; + } +} +declare namespace sp.spine { + class TransformConstraintData extends ConstraintData { + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + relative: boolean; + local: boolean; + constructor(name: string); + } +} +declare namespace sp.spine { + class Triangulator { + private convexPolygons; + private convexPolygonsIndices; + private indicesArray; + private isConcaveArray; + private triangles; + private polygonPool; + private polygonIndicesPool; + triangulate(verticesArray: ArrayLike<number>): Array<number>; + decompose(verticesArray: Array<number>, triangles: Array<number>): Array<Array<number>>; + private static isConcave; + private static positiveArea; + private static winding; + } +} +declare namespace sp.spine { + interface Updatable { + update(): void; + isActive(): boolean; + } +} +declare namespace sp.spine { + interface Map<T> { + [key: string]: T; + } + class IntSet { + array: number[]; + add(value: number): boolean; + contains(value: number): boolean; + remove(value: number): void; + clear(): void; + } + interface Disposable { + dispose(): void; + } + interface Restorable { + restore(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + static WHITE: Color; + static RED: Color; + static GREEN: Color; + static BLUE: Color; + static MAGENTA: Color; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): this; + setFromColor(c: Color): this; + setFromString(hex: string): this; + add(r: number, g: number, b: number, a: number): this; + clamp(): this; + static rgba8888ToColor(color: Color, value: number): void; + static rgb888ToColor(color: Color, value: number): void; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + static cbrt(x: number): number; + static randomTriangular(min: number, max: number): number; + static randomTriangularWith(min: number, max: number, mode: number): number; + } + abstract class Interpolation { + protected abstract applyInternal(a: number): number; + apply(start: number, end: number, a: number): number; + } + class Pow extends Interpolation { + protected power: number; + constructor(power: number); + applyInternal(a: number): number; + } + class PowOut extends Pow { + constructor(power: number); + applyInternal(a: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void; + static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>; + static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>; + static newArray<T>(size: number, defaultValue: T): Array<T>; + static newFloatArray(size: number): ArrayLike<number>; + static newShortArray(size: number): ArrayLike<number>; + static toFloatArray(array: Array<number>): number[] | Float32Array; + static toSinglePrecision(value: number): number; + static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; + static contains<T>(array: Array<T>, element: T, identity?: boolean): boolean; + } + class DebugUtils { + static logBones(skeleton: Skeleton): void; + } + class Pool<T> { + private items; + private instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike<T>): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + length(): number; + normalize(): this; + } + class TimeKeeper { + maxDelta: number; + framesPerSecond: number; + delta: number; + totalTime: number; + private lastTime; + private frameCount; + private frameTime; + update(): void; + } + interface ArrayLike<T> { + length: number; + [n: number]: T; + } + class WindowedMean { + values: Array<number>; + addedValues: number; + lastValue: number; + mean: number; + dirty: boolean; + constructor(windowSize?: number); + hasEnoughData(): boolean; + addValue(value: number): void; + getMean(): number; + } +} +declare namespace sp.spine { + interface VertexEffect { + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } +} +interface Math { + fround(n: number): number; +} +declare namespace sp.spine { + abstract class Attachment { + name: string; + constructor(name: string); + abstract copy(): Attachment; + } + abstract class VertexAttachment extends Attachment { + private static nextID; + id: number; + bones: Array<number>; + vertices: ArrayLike<number>; + worldVerticesLength: number; + deformAttachment: VertexAttachment; + constructor(name: string); + computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike<number>, offset: number, stride: number): void; + copyTo(attachment: VertexAttachment): void; + } +} +declare namespace sp.spine { + interface AttachmentLoader { + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; + } +} +declare namespace sp.spine { + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + Point = 5, + Clipping = 6 + } +} +declare namespace sp.spine { + class BoundingBoxAttachment extends VertexAttachment { + color: Color; + constructor(name: string); + copy(): Attachment; + } +} +declare namespace sp.spine { + class ClippingAttachment extends VertexAttachment { + endSlot: SlotData; + color: Color; + constructor(name: string); + copy(): Attachment; + } +} +declare namespace sp.spine { + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike<number>; + uvs: ArrayLike<number>; + triangles: Array<number>; + color: Color; + width: number; + height: number; + hullLength: number; + edges: Array<number>; + private parentMesh; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + getParentMesh(): MeshAttachment; + setParentMesh(parentMesh: MeshAttachment): void; + copy(): Attachment; + newLinkedMesh(): MeshAttachment; + } +} +declare namespace sp.spine { + class PathAttachment extends VertexAttachment { + lengths: Array<number>; + closed: boolean; + constantSpeed: boolean; + color: Color; + constructor(name: string); + copy(): Attachment; + } +} +declare namespace sp.spine { + class PointAttachment extends VertexAttachment { + x: number; + y: number; + rotation: number; + color: Color; + constructor(name: string); + computeWorldPosition(bone: Bone, point: Vector2): Vector2; + computeWorldRotation(bone: Bone): number; + copy(): Attachment; + } +} +declare namespace sp.spine { + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike<number>; + uvs: ArrayLike<number>; + tempColor: Color; + constructor(name: string); + updateOffset(): void; + setRegion(region: TextureRegion): void; + computeWorldVertices(bone: Bone, worldVertices: ArrayLike<number>, offset: number, stride: number): void; + copy(): Attachment; + } +} +declare namespace sp.spine { + class JitterEffect implements VertexEffect { + jitterX: number; + jitterY: number; + constructor(jitterX: number, jitterY: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } +} +declare namespace sp.spine { + class SwirlEffect implements VertexEffect { + static interpolation: PowOut; + centerX: number; + centerY: number; + radius: number; + angle: number; + private worldX; + private worldY; + constructor(radius: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } +} + +/** + * API for jsb module + * Author: haroel + * Homepage: https://github.com/haroel/creatorexDTS + */ +declare namespace jsb{ + export module reflection{ + /** + * https://docs.cocos.com/creator/manual/zh/advanced-topics/java-reflection.html + * call OBJC/Java static methods + * + * @param className + * @param methodName + * @param methodSignature + * @param parameters + */ + export function callStaticMethod (className: string, methodName: string, methodSignature: string, ...parameters:any): any; + } + /** + * 下载任务对象 + */ + export type DownloaderTask = { requestURL: string, storagePath: string, identifier: string }; + + /** + * Http file downloader for jsbï¼ + */ + export class Downloader{ + /** + * create a download task + * @param requestURL + * @param storagePath + * @param identifier + */ + createDownloadFileTask (requestURL:string, storagePath:string, identifier?:string): DownloaderTask; + + setOnFileTaskSuccess (onSucceed: (task: DownloaderTask) => void): void; + + setOnTaskProgress (onProgress: (task: DownloaderTask, bytesReceived: number, totalBytesReceived: number, totalBytesExpected: number) => void): void; + + setOnTaskError (onError: (task: DownloaderTask, errorCode: number, errorCodeInternal: number, errorStr: string) => void): void; + + } + + export interface ManifestAsset { + md5: string; + path: string; + compressed: boolean; + size: number; + downloadState: number; + } + + export class Manifest { + constructor (manifestUrl: string); + constructor (content: string, manifestRoot: string); + parseFile (manifestUrl: string): void; + parseJSONString (content: string, manifestRoot: string): void; + + getManifestRoot (): string; + getManifestFileUrl (): string; + getVersionFileUrl (): string; + getSearchPaths (): [string]; + getVersion (): string; + getPackageUrl (): boolean; + + setUpdating (isUpdating: boolean): void; + isUpdating (): boolean; + isVersionLoaded (): boolean; + isLoaded (): boolean; + } + + export class EventAssetsManager { + // EventCode + static ERROR_NO_LOCAL_MANIFEST: number; + static ERROR_DOWNLOAD_MANIFEST: number; + static ERROR_PARSE_MANIFEST: number; + static NEW_VERSION_FOUND: number; + static ALREADY_UP_TO_DATE: number; + static UPDATE_PROGRESSION: number; + static ASSET_UPDATED: number; + static ERROR_UPDATING: number; + static UPDATE_FINISHED: number; + static UPDATE_FAILED: number; + static ERROR_DECOMPRESS: number; + + constructor (eventName: string, manager: AssetsManager, eventCode: number, + assetId?: string, message?: string, curleCode?: number, curlmCode?: number); + getAssetsManagerEx (): AssetsManager; + isResuming (): boolean; + + getDownloadedFiles (): number; + getDownloadedBytes (): number; + getTotalFiles (): number; + getTotalBytes (): number; + getPercent (): number; + getPercentByFile (): number; + + getEventCode (): number; + getMessage (): string; + getAssetId (): string; + getCURLECode (): number; + getCURLMCode (): number; + } + + export module AssetsManager { + export enum State { + UNINITED, + UNCHECKED, + PREDOWNLOAD_VERSION, + DOWNLOADING_VERSION, + VERSION_LOADED, + PREDOWNLOAD_MANIFEST, + DOWNLOADING_MANIFEST, + MANIFEST_LOADED, + NEED_UPDATE, + READY_TO_UPDATE, + UPDATING, + UNZIPPING, + UP_TO_DATE, + FAIL_TO_UPDATE, + } + } + + export class AssetsManager { + constructor (manifestUrl: string, storagePath: string, versionCompareHandle?: (versionA: string, versionB: string) => number); + static create (manifestUrl: string, storagePath: string): AssetsManager; + + getState (): AssetsManager.State; + getStoragePath (): string + getMaxConcurrentTask (): number; + // setMaxConcurrentTask (max: number): void; // actually not supported + + checkUpdate (): void; + prepareUpdate (): void; + update (): void; + isResuming (): boolean; + + getDownloadedFiles (): number; + getDownloadedBytes (): number; + getTotalFiles (): number; + getTotalBytes (): number; + downloadFailedAssets (): void; + + getLocalManifest (): Manifest; + loadLocalManifest (manifestUrl: string): boolean; + loadLocalManifest (localManifest: Manifest, storagePath: string): boolean; + getRemoteManifest (): Manifest; + loadRemoteManifest (remoteManifest: Manifest): boolean; + + /** + * Setup your own version compare handler, versionA and B is versions in string. + * if the return value greater than 0, versionA is greater than B, + * if the return value equals 0, versionA equals to B, + * if the return value smaller than 0, versionA is smaller than B. + */ + setVersionCompareHandle (versionCompareHandle?: (versionA: string, versionB: string) => number): void; + /** + * Setup the verification callback, Return true if the verification passed, otherwise return false + */ + setVerifyCallback (verifyCallback: (path: string, asset: ManifestAsset) => boolean): void; + setEventCallback (eventCallback: (event: EventAssetsManager) => void): void; + } + + /** + * FileUtils Helper class to handle file operations. + */ + export module fileUtils{ + /** + * Checks whether the path is an absolute path. + * + * @note On Android, if the parameter passed in is relative to "@assets/", this method will treat it as an absolute path. + * Also on Blackberry, path starts with "app/native/Resources/" is treated as an absolute path. + * + * @param path The path that needs to be checked. + * @return True if it's an absolute path, false if not. + */ + export function isAbsolutePath (path:string):boolean; + /** Returns the fullpath for a given filename. + + First it will try to get a new filename from the "filenameLookup" dictionary. + If a new filename can't be found on the dictionary, it will use the original filename. + Then it will try to obtain the full path of the filename using the FileUtils search rules: resolutions, and search paths. + The file search is based on the array element order of search paths and resolution directories. + + For instance: + + We set two elements("/mnt/sdcard/", "internal_dir/") to search paths vector by setSearchPaths, + and set three elements("resources-ipadhd/", "resources-ipad/", "resources-iphonehd") + to resolutions vector by setSearchResolutionsOrder. The "internal_dir" is relative to "Resources/". + + If we have a file named 'sprite.png', the mapping in fileLookup dictionary contains `key: sprite.png -> value: sprite.pvr.gz`. + Firstly, it will replace 'sprite.png' with 'sprite.pvr.gz', then searching the file sprite.pvr.gz as follows: + + /mnt/sdcard/resources-ipadhd/sprite.pvr.gz (if not found, search next) + /mnt/sdcard/resources-ipad/sprite.pvr.gz (if not found, search next) + /mnt/sdcard/resources-iphonehd/sprite.pvr.gz (if not found, search next) + /mnt/sdcard/sprite.pvr.gz (if not found, search next) + internal_dir/resources-ipadhd/sprite.pvr.gz (if not found, search next) + internal_dir/resources-ipad/sprite.pvr.gz (if not found, search next) + internal_dir/resources-iphonehd/sprite.pvr.gz (if not found, search next) + internal_dir/sprite.pvr.gz (if not found, return "sprite.png") + + If the filename contains relative path like "gamescene/uilayer/sprite.png", + and the mapping in fileLookup dictionary contains `key: gamescene/uilayer/sprite.png -> value: gamescene/uilayer/sprite.pvr.gz`. + The file search order will be: + + /mnt/sdcard/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz (if not found, search next) + /mnt/sdcard/gamescene/uilayer/resources-ipad/sprite.pvr.gz (if not found, search next) + /mnt/sdcard/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz (if not found, search next) + /mnt/sdcard/gamescene/uilayer/sprite.pvr.gz (if not found, search next) + internal_dir/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz (if not found, search next) + internal_dir/gamescene/uilayer/resources-ipad/sprite.pvr.gz (if not found, search next) + internal_dir/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz (if not found, search next) + internal_dir/gamescene/uilayer/sprite.pvr.gz (if not found, return "gamescene/uilayer/sprite.png") + + If the new file can't be found on the file system, it will return the parameter filename directly. + + This method was added to simplify multiplatform support. Whether you are using cocos2d-js or any cross-compilation toolchain like StellaSDK or Apportable, + you might need to load different resources for a given file in the different platforms. + + @since v2.1 + */ + export function fullPathForFilename (filename:string):string; + /** + * Gets string from a file. + */ + export function getStringFromFile (filename:string):string; + /** + * Removes a file. + * + * @param filepath The full path of the file, it must be an absolute path. + * @return True if the file have been removed successfully, false if not. + */ + export function removeFile (filepath:string):boolean; + /** + * Checks whether the path is a directory. + * + * @param dirPath The path of the directory, it could be a relative or an absolute path. + * @return True if the directory exists, false if not. + */ + export function isDirectoryExist (dirPath:string):boolean; + /** + * Normalize: remove . and .. + * @param filepath + */ + export function normalizePath (filepath:string):string; + /** + * Get default resource root path. + */ + export function getDefaultResourceRootPath ():string; + /** + * Loads the filenameLookup dictionary from the contents of a filename. + * + * @note The plist file name should follow the format below: + * + * @code + * <?xml version="1.0" encoding="UTF-8"?> + * <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> + * <plist version="1.0"> + * <dict> + * <key>filenames</key> + * <dict> + * <key>sounds/click.wav</key> + * <string>sounds/click.caf</string> + * <key>sounds/endgame.wav</key> + * <string>sounds/endgame.caf</string> + * <key>sounds/gem-0.wav</key> + * <string>sounds/gem-0.caf</string> + * </dict> + * <key>metadata</key> + * <dict> + * <key>version</key> + * <integer>1</integer> + * </dict> + * </dict> + * </plist> + * @endcode + * @param filename The plist file name. + * + @since v2.1 + * @js loadFilenameLookup + * @lua loadFilenameLookup + */ + export function loadFilenameLookup (filepath:string):void; + /** Checks whether to pop up a message box when failed to load an image. + * @return True if pop up a message box when failed to load an image, false if not. + */ + export function isPopupNotify ():boolean; + /** + * Sets whether to pop-up a message box when failed to load an image. + */ + export function setPopupNotify (notify:boolean):void; + + // Converts the contents of a file to a ValueVector. + // This method is used internally. + export function getValueVectorFromFile (filepath:string):Array<any>; + /** + * Gets the array of search paths. + * + * @return The array of search paths which may contain the prefix of default resource root path. + * @note In best practise, getter function should return the value of setter function passes in. + * But since we should not break the compatibility, we keep using the old logic. + * Therefore, If you want to get the original search paths, please call 'getOriginalSearchPaths()' instead. + * @see fullPathForFilename(const char*). + * @lua NA + */ + export function getSearchPaths ():Array<string>; + /** + * + * @param filepath + */ + export function getFileDir (filepath:string):string; + /** + * write a ValueMap into a plist file + * + *@param dict the ValueMap want to save (key,value) + *@param fullPath The full path to the file you want to save a string + *@return bool + */ + export function writeToFile ( valueMap:any ):boolean; + /** + * Gets the original search path array set by 'setSearchPaths' or 'addSearchPath'. + * @return The array of the original search paths + */ + export function getOriginalSearchPaths ():Array<string>; + /** + * List all files in a directory. + * + * @param dirPath The path of the directory, it could be a relative or an absolute path. + * @return File paths in a string vector + */ + export function listFiles (filepath:string):Array<string>; + /** + * Converts the contents of a file to a ValueMap. + * @param filename The filename of the file to gets content. + * @return ValueMap of the file contents. + * @note This method is used internally. + */ + export function getValueMapFromFile (filepath:string):any; + /** + * Retrieve the file size. + * + * @note If a relative path was passed in, it will be inserted a default root path at the beginning. + * @param filepath The path of the file, it could be a relative or absolute path. + * @return The file size. + */ + export function getFileSize (filepath:string):number; + + /** Converts the contents of a file to a ValueMap. + * This method is used internally. + */ + export function getValueMapFromData (filedata:string,filesize:number):any; + /** + * Removes a directory. + * + * @param dirPath The full path of the directory, it must be an absolute path. + * @return True if the directory have been removed successfully, false if not. + */ + export function removeDirectory (dirPath:string):boolean; + /** + * Sets the array of search paths. + * + * You can use this array to modify the search path of the resources. + * If you want to use "themes" or search resources in the "cache", you can do it easily by adding new entries in this array. + * + * @note This method could access relative path and absolute path. + * If the relative path was passed to the vector, FileUtils will add the default resource directory before the relative path. + * For instance: + * On Android, the default resource root path is "@assets/". + * If "/mnt/sdcard/" and "resources-large" were set to the search paths vector, + * "resources-large" will be converted to "@assets/resources-large" since it was a relative path. + * + * @param searchPaths The array contains search paths. + * @see fullPathForFilename(const char*) + * @since v2.1 + * In js:var setSearchPaths(var jsval); + * @lua NA + */ + export function setSearchPaths ( searchPath:Array<string>):void; + /** + * write a string into a file + * + * @param dataStr the string want to save + * @param fullPath The full path to the file you want to save a string + * @return bool True if write success + */ + export function writeStringToFile (dataStr:string,fullPath:string):boolean; + /** + * Sets the array that contains the search order of the resources. + * + * @param searchResolutionsOrder The source array that contains the search order of the resources. + * @see getSearchResolutionsOrder(), fullPathForFilename(const char*). + * @since v2.1 + * In js:var setSearchResolutionsOrder(var jsval) + * @lua NA + */ + export function setSearchResolutionsOrder (searchResolutionsOrder:Array<string>):void; + /** + * Append search order of the resources. + * + * @see setSearchResolutionsOrder(), fullPathForFilename(). + * @since v2.1 + */ + export function addSearchResolutionsOrder (order:string,front:boolean):void; + /** + * Add search path. + * + * @since v2.1 + */ + export function addSearchPath (path:string,front:boolean):void; + /** + * write ValueVector into a plist file + * + *@param vecData the ValueVector want to save + *@param fullPath The full path to the file you want to save a string + *@return bool + */ + export function writeValueVectorToFile (vecData:Array<any>,fullPath:string):boolean; + /** + * Checks whether a file exists. + * + * @note If a relative path was passed in, it will be inserted a default root path at the beginning. + * @param filename The path of the file, it could be a relative or absolute path. + * @return True if the file exists, false if not. + */ + export function isFileExist (filename:string):boolean; + /**©∫ + * Purges full path caches. + */ + export function purgeCachedEntries ():void; + /** + * Gets full path from a file name and the path of the relative file. + * @param filename The file name. + * @param relativeFile The path of the relative file. + * @return The full path. + * e.g. filename: hello.png, pszRelativeFile: /User/path1/path2/hello.plist + * Return: /User/path1/path2/hello.pvr (If there a a key(hello.png)-value(hello.pvr) in FilenameLookup dictionary. ) + * + */ + export function fullPathFromRelativeFile (filename:string,relativeFile:string):string; + /** + * Windows fopen can't support UTF-8 filename + * Need convert all parameters fopen and other 3rd-party libs + * + * @param filenameUtf8 std::string name file for conversion from utf-8 + * @return std::string ansi filename in current locale + */ + export function getSuitableFOpen (filenameUtf8:string):string; + /** + * write ValueMap into a plist file + * + *@param dict the ValueMap want to save + *@param fullPath The full path to the file you want to save a string + *@return bool + */ + export function writeValueMapToFile (dict:any,fullPath:string):string; + /** + * Gets filename extension is a suffix (separated from the base filename by a dot) in lower case. + * Examples of filename extensions are .png, .jpeg, .exe, .dmg and .txt. + * @param filePath The path of the file, it could be a relative or absolute path. + * @return suffix for filename in lower case or empty if a dot not found. + */ + export function getFileExtension (filePath:string):string; + /** + * Sets writable path. + */ + export function setWritablePath (writablePath:string):void; + /** + * Set default resource root path. + */ + export function setDefaultResourceRootPath (filepath:string):void; + + /** + * Gets the array that contains the search order of the resources. + * + * @see setSearchResolutionsOrder(const std::vector<std::string>&), fullPathForFilename(const char*). + * @since v2.1 + * @lua NA + */ + export function getSearchResolutionsOrder ():Array<string>; + /** + * Creates a directory. + * + * @param dirPath The path of the directory, it must be an absolute path. + * @return True if the directory have been created successfully, false if not. + */ + export function createDirectory (dirPath:string):string; + /** + * List all files recursively in a directory. + * + * @param dirPath The path of the directory, it could be a relative or an absolute path. + * @return File paths in a string vector + */ + export function listFilesRecursively (dirPath:string, files:Array<string>):void; + /** + * Gets the writable path. + * @return The path that can be write/read a file in + */ + export function getWritablePath ():string; + } +} + +/** Running in the editor. */ +declare const CC_EDITOR: boolean; +/** Preview in browser or simulator. */ +declare const CC_PREVIEW: boolean; +/** Running in the editor or preview. */ +declare const CC_DEV: boolean; +/** Running in the editor or preview, or build in debug mode. */ +declare const CC_DEBUG: boolean; +/** Running in published project. */ +declare const CC_BUILD: boolean; +/** Running in native platforms (mobile app, desktop app, or simulator). */ +declare const CC_JSB: boolean; +/** Running in runtime environments. */ +declare const CC_RUNTIME: boolean; +/** Running in the engine's unit test. */ +declare const CC_TEST: boolean; +/** Running in the WeChat Mini Game. */ +declare const CC_WECHATGAME: boolean; diff --git a/play/jsconfig.json b/play/jsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..80c256327899be9d012417a825cd424b65d2d965 --- /dev/null +++ b/play/jsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "experimentalDecorators": true + }, + "exclude": [ + "node_modules", + ".vscode", + "library", + "local", + "settings", + "temp" + ] +} \ No newline at end of file diff --git a/play/project.json b/play/project.json new file mode 100644 index 0000000000000000000000000000000000000000..935ed80f1d5388a62de363ed1cb2236fc1ccb768 --- /dev/null +++ b/play/project.json @@ -0,0 +1,8 @@ +{ + "engine": "cocos-creator-js", + "packages": "packages", + "name": "play", + "id": "9af72fd2-44a6-4131-8ea3-3e1b3fa22231", + "version": "2.4.0", + "isNew": false +} \ No newline at end of file diff --git a/play/settings/project.json b/play/settings/project.json new file mode 100644 index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93 --- /dev/null +++ b/play/settings/project.json @@ -0,0 +1 @@ +{} diff --git a/play/settings/services.json b/play/settings/services.json new file mode 100644 index 0000000000000000000000000000000000000000..599b09ebfae30ceb483afbb75e8ef88f54e5e808 --- /dev/null +++ b/play/settings/services.json @@ -0,0 +1,6 @@ +{ + "game": { + "name": "未知游æˆ", + "appid": "UNKNOW" + } +} \ No newline at end of file diff --git a/play/tsconfig.json b/play/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..93c0b229b2793c061a418d397736dae701ecc025 --- /dev/null +++ b/play/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es2015", "es2017", "dom" ], + "target": "es5", + "experimentalDecorators": true, + "skipLibCheck": true, + "outDir": "temp/vscode-dist", + "forceConsistentCasingInFileNames": true + }, + "exclude": [ + "node_modules", + "library", + "local", + "temp", + "build", + "settings" + ] +} \ No newline at end of file diff --git a/publish/index.html b/publish/index.html new file mode 100644 index 0000000000000000000000000000000000000000..d4bf389faec104cc5286634abc03c84037876a0d --- /dev/null +++ b/publish/index.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + + <title>Cocos Creator | hello_world</title> + + <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1, minimum-scale=1,maximum-scale=1"/> + <meta name="apple-mobile-web-app-capable" content="yes"/> + <meta name="full-screen" content="yes"/> + <meta name="screen-orientation" content="portrait"/> + <meta name="x5-fullscreen" content="true"/> + <meta name="360-fullscreen" content="true"/> + + <meta name="renderer" content="webkit"/> + <meta name="force-rendering" content="webkit"/> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> + + <link rel="stylesheet" type="text/css" href="style-desktop.css"/> + <link rel="icon" href="favicon.ico"/> +</head> +<body> +<!-- <h1 class="header">hello_world</h1> --> + +<!-- <div id="GameDiv" style="width:1280px; height: 720px;"> --> +<canvas id="GameCanvas" width="100%" height="100%"></canvas> +<div id="splash"> + <div class="progress-bar stripes"> + <span style="width: 0%"></span> + </div> +</div> +<!-- </div> --> + +<!-- <p class="footer">Made with <a href="https://www.cocos.com/products#CocosCreator" title="cocos creator">Cocos Creator</a></p> --> + +<script src="src/settings.js" charset="utf-8"></script> +<script src="main.js" charset="utf-8"></script> +<script type="text/javascript" src="https://staging-teach.cdn.ireadabc.com/h5template/h5-static-lib/js/air.js"></script> + + +<script type="text/javascript"> +(function () { + // open web debugger console + if (typeof VConsole !== 'undefined') { + window.vConsole = new VConsole(); + } + + var debug = window._CCSettings.debug; + var splash = document.getElementById('splash'); + splash.style.display = 'block'; + + function loadScript (moduleName, cb) { + function scriptLoaded () { + document.body.removeChild(domScript); + domScript.removeEventListener('load', scriptLoaded, false); + cb && cb(); + }; + var domScript = document.createElement('script'); + domScript.async = true; + domScript.src = moduleName; + domScript.addEventListener('load', scriptLoaded, false); + document.body.appendChild(domScript); + } + + loadScript(debug ? 'cocos2d-js.js' : 'cocos2d-js-min.js', function () { + if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) { + loadScript(debug ? 'physics.js' : 'physics-min.js', window.boot); + } + else { + window.boot(); + } + }); +})(); +</script> + +</body> +</html>