diff --git a/examples/cocos-creator-2.4.7/backend/.gitignore b/examples/cocos-creator-2.4.7/backend/.gitignore
new file mode 100644
index 0000000..d84f0da
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/.gitignore
@@ -0,0 +1,3 @@
+node_modules
+dist
+.DS_STORE
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/.vscode/launch.json b/examples/cocos-creator-2.4.7/backend/.vscode/launch.json
new file mode 100644
index 0000000..9ba4218
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/.vscode/launch.json
@@ -0,0 +1,30 @@
+{
+ "configurations": [
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "mocha current file",
+ "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "args": [
+ "${file}"
+ ],
+ "internalConsoleOptions": "openOnSessionStart",
+ "cwd": "${workspaceFolder}"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "ts-node current file",
+ "protocol": "inspector",
+ "args": [
+ "${relativeFile}"
+ ],
+ "cwd": "${workspaceRoot}",
+ "runtimeArgs": [
+ "-r",
+ "ts-node/register"
+ ],
+ "internalConsoleOptions": "openOnSessionStart"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/.vscode/settings.json b/examples/cocos-creator-2.4.7/backend/.vscode/settings.json
new file mode 100644
index 0000000..00ad71f
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "typescript.tsdk": "node_modules\\typescript\\lib"
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/README.md b/examples/cocos-creator-2.4.7/backend/README.md
new file mode 100644
index 0000000..7492c22
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/README.md
@@ -0,0 +1,35 @@
+# TSRPC Server
+
+## Run
+### Local Dev Server
+```
+npm run dev
+```
+
+
+
+### Build
+```
+npm run build
+```
+
+---
+
+## Files
+### Generate ServiceProto
+```
+npm run proto
+```
+
+### Generate API templates
+```
+npm run api
+```
+
+### Sync shared code to client
+
+```
+npm run sync
+```
+
+> If you chose symlink when using `create-tsrpc-app`, it would re-create the symlink instead of copy files.
diff --git a/examples/cocos-creator-2.4.7/backend/package.json b/examples/cocos-creator-2.4.7/backend/package.json
new file mode 100644
index 0000000..ec6b3b4
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "chatroom-backend",
+ "version": "0.1.0",
+ "main": "index.js",
+ "private": true,
+ "scripts": {
+ "proto": "tsrpc proto --config tsrpc.config.ts",
+ "sync": "tsrpc sync --config tsrpc.config.ts",
+ "api": "tsrpc api --config tsrpc.config.ts",
+ "dev": "tsrpc dev --config tsrpc.config.ts",
+ "build": "tsrpc build --config tsrpc.config.ts"
+ },
+ "devDependencies": {
+ "@types/node": "^15.14.9",
+ "onchange": "^7.1.0",
+ "ts-node": "^9.1.1",
+ "tsrpc-cli": "^2.2.0",
+ "typescript": "^4.5.2"
+ },
+ "dependencies": {
+ "tsrpc": "^3.1.2"
+ }
+}
diff --git a/examples/cocos-creator-2.4.7/backend/src/api/ApiSend.ts b/examples/cocos-creator-2.4.7/backend/src/api/ApiSend.ts
new file mode 100644
index 0000000..0864ac3
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/api/ApiSend.ts
@@ -0,0 +1,23 @@
+import { ApiCall } from "tsrpc";
+import { server } from "..";
+import { ReqSend, ResSend } from "../shared/protocols/PtlSend";
+
+export async function ApiSend(call: ApiCall) {
+ // Error
+ if (call.req.content.length === 0) {
+ call.error('Content is empty')
+ return;
+ }
+
+ // Success
+ let time = new Date();
+ call.succ({
+ time: time
+ });
+
+ // Broadcast
+ server.broadcastMsg('Chat', {
+ content: call.req.content,
+ time: time
+ })
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/index.ts b/examples/cocos-creator-2.4.7/backend/src/index.ts
new file mode 100644
index 0000000..eab4171
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/index.ts
@@ -0,0 +1,24 @@
+import * as path from "path";
+import { WsServer } from "tsrpc";
+import { serviceProto } from './shared/protocols/serviceProto';
+
+// Create the Server
+export const server = new WsServer(serviceProto, {
+ port: 3000
+});
+
+// Entry function
+async function main() {
+ await server.autoImplementApi(path.resolve(__dirname, 'api'));
+
+ // TODO
+ // Prepare something... (e.g. connect the db)
+
+ await server.start();
+};
+
+main().catch(e => {
+ // Exit if any error during the startup
+ server.logger.error(e);
+ process.exit(-1);
+});
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols.meta b/examples/cocos-creator-2.4.7/backend/src/shared/protocols.meta
new file mode 100644
index 0000000..ae8e49b
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.3",
+ "uuid": "40721700-8121-4c1e-be92-c90e93cdc4c8",
+ "importer": "directory",
+ "isBundle": false,
+ "bundleName": "",
+ "priority": 1,
+ "compressionType": {},
+ "optimizeHotUpdate": {},
+ "inlineSpriteFrames": {},
+ "isRemoteBundle": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols/MsgChat.ts b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/MsgChat.ts
new file mode 100644
index 0000000..4912efe
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/MsgChat.ts
@@ -0,0 +1,4 @@
+export interface MsgChat {
+ content: string,
+ time: Date
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols/MsgChat.ts.meta b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/MsgChat.ts.meta
new file mode 100644
index 0000000..702d430
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/MsgChat.ts.meta
@@ -0,0 +1,10 @@
+{
+ "ver": "1.1.0",
+ "uuid": "43723a09-6be4-404b-a21a-22ad675d0e58",
+ "importer": "typescript",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "loadPluginInEditor": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols/PtlSend.ts b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/PtlSend.ts
new file mode 100644
index 0000000..ed2505d
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/PtlSend.ts
@@ -0,0 +1,7 @@
+export interface ReqSend {
+ content: string
+}
+
+export interface ResSend {
+ time: Date
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols/PtlSend.ts.meta b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/PtlSend.ts.meta
new file mode 100644
index 0000000..5af42f2
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/PtlSend.ts.meta
@@ -0,0 +1,10 @@
+{
+ "ver": "1.1.0",
+ "uuid": "48e989fd-b5a5-4a5b-ac68-71d7f7f3d8ee",
+ "importer": "typescript",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "loadPluginInEditor": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols/serviceProto.ts b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/serviceProto.ts
new file mode 100644
index 0000000..d007337
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/serviceProto.ts
@@ -0,0 +1,75 @@
+import { ServiceProto } from 'tsrpc-proto';
+import { MsgChat } from './MsgChat';
+import { ReqSend, ResSend } from './PtlSend';
+
+export interface ServiceType {
+ api: {
+ "Send": {
+ req: ReqSend,
+ res: ResSend
+ }
+ },
+ msg: {
+ "Chat": MsgChat
+ }
+}
+
+export const serviceProto: ServiceProto = {
+ "services": [
+ {
+ "id": 0,
+ "name": "Chat",
+ "type": "msg"
+ },
+ {
+ "id": 1,
+ "name": "Send",
+ "type": "api"
+ }
+ ],
+ "types": {
+ "MsgChat/MsgChat": {
+ "type": "Interface",
+ "properties": [
+ {
+ "id": 0,
+ "name": "content",
+ "type": {
+ "type": "String"
+ }
+ },
+ {
+ "id": 1,
+ "name": "time",
+ "type": {
+ "type": "Date"
+ }
+ }
+ ]
+ },
+ "PtlSend/ReqSend": {
+ "type": "Interface",
+ "properties": [
+ {
+ "id": 0,
+ "name": "content",
+ "type": {
+ "type": "String"
+ }
+ }
+ ]
+ },
+ "PtlSend/ResSend": {
+ "type": "Interface",
+ "properties": [
+ {
+ "id": 0,
+ "name": "time",
+ "type": {
+ "type": "Date"
+ }
+ }
+ ]
+ }
+ }
+};
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/src/shared/protocols/serviceProto.ts.meta b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/serviceProto.ts.meta
new file mode 100644
index 0000000..99c3b2f
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/src/shared/protocols/serviceProto.ts.meta
@@ -0,0 +1,10 @@
+{
+ "ver": "1.1.0",
+ "uuid": "aeef551d-77fd-412f-be4b-4ea615a24639",
+ "importer": "typescript",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "loadPluginInEditor": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/tsconfig.json b/examples/cocos-creator-2.4.7/backend/tsconfig.json
new file mode 100644
index 0000000..d18498f
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "lib": [
+ "es2018"
+ ],
+ "module": "commonjs",
+ "target": "es2018",
+ "outDir": "dist",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "moduleResolution": "node"
+ },
+ "include": [
+ "src"
+ ]
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/backend/tsrpc.config.ts b/examples/cocos-creator-2.4.7/backend/tsrpc.config.ts
new file mode 100644
index 0000000..c96a16a
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/backend/tsrpc.config.ts
@@ -0,0 +1,36 @@
+import { TsrpcConfig } from 'tsrpc-cli';
+
+const tsrpcConf: TsrpcConfig = {
+ // Generate ServiceProto
+ proto: [
+ {
+ ptlDir: 'src/shared/protocols', // Protocol dir
+ output: 'src/shared/protocols/serviceProto.ts', // Path for generated ServiceProto
+ apiDir: 'src/api' // API dir
+ }
+ ],
+ // Sync shared code
+ sync: [
+ {
+ from: 'src/shared',
+ to: '../frontend/assets/scripts/shared',
+ type: 'symlink' // Change this to 'copy' if your environment not support symlink
+ }
+ ],
+ // Dev server
+ dev: {
+ autoProto: true, // Auto regenerate proto
+ autoSync: true, // Auto sync when file changed
+ autoApi: true, // Auto create API when ServiceProto updated
+ watch: 'src', // Restart dev server when these files changed
+ entry: 'src/index.ts', // Dev server command: node -r ts-node/register {entry}
+ },
+ // Build config
+ build: {
+ autoProto: true, // Auto generate proto before build
+ autoSync: true, // Auto sync before build
+ autoApi: true, // Auto generate API before build
+ outDir: 'dist', // Clean this dir before build
+ }
+}
+export default tsrpcConf;
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/.gitignore b/examples/cocos-creator-2.4.7/frontend/.gitignore
new file mode 100644
index 0000000..93f1a91
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/.gitignore
@@ -0,0 +1,53 @@
+#/////////////////////////////////////////////////////////////////////////////
+# Fireball Projects
+#/////////////////////////////////////////////////////////////////////////////
+
+/library/
+/temp/
+/local/
+/build/
+native
+#/////////////////////////////////////////////////////////////////////////////
+# 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/examples/cocos-creator-2.4.7/frontend/assets/Lobby.fire b/examples/cocos-creator-2.4.7/frontend/assets/Lobby.fire
new file mode 100644
index 0000000..5eb0e70
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/Lobby.fire
@@ -0,0 +1,4377 @@
+[
+ {
+ "__type__": "cc.SceneAsset",
+ "_name": "",
+ "_objFlags": 0,
+ "_native": "",
+ "scene": {
+ "__id__": 1
+ }
+ },
+ {
+ "__type__": "cc.Scene",
+ "_objFlags": 0,
+ "_parent": null,
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 66
+ }
+ ],
+ "_active": true,
+ "_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": false,
+ "_id": "afd1e858-cfd0-487d-9bb2-08a676dc214e"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "Canvas",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 5
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__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": 750,
+ "height": 1334
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 375,
+ 667,
+ 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,
+ 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": "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": "bg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 2
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 7
+ }
+ ],
+ "_prefab": null,
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 750,
+ "height": 1334
+ },
+ "_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": "1ai39DdKlIW6pcYPQdwjW0"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "31kCOn9IFFyJDMFZogJhi7"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_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": 100,
+ "_originalHeight": 100,
+ "_id": "82PXy9SCBFs7vTe+RQL5f6"
+ },
+ {
+ "__type__": "cc.Canvas",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_designResolution": {
+ "__type__": "cc.Size",
+ "width": 750,
+ "height": 1334
+ },
+ "_fitWidth": true,
+ "_fitHeight": false,
+ "_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__": "cc.Node",
+ "_name": "chatBox",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 11
+ },
+ {
+ "__id__": 14
+ },
+ {
+ "__id__": 21
+ },
+ {
+ "__id__": 39
+ },
+ {
+ "__id__": 55
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 64
+ }
+ ],
+ "_prefab": {
+ "__id__": 65
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 400
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 366.438,
+ 955.711,
+ 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": "5b5l/s4x5D0LUukJwGesfp"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 10
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 12
+ }
+ ],
+ "_prefab": {
+ "__id__": 13
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 202,
+ "g": 202,
+ "b": 202,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 400
+ },
+ "_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": "d1oeY7BAxOT7XqbjXouMmF"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 11
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "d1ygkB+3FM9ZDPVixsW4hI"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "9eL2pY5VdMvL2mVXICp/MD",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 10
+ },
+ "_children": [
+ {
+ "__id__": 15
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 18
+ },
+ {
+ "__id__": 19
+ }
+ ],
+ "_prefab": {
+ "__id__": 20
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 50
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 175,
+ 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": "f03rBL+RdEIJbD9X3Fob2O"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 14
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 16
+ }
+ ],
+ "_prefab": {
+ "__id__": 17
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 97.87,
+ "height": 50.4
+ },
+ "_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": "58DNaDm59JyqWqxCmJpaJ7"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 15
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "Label",
+ "_N$string": "Label",
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 0,
+ "_N$cacheMode": 0,
+ "_id": "1bPBAd0UJA1J+hwVE9pYqA"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "6flHkBG7FOlYrVMzUHMUmc",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 14
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "faCSzye9lK4p5EYkxu+HxM"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 14
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 1,
+ "_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": "37tqD0XzdFxY96DnhXBbsr"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "feHYKNBVBHRIkL0FNEpCPJ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "messageScrollView",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 10
+ },
+ "_children": [
+ {
+ "__id__": 22
+ },
+ {
+ "__id__": 29
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 37
+ },
+ {
+ "__id__": 27
+ }
+ ],
+ "_prefab": {
+ "__id__": 38
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_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": "6cJrh1d1pIjoYJBzwF9/ll"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "scrollBar",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 21
+ },
+ "_children": [
+ {
+ "__id__": 23
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 26
+ },
+ {
+ "__id__": 34
+ },
+ {
+ "__id__": 35
+ }
+ ],
+ "_prefab": {
+ "__id__": 36
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 12,
+ "height": 300
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 300,
+ 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": "11pNm0M99DBpAEB/UhNp21"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bar",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 22
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 24
+ }
+ ],
+ "_prefab": {
+ "__id__": 25
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 10,
+ "height": 30
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -1,
+ 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": "2cSS2FqI9N24Vh5QpjxgX0"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 23
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "5c3bb932-6c3c-468f-88a9-c8c61d458641"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "c2d/0SInFCzanDImDUwK83"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "32UdI/0zVF9Z0DSb3VZV8Y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Scrollbar",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "_scrollView": {
+ "__id__": 27
+ },
+ "_touching": false,
+ "_opacity": 255,
+ "enableAutoHide": true,
+ "autoHideTime": 1,
+ "_N$handle": {
+ "__id__": 24
+ },
+ "_N$direction": 1,
+ "_id": "35ebTAgg9MeY9o/e1mxkEN"
+ },
+ {
+ "__type__": "cc.ScrollView",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "horizontal": false,
+ "vertical": true,
+ "inertia": true,
+ "brake": 0.75,
+ "elastic": true,
+ "bounceDuration": 0.23,
+ "scrollEvents": [],
+ "cancelInnerEvents": true,
+ "_N$content": {
+ "__id__": 28
+ },
+ "content": {
+ "__id__": 28
+ },
+ "_N$horizontalScrollBar": null,
+ "_N$verticalScrollBar": {
+ "__id__": 26
+ },
+ "_id": "0asuctcIBJGrEPN2g1f0tY"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 29
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 32
+ }
+ ],
+ "_prefab": {
+ "__id__": 33
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 150,
+ 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": "e1b/D9OQtNWrNqWHoNIfMP"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "view",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 21
+ },
+ "_children": [
+ {
+ "__id__": 28
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 30
+ }
+ ],
+ "_prefab": {
+ "__id__": 31
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_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": "dcEdybfCpBQIMVqQaDC5k3"
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 29
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_spriteFrame": null,
+ "_type": 0,
+ "_segments": 64,
+ "_N$alphaThreshold": 0,
+ "_N$inverted": false,
+ "_id": "a3zlvTnxVK8IOQoNysNPOc"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "7clqfa5p9BSqSCZXtjCArC",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 28
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 200
+ },
+ "_resize": 1,
+ "_N$layoutType": 2,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 10,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 10,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0,
+ "_N$affectedByScale": false,
+ "_id": "d84YejfSVM1IgeAXgHt8im"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "cabXzQaWRKC5chQC58HSP+",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 37,
+ "_left": 350.07654921020657,
+ "_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": 237,
+ "_id": "aefnSRTNhDs7xvFU2Yxh3O"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 22
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "5fe5dcaa-b513-4dc5-a166-573627b3a159"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "62ZY1QmxZG55abq1YbD2Em"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "bfQdfq9/JGAbGyyQkES4Tb",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 21
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "48yvIDF6NERb+7h+blFZ8L"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "a2mYmjHBxLI5gfe8swN9ag",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "inputMsg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 10
+ },
+ "_children": [
+ {
+ "__id__": 40
+ },
+ {
+ "__id__": 44
+ },
+ {
+ "__id__": 48
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 52
+ },
+ {
+ "__id__": 53
+ }
+ ],
+ "_prefab": {
+ "__id__": 54
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -300,
+ -180,
+ 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": "b3SXnBVThABZBTdOSfr1oZ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "BACKGROUND_SPRITE",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 39
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 41
+ },
+ {
+ "__id__": 42
+ }
+ ],
+ "_prefab": {
+ "__id__": 43
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 250,
+ 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": "37d3NLSktOeq5e7Vlz5Xsh"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 40
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "ff0e91c7-55c6-4086-a39f-cb6e457b8c3b"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "46xfTM8EZIBLuhhpg6hT5G"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 40
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_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": 160,
+ "_originalHeight": 40,
+ "_id": "9fWVph491GULAtyuCQr0gW"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "5frGCN6OBFNrOmAK5gPlFQ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "TEXT_LABEL",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 39
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 45
+ },
+ {
+ "__id__": 46
+ }
+ ],
+ "_prefab": {
+ "__id__": 47
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -78,
+ 20,
+ 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": "98R/l3b6JPm6JHNeoR1zqX"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 44
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "",
+ "_N$string": "",
+ "_fontSize": 20,
+ "_lineHeight": 25,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 1,
+ "_N$cacheMode": 0,
+ "_id": "0fa1TSV0FPgLtG4WX1nVBX"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 44
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 45,
+ "_left": 2,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 158,
+ "_originalHeight": 40,
+ "_id": "d7148gCOVIdLutgxJO+AjT"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "0bwlFR97ZDbYeDo9Mae+1c",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PLACEHOLDER_LABEL",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 39
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 49
+ },
+ {
+ "__id__": 50
+ }
+ ],
+ "_prefab": {
+ "__id__": 51
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 187,
+ "g": 187,
+ "b": 187,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 498,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 2,
+ 20,
+ 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": "7d8IFdaPlArLwsZCz9r3df"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 48
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "Enter text here...",
+ "_N$string": "Enter text here...",
+ "_fontSize": 20,
+ "_lineHeight": 25,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 1,
+ "_N$cacheMode": 0,
+ "_id": "37nZmGwZpNfroYCOn5vDNo"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 48
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 45,
+ "_left": 2,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 158,
+ "_originalHeight": 40,
+ "_id": "8f2N1PZ2lBFpcJhJ8B6LfR"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "b1CHAL77pK+o8+khnjTa6u",
+ "sync": false
+ },
+ {
+ "__type__": "cc.EditBox",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 39
+ },
+ "_enabled": true,
+ "_string": "",
+ "returnType": 0,
+ "maxLength": 8,
+ "_tabIndex": 0,
+ "editingDidBegan": [],
+ "textChanged": [],
+ "editingDidEnded": [],
+ "editingReturn": [],
+ "_N$textLabel": {
+ "__id__": 45
+ },
+ "_N$placeholderLabel": {
+ "__id__": 49
+ },
+ "_N$background": {
+ "__id__": 41
+ },
+ "_N$inputFlag": 5,
+ "_N$inputMode": 6,
+ "_N$stayOnTop": false,
+ "_id": "00dKgmfNlH3Za2dAacJ5aH"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 39
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 12,
+ "_left": 0,
+ "_right": -200,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 500,
+ "_originalHeight": 0,
+ "_id": "abt9pKBrpKXbc6vJ0wIS/L"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "85TNwcYQdMNo9qLg4LYOwe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnSend",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 10
+ },
+ "_children": [
+ {
+ "__id__": 56
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 59
+ },
+ {
+ "__id__": 60
+ },
+ {
+ "__id__": 61
+ }
+ ],
+ "_prefab": {
+ "__id__": 63
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 33,
+ "g": 95,
+ "b": 164,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 100,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 250,
+ -180,
+ 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": "ddKa+QwR9EMZIhSfOy6dE3"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 55
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 57
+ }
+ ],
+ "_prefab": {
+ "__id__": 58
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 52.04,
+ "height": 50.4
+ },
+ "_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": "13FC47ip5HPobgDtqj1RLD"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 56
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "send",
+ "_N$string": "send",
+ "_fontSize": 24,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 0,
+ "_N$cacheMode": 0,
+ "_id": "b392eVLMhIPZHDzmH/rL2k"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "a8IJQkCctBBJL1rj+8UdI7",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 55
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "45GVt/qo9M76HAj12JZyM8"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 55
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 36,
+ "_left": 0,
+ "_right": 0,
+ "_top": 847,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 40,
+ "_id": "75LqPsGKVFAYrLopVFso6F"
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 55
+ },
+ "_enabled": true,
+ "_normalMaterial": null,
+ "_grayMaterial": null,
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "clickEvents": [
+ {
+ "__id__": 62
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$transition": 1,
+ "transition": 1,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 33,
+ "g": 95,
+ "b": 164,
+ "a": 255
+ },
+ "_N$pressedColor": {
+ "__type__": "cc.Color",
+ "r": 63,
+ "g": 138,
+ "b": 221,
+ "a": 255
+ },
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 63,
+ "g": 138,
+ "b": 221,
+ "a": 255
+ },
+ "_N$hoverColor": {
+ "__type__": "cc.Color",
+ "r": 47,
+ "g": 116,
+ "b": 194,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 47,
+ "g": 116,
+ "b": 194,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$pressedSprite": null,
+ "pressedSprite": null,
+ "_N$hoverSprite": null,
+ "hoverSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null,
+ "_id": "51W9Kn3qZG/Z94Vh7yeQDZ"
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 10
+ },
+ "component": "",
+ "_componentId": "59518Jz+AVEI7+XgVAQo6O6",
+ "handler": "send",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "fbVySGLwVAD6X1S/yqpLbo",
+ "sync": false
+ },
+ {
+ "__type__": "59518Jz+AVEI7+XgVAQo6O6",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 10
+ },
+ "_enabled": true,
+ "roomName": "client1",
+ "prefabMsgItem": {
+ "__uuid__": "1aa44a1e-ba27-4984-b173-f385fca2a8b2"
+ },
+ "labelTitle": {
+ "__id__": 16
+ },
+ "msgScroll": {
+ "__id__": 27
+ },
+ "inputSend": {
+ "__id__": 52
+ },
+ "_id": "66cmAEVy1C74nsQWgf/yL7"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 10
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatBox",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 67
+ },
+ {
+ "__id__": 70
+ },
+ {
+ "__id__": 77
+ },
+ {
+ "__id__": 95
+ },
+ {
+ "__id__": 111
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 120
+ }
+ ],
+ "_prefab": {
+ "__id__": 121
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 400
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 368.432,
+ 380.128,
+ 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": "9afOzJndpK44tcKdSGmNyZ"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 66
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 68
+ }
+ ],
+ "_prefab": {
+ "__id__": 69
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 202,
+ "g": 202,
+ "b": 202,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 400
+ },
+ "_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": "44dj7JmrFDeaEU6q3J9aAa"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 67
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "217au7pylFp73Hze9EonqL"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "9eL2pY5VdMvL2mVXICp/MD",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 66
+ },
+ "_children": [
+ {
+ "__id__": 71
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 74
+ },
+ {
+ "__id__": 75
+ }
+ ],
+ "_prefab": {
+ "__id__": 76
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 50
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 175,
+ 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": "198ZE9yAZGNZccqAbn/OFT"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 70
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 72
+ }
+ ],
+ "_prefab": {
+ "__id__": 73
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 97.87,
+ "height": 50.4
+ },
+ "_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": "064v0mI9tPuqLPbvgwJve0"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 71
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "Label",
+ "_N$string": "Label",
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 0,
+ "_N$cacheMode": 0,
+ "_id": "a0+kOcmbNE26qCO+BjLwDS"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "6flHkBG7FOlYrVMzUHMUmc",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 70
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "a39jYzs39CuKxLU+7lX7Z3"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 70
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 1,
+ "_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": "263df0X5lFWJXGzQLut1fm"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "feHYKNBVBHRIkL0FNEpCPJ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "messageScrollView",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 66
+ },
+ "_children": [
+ {
+ "__id__": 78
+ },
+ {
+ "__id__": 85
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 93
+ },
+ {
+ "__id__": 83
+ }
+ ],
+ "_prefab": {
+ "__id__": 94
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_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": "cbEK1Vj2dEpo+k33ttyKFT"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "scrollBar",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 77
+ },
+ "_children": [
+ {
+ "__id__": 79
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 82
+ },
+ {
+ "__id__": 90
+ },
+ {
+ "__id__": 91
+ }
+ ],
+ "_prefab": {
+ "__id__": 92
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 12,
+ "height": 300
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 300,
+ 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": "f2buzGRn9G7I1NERtH19Ry"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "bar",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 78
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 80
+ }
+ ],
+ "_prefab": {
+ "__id__": 81
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 10,
+ "height": 30
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -1,
+ 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": "a1llnB/55CNL7GqzFUgNlm"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 79
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "5c3bb932-6c3c-468f-88a9-c8c61d458641"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "23IvXYCY5NDoIftKLloBu+"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "32UdI/0zVF9Z0DSb3VZV8Y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Scrollbar",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 78
+ },
+ "_enabled": true,
+ "_scrollView": {
+ "__id__": 83
+ },
+ "_touching": false,
+ "_opacity": 255,
+ "enableAutoHide": true,
+ "autoHideTime": 1,
+ "_N$handle": {
+ "__id__": 80
+ },
+ "_N$direction": 1,
+ "_id": "7bMnNH8kJMyrX3McKFt1w0"
+ },
+ {
+ "__type__": "cc.ScrollView",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 77
+ },
+ "_enabled": true,
+ "horizontal": false,
+ "vertical": true,
+ "inertia": true,
+ "brake": 0.75,
+ "elastic": true,
+ "bounceDuration": 0.23,
+ "scrollEvents": [],
+ "cancelInnerEvents": true,
+ "_N$content": {
+ "__id__": 84
+ },
+ "content": {
+ "__id__": 84
+ },
+ "_N$horizontalScrollBar": null,
+ "_N$verticalScrollBar": {
+ "__id__": 82
+ },
+ "_id": "4dnXaa1vRBXpT+Nt2sOeWT"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 85
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 88
+ }
+ ],
+ "_prefab": {
+ "__id__": 89
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 150,
+ 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": "8e1KyNhPZC3buMnfmOQeUj"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "view",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 77
+ },
+ "_children": [
+ {
+ "__id__": 84
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 86
+ }
+ ],
+ "_prefab": {
+ "__id__": 87
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_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": "3daMvMAg9L+bComaQoHVRa"
+ },
+ {
+ "__type__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 85
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_spriteFrame": null,
+ "_type": 0,
+ "_segments": 64,
+ "_N$alphaThreshold": 0,
+ "_N$inverted": false,
+ "_id": "03JIWYB+dEPZ5Rya4By3oO"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "7clqfa5p9BSqSCZXtjCArC",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 84
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 200
+ },
+ "_resize": 1,
+ "_N$layoutType": 2,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 10,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 10,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0,
+ "_N$affectedByScale": false,
+ "_id": "34xNEGzjBLCKwu1b2SK54V"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "cabXzQaWRKC5chQC58HSP+",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 78
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 37,
+ "_left": 350.07654921020657,
+ "_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": 237,
+ "_id": "b0yzxYNStDrok9NZhimry9"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 78
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "5fe5dcaa-b513-4dc5-a166-573627b3a159"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "e7I3foQ7lPKrqXGcMj9EE9"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "bfQdfq9/JGAbGyyQkES4Tb",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 77
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "cenalq1I1DibLdEXK3N+6S"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "a2mYmjHBxLI5gfe8swN9ag",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "inputMsg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 66
+ },
+ "_children": [
+ {
+ "__id__": 96
+ },
+ {
+ "__id__": 100
+ },
+ {
+ "__id__": 104
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 108
+ },
+ {
+ "__id__": 109
+ }
+ ],
+ "_prefab": {
+ "__id__": 110
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -300,
+ -180,
+ 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": "46HkvvwRVOm7G3/QreQjfE"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "BACKGROUND_SPRITE",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 95
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 97
+ },
+ {
+ "__id__": 98
+ }
+ ],
+ "_prefab": {
+ "__id__": 99
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 250,
+ 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": "e4B5dmxbFIbZS7maYbxenl"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 96
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "ff0e91c7-55c6-4086-a39f-cb6e457b8c3b"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "60gbhL7dFCA7w8NJIC4L1O"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 96
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_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": 160,
+ "_originalHeight": 40,
+ "_id": "ceX46MNKtCU7ATKlZKfvuA"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "5frGCN6OBFNrOmAK5gPlFQ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "TEXT_LABEL",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 95
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 101
+ },
+ {
+ "__id__": 102
+ }
+ ],
+ "_prefab": {
+ "__id__": 103
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -78,
+ 20,
+ 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": "8cM1325G5KVbn9iicLu/gV"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 100
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "",
+ "_N$string": "",
+ "_fontSize": 20,
+ "_lineHeight": 25,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 1,
+ "_N$cacheMode": 0,
+ "_id": "94K8nYjohJVqH0I4J8mDsB"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 100
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 45,
+ "_left": 2,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 158,
+ "_originalHeight": 40,
+ "_id": "dfsB8o0DFA4bgtSMC0uCIS"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "0bwlFR97ZDbYeDo9Mae+1c",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PLACEHOLDER_LABEL",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 95
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 105
+ },
+ {
+ "__id__": 106
+ }
+ ],
+ "_prefab": {
+ "__id__": 107
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 187,
+ "g": 187,
+ "b": 187,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 498,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 2,
+ 20,
+ 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": "1dipKjksFPUp9wJihs+OuQ"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 104
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "Enter text here...",
+ "_N$string": "Enter text here...",
+ "_fontSize": 20,
+ "_lineHeight": 25,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 1,
+ "_N$cacheMode": 0,
+ "_id": "ceqt7JUwBL2Lq/z/ksQkhQ"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 104
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 45,
+ "_left": 2,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 158,
+ "_originalHeight": 40,
+ "_id": "ec4i7MWY5JIaJ5SV5aZXGn"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "b1CHAL77pK+o8+khnjTa6u",
+ "sync": false
+ },
+ {
+ "__type__": "cc.EditBox",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 95
+ },
+ "_enabled": true,
+ "_string": "",
+ "returnType": 0,
+ "maxLength": 8,
+ "_tabIndex": 0,
+ "editingDidBegan": [],
+ "textChanged": [],
+ "editingDidEnded": [],
+ "editingReturn": [],
+ "_N$textLabel": {
+ "__id__": 101
+ },
+ "_N$placeholderLabel": {
+ "__id__": 105
+ },
+ "_N$background": {
+ "__id__": 97
+ },
+ "_N$inputFlag": 5,
+ "_N$inputMode": 6,
+ "_N$stayOnTop": false,
+ "_id": "52MRWrQcJFrpeGV9x6w8fX"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 95
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 12,
+ "_left": 0,
+ "_right": -200,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 500,
+ "_originalHeight": 0,
+ "_id": "1eJi+32W5Ps7SvH97IMIft"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "85TNwcYQdMNo9qLg4LYOwe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnSend",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 66
+ },
+ "_children": [
+ {
+ "__id__": 112
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 115
+ },
+ {
+ "__id__": 116
+ },
+ {
+ "__id__": 117
+ }
+ ],
+ "_prefab": {
+ "__id__": 119
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 33,
+ "g": 95,
+ "b": 164,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 100,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 250,
+ -180,
+ 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": "f9hs/mMxVED6wNhTgWWlEo"
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 111
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 113
+ }
+ ],
+ "_prefab": {
+ "__id__": 114
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 52.04,
+ "height": 50.4
+ },
+ "_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": "04gBBpYFlHa61L1lJ7xcN4"
+ },
+ {
+ "__type__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 112
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "send",
+ "_N$string": "send",
+ "_fontSize": 24,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 0,
+ "_N$cacheMode": 0,
+ "_id": "7fWnhHjfpM16362IworElM"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "a8IJQkCctBBJL1rj+8UdI7",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 111
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": "78pJHq8EtI7ZxuOGNAXLwc"
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 111
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 36,
+ "_left": 0,
+ "_right": 0,
+ "_top": 847,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 40,
+ "_id": "02SZsammJFAIx+eZBIHQMD"
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 111
+ },
+ "_enabled": true,
+ "_normalMaterial": null,
+ "_grayMaterial": null,
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "clickEvents": [
+ {
+ "__id__": 118
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$transition": 1,
+ "transition": 1,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 33,
+ "g": 95,
+ "b": 164,
+ "a": 255
+ },
+ "_N$pressedColor": {
+ "__type__": "cc.Color",
+ "r": 63,
+ "g": 138,
+ "b": 221,
+ "a": 255
+ },
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 63,
+ "g": 138,
+ "b": 221,
+ "a": 255
+ },
+ "_N$hoverColor": {
+ "__type__": "cc.Color",
+ "r": 47,
+ "g": 116,
+ "b": 194,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 47,
+ "g": 116,
+ "b": 194,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$pressedSprite": null,
+ "pressedSprite": null,
+ "_N$hoverSprite": null,
+ "hoverSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null,
+ "_id": "17beVU4QBJ8rFY0snEePoV"
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 66
+ },
+ "component": "",
+ "_componentId": "59518Jz+AVEI7+XgVAQo6O6",
+ "handler": "send",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "fbVySGLwVAD6X1S/yqpLbo",
+ "sync": false
+ },
+ {
+ "__type__": "59518Jz+AVEI7+XgVAQo6O6",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 66
+ },
+ "_enabled": true,
+ "roomName": "client2",
+ "prefabMsgItem": {
+ "__uuid__": "1aa44a1e-ba27-4984-b173-f385fca2a8b2"
+ },
+ "labelTitle": {
+ "__id__": 72
+ },
+ "msgScroll": {
+ "__id__": 83
+ },
+ "inputSend": {
+ "__id__": 108
+ },
+ "_id": "abk2Upo1VAF4KTTf+OEUkz"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 66
+ },
+ "asset": {
+ "__uuid__": "ba339ce2-edd5-4916-8935-f8550c2e0c42"
+ },
+ "fileId": "",
+ "sync": false
+ }
+]
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/Lobby.fire.meta b/examples/cocos-creator-2.4.7/frontend/assets/Lobby.fire.meta
new file mode 100644
index 0000000..f916470
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/Lobby.fire.meta
@@ -0,0 +1,8 @@
+{
+ "ver": "1.3.2",
+ "uuid": "afd1e858-cfd0-487d-9bb2-08a676dc214e",
+ "importer": "scene",
+ "asyncLoadAssets": false,
+ "autoReleaseAssets": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs.meta
new file mode 100644
index 0000000..4ca3629
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.3",
+ "uuid": "c7b20543-c770-4080-b07d-a2e073bcc0a0",
+ "importer": "folder",
+ "isBundle": false,
+ "bundleName": "",
+ "priority": 1,
+ "compressionType": {},
+ "optimizeHotUpdate": {},
+ "inlineSpriteFrames": {},
+ "isRemoteBundle": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox.meta
new file mode 100644
index 0000000..ac978e1
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.3",
+ "uuid": "35dbc052-8b38-4ebc-a2d2-51bb5a939c87",
+ "importer": "folder",
+ "isBundle": false,
+ "bundleName": "",
+ "priority": 1,
+ "compressionType": {},
+ "optimizeHotUpdate": {},
+ "inlineSpriteFrames": {},
+ "isRemoteBundle": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox.ts b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox.ts
new file mode 100644
index 0000000..43546e8
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox.ts
@@ -0,0 +1,97 @@
+
+import { BaseWsClient } from 'tsrpc-base-client';
+import { WsClient as WsClientBrowser } from 'tsrpc-browser';
+import { MsgChat } from '../../scripts/shared/protocols/MsgChat';
+import { serviceProto, ServiceType } from '../../scripts/shared/protocols/serviceProto';
+import { ChatBoxMsgItem } from './ChatBox_MsgItem/ChatBoxMsgItem';
+const {ccclass, property} = cc._decorator;
+
+
+@ccclass('ChatBox')
+export class ChatBox extends cc.Component {
+
+ @property
+ roomName = '';
+
+ // Prefabs
+ @property(cc.Prefab)
+ prefabMsgItem!: cc.Prefab;
+
+ // Nodes
+ @property(cc.Label)
+ labelTitle!: cc.Label;
+ @property(cc.ScrollView)
+ msgScroll!: cc.ScrollView;
+ @property(cc.EditBox)
+ inputSend!: cc.EditBox;
+
+ client!: BaseWsClient;
+
+ onLoad() {
+ // Create client by platform
+
+ this.client = new WsClientBrowser(serviceProto, {
+ server: 'ws://127.0.0.1:3000',
+ logger: console
+ })
+
+
+ // Connect at startup
+ this.connect();
+
+ // Listen Msg
+ this.client.listenMsg('Chat', v => { this.onChatMsg(v) })
+
+ // When disconnected
+ this.client.flows.postDisconnectFlow.push(v => {
+ // Retry after 2 seconds
+ this.labelTitle.string = `🔴 Disconnected`;
+ setTimeout(() => {
+ this.connect();
+ }, 2000)
+ return v;
+ })
+ }
+
+ async connect(): Promise {
+ this.labelTitle.string = `🟡 Connecting...`;
+ let res = await this.client.connect();
+ if (!res.isSucc) {
+ this.labelTitle.string = `🔴 Disconnected`;
+
+ // Retry after 2 seconds
+ await new Promise(rs => { setTimeout(rs, 2000) });
+ await this.connect();
+ }
+
+ this.labelTitle.string = '🟢 ' + this.roomName;
+ }
+
+ async send() {
+ if (!this.inputSend.string) {
+ return;
+ }
+
+ let ret = await this.client.callApi('Send', {
+ content: this.inputSend.string
+ });
+
+ // Error
+ if (!ret.isSucc) {
+ alert(ret.err.message);
+ return;
+ }
+
+ // Success
+ this.inputSend.string = '';
+ }
+
+ onChatMsg(msg: MsgChat) {
+ let node = cc.instantiate(this.prefabMsgItem);
+ this.msgScroll.content!.addChild(node);
+ node.getComponent(ChatBoxMsgItem)!.options = {
+ msg: msg
+ }
+ this.msgScroll.scrollToBottom(0.2);
+ }
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox.ts.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox.ts.meta
new file mode 100644
index 0000000..a51fc14
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox.ts.meta
@@ -0,0 +1,10 @@
+{
+ "ver": "1.1.0",
+ "uuid": "59518273-f805-4423-bf97-815010a3a3ba",
+ "importer": "typescript",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "loadPluginInEditor": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem.meta
new file mode 100644
index 0000000..d42349e
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.3",
+ "uuid": "6696c433-4f30-4fe7-8b17-0c4b44ab970b",
+ "importer": "folder",
+ "isBundle": false,
+ "bundleName": "",
+ "priority": 1,
+ "compressionType": {},
+ "optimizeHotUpdate": {},
+ "inlineSpriteFrames": {},
+ "isRemoteBundle": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBoxMsgItem.ts b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBoxMsgItem.ts
new file mode 100644
index 0000000..aadd1c8
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBoxMsgItem.ts
@@ -0,0 +1,31 @@
+import { MsgChat } from "../../../scripts/shared/protocols/MsgChat";
+
+
+
+const { ccclass, property } = cc._decorator;
+
+export interface ChatBoxMsgItemOptions {
+ msg: MsgChat
+}
+
+@ccclass('ChatBoxMsgItem')
+export class ChatBoxMsgItem extends cc.Component {
+
+ @property(cc.Label)
+ labelMessage!: cc.Label;
+ @property(cc.Label)
+ labelTime!: cc.Label;
+
+
+ private _options!: ChatBoxMsgItemOptions;
+ public get options(): ChatBoxMsgItemOptions {
+ return this._options;
+ }
+ public set options(v: ChatBoxMsgItemOptions) {
+ this._options = v;
+
+ this.labelMessage.string = v.msg.content;
+ this.labelTime.string = v.msg.time.toLocaleTimeString();
+ }
+
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBoxMsgItem.ts.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBoxMsgItem.ts.meta
new file mode 100644
index 0000000..3b77139
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBoxMsgItem.ts.meta
@@ -0,0 +1,10 @@
+{
+ "ver": "1.1.0",
+ "uuid": "78d1aea4-2634-4860-a2c9-782a04d067db",
+ "importer": "typescript",
+ "isPlugin": false,
+ "loadPluginInWeb": true,
+ "loadPluginInNative": true,
+ "loadPluginInEditor": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBox_MsgItem.prefab b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBox_MsgItem.prefab
new file mode 100644
index 0000000..27a48ae
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBox_MsgItem.prefab
@@ -0,0 +1,421 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_native": "",
+ "data": {
+ "__id__": 1
+ },
+ "optimizationPolicy": 0,
+ "asyncLoadAssets": false,
+ "readonly": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "ChatBox_MsgItem",
+ "_objFlags": 0,
+ "_parent": null,
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 6
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 10
+ },
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": {
+ "__id__": 12
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ -60,
+ 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__": "cc.Node",
+ "_name": "message",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 4
+ }
+ ],
+ "_prefab": {
+ "__id__": 5
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 450,
+ "height": 54.239999999999995
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -230,
+ 45,
+ 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__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "messageeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffff",
+ "_N$string": "messageeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffff",
+ "_fontSize": 24,
+ "_lineHeight": 24,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 3,
+ "_N$cacheMode": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 9,
+ "_left": 20,
+ "_right": 0,
+ "_top": 5,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "2eXmKmE9BLPI02lVkytbrL",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "time",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ },
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": {
+ "__id__": 9
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 75,
+ "g": 128,
+ "b": 187,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 450,
+ "height": 30.240000000000002
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 220,
+ -14.759999999999998,
+ 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__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "10.22.22",
+ "_N$string": "10.22.22",
+ "_fontSize": 24,
+ "_lineHeight": 24,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 2,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 3,
+ "_N$cacheMode": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 36,
+ "_left": 20,
+ "_right": 30,
+ "_top": 5,
+ "_bottom": 5,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 450,
+ "_originalHeight": 54.239999999999995,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "c4C1Aq66VNEpCu0sJZFvMD",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "78d1a6kJjRIYKLJeCoE0Gfb",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "labelMessage": {
+ "__id__": 3
+ },
+ "labelTime": {
+ "__id__": 7
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "",
+ "sync": false
+ }
+]
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBox_MsgItem.prefab.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBox_MsgItem.prefab.meta
new file mode 100644
index 0000000..584750d
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/ChatBox_MsgItem/ChatBox_MsgItem.prefab.meta
@@ -0,0 +1,9 @@
+{
+ "ver": "1.3.2",
+ "uuid": "1aa44a1e-ba27-4984-b173-f385fca2a8b2",
+ "importer": "prefab",
+ "optimizationPolicy": "AUTO",
+ "asyncLoadAssets": false,
+ "readonly": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/chatBox.prefab b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/chatBox.prefab
new file mode 100644
index 0000000..3481df4
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/chatBox.prefab
@@ -0,0 +1,1993 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "",
+ "_objFlags": 0,
+ "_native": "",
+ "data": {
+ "__id__": 1
+ },
+ "optimizationPolicy": 0,
+ "asyncLoadAssets": false,
+ "readonly": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "chatBox",
+ "_objFlags": 0,
+ "_parent": null,
+ "_children": [
+ {
+ "__id__": 2
+ },
+ {
+ "__id__": 5
+ },
+ {
+ "__id__": 12
+ },
+ {
+ "__id__": 30
+ },
+ {
+ "__id__": 46
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 55
+ }
+ ],
+ "_prefab": {
+ "__id__": 56
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 400
+ },
+ "_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__": "cc.Node",
+ "_name": "bg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ }
+ ],
+ "_prefab": {
+ "__id__": 4
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 202,
+ "g": 202,
+ "b": 202,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 400
+ },
+ "_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__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "9eL2pY5VdMvL2mVXICp/MD",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "title",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 6
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 9
+ },
+ {
+ "__id__": 10
+ }
+ ],
+ "_prefab": {
+ "__id__": 11
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 0,
+ "g": 0,
+ "b": 0,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 50
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 175,
+ 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__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 5
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 7
+ }
+ ],
+ "_prefab": {
+ "__id__": 8
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 97.87,
+ "height": 50.4
+ },
+ "_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__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 6
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "Label",
+ "_N$string": "Label",
+ "_fontSize": 40,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 0,
+ "_N$cacheMode": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "6flHkBG7FOlYrVMzUHMUmc",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 5
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 1,
+ "_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": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "feHYKNBVBHRIkL0FNEpCPJ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "messageScrollView",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 13
+ },
+ {
+ "__id__": 20
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 28
+ },
+ {
+ "__id__": 18
+ }
+ ],
+ "_prefab": {
+ "__id__": 29
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_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__": "cc.Node",
+ "_name": "scrollBar",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 12
+ },
+ "_children": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 17
+ },
+ {
+ "__id__": 25
+ },
+ {
+ "__id__": 26
+ }
+ ],
+ "_prefab": {
+ "__id__": 27
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 12,
+ "height": 300
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 300,
+ 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__": "cc.Node",
+ "_name": "bar",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 13
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 15
+ }
+ ],
+ "_prefab": {
+ "__id__": 16
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 10,
+ "height": 30
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 1,
+ "y": 0
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -1,
+ 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__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 14
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "5c3bb932-6c3c-468f-88a9-c8c61d458641"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "32UdI/0zVF9Z0DSb3VZV8Y",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Scrollbar",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_scrollView": {
+ "__id__": 18
+ },
+ "_touching": false,
+ "_opacity": 255,
+ "enableAutoHide": true,
+ "autoHideTime": 1,
+ "_N$handle": {
+ "__id__": 15
+ },
+ "_N$direction": 1,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.ScrollView",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "horizontal": false,
+ "vertical": true,
+ "inertia": true,
+ "brake": 0.75,
+ "elastic": true,
+ "bounceDuration": 0.23,
+ "scrollEvents": [],
+ "cancelInnerEvents": true,
+ "_N$content": {
+ "__id__": 19
+ },
+ "content": {
+ "__id__": 19
+ },
+ "_N$horizontalScrollBar": null,
+ "_N$verticalScrollBar": {
+ "__id__": 17
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "content",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 20
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 23
+ }
+ ],
+ "_prefab": {
+ "__id__": 24
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 0,
+ 150,
+ 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__": "cc.Node",
+ "_name": "view",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 12
+ },
+ "_children": [
+ {
+ "__id__": 19
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 21
+ }
+ ],
+ "_prefab": {
+ "__id__": 22
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 600,
+ "height": 300
+ },
+ "_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__": "cc.Mask",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 20
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_spriteFrame": null,
+ "_type": 0,
+ "_segments": 64,
+ "_N$alphaThreshold": 0,
+ "_N$inverted": false,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "7clqfa5p9BSqSCZXtjCArC",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Layout",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 19
+ },
+ "_enabled": true,
+ "_layoutSize": {
+ "__type__": "cc.Size",
+ "width": 300,
+ "height": 200
+ },
+ "_resize": 1,
+ "_N$layoutType": 2,
+ "_N$cellSize": {
+ "__type__": "cc.Size",
+ "width": 40,
+ "height": 40
+ },
+ "_N$startAxis": 0,
+ "_N$paddingLeft": 0,
+ "_N$paddingRight": 0,
+ "_N$paddingTop": 10,
+ "_N$paddingBottom": 0,
+ "_N$spacingX": 0,
+ "_N$spacingY": 10,
+ "_N$verticalDirection": 1,
+ "_N$horizontalDirection": 0,
+ "_N$affectedByScale": false,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "cabXzQaWRKC5chQC58HSP+",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 37,
+ "_left": 350.07654921020657,
+ "_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": 237,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 13
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "5fe5dcaa-b513-4dc5-a166-573627b3a159"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "bfQdfq9/JGAbGyyQkES4Tb",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 12
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "9bbda31e-ad49-43c9-aaf2-f7d9896bac69"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "a2mYmjHBxLI5gfe8swN9ag",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "inputMsg",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 31
+ },
+ {
+ "__id__": 35
+ },
+ {
+ "__id__": 39
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 43
+ },
+ {
+ "__id__": 44
+ }
+ ],
+ "_prefab": {
+ "__id__": 45
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -300,
+ -180,
+ 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__": "cc.Node",
+ "_name": "BACKGROUND_SPRITE",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 30
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 32
+ },
+ {
+ "__id__": 33
+ }
+ ],
+ "_prefab": {
+ "__id__": 34
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 500,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 250,
+ 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__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 31
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "ff0e91c7-55c6-4086-a39f-cb6e457b8c3b"
+ },
+ "_type": 1,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 31
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_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": 160,
+ "_originalHeight": 40,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "5frGCN6OBFNrOmAK5gPlFQ",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "TEXT_LABEL",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 30
+ },
+ "_children": [],
+ "_active": false,
+ "_components": [
+ {
+ "__id__": 36
+ },
+ {
+ "__id__": 37
+ }
+ ],
+ "_prefab": {
+ "__id__": 38
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 158,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ -78,
+ 20,
+ 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__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 35
+ },
+ "_enabled": true,
+ "_materials": [],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "",
+ "_N$string": "",
+ "_fontSize": 20,
+ "_lineHeight": 25,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 1,
+ "_N$cacheMode": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 35
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 45,
+ "_left": 2,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 158,
+ "_originalHeight": 40,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "0bwlFR97ZDbYeDo9Mae+1c",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "PLACEHOLDER_LABEL",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 30
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 40
+ },
+ {
+ "__id__": 41
+ }
+ ],
+ "_prefab": {
+ "__id__": 42
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 187,
+ "g": 187,
+ "b": 187,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 498,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 1
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 2,
+ 20,
+ 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__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 39
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "Enter text here...",
+ "_N$string": "Enter text here...",
+ "_fontSize": 20,
+ "_lineHeight": 25,
+ "_enableWrapText": false,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 0,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 1,
+ "_N$cacheMode": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 39
+ },
+ "_enabled": true,
+ "alignMode": 0,
+ "_target": null,
+ "_alignFlags": 45,
+ "_left": 2,
+ "_right": 0,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 158,
+ "_originalHeight": 40,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "b1CHAL77pK+o8+khnjTa6u",
+ "sync": false
+ },
+ {
+ "__type__": "cc.EditBox",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 30
+ },
+ "_enabled": true,
+ "_string": "",
+ "returnType": 0,
+ "maxLength": 8,
+ "_tabIndex": 0,
+ "editingDidBegan": [],
+ "textChanged": [],
+ "editingDidEnded": [],
+ "editingReturn": [],
+ "_N$textLabel": {
+ "__id__": 36
+ },
+ "_N$placeholderLabel": {
+ "__id__": 40
+ },
+ "_N$background": {
+ "__id__": 32
+ },
+ "_N$inputFlag": 5,
+ "_N$inputMode": 6,
+ "_N$stayOnTop": false,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 30
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 12,
+ "_left": 0,
+ "_right": -200,
+ "_top": 0,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 500,
+ "_originalHeight": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "85TNwcYQdMNo9qLg4LYOwe",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "btnSend",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 47
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 50
+ },
+ {
+ "__id__": 51
+ },
+ {
+ "__id__": 52
+ }
+ ],
+ "_prefab": {
+ "__id__": 54
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 33,
+ "g": 95,
+ "b": 164,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 100,
+ "height": 40
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_trs": {
+ "__type__": "TypedArray",
+ "ctor": "Float64Array",
+ "array": [
+ 250,
+ -180,
+ 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__": "cc.Node",
+ "_name": "New Label",
+ "_objFlags": 0,
+ "_parent": {
+ "__id__": 46
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 48
+ }
+ ],
+ "_prefab": {
+ "__id__": 49
+ },
+ "_opacity": 255,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 52.04,
+ "height": 50.4
+ },
+ "_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__": "cc.Label",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 47
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_string": "send",
+ "_N$string": "send",
+ "_fontSize": 24,
+ "_lineHeight": 40,
+ "_enableWrapText": true,
+ "_N$file": null,
+ "_isSystemFontUsed": true,
+ "_spacingX": 0,
+ "_batchAsBitmap": false,
+ "_styleFlags": 0,
+ "_underlineHeight": 0,
+ "_N$horizontalAlign": 1,
+ "_N$verticalAlign": 1,
+ "_N$fontFamily": "Arial",
+ "_N$overflow": 0,
+ "_N$cacheMode": 0,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "a8IJQkCctBBJL1rj+8UdI7",
+ "sync": false
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_materials": [
+ {
+ "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+ }
+ ],
+ "_srcBlendFactor": 770,
+ "_dstBlendFactor": 771,
+ "_spriteFrame": {
+ "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+ },
+ "_type": 0,
+ "_sizeMode": 0,
+ "_fillType": 0,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Widget",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "alignMode": 1,
+ "_target": null,
+ "_alignFlags": 36,
+ "_left": 0,
+ "_right": 0,
+ "_top": 847,
+ "_bottom": 0,
+ "_verticalCenter": 0,
+ "_horizontalCenter": 0,
+ "_isAbsLeft": true,
+ "_isAbsRight": true,
+ "_isAbsTop": true,
+ "_isAbsBottom": true,
+ "_isAbsHorizontalCenter": true,
+ "_isAbsVerticalCenter": true,
+ "_originalWidth": 0,
+ "_originalHeight": 40,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Button",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 46
+ },
+ "_enabled": true,
+ "_normalMaterial": null,
+ "_grayMaterial": null,
+ "duration": 0.1,
+ "zoomScale": 1.2,
+ "clickEvents": [
+ {
+ "__id__": 53
+ }
+ ],
+ "_N$interactable": true,
+ "_N$enableAutoGrayEffect": false,
+ "_N$transition": 1,
+ "transition": 1,
+ "_N$normalColor": {
+ "__type__": "cc.Color",
+ "r": 33,
+ "g": 95,
+ "b": 164,
+ "a": 255
+ },
+ "_N$pressedColor": {
+ "__type__": "cc.Color",
+ "r": 63,
+ "g": 138,
+ "b": 221,
+ "a": 255
+ },
+ "pressedColor": {
+ "__type__": "cc.Color",
+ "r": 63,
+ "g": 138,
+ "b": 221,
+ "a": 255
+ },
+ "_N$hoverColor": {
+ "__type__": "cc.Color",
+ "r": 47,
+ "g": 116,
+ "b": 194,
+ "a": 255
+ },
+ "hoverColor": {
+ "__type__": "cc.Color",
+ "r": 47,
+ "g": 116,
+ "b": 194,
+ "a": 255
+ },
+ "_N$disabledColor": {
+ "__type__": "cc.Color",
+ "r": 124,
+ "g": 124,
+ "b": 124,
+ "a": 255
+ },
+ "_N$normalSprite": null,
+ "_N$pressedSprite": null,
+ "pressedSprite": null,
+ "_N$hoverSprite": null,
+ "hoverSprite": null,
+ "_N$disabledSprite": null,
+ "_N$target": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.ClickEvent",
+ "target": {
+ "__id__": 1
+ },
+ "component": "",
+ "_componentId": "59518Jz+AVEI7+XgVAQo6O6",
+ "handler": "send",
+ "customEventData": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "fbVySGLwVAD6X1S/yqpLbo",
+ "sync": false
+ },
+ {
+ "__type__": "59518Jz+AVEI7+XgVAQo6O6",
+ "_name": "",
+ "_objFlags": 0,
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "roomName": "",
+ "prefabMsgItem": {
+ "__uuid__": "1aa44a1e-ba27-4984-b173-f385fca2a8b2"
+ },
+ "labelTitle": {
+ "__id__": 7
+ },
+ "msgScroll": {
+ "__id__": 18
+ },
+ "inputSend": {
+ "__id__": 43
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "",
+ "sync": false
+ }
+]
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/chatBox.prefab.meta b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/chatBox.prefab.meta
new file mode 100644
index 0000000..c0af08b
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/prefabs/ChatBox/chatBox.prefab.meta
@@ -0,0 +1,9 @@
+{
+ "ver": "1.3.2",
+ "uuid": "ba339ce2-edd5-4916-8935-f8550c2e0c42",
+ "importer": "prefab",
+ "optimizationPolicy": "AUTO",
+ "asyncLoadAssets": false,
+ "readonly": false,
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/scripts.meta b/examples/cocos-creator-2.4.7/frontend/assets/scripts.meta
new file mode 100644
index 0000000..ab6dbfb
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/scripts.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.3",
+ "uuid": "8edf980c-ff26-4b68-aca8-080c936b14dc",
+ "importer": "folder",
+ "isBundle": false,
+ "bundleName": "",
+ "priority": 1,
+ "compressionType": {},
+ "optimizeHotUpdate": {},
+ "inlineSpriteFrames": {},
+ "isRemoteBundle": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/assets/scripts/shared.meta b/examples/cocos-creator-2.4.7/frontend/assets/scripts/shared.meta
new file mode 100644
index 0000000..f45e81d
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/assets/scripts/shared.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.3",
+ "uuid": "063ca637-20a7-466e-96c2-4cd414367a1d",
+ "importer": "folder",
+ "isBundle": false,
+ "bundleName": "",
+ "priority": 1,
+ "compressionType": {},
+ "optimizeHotUpdate": {},
+ "inlineSpriteFrames": {},
+ "isRemoteBundle": {},
+ "subMetas": {}
+}
\ No newline at end of file
diff --git a/examples/cocos-creator-2.4.7/frontend/creator.d.ts b/examples/cocos-creator-2.4.7/frontend/creator.d.ts
new file mode 100644
index 0000000..4e97bef
--- /dev/null
+++ b/examples/cocos-creator-2.4.7/frontend/creator.d.ts
@@ -0,0 +1,32073 @@
+
+/** !#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.
+ Please DO NOT remove this String, it is an important flag for bug tracking.
+ 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.
+ 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
+ Creates the action easing object with the rate parameter.
+ 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.
+ 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.
+ 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.
+ Reference easeInExpo:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeExponentialIn 缓动对象。
+ EaseExponentialIn 是按指数函数缓动进入的动作。
+ 参考 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.
+ Reference easeOutExpo:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeExponentialOut 缓动对象。
+ EaseExponentialOut 是按指数函数缓动退出的动作。
+ 参考 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.
+ Reference easeInOutExpo:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeExponentialInOut 缓动对象。
+ EaseExponentialInOut 是按指数函数缓动进入并退出的动作。
+ 参考 easeInOutExpo:http://www.zhihu.com/question/21981571/answer/19925418
+
+ @example
+ ```js
+ action.easing(cc.easeExponentialInOut());
+ ```
+ */
+ export function easeExponentialInOut(): any;
+ /**
+ !#en
+ Creates an EaseSineIn action.
+ Reference easeInSine:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 EaseSineIn 缓动对象。
+ EaseSineIn 是按正弦函数缓动进入的动作。
+ 参考 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.
+ Reference easeOutSine:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 EaseSineOut 缓动对象。
+ EaseSineIn 是按正弦函数缓动退出的动作。
+ 参考 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.
+ Reference easeInOutSine:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeSineInOut 缓动对象。
+ EaseSineIn 是按正弦函数缓动进入并退出的动作。
+ 参考 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).
+ Reference easeInElastic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeElasticIn 缓动对象。
+ EaseElasticIn 是按弹性曲线缓动进入的动作。
+ 参数 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).
+ Reference easeOutElastic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeElasticOut 缓动对象。
+ EaseElasticOut 是按弹性曲线缓动退出的动作。
+ 参考 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).
+ Reference easeInOutElastic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeElasticInOut 缓动对象。
+ EaseElasticInOut 是按弹性曲线缓动进入并退出的动作。
+ 参考 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.
+ Eased bounce effect at the beginning.
+ !#zh
+ 创建 easeBounceIn 缓动对象。
+ EaseBounceIn 是按弹跳动作缓动进入的动作。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBounceIn());
+ ```
+ */
+ export function easeBounceIn(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ Eased bounce effect at the ending.
+ !#zh
+ 创建 easeBounceOut 缓动对象。
+ EaseBounceOut 是按弹跳动作缓动退出的动作。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBounceOut());
+ ```
+ */
+ export function easeBounceOut(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ Eased bounce effect at the begining and ending.
+ !#zh
+ 创建 easeBounceInOut 缓动对象。
+ EaseBounceInOut 是按弹跳动作缓动进入并退出的动作。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBounceInOut());
+ ```
+ */
+ export function easeBounceInOut(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ In the opposite direction to move slowly, and then accelerated to the right direction.
+ !#zh
+ 创建 easeBackIn 缓动对象。
+ easeBackIn 是在相反的方向缓慢移动,然后加速到正确的方向。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBackIn());
+ ```
+ */
+ export function easeBackIn(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ Fast moving more than the finish, and then slowly back to the finish.
+ !#zh
+ 创建 easeBackOut 缓动对象。
+ easeBackOut 快速移动超出目标,然后慢慢回到目标点。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBackOut());
+ ```
+ */
+ export function easeBackOut(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ Begining of cc.EaseBackIn. Ending of cc.EaseBackOut.
+ !#zh
+ 创建 easeBackInOut 缓动对象。
+
+ @example
+ ```js
+ // example
+ action.easing(cc.easeBackInOut());
+ ```
+ */
+ export function easeBackInOut(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ Into the 4 reference point.
+ To calculate the motion curve.
+ !#zh
+ 创建 easeBezierAction 缓动对象。
+ 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.
+ Reference easeInQuad:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuadraticActionIn 缓动对象。
+ EaseQuadraticIn是按二次函数缓动进入的动作。
+ 参考 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.
+ Reference easeOutQuad:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuadraticActionOut 缓动对象。
+ EaseQuadraticOut 是按二次函数缓动退出的动作。
+ 参考 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.
+ Reference easeInOutQuad:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuadraticActionInOut 缓动对象。
+ EaseQuadraticInOut 是按二次函数缓动进入并退出的动作。
+ 参考 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.
+ Reference easeIntQuart:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuarticActionIn 缓动对象。
+ EaseQuarticIn 是按四次函数缓动进入的动作。
+ 参考 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.
+ Reference easeOutQuart:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuarticActionOut 缓动对象。
+ EaseQuarticOut 是按四次函数缓动退出的动作。
+ 参考 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.
+ Reference easeInOutQuart:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuarticActionInOut 缓动对象。
+ EaseQuarticInOut 是按四次函数缓动进入并退出的动作。
+ 参考 easeInOutQuart:http://www.zhihu.com/question/21981571/answer/19925418
+ */
+ export function easeQuarticActionInOut(): any;
+ /**
+ !#en
+ Creates the action easing object.
+ Reference easeInQuint:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuinticActionIn 缓动对象。
+ EaseQuinticIn 是按五次函数缓动进的动作。
+ 参考 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.
+ Reference easeOutQuint:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuinticActionOut 缓动对象。
+ 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.
+ Reference easeInOutQuint:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeQuinticActionInOut 缓动对象。
+ EaseQuinticInOut是按五次函数缓动进入并退出的动作。
+ 参考 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.
+ Reference easeInCirc:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCircleActionIn 缓动对象。
+ EaseCircleIn是按圆形曲线缓动进入的动作。
+ 参考 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.
+ Reference easeOutCirc:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCircleActionOut 缓动对象。
+ EaseCircleOut是按圆形曲线缓动退出的动作。
+ 参考 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.
+ Reference easeInOutCirc:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCircleActionInOut 缓动对象。
+ EaseCircleInOut 是按圆形曲线缓动进入并退出的动作。
+ 参考 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.
+ Reference easeInCubic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCubicActionIn 缓动对象。
+ EaseCubicIn 是按三次函数缓动进入的动作。
+ 参考 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.
+ Reference easeOutCubic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCubicActionOut 缓动对象。
+ EaseCubicOut 是按三次函数缓动退出的动作。
+ 参考 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.
+ Reference easeInOutCubic:
+ http://www.zhihu.com/question/21981571/answer/19925418
+ !#zh
+ 创建 easeCubicActionInOut 缓动对象。
+ EaseCubicInOut是按三次函数缓动进入并退出的动作。
+ 参考 easeInOutCubic:http://www.zhihu.com/question/21981571/answer/19925418
+ */
+ export function easeCubicActionInOut(): any;
+ /**
+ !#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
+ 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.
+ 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.
+ x and y are relative to the position of the object.
+ Several MoveBy actions can be concurrently called, and the resulting
+ 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.
+ Several MoveTo actions can be concurrently called, and the resulting
+ 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.
+ 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.
+ 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 (target?: T) : Tween;
+ /** !#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).
+ - In Cocos Creator, error is red.
+ - In Chrome, error have a red icon along with red message text.
+ !#zh
+ 输出错误消息到 Cocos Creator 编辑器的 Console 或运行时页面端的 Console 中。
+ - 在 Cocos Creator 中,错误信息显示是红色的。
+ - 在 Chrome 中,错误信息有红色的图标以及红色的消息文本。
+ @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 中。
+ - 在 Cocos Creator 中,警告信息显示是黄色的。
+ - 在 Chrome 中,警告信息有着黄色的图标以及黄色的消息文本。
+ @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.
+ 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.
+ If a enum item has a value of -1, it will be given an Integer number according to it's order in the list.
+ Otherwise it will use the value specified by user who writes the enum definition.
+
+ !#zh
+ 定义一个枚举类型。
+ 用户可以把枚举值设为任意的整数,如果设为 -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(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.
+ 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 并且尚未销毁。
+ 当一个对象的 `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(original: T): T;
+ /**
+ !#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
+ Helper function that creates a cc.Size.
+ Please use cc.p or cc.v2 instead, it will soon replace cc.Size.
+ !#zh
+ 创建一个 cc.Size 对象的帮助函数。
+ 注意:可以使用 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 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 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;
+ /**
+ 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;
+ 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.
+ Possible actions:
+ - An action with a duration of 0 seconds.
+ - 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.
+ For example:
+ - The action will be x coordinates of 0 move to 100.
+ - 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
+ An interval action is an action that takes place within a certain period of time.
+ It has an start time, and a finish time. The finish time is the parameter
+ duration plus the start time.
+
+ These CCActionInterval actions have some interesting properties, like:
+ - They can run normally (default)
+ - They can run reversed with the reverse method
+ - They can run with the time altered with the Accelerate, AccelDeccel and Speed actions.
+
+ For example, you can simulate a Ping Pong effect running the action normally and
+ then running it again in Reverse mode.
+ !#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.
+ To repeat the an action for a limited number of times use the Repeat action.
+ !#zh 永远地重复一个动作,有限次数内重复一个动作请使用 Repeat 动作。
+ */
+ repeatForever(): ActionInterval;
+ }
+ /** !#en
+ cc.ActionManager is a class that can manage actions.
+ 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.
+ Examples:
+ - When you want to run an action where the target is different from a CCNode.
+ - When you want to pause / resume the actions
+ !#zh
+ cc.ActionManager 是可以管理动作的单例类。
+ 通常你并不需要直接使用这个类,99%的情况您将使用 CCNode 的接口。
+ 但也有一些情况下,您可能需要使用这个类。
+ 例如:
+ - 当你想要运行一个动作,但目标不是 CCNode 类型时。
+ - 当你想要暂停/恢复动作时。
*/
+ export class ActionManager {
+ /**
+ !#en
+ Adds an action with a target.
+ 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
+ 增加一个动作,同时还需要提供动作的目标对象,目标对象是否暂停作为参数。
+ 如果目标已存在,动作将会被直接添加到现有的节点中。
+ 如果目标不存在,将为这一目标创建一个新的实例,并将动作添加进去。
+ 当目标状态的 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.
+ All the actions that belongs to the target will be removed.
+ !#zh
+ 移除指定对象上的所有动作。
+ 属于该目标的所有的动作将被删除。
+ @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.
+ Composable actions are counted as 1 action.
+ Example:
+ - If you are running 1 Sequence of 7 actions, it will return 1.
+ - If you are running 7 Sequences of 2 actions, it will return 7.
+ !#zh
+ 返回指定对象下所有正在运行的动作数量。
+ 组合动作被算作一个动作。
+ 例如:
+ - 如果您正在运行 7 个动作组成的序列动作(Sequence),这个函数将返回 1。
+ - 如果你正在运行 2 个序列动作(Sequence)和 5 个普通动作,这个函数将返回 7。
+ @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.
+ because it uses this, so it can not be static.
+ !#zh
+ 清除共用的动作管理器。它释放了持有的实例。
+ 因为它使用 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 {
+ /**
+
+ @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): Tween;
+ /**
+ !#en
+ Set tween target
+ !#zh
+ 设置 tween 的 target
+ @param target target
+ */
+ target(target: any): Tween;
+ /**
+ !#en
+ Start this tween
+ !#zh
+ 运行当前 tween
+ */
+ start(): Tween;
+ /**
+ !#en
+ Stop this tween
+ !#zh
+ 停止当前 tween
+ */
+ stop(): Tween;
+ /**
+ !#en Sets tween tag
+ !#zh 设置缓动的标签
+ @param tag tag
+ */
+ tag(tag: number): Tween;
+ /**
+ !#en
+ Clone a tween
+ !#zh
+ 克隆当前 tween
+ @param target target
+ */
+ clone(target?: any): Tween;
+ /**
+ !#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;
+ /**
+ !#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;
+ /**
+ !#en Flips target's scaleX
+ !#zh 翻转目标的 scaleX 属性
+ */
+ flipX(): Tween;
+ /**
+ !#en Flips target's scaleY
+ !#zh 翻转目标的 scaleY 属性
+ */
+ flipY(): Tween;
+ /**
+ !#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;
+ /**
+ !#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>(duration: number, props: ConstructorType, opts?: OPTS): Tween;
+ /**
+ !#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>(duration: number, props: ConstructorType, opts?: OPTS): Tween;
+ /**
+ !#en
+ Directly set target properties
+ !#zh
+ 直接设置 target 的属性
+ @param props props
+ */
+ set (props: ConstructorType) : Tween;
+ /**
+ !#en
+ Add an delay action
+ !#zh
+ 添加一个延时 action
+ @param duration duration
+ */
+ delay(duration: number): Tween;
+ /**
+ !#en
+ Add an callback action
+ !#zh
+ 添加一个回调 action
+ @param callback callback
+ @param selectTarget selectTarget
+ */
+ call(callback: Function, selectTarget?: object): Tween;
+ /**
+ !#en
+ Add an hide action
+ !#zh
+ 添加一个隐藏 action
+ */
+ hide(): Tween;
+ /**
+ !#en
+ Add an show action
+ !#zh
+ 添加一个显示 action
+ */
+ show(): Tween;
+ /**
+ !#en
+ Add an removeSelf action
+ !#zh
+ 添加一个移除自己 action
+ */
+ removeSelf(): Tween;
+ /**
+ !#en
+ Add an sequence action
+ !#zh
+ 添加一个队列 action
+ @param action action
+ @param actions actions
+ */
+ sequence(action: Action|Tween, ...actions: (Action|Tween)[]): Tween;
+ /**
+ !#en
+ Add an parallel action
+ !#zh
+ 添加一个并行 action
+ @param action action
+ @param actions actions
+ */
+ parallel(action: Action|Tween, ...actions: (Action|Tween)[]): Tween;
+ /**
+ !#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): Tween;
+ /**
+ !#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): Tween;
+ /**
+ !#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): Tween;
+ }
+ /** !#en `cc.audioEngine` is the singleton object, it provide simple audio APIs.
+ !#zh
+ cc.audioengine是单例对象。
+ 主要用来播放音频,播放的时候会返回一个 audioID,之后都可以通过这个 audioID 来操作这个音频对象。
+ 不使用的时候,请使用 `cc.audioEngine.uncache(filePath);` 进行资源释放
+ 注意:
+ 在 Android 系统浏览器上,不同浏览器,不同版本的效果不尽相同。
+ 比如说:大多数浏览器都需要用户物理交互才可以开始播放音效,有一些不支持 WebAudio,有一些不支持多音轨播放。总之如果对音乐依赖比较强,请做尽可能多的测试。 */
+ 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 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 完全控制动画播放过程。
+ 大多数情况下 动画组件 是足够和易于使用的。如果您需要更多的动画控制接口,请使用 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.
+ Demonstratio: https://easings.net/
+ !#zh
+ 缓动函数类,为 {{#crossLink "Tween"}}{{/crossLink}} 提供缓动效果函数。
+ 函数效果演示: 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;
+ }
+ /** !#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,
+ }
+ /** 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 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: number, 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
+
+ ATTENTION: USE cc.director INSTEAD OF cc.Director.
+ cc.director is a singleton object which manage your game's logic flow.
+ Since the cc.director is a singleton, you don't need to call any constructor or create functions,
+ the standard way to use it is by calling:
+ - cc.director.methodName();
+
+ It creates and handle the main Window and manages how and when to execute the Scenes.
+
+ The cc.director is also responsible for:
+ - initializing the OpenGL context
+ - setting the OpenGL pixel format (default on is RGB565)
+ - setting the OpenGL buffer depth (default on is 0-bit)
+ - setting the color for clear screen (default one is BLACK)
+ - setting the projection (default one is 3D)
+ - setting the orientation (default one is Portrait)
+
+
+ The cc.director also sets the default OpenGL context:
+ - GL_TEXTURE_2D is enabled
+ - GL_VERTEX_ARRAY is enabled
+ - GL_COLOR_ARRAY is enabled
+ - GL_TEXTURE_COORD_ARRAY is enabled
+
+
+ cc.director also synchronizes timers with the refresh rate of the display.
+ Features and Limitations:
+ - Scheduled timers & drawing are synchronizes with the refresh rate of the display
+ - Only supports animation intervals of 1/60 1/30 & 1/15
+
+
+ !#zh
+
+ 注意:用 cc.director 代替 cc.Director。
+ cc.director 一个管理你的游戏的逻辑流程的单例对象。
+ 由于 cc.director 是一个单例,你不需要调用任何构造函数或创建函数,
+ 使用它的标准方法是通过调用:
+ - cc.director.methodName();
+
+ 它创建和处理主窗口并且管理什么时候执行场景。
+
+ cc.director 还负责:
+ - 初始化 OpenGL 环境。
+ - 设置OpenGL像素格式。(默认是 RGB565)
+ - 设置OpenGL缓冲区深度 (默认是 0-bit)
+ - 设置空白场景的颜色 (默认是 黑色)
+ - 设置投影 (默认是 3D)
+ - 设置方向 (默认是 Portrait)
+
+ cc.director 设置了 OpenGL 默认环境
+ - GL_TEXTURE_2D 启用。
+ - GL_VERTEX_ARRAY 启用。
+ - GL_COLOR_ARRAY 启用。
+ - GL_TEXTURE_COORD_ARRAY 启用。
+
+
+ cc.director 也同步定时器与显示器的刷新速率。
+
+ 特点和局限性:
+ - 将计时器 & 渲染与显示器的刷新频率同步。
+ - 只支持动画的间隔 1/60 1/30 & 1/15。
+
*/
+ export class Director extends EventTarget {
+ /**
+ !#en
+ Converts a view coordinate to an WebGL coordinate
+ Useful to convert (multi) touches coordinates to the current layout (portrait or landscape)
+ 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
+ Useful to convert node points to window points for calls such as glScissor
+ 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.
+ 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.
+ It takes into account any possible rotation (device orientation) of the window.
+ 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.
+ 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.
+ Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js
+ !#zh 启用/禁用深度测试(在 Canvas 渲染模式下不会生效)。
+ @param on on
+ */
+ setDepthTest(on: boolean): void;
+ /**
+ !#en
+ Set color for clear screen.
+ (Implementation can be found in CCDirectorCanvas.js/CCDirectorWebGL.js)
+ !#zh
+ 设置场景的默认擦除颜色。
+ 支持全透明,但不支持透明度为中间值。要支持全透明需手工开启 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:
+ 1. debugMode
+ "debugMode" possible values :
+ 0 - No message will be printed.
+ 1 - cc.error, cc.assert, cc.warn, cc.log will print in console.
+ 2 - cc.error, cc.assert, cc.warn will print in console.
+ 3 - cc.error, cc.assert will print in console.
+ 4 - cc.error, cc.assert, cc.warn, cc.log will print on canvas, available only on web.
+ 5 - cc.error, cc.assert, cc.warn will print on canvas, available only on web.
+ 6 - cc.error, cc.assert will print on canvas, available only on web.
+ 2. showFPS
+ Left bottom corner fps information will show when "showFPS" equals true, otherwise it will be hide.
+ 3. exposeClassName
+ Expose class name to chrome debug tools, the class intantiate performance is a little bit slower when exposed.
+ 4. frameRate
+ "frameRate" set the wanted frame rate for your game, but the real fps depends on your game implementation and the running environment.
+ 5. id
+ "gameCanvas" sets the id of your canvas element on the web page, it's useful only on web.
+ 6. renderMode
+ "renderMode" sets the renderer type, only useful on web :
+ 0 - Automatically chosen by engine
+ 1 - Forced to use canvas renderer
+ 2 - Forced to use WebGL renderer, but this will be ignored on mobile browsers
+
+ Please DO NOT modify this object directly, it won't have any effect.
+ !#zh
+ 当前的游戏配置,包括:
+ 1. debugMode(debug 模式,但是在浏览器中这个选项会被忽略)
+ "debugMode" 各种设置选项的意义。
+ 0 - 没有消息被打印出来。
+ 1 - cc.error,cc.assert,cc.warn,cc.log 将打印在 console 中。
+ 2 - cc.error,cc.assert,cc.warn 将打印在 console 中。
+ 3 - cc.error,cc.assert 将打印在 console 中。
+ 4 - cc.error,cc.assert,cc.warn,cc.log 将打印在 canvas 中(仅适用于 web 端)。
+ 5 - cc.error,cc.assert,cc.warn 将打印在 canvas 中(仅适用于 web 端)。
+ 6 - cc.error,cc.assert 将打印在 canvas 中(仅适用于 web 端)。
+ 2. showFPS(显示 FPS)
+ 当 showFPS 为 true 的时候界面的左下角将显示 fps 的信息,否则被隐藏。
+ 3. exposeClassName
+ 暴露类名让 Chrome DevTools 可以识别,如果开启会稍稍降低类的创建过程的性能,但对对象构造没有影响。
+ 4. frameRate (帧率)
+ “frameRate” 设置想要的帧率你的游戏,但真正的FPS取决于你的游戏实现和运行环境。
+ 5. id
+ "gameCanvas" Web 页面上的 Canvas Element ID,仅适用于 web 端。
+ 6. renderMode(渲染模式)
+ “renderMode” 设置渲染器类型,仅适用于 web 端:
+ 0 - 通过引擎自动选择。
+ 1 - 强制使用 canvas 渲染。
+ 2 - 强制使用 WebGL 渲染,但是在部分 Android 浏览器中这个选项会被忽略。
+
+ 注意:请不要直接修改这个对象,它不会有任何效果。 */
+ 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(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.
+ The target node must be placed in the root level of hierarchy, otherwise this API won't have any effect.
+ !#zh
+ 声明常驻根节点,该节点不会被在场景切换中被销毁。
+ 目标节点必须位于为层级的根节点,否则无效。
+ @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.
+ For events supported by Node, please refer to {{#crossLink "Node.EventType"}}{{/crossLink}}
+ !#zh
+ Cocos Creator 场景中的所有节点类。
+ 支持的节点事件,请参阅 {{#crossLink "Node.EventType"}}{{/crossLink}}。 */
+ export class Node extends _BaseNode {
+ /** !#en
+ Group index of node.
+ Which Group this node belongs to will resolve that this node's collision components can collide with which other collision componentns.
+ !#zh
+ 节点的分组索引。
+ 节点的分组将关系到节点的碰撞组件可以与哪些碰撞组件相碰撞。
*/
+ groupIndex: number;
+ /** !#en
+ Group of node.
+ Which Group this node belongs to will resolve that this node's collision components can collide with which other collision componentns.
+ !#zh
+ 节点的分组。
+ 节点的分组将关系到节点的碰撞组件可以与哪些碰撞组件相碰撞。
*/
+ 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.
+ The value of zIndex should be in the range between cc.macro.MIN_ZINDEX and cc.macro.MAX_ZINDEX.
+ The Node's parent will sort all its children based on the zIndex value and the arrival order.
+ Nodes with greater zIndex will be sorted after nodes with smaller zIndex.
+ 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.
+ Node's order in children list will affect its rendering order. Parent is always rendering before all children.
+ !#zh zIndex 是用来对节点进行排序的关键属性,它决定一个节点在兄弟节点之间的位置。
+ zIndex 的取值应该介于 cc.macro.MIN_ZINDEX 和 cc.macro.MAX_ZINDEX 之间
+ 父节点主要根据节点的 zIndex 和添加次序来排序,拥有更高 zIndex 的节点将被排在后面,如果两个节点的 zIndex 一致,先添加的节点会稳定排在另一个节点之前。
+ 节点在 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.
+ Use this method to register touch or mouse event permit propagation based on scene graph,
+ These kinds of event are triggered with dispatchEvent, the dispatch process has three steps:
+ 1. Capturing phase: dispatch in capture targets (`_getCapturingTargets`), e.g. parents in node tree, from root to the real target
+ 2. At target phase: dispatch to the listeners of the real target
+ 3. Bubbling phase: dispatch in bubble targets (`_getBubblingTargets`), e.g. parents in node tree, from the real target to root
+ In any moment of the dispatching process, it can be stopped via `event.stopPropagation()` or `event.stopPropagationImmidiate()`.
+ It's the recommended way to register touch/mouse event for Node,
+ please do not use cc.eventManager directly for Node.
+ You can also register custom event and use `emit` to trigger custom event on Node.
+ 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.
+ You can also pass event callback parameters with `emit` by passing parameters after `type`.
+ !#zh
+ 在节点上注册指定类型的回调函数,也可以设置 target 用于绑定响应函数的 this 对象。
+ 鼠标或触摸事件会被系统调用 dispatchEvent 方法触发,触发的过程包含三个阶段:
+ 1. 捕获阶段:派发事件给捕获目标(通过 `_getCapturingTargets` 获取),比如,节点树中注册了捕获阶段的父节点,从根节点开始派发直到目标节点。
+ 2. 目标阶段:派发给目标节点的监听器。
+ 3. 冒泡阶段:派发事件给冒泡目标(通过 `_getBubblingTargets` 获取),比如,节点树中注册了冒泡阶段的父节点,从目标节点开始派发直到根节点。
+ 同时您可以将事件派发到父节点或者通过调用 stopPropagation 拦截它。
+ 推荐使用这种方式来监听节点上的触摸或鼠标事件,请不要在节点上直接使用 cc.eventManager。
+ 你也可以注册自定义事件到节点上,并通过 emit 方法触发此类事件,对于这类事件,不会发生捕获冒泡阶段,只会直接派发给注册在该节点上的监听器
+ 你可以通过在 emit 方法调用时在 type 之后传递额外的参数作为事件回调的参数列表
+ @param type A string representing the event type to listen for.
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(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(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.
+ The node becomes the action's target. Refer to cc.Action's getTarget()
+ Calling runAction while the node is not active won't have any effect.
+ Note:You shouldn't modify the action after runAction, that won't take any effect.
+ if you want to modify, when you define action plus.
+ !#zh
+ 执行并返回该执行的动作。该节点将会变成动作的目标。
+ 调用 runAction 时,节点自身处于不激活状态将不会有任何效果。
+ 注意:你不应该修改 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).
+ Composable actions are counted as 1 action. Example:
+ If you are running 1 Sequence of 7 actions, it will return 1.
+ If you are running 7 Sequences of 2 actions, it will return 7.
+ !#zh
+ 获取运行着的动作加上正在调度运行的动作的总数。
+ 例如:
+ - 如果你正在运行 7 个动作中的 1 个 Sequence,它将返回 1。
+ - 如果你正在运行 2 个动作中的 7 个 Sequence,它将返回 7。
+
+ @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.
+ Usually we use cc.v2(x, y) to compose cc.Vec2 object, in this case, position.z will become 0.
+ and passing two numbers (x, y) is more efficient than passing cc.Vec2 object, in this case, position.z will remain unchanged.
+ For 3D node we can use cc.v3(x, y, z) to compose cc.Vec3 object,
+ and passing three numbers (x, y, z) is more efficient than passing cc.Vec3 object.
+ !#zh
+ 设置节点在父节点坐标系中的位置。
+ 可以通过下面的方式设置坐标点:
+ 1. 传入 2 个数值 x, y (此时不会改变 position.z 的值)。
+ 2. 传入 cc.v2(x, y) 类型为 cc.Vec2 的对象 (此时 position.z 的值将被设置为0)。
+ 3. 对于 3D 节点可以传入 3 个数值 x, y, z。
+ 4. 对于 3D 节点可以传入 cc.v3(x, y, z) 类型为 cc.Vec3 的对象。
+ @param x X coordinate for position or the position object
+ @param y Y coordinate for position
+ @param z Z coordinate for position
+ */
+ setPosition(x: 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.
+ When only (x, y) is passed, the value of scale.z will not be changed.
+ When a Vec2 is passed in, the value of scale.z will be set to 0.
+ !#zh
+ 设置节点在本地坐标系中坐标轴上的缩放比例。
+ 2D 节点可以操作两个坐标轴,而 3D 节点可以操作三个坐标轴。
+ 当只传入 (x, y) 时,scale.z 的值不会被改变。
+ 当只传入 Vec2 对象时,scale.z 的值将被设置为0。
+ @param x scaleX or scale object
+ @param y y
+ @param z z
+
+ @example
+ ```js
+ node.setScale(cc.v2(2, 2)); // Notice: scaleZ will be 0
+ 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.
+ The contentSize remains the same no matter the node is scaled or rotated.
+ All nodes has a size. Layer and Scene has the same size of the screen by default.
+ !#zh 获取节点自身大小,不受该节点是否被缩放或者旋转的影响。
+
+ @example
+ ```js
+ cc.log("Content Size: " + node.getContentSize());
+ ```
+ */
+ getContentSize(): Size;
+ /**
+ !#en
+ Sets the untransformed size of the node.
+ The contentSize remains the same no matter the node is scaled or rotated.
+ 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.
+ Anchor point is the point around which all transformations and positioning manipulations take place.
+ It's like a pin in the node where it is "attached" to its parent.
+ The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner.
+ But you can use values higher than (1,1) and lower than (0,0) too.
+ The default anchor point is (0.5,0.5), so it starts at the center of the node.
+ !#zh
+ 获取节点锚点,用百分比表示。
+ 锚点应用于所有变换和坐标点的操作,它就像在节点上连接其父节点的大头针。
+ 锚点是标准化的,就像百分比一样。(0,0) 表示左下角,(1,1) 表示右上角。
+ 但是你可以使用比(1,1)更高的值或者比(0,0)更低的值。
+ 默认的锚点是(0.5,0.5),因此它开始于节点的中心位置。
+ 注意:Creator 中的锚点仅用于定位所在的节点,子节点的定位不受影响。
+
+ @example
+ ```js
+ cc.log("Node AnchorPoint: " + node.getAnchorPoint());
+ ```
+ */
+ getAnchorPoint(): Vec2;
+ /**
+ !#en
+ Sets the anchor point in percent.
+ anchor point is the point around which all transformations and positioning manipulations take place.
+ It's like a pin in the node where it is "attached" to its parent.
+ The anchorPoint is normalized, like a percentage. (0,0) means the bottom-left corner and (1,1) means the top-right corner.
+ But you can use values higher than (1,1) and lower than (0,0) too.
+ The default anchor point is (0.5,0.5), so it starts at the center of the node.
+ !#zh
+ 设置锚点的百分比。
+ 锚点应用于所有变换和坐标点的操作,它就像在节点上连接其父节点的大头针。
+ 锚点是标准化的,就像百分比一样。(0,0) 表示左下角,(1,1) 表示右上角。
+ 但是你可以使用比(1,1)更高的值或者比(0,0)更低的值。
+ 默认的锚点是(0.5,0.5),因此它开始于节点的中心位置。
+ 注意: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(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(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 将一个点转换到节点 (局部) 坐标系,并加上锚点的坐标。
+ 也就是说返回的坐标是相对于节点包围盒左下角的坐标。
+ 这个 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.
+ 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.
+ The matrix is in Pixels.
+ This method is AR (Anchor Relative).
+ !#zh
+ 返回这个将节点(局部)的空间坐标系转换成父节点的空间坐标系的矩阵。
+ 这个矩阵以像素为单位。
+ 该方法基于节点坐标。
+ @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.
+ This method is AR (Anchor Relative).
+ !#zh
+ 返回节点到世界坐标仿射变换矩阵。矩阵单位是像素。
+ 该方法基于节点坐标。
+ @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.
+ The matrix is in Pixels. The returned transform is readonly and cannot be changed.
+ !#zh
+ 返回将父节点的坐标系转换成节点(局部)的空间坐标系的矩阵。
+ 该矩阵以像素为单位。返回的矩阵是只读的,不能更改。
+ @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.
+ 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.
+ The bounding box contains self and active children's world bounding box.
+ !#zh
+ 返回节点在世界坐标系下的对齐轴向的包围盒(AABB)。
+ 该边框包含自身和已激活的子节点的世界边框。
+
+ @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
+ Class of private entities in Cocos Creator scenes.
+ The PrivateNode is hidden in editor, and completely transparent to users.
+ It's normally used as Node's private content created by components in parent node.
+ So in theory private nodes are not children, they are part of the parent node.
+ Private node have two important characteristics:
+ 1. It has the minimum z index and cannot be modified, because they can't be displayed over real children.
+ 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.
+ In this way, they can be easily kept inside the bounding box.
+ Currently, it's used by RichText component and TileMap component.
+ !#zh
+ Cocos Creator 场景中的私有节点类。
+ 私有节点在编辑器中不可见,对用户透明。
+ 通常私有节点是被一些特殊的组件创建出来作为父节点的一部分而存在的,理论上来说,它们不是子节点,而是父节点的组成部分。
+ 私有节点有两个非常重要的特性:
+ 1. 它有着最小的渲染排序的 Z 轴深度,并且无法被更改,因为它们不能被显示在其他正常子节点之上。
+ 2. 它的定位也是特殊的,对于私有节点来说,父节点包围盒的左下角是它的局部坐标系原点,这个原点相当于父节点的位置减去它锚点的偏移。这样私有节点可以比较容易被控制在包围盒之中。
+ 目前在引擎中,RichText 和 TileMap 都有可能生成私有节点。 */
+ export class PrivateNode extends Node {
+ /**
+
+ @param name name
+ */
+ constructor(name?: string);
+ }
+ /** !#en
+ cc.Scene is a subclass of cc.Node that is used only as an abstract concept.
+ cc.Scene and cc.Node are almost identical with the difference that users can not modify cc.Scene manually.
+ !#zh
+ cc.Scene 是 cc.Node 的子类,仅作为一个抽象的概念。
+ 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
+ Scheduler is responsible of triggering the scheduled callbacks.
+ You should not use NSTimer. Instead use this class.
+
+ There are 2 different types of callbacks (selectors):
+ - update callback: the 'update' callback will be called every frame. You can customize the priority.
+ - custom callback: A custom callback will be called every frame, or with a custom interval of time
+
+ The 'custom selectors' should be avoided when possible. It is faster,
+ and consumes less memory to use the 'update callback'. *
+ !#zh
+ Scheduler 是负责触发回调函数的类。
+ 通常情况下,建议使用 cc.director.getScheduler() 来获取系统定时器。
+ 有两种不同类型的定时器:
+ - update 定时器:每一帧都会触发。您可以自定义优先级。
+ - 自定义定时器:自定义定时器可以每一帧或者自定义的时间间隔触发。
+ 如果希望每帧都触发,应该使用 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.
+ You can use this property to create a 'slow motion' or 'fast forward' effect.
+ Default is 1.0. To create a 'slow motion' effect, use values below 1.0.
+ To create a 'fast forward' effect, use values higher than 1.0.
+ Note:It will affect EVERY scheduled selector / action.
+ !#zh
+ 设置时间间隔的缩放比例。
+ 您可以使用这个方法来创建一个 “slow motion(慢动作)” 或 “fast forward(快进)” 的效果。
+ 默认是 1.0。要创建一个 “slow motion(慢动作)” 效果,使用值低于 1.0。
+ 要使用 “fast forward(快进)” 效果,使用值大于 1.0。
+ 注意:它影响该 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
+
+ The scheduled method will be called every 'interval' seconds.
+ If paused is YES, then it won't be called until it is resumed.
+ If 'interval' is 0, it will be called every frame, but if so, it recommended to use 'scheduleUpdateForTarget:' instead.
+ If the callback function is already scheduled, then only the interval parameter will be updated without re-scheduling it again.
+ repeat let the action be repeated repeat + 1 times, use cc.macro.REPEAT_FOREVER to let the action run continuously
+ delay is the amount of time the action will wait before it'll start
+
+ !#zh
+ 指定回调函数,调用对象等信息来添加一个新的定时器。
+ 如果 paused 值为 true,那么直到 resume 被调用才开始计时。
+ 当时间间隔达到指定值时,设置的回调函数将会被调用。
+ 如果 interval 值为 0,那么回调函数每一帧都会被调用,但如果是这样,
+ 建议使用 scheduleUpdateForTarget 代替。
+ 如果回调函数已经被定时器使用,那么只会更新之前定时器的时间间隔参数,不会设置新的定时器。
+ repeat 值可以让定时器触发 repeat + 1 次,使用 cc.macro.REPEAT_FOREVER
+ 可以让定时器一直循环触发。
+ 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.
+ You should NEVER call this method, unless you know what you are doing.
+ !#zh
+ 取消所有对象的所有定时器,包括系统定时器。
+ 不要调用此函数,除非你确定你在做什么。
+ */
+ unscheduleAll(): void;
+ /**
+ !#en
+ Unschedules all callbacks from all targets with a minimum priority.
+ You should only call this with `PRIORITY_NON_SYSTEM_MIN` or higher.
+ !#zh
+ 取消所有优先级的值大于指定优先级的定时器。
+ 你应该只取消优先级的值大于 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.
+ You should NEVER call this method, unless you know what you are doing.
+ !#zh
+ 暂停所有对象的所有定时器。
+ 不要调用这个方法,除非你知道你正在做什么。
+ */
+ pauseAllTargets(): void;
+ /**
+ !#en
+ Pause all selectors from all targets with a minimum priority.
+ You should only call this with kCCPriorityNonSystemMin or higher.
+ !#zh
+ 暂停所有优先级的值大于指定优先级的定时器。
+ 你应该只暂停优先级的值大于 PRIORITY_NON_SYSTEM_MIN 的定时器。
+ @param minPriority minPriority
+ */
+ pauseAllTargetsWithMinPriority(minPriority: number): void;
+ /**
+ !#en
+ Resume selectors on a set of targets.
+ This can be useful for undoing a call to pauseAllCallbacks.
+ !#zh
+ 恢复指定数组中所有对象的定时器。
+ 这个函数是 pauseAllCallbacks 的逆操作。
+ @param targetsToResume targetsToResume
+ */
+ resumeTargets(targetsToResume: any[]): void;
+ /**
+ !#en
+ Pauses the target.
+ All scheduled selectors/update for a given target won't be 'ticked' until the target is resumed.
+ If the target is not present, nothing happens.
+ !#zh
+ 暂停指定对象的定时器。
+ 指定对象的所有定时器都会被暂停。
+ 如果指定的对象没有定时器,什么也不会发生。
+ @param target target
+ */
+ pauseTarget(target: any): void;
+ /**
+ !#en
+ Resumes the target.
+ The 'target' will be unpaused, so all schedule selectors/update will be 'ticked' again.
+ If the target is not present, nothing happens.
+ !#zh
+ 恢复指定对象的所有定时器。
+ 指定对象的所有定时器将继续工作。
+ 如果指定的对象没有定时器,什么也不会发生。
+ @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;
+ }
+ /** Class for particle asset handling. */
+ export class ParticleAsset extends Asset {
+ }
+ /** Particle System base class.
+ Attributes of a Particle System:
+ - emmision rate of the particles
+ - Gravity Mode (Mode A):
+ - gravity
+ - direction
+ - speed +- variance
+ - tangential acceleration +- variance
+ - radial acceleration +- variance
+ - Radius Mode (Mode B):
+ - startRadius +- variance
+ - endRadius +- variance
+ - rotate +- variance
+ - Properties common to all modes:
+ - life +- life variance
+ - start spin +- variance
+ - end spin +- variance
+ - start size +- variance
+ - end size +- variance
+ - start color +- variance
+ - end color +- variance
+ - life +- variance
+ - blending function
+ - texture
+
+ cocos2d also supports particles generated by Particle Designer (http://particledesigner.71squared.com/).
+ 'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d,
+ cocos2d uses a another approach, but the results are almost identical.
+ cocos2d supports all the variables used by Particle Designer plus a bit more:
+ - spinning particles (supported when using ParticleSystem)
+ - tangential acceleration (Gravity mode)
+ - radial acceleration (Gravity mode)
+ - radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only)
+ It is possible to customize any of the above mentioned properties in runtime. Example:
*/
+ 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.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).
+ Note: Supports only on the Android and iOS. For HTML5, please refer to the official documentation.
+ Please refer to the official documentation for more details.
+ !#zh
+ 设置 JavaScript 接口方案(与 'setOnJSCallback' 配套使用)。
+ 注意:只支持 Android 和 iOS ,Web 端用法请前往官方文档查看。
+ 详情请参阅官方文档
+ @param scheme scheme
+ */
+ setJavascriptInterfaceScheme(scheme: string): void;
+ /**
+ !#en
+ This callback called when load URL that start with javascript
+ interface scheme (see also setJavascriptInterfaceScheme).
+ Note: Supports only on the Android and iOS. For HTML5, please refer to the official documentation.
+ Please refer to the official documentation for more details.
+ !#zh
+ 当加载 URL 以 JavaScript 接口方案开始时调用这个回调函数。
+ 注意:只支持 Android 和 iOS,Web 端用法请前往官方文档查看。
+ 详情请参阅官方文档
+ @param callback callback
+ */
+ setOnJSCallback(callback: Function): void;
+ /**
+ !#en
+ Evaluates JavaScript in the context of the currently displayed page.
+ Please refer to the official document for more details
+ Note: Cross domain issues need to be resolved by yourself
+ !#zh
+ 执行 WebView 内部页面脚本(详情请参阅官方文档)
+ 注意:需要自行解决跨域问题
+ @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;
+ }
+ /** 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 {
+ }
+ /** 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.
*/
+ export class TMXObjectGroupInfo {
+ /** Properties of the ObjectGroup info. */
+ properties: any[];
+ }
+ /** cc.TMXTilesetInfo contains the information about the tilesets like:
+ - Tileset name
+ - Tileset spacing
+ - Tileset margin
+ - size of the tiles
+ - Image used for the tiles
+ - Image size
+
+ This information is obtained from the TMX file.
*/
+ 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;
+ }
+ /** cc.TMXMapInfo contains the information about the map like:
+ - Map orientation (hexagonal, isometric or orthogonal)
+ - Tile size
+ - Map size
+
+ And it also contains:
+ - Layers (an array of TMXLayerInfo objects)
+ - Tilesets (an array of TMXTilesetInfo objects)
+ - ObjectGroups (an array of TMXObjectGroupInfo objects)
+
+ This information is obtained from the TMX file.
*/
+ 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.
+ The Tile GID can be obtained by using the method "tileGIDAt" or by using the TMX editor . Tileset Mgr +1.
+ If a tile is already placed at that position, then it will be removed.
+ !#zh
+ 设置给定坐标的 tile 的 gid (gid = tile 全局 id),
+ tile 的 GID 可以使用方法 “tileGIDAt” 来获得。
+ 如果一个 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 tiles data.An array fill with GIDs.
+ !#zh
+ 返回 tiles 数据. 由GID构成的一个数组.
+ */
+ getTiles(): number[];
+ /**
+ !#en
+ Returns the tile gid at a given tile coordinate.
+ if it returns 0, it means that the tile is empty.
+ !#zh
+ 通过给定的 tile 坐标、flags(可选)返回 tile 的 GID.
+ 如果它返回 0,则表示该 tile 为空。
+ @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.
+ If there is no tile in the specified coordinate and forceCreate parameter is true,
+ 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。
+ 如果指定的坐标没有 tile,并且设置了 forceCreate 那么将会在指定的坐标创建一个新的 TiledTile 。
+ 在渲染这个 tile 的时候,将会使用 TiledTile 的节点的旋转、缩放、位移、颜色属性。
+ @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;
+ }
+ /** !#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;
+ }
+ /** 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.
+ 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 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 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.
+ It can helps you to improve your game performance for objects which need frequent release and recreate operations
+
+ 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.
+ When you create a node pool, you can pass a Component which contains `unuse`, `reuse` functions to control the content of node.
+
+ Some common use case is :
+ 1. Bullets in game (die very soon, massive creation and recreation, no side effect on other objects)
+ 2. Blocks in candy crash (massive creation and recreation)
+ etc...
+ !#zh
+ cc.NodePool 是用于管理节点对象的对象缓存池。
+ 它可以帮助您提高游戏性能,适用于优化对象的反复创建和销毁
+ 以前 cocos2d-x 中的 cc.pool 和新的节点事件注册系统不兼容,因此请使用 cc.NodePool 来代替。
+
+ 新的 NodePool 需要实例化之后才能使用,每种不同的节点对象池需要一个不同的对象池实例,这里的种类对应于游戏中的节点设计,一个 prefab 相当于一个种类的节点。
+ 在创建缓冲池时,可以传入一个包含 unuse, reuse 函数的组件类型用于节点的回收和复用逻辑。
+
+ 一些常见的用例是:
+ 1.在游戏中的子弹(死亡很快,频繁创建,对其他对象无副作用)
+ 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 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 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 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 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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): 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 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;
+ /** !#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;
+ /** !#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>;
+ /** !#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): 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 | Record[], options: Record, onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, data: any) => void): void;
+ loadAny(requests: string | string[] | Record | Record[], onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, data: any) => void): void;
+ loadAny(requests: string | string[] | Record | Record[], options: Record, onComplete: (err: Error, data: any) => void): void;
+ loadAny(requests: string | string[] | Record | Record[], onComplete: (err: Error, data: any) => void): void;
+ loadAny(requests: string | string[] | Record | Record[], options: Record): void;
+ loadAny(requests: string | string[] | Record | Record[]): 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 | Record[], options: Record, onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void;
+ preloadAny(requests: string | string[] | Record | Record[], onProgress: (finished: number, total: number, item: cc.AssetManager.RequestItem) => void, onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void;
+ preloadAny(requests: string | string[] | Record | Record[], options: Record, onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void;
+ preloadAny(requests: string | string[] | Record | Record[], onComplete: (err: Error, items: cc.AssetManager.RequestItem[]) => void): void;
+ preloadAny(requests: string | string[] | Record | Record[], options: Record): void;
+ preloadAny(requests: string | string[] | Record | Record[]): 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, onComplete: (err: Error) => void): void;
+ postLoadNative(asset: cc.Asset, onComplete: (err: Error) => void): void;
+ postLoadNative(asset: cc.Asset, options: Record): 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));
+ cc.assetManager.loadRemote('http://www.cloud.com/test3', { ext: '.png' }, (err, texture) => console.log(err));
+ ```
+ */
+ loadRemote(url: string, options: Record, onComplete: (err: Error, asset: T) => void): void;
+ loadRemote(url: string, onComplete: (err: Error, asset: T) => void): void;
+ loadRemote(url: string, options: Record): void;
+ loadRemote(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, onComplete: (err: Error) => void): void;
+ loadScript(url: string|string[], onComplete: (err: Error) => void): void;
+ loadScript(url: string|string[], options: Record): 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, onComplete: (err: Error, bundle: cc.AssetManager.Bundle) => void): void;
+ loadBundle(nameOrUrl: string, onComplete: (err: Error, bundle: cc.AssetManager.Bundle) => void): void;
+ loadBundle(nameOrUrl: string, options: Record): 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.
+
+ You may want to override:
+ - createNode
+ - getset functions of _nativeAsset
+ - cc.Object._serialize
+ - cc.Object._deserialize
+ !#zh
+ Creator 中的资源基类。
+
+ 您可能需要重写:
+ - createNode
+ - _nativeAsset 的 getset 方法
+ - cc.Object._serialize
+ - cc.Object._deserialize
*/
+ 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.
+ If this type of asset dont have its corresponding node type, this method should be null.
+ !#zh
+ 使用该资源在场景中创建一个新节点。
+ 如果这类资源没有相应的节点类型,该方法应该是空的。
+ @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;
+ /**
+ If enabled, the texture coordinates will be calculated by using this formula:
+ - texCoord.left = (rect.x*2+1) / (texture.wide*2);
+ - texCoord.right = texCoord.left + (rect.width*2-2)/(texture.wide*2);
+
+ The same for bottom and top.
+
+ This formula prevents artifacts by using 99% of the texture.
+ The "correct" way to prevent artifacts is by expand the texture's border with the same color by 1 pixel
+
+ Affected component:
+ - cc.TMXLayer
+
+ Enabled by default. To disabled set it to 0.
+ To modify it, in Web engine please refer to CCMacro.js, in JSB please refer to CCConfig.h
+
*/
+ static FIX_ARTIFACTS_BY_STRECHING_TEXEL_TMX: number;
+ /** Position of the FPS (Default: 0,0 (bottom-left corner))
+ To modify it, in Web engine please refer to CCMacro.js, in JSB please refer to CCConfig.h */
+ static DIRECTOR_STATS_POSITION: Vec2;
+ /**
+ If enabled, actions that alter the position property (eg: CCMoveBy, CCJumpBy, CCBezierBy, etc..) will be stacked.
+ 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.
+ If disabled, only the last run action will take effect.
+
*/
+ 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. If enabled, memory usage will increase.
+
+ !#zh
+ 是否优先使用 image bitmap,启用之后,内存占用会变高 */
+ static ALLOW_IMAGE_BITMAP: boolean;
+ /** !#en
+ Whether to use native TTF renderer which is faster but layout slightly different.
+
+ !#zh
+ 是否使用原生的文本渲染机制, 布局和编辑器有差异. */
+ static ENABLE_NATIVE_TTF_RENDERER: 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 Class for BitmapFont handling.
+ !#zh 位图字体资源类。 */
+ export class BitmapFont extends Font {
+ }
+ /** !#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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): void;
+ }
+ /** undefined */
+ export class BufferAsset extends Asset {
+ }
+ /** !#en Class for Font handling.
+ !#zh 字体资源类。 */
+ export class Font extends Asset {
+ }
+ /** !#en Class for LabelAtlas handling.
+ !#zh 艺术数字字体资源类。 */
+ export class LabelAtlas extends BitmapFont {
+ }
+ /** !#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.
+ 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 对象。
+ 如果你想要获得 JSON 的原始文本,那么应该修改源文件的后缀为 `.txt`,这样就会加载为一个 `TextAsset` 而不是 `JsonAsset`。 */
+ export class JsonAsset extends Asset {
+ /** The loaded JSON object. */
+ json: any;
+ }
+ /** !#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.
+ 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:
+ - texture: A cc.Texture2D that will be used by render components
+ - rectangle: A rectangle of the texture
+
+ !#zh
+ 一个 SpriteFrame 包含:
+ - 纹理:会被渲染组件使用的 Texture2D 对象。
+ - 矩形:在纹理中的矩形区域。 */
+ 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.
+ !#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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): 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.
+ Note: texture is packed into texture atlas by default
+ you should set texture.packable as false before getting Html element object.
+ !#zh 获取当前贴图对应的 HTML Image 或 Canvas 对象,只在 Web 平台下有效。
+ 注意:
+ texture 默认参与动态合图,如果需要获取到正确的 Html 元素对象,需要先设置 texture.packable 为 false
+ */
+ getHtmlElementObj(): HTMLImageElement;
+ /**
+ !#en
+ Destory this texture and immediately release its video memory. (Inherit from cc.Object.destroy)
+ 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)
+ 销毁后,该对象不再可用。您可以在访问对象之前使用 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.
+ 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
+ */
+ setWrapMode(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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): void;
+ }
+ /** !#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 是最常见的事件目标,
+ 但是其他对象也可以是事件目标。
*/
+ 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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): 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
+
+ Gets current target of the event
+ note: It only be available when the event listener is associated with node.
+ It returns 0 when the listener is associated with fixed priority.
+
+ !#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.
+ You can get the SystemEvent instance with cc.systemEvent.
+ !#zh
+ 系统事件,它目前支持按键事件和重力感应事件。
+ 你可以通过 cc.systemEvent 获取到 SystemEvent 的实例。
*/
+ 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;
+ }
+ /** !#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.
+ 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
+ 从动画列表中移除指定的动画剪辑,
+ 如果依赖于 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.
+ 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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): void;
+ }
+ /** !#en Audio Source.
+ !#zh 音频源组件,能对音频剪辑。 */
+ export class AudioSource extends Component {
+ /** !#en
+ Is the audio source playing (Read Only).
+ Note: isPlaying is not supported for Native platforms.
+ !#zh
+ 该音频剪辑是否正播放(只读)。
+ 注意: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 If set to true and AudioClip is a deferred load resource, the component will preload AudioClip in the onLoad phase.
+ !#zh 如果设置为 true 且 AudioClip 为延迟加载资源,组件将在 onLoad 阶段预加载 AudioClip。 */
+ preload: 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.
+ This component does not have any API interface and can be added directly to the scene to take effect.
+ !#zh
+ 该组件将拦截所属节点 bounding box 内的所有输入事件(鼠标和触摸),防止输入穿透到下层节点,一般用于上层 UI 的背景。
+ 该组件没有任何 API 接口,直接添加到场景即可生效。 */
+ export class BlockInputEvents extends Component {
+ }
+ /** !#en
+ Button component. Can be pressed or clicked. Button has 4 Transition types:
+
+ - Button.Transition.NONE // Button will do nothing
+ - Button.Transition.COLOR // Button will change target's color
+ - Button.Transition.SPRITE // Button will change target Sprite's sprite
+ - Button.Transition.SCALE // Button will change target node's scale
+
+ The button can bind events (but you must be on the button's node to bind events).
+ The following events can be triggered on all platforms.
+
+ - cc.Node.EventType.TOUCH_START // Press
+ - cc.Node.EventType.TOUCH_MOVE // After pressing and moving
+ - cc.Node.EventType.TOUCH_END // After pressing and releasing
+ - cc.Node.EventType.TOUCH_CANCEL // Press to cancel
+
+ The following events are only triggered on the PC platform:
+
+ - 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
+
+ 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 上才能绑定事件):
+ 以下事件可以在全平台上都触发:
+
+ - 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).
+
+ NOTE: Not allowed to use construction parameters for Component's subclasses,
+ because Component is created by the engine.
+ !#zh
+ 所有附加到节点的基类。
+
+ 注意:不允许使用组件的子类构造参数,因为组件是由引擎创建的。 */
+ 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.
+ 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。
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ @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.
+ 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。
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ @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.
+ 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 方法调用前执行,这能用于安排脚本的初始化顺序。
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ */
+ 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.
+ 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 初始化完毕后执行的逻辑。
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ */
+ protected start(): void;
+ /**
+ !#en Called when this component becomes enabled and its node is active.
+ 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 当该组件被启用,并且它的节点也激活时。
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ */
+ protected onEnable(): void;
+ /**
+ !#en Called when this component becomes disabled or its node becomes inactive.
+ 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 当该组件被禁用或节点变为无效时调用。
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ */
+ protected onDisable(): void;
+ /**
+ !#en Called when this component will be destroyed.
+ 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 当该组件被销毁时调用
+ 该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。
+ */
+ 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(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.
+ You can also get component in the node by passing in the name of the script.
+ !#zh
+ 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
+ 传入参数也可以是脚本的名称。
+ @param typeOrClassName typeOrClassName
+
+ @example
+ ```js
+ // get sprite component.
+ var sprite = node.getComponent(cc.Sprite);
+ // get custom test calss.
+ var test = node.getComponent("Test");
+ ```
+ */
+ getComponent(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(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(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(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.
+
+ If the component contains the "internal state", short for "temporary member variables which not included
+ in its CCClass properties", then you may need to implement this function.
+
+ The editor will call the getset accessors of your component to record/restore the component's state
+ for undo/redo operation. However, in extreme cases, it may not works well. Then you should implement
+ this function to manually synchronize your component's "internal states" with its public properties.
+ Once you implement this function, all the getset accessors of your component will not be called when
+ the user performs an undo/redo operation. Which means that only the properties with default value
+ will be recorded or restored by editor.
+
+ Similarly, the editor may failed to reset your component correctly in extreme cases. Then if you need
+ to support the reset menu, you should manually synchronize your component's "internal states" with its
+ properties in this function. Once you implement this function, all the getset accessors of your component
+ will not be called during reset operation. Which means that only the properties with default value
+ will be reset by editor.
+
+ This function is only called in editor mode.
+ !#zh
+ onRestore 是用户在检查器菜单点击 Reset 时,对此组件执行撤消操作后调用的。
+
+ 如果组件包含了“内部状态”(不在 CCClass 属性中定义的临时成员变量),那么你可能需要实现该方法。
+
+ 编辑器执行撤销/重做操作时,将调用组件的 get set 来录制和还原组件的状态。然而,在极端的情况下,它可能无法良好运作。
+ 那么你就应该实现这个方法,手动根据组件的属性同步“内部状态”。一旦你实现这个方法,当用户撤销或重做时,组件的所有 get set 都不会再被调用。这意味着仅仅指定了默认值的属性将被编辑器记录和还原。
+
+ 同样的,编辑可能无法在极端情况下正确地重置您的组件。如果你需要支持组件重置菜单,则需要在该方法中手工同步组件属性到“内部状态”。一旦你实现这个方法,组件的所有 get set 都不会在重置操作时被调用。这意味着仅仅指定了默认值的属性将被编辑器重置。
+
+ 此方法仅在编辑器下会被调用。
+ */
+ onRestore(): void;
+ /**
+ !#en
+ Schedules a custom selector.
+ If the selector is already scheduled, then the interval parameter will be updated without scheduling it again.
+ !#zh
+ 调度一个自定义的回调函数。
+ 如果回调函数已调度,那么将不会重复调度它,只会更新时间间隔参数。
+ @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.
+ 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 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 Layout is a container component, use it to arrange child elements easily.
+ Note:
+ 1.Scaling and rotation of child nodes are not considered.
+ 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 组件相当于一个容器,能自动对它的所有子节点进行统一排版。
+ 注意:
+ 1.不会考虑子节点的缩放和旋转。
+ 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 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)
+ The content is drawn only where the stencil have pixel with alpha greater than the alphaThreshold.
+ Should be a float between 0 and 1.
+ This default to 0.1.
+ When it's set to 1, the stencil will discard all pixels, nothing will be shown.
+ !#zh
+ Alpha 阈值(不支持 Canvas 模式)
+ 只有当模板的像素的 alpha 大于等于 alphaThreshold 时,才会绘制内容。
+ 该数值 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.
+ You construct it with a fadeTime, minimum segment size, texture path, texture
+ length and color. The fadeTime controls how long it takes each vertex in
+ the streak to fade out, the minimum segment size it how many pixels the
+ streak will move before adding a new ribbon segment, and the texture
+ length is the how many pixels the texture is stretched across. The texture
+ 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
+ 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 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
+ 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.
+ Toggles that belong to the same group could only have one of them to be switched on at a time.
+ Note: All the first layer child node containing the toggle component will auto be added to the container
+ !#zh ToggleContainer 不是一个可见的 UI 组件,它可以用来修改一组 Toggle 组件的行为。
+ 当一组 Toggle 属于同一个 ToggleContainer 的时候,任何时候只能有一个 Toggle 处于选中状态。
+ 注意:所有包含 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 SubContextView is a view component which controls open data context viewport in minigame platform.
+ 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.
+ This component provides multiple important features:
+ 1. Sub context could use its own resolution size and policy.
+ 2. Sub context could be minized to smallest size it needed.
+ 3. Resolution of sub context content could be increased.
+ 4. User touch input is transformed to the correct viewport.
+ 5. Texture update is handled by this component. User don't need to worry.
+ One important thing to be noted, whenever the node's bounding box change,
+ !#zh SubContextView 可以用来控制小游戏平台开放数据域在主域中的视窗的位置。
+ 这个组件的节点尺寸决定了开放数据域内容在主域中的尺寸,整个开放数据域会被缩放到节点的包围盒范围内。
+ 在这个组件的控制下,用户可以更自由得控制开放数据域:
+ 1. 子域中可以使用独立的设计分辨率和适配模式
+ 2. 子域区域尺寸可以缩小到只容纳内容即可
+ 3. 子域的分辨率也可以被放大,以便获得更清晰的显示效果
+ 4. 用户输入坐标会被自动转换到正确的子域视窗中
+ 5. 子域内容贴图的更新由组件负责,用户不需要处理
*/
+ export class SubContextView 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 WXSubContextView is deprecated since v2.4.1, please use SubContextView instead.
+ !#zh 自 v2.4.1 起,WXSubContextView 已经废弃,请使用 SubContextView */
+ export class WXSubContextView extends Component {
+ }
+ /** !#en SwanSubContextView is deprecated since v2.4.1, please use SubContextView instead.
+ !#zh 自 v2.4.1 起,SwanSubContextView 已经废弃,请使用 SubContextView */
+ export class SwanSubContextView extends Component {
+ }
+ /** !#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;
+ }
+ /** 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
+ 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 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(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;
+ }
+ /** 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 常用的功能,比如点击测试,射线测试,设置测试信息等。
+ 物理系统还管理碰撞信息的分发,她会在产生碰撞时,将碰撞信息分发到各个碰撞回调中。
+ 注意:你需要先在刚体中开启碰撞接听才会产生相应的碰撞回调。
+ 支持的物理系统指定绘制信息事件,请参阅 {{#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(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
+ Destroy all callbackInfos.
+ !#zh
+ 销毁记录的事件
+ */
+ clear(): 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
+ Converts a given point in the world coordinate system to this rigid body's local coordinate system
+ !#zh
+ 将一个给定的世界坐标系下的点转换为刚体本地坐标系下的点
+ @param worldPoint a point in world coordinates.
+ @param out optional, the receiving point
+ */
+ getLocalPoint(worldPoint: Vec2, out: Vec2): Vec2;
+ /**
+ !#en
+ Converts a given point in this rigid body's local coordinate system to the world coordinate system
+ !#zh
+ 将一个给定的刚体本地坐标系下的点转换为世界坐标系下的点
+ @param localPoint a point in local coordinates.
+ @param out optional, the receiving point
+ */
+ getWorldPoint(localPoint: Vec2, out: Vec2): Vec2;
+ /**
+ !#en
+ Converts a given vector in this rigid body's local coordinate system to the world coordinate system
+ !#zh
+ 将一个给定的刚体本地坐标系下的向量转换为世界坐标系下的向量
+ @param localVector a vector in world coordinates.
+ @param out optional, the receiving vector
+ */
+ getWorldVector(localVector: Vec2, out: Vec2): Vec2;
+ /**
+ !#en
+ Converts a given vector in the world coordinate system to this rigid body's local coordinate system
+ !#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;
+ }
+ /** !#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)
+ 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 后将不可用)。
+ 当一个对象的 `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.
+ 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
+ 销毁该对象,并释放所有它对其它对象的引用。
+ 实际销毁操作会延迟到当前帧渲染前执行。从下一帧开始,该对象将不再可用。
+ 您可以在访问对象之前使用 `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;
+ static BYTEDANCE_GAME: number;
+ static BYTEDANCE_GAME_SUB: number;
+ static LINKSURE: number;
+ /** BROWSER_TYPE_WECHAT */
+ static BROWSER_TYPE_WECHAT: 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_HUAWEI: 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): boolean;
+ /**
+ Get max joint matrix size for skinned mesh renderer.
+ */
+ static getMaxJointMatrixSize(): void;
+ /**
+ !#en
+ Returns the safe area of the screen (in design resolution). If the screen is not notched, the visibleRect will be returned by default.
+ Currently supports Android, iOS and WeChat Mini Game platform.
+ !#zh
+ 返回手机屏幕安全区域(设计分辨率为单位),如果不是异形屏将默认返回 visibleRect。目前支持安卓、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|void;
+ /** Indicate the running browser version */
+ static browserVersion: string|void;
+ /** 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.
+ It's main task include:
+ - Apply the design resolution policy
+ - Provide interaction with the window, like resize event on web, retina display support, etc...
+ - Manage the game view port which can be different with the window
+ - Manage the content scale and translation
+
+ Since the cc.view is a singleton, you don't need to call any constructor or create functions,
+ the standard way to use it is by calling:
+ - cc.view.methodName();
*/
+ export class View extends EventTarget {
+ /**
+ !#en
+ Sets view's target-densitydpi for android mobile browser. it can be set to:
+ 1. cc.macro.DENSITYDPI_DEVICE, value is "device-dpi"
+ 2. cc.macro.DENSITYDPI_HIGH, value is "high-dpi" (default value)
+ 3. cc.macro.DENSITYDPI_MEDIUM, value is "medium-dpi" (browser's default value)
+ 4. cc.macro.DENSITYDPI_LOW, value is "low-dpi"
+ 5. Custom value, e.g: "480"
+ !#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.
+ 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,
+ this callback will be invoked before applying resolution policy,
+ so you can do any additional modifications within the callback.
+ 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.
+ It's enabled by default, we strongly suggest you not to disable it.
+ And even when it's enabled, you can still set your own "viewport" meta, it won't be overridden
+ 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,
+ it takes effect only when you called setDesignResolutionPolicy
+ 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.
+ 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
+ You can pass true as parameter to enable it and disable it by passing false.
+ 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.
+ Only useful on web
+ !#zh 检查自动进入全屏模式是否启动。
+ 仅在 Web 模式下有效。
+ */
+ isAutoFullScreenEnabled(): boolean;
+ /**
+ !#en
+ Returns the canvas size of the view.
+ On native platforms, it returns the screen size since the view is a fullscreen view.
+ 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.
+ On native platforms, it returns the screen size since the view is a fullscreen view.
+ 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.
+ 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.
+ The resolution policy include:
+ [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.
+ [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.
+ [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.
+ [4] ResolutionFixedHeight Scale the content's height to screen's height and proportionally scale its width
+ [5] ResolutionFixedWidth Scale the content's width to screen's width and proportionally scale its height
+ [cc.ResolutionPolicy] [Web only feature] Custom resolution policy, constructed by cc.ResolutionPolicy
+ !#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;
+ }
+ /** 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
*/
+ 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;
+ }
+ /** 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
*/
+ 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 {
+ }
+ /** cc.ResolutionPolicy class is the root strategy class of scale strategy,
+ its main task is to maintain the compatibility with Cocos2d-x
*/
+ 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.
+ 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,
+ 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
+ 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
+ canvas so that it fits the aspect ratio of the device
+ no distortion will occur however you must make sure your application works on different
+ aspect ratios */
+ static FIXED_HEIGHT: number;
+ /** The application takes the width of the design resolution size and modifies the height of the internal
+ canvas so that it fits the aspect ratio of the device
+ no distortion will occur however you must make sure your application works on different
+ 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 {
+ /** the obj list whose field needs to load asset by uuid */
+ uuidObjList: any[];
+ /** the corresponding field name which referenced to the asset */
+ uuidPropList: (String|Number)[];
+ /** list of the depends assets' uuid */
+ uuidList: string[];
+ /**
+
+ @param data data
+ */
+ init(data: any): void;
+ reset(): void;
+ /**
+
+ @param obj obj
+ @param propName propName
+ @param uuid uuid
+ */
+ push(obj: any, propName: string, uuid: string): void;
+ /** 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
+ 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: Out, a: IColorLike, ofs?: number): Out;
+ /**
+ !#zh 数组转颜色
+ !#en An array of colors turn
+ @param ofs 数组起始偏移量
+ */
+ static fromArray (arr: IWritableArrayLike, out: Out, ofs?: number): Out;
+ /**
+ !#zh 颜色 RGB 预乘 Alpha 通道
+ !#en RGB premultiply alpha channel
+ @param out 返回颜色
+ @param color 预乘处理的目标颜色
+ */
+ static premultiplyAlpha (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;
+ }
+ /** !#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 (a: Out): Mat4;
+ /**
+ !#zh 复制目标矩阵
+ !#en Copy the target matrix
+ */
+ static copy (out: Out, a: Out): Out;
+ /**
+ !#zh 将目标赋值为单位矩阵
+ !#en The target of an assignment is the identity matrix
+ */
+ static identity (out: Out): Out;
+ /**
+ !#zh 转置矩阵
+ !#en Transposed matrix
+ */
+ static transpose (out: Out, a: Out): Out;
+ /**
+ !#zh 矩阵求逆
+ !#en Matrix inversion
+ */
+ static invert (out: Out, a: Out): Out;
+ /**
+ !#zh 矩阵行列式
+ !#en Matrix determinant
+ */
+ static determinant (a: Out): number;
+ /**
+ !#zh 矩阵乘法
+ !#en Matrix Multiplication
+ */
+ static multiply (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 在给定矩阵变换基础上加入变换
+ !#en Was added in a given transformation matrix transformation on the basis of
+ */
+ static transform (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: Out, a: Out, v: VecLike): Out;
+ /**
+ !#zh 在给定矩阵变换基础上加入新缩放变换
+ !#en Add new scaling transformation in a given matrix transformation on the basis of
+ */
+ static scale (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: 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: 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: 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: Out, a: Out, rad: number): Out;
+ /**
+ !#zh 计算位移矩阵
+ !#en Displacement matrix calculation
+ */
+ static fromTranslation (out: Out, v: VecLike): Out;
+ /**
+ !#zh 计算缩放矩阵
+ !#en Scaling matrix calculation
+ */
+ static fromScaling (out: Out, v: VecLike): Out;
+ /**
+ !#zh 计算旋转矩阵
+ !#en Calculates the rotation matrix
+ */
+ static fromRotation (out: Out, rad: number, axis: VecLike): Out;
+ /**
+ !#zh 计算绕 X 轴的旋转矩阵
+ !#en Calculating rotation matrix about the X axis
+ */
+ static fromXRotation (out: Out, rad: number): Out;
+ /**
+ !#zh 计算绕 Y 轴的旋转矩阵
+ !#en Calculating rotation matrix about the Y axis
+ */
+ static fromYRotation (out: Out, rad: number): Out;
+ /**
+ !#zh 计算绕 Z 轴的旋转矩阵
+ !#en Calculating rotation matrix about the Z axis
+ */
+ static fromZRotation (out: Out, rad: number): Out;
+ /**
+ !#zh 根据旋转和位移信息计算矩阵
+ !#en The rotation and displacement information calculating matrix
+ */
+ static fromRT (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: 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: 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: 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 (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: 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: Out, q: Quat, v: VecLike, s: VecLike, o: VecLike): Out;
+ /**
+ !#zh 根据指定的旋转信息计算矩阵
+ !#en The rotation matrix calculation information specified
+ */
+ static fromQuat (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: 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: 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: 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: Out, eye: VecLike, center: VecLike, up: VecLike): Out;
+ /**
+ !#zh 计算逆转置矩阵
+ !#en Reversal matrix calculation
+ */
+ static inverseTranspose (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素矩阵加法
+ !#en Element by element matrix addition
+ */
+ static add (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素矩阵减法
+ !#en Matrix element by element subtraction
+ */
+ static subtract (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 矩阵标量乘法
+ !#en Matrix scalar multiplication
+ */
+ static multiplyScalar (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: Out, a: Out, b: Out, scale: number): Out;
+ /**
+ !#zh 矩阵等价判断
+ !#en Analyzing the equivalent matrix
+ */
+ static strictEquals (a: Out, b: Out): boolean;
+ /**
+ !#zh 排除浮点数误差的矩阵近似等价判断
+ !#en Negative floating point error is approximately equivalent to determining a matrix
+ */
+ static equals (a: Out, b: Out, epsilon?: number): boolean;
+ /**
+ !#zh 矩阵转数组
+ !#en Matrix transpose array
+ @param ofs 数组内的起始偏移量
+ */
+ static toArray > (out: Out, mat: IMat4Like, ofs?: number): Out;
+ /**
+ !#zh 数组转矩阵
+ !#en Transfer matrix array
+ @param ofs 数组起始偏移量
+ */
+ static fromArray (out: Out, arr: IWritableArrayLike, 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
+ 近似判断两个矩阵是否相等。
+ 判断 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 (a: Out): Quat;
+ /**
+ !#zh 复制目标四元数
+ !#en Copy quaternion target
+ */
+ static copy (out: Out, a: QuatLike): Out;
+ /**
+ !#zh 设置四元数值
+ !#en Provided Quaternion Value
+ */
+ static set (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: Out): Out;
+ /**
+ !#zh 设置四元数为两向量间的最短路径旋转,默认两向量都已归一化
+ !#en Set quaternion rotation is the shortest path between two vectors, the default two vectors are normalized
+ */
+ static rotationTo (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 (outAxis: VecLike, q: Out): number;
+ /**
+ !#zh 四元数乘法
+ !#en Quaternion multiplication
+ */
+ static multiply (out: Out, a: QuatLike_1, b: QuatLike_2): Out;
+ /**
+ !#zh 四元数标量乘法
+ !#en Quaternion scalar multiplication
+ */
+ static multiplyScalar (out: Out, a: Out, b: number): Out;
+ /**
+ !#zh 四元数乘加:A + B * scale
+ !#en Quaternion multiplication and addition: A + B * scale
+ */
+ static scaleAndAdd (out: Out, a: Out, b: Out, scale: number): Out;
+ /**
+ !#zh 绕 X 轴旋转指定四元数
+ !#en About the X axis specified quaternion
+ @param rad 旋转弧度
+ */
+ static rotateX (out: Out, a: Out, rad: number): Out;
+ /**
+ !#zh 绕 Y 轴旋转指定四元数
+ !#en Rotation about the Y axis designated quaternion
+ @param rad 旋转弧度
+ */
+ static rotateY (out: Out, a: Out, rad: number): Out;
+ /**
+ !#zh 绕 Z 轴旋转指定四元数
+ !#en Around the Z axis specified quaternion
+ @param rad 旋转弧度
+ */
+ static rotateZ (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: 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: Out, rot: Out, axis: VecLike, rad: number): Out;
+ /**
+ !#zh 根据 xyz 分量计算 w 分量,默认已归一化
+ !#en The component w xyz components calculated, normalized by default
+ */
+ static calculateW (out: Out, a: Out): Out;
+ /**
+ !#zh 四元数点积(数量积)
+ !#en Quaternion dot product (scalar product)
+ */
+ static dot (a: Out, b: Out): number;
+ /**
+ !#zh 逐元素线性插值: A + t * (B - A)
+ !#en Element by element linear interpolation: A + t * (B - A)
+ */
+ static lerp (out: Out, a: Out, b: Out, t: number): Out;
+ /**
+ !#zh 四元数球面插值
+ !#en Spherical quaternion interpolation
+ */
+ static slerp(out: Out, a: QuatLike_1, b: QuatLike_2, t: number): Out;
+ /**
+ !#zh 带两个控制点的四元数球面插值
+ !#en Quaternion with two spherical interpolation control points
+ */
+ static sqlerp (out: Out, a: Out, b: Out, c: Out, d: Out, t: number): Out;
+ /**
+ !#zh 四元数求逆
+ !#en Quaternion inverse
+ */
+ static invert (out: Out, a: QuatLike): Out;
+ /**
+ !#zh 求共轭四元数,对单位四元数与求逆等价,但更高效
+ !#en Conjugating a quaternion, and the unit quaternion equivalent to inversion, but more efficient
+ */
+ static conjugate (out: Out, a: Out): Out;
+ /**
+ !#zh 求四元数长度
+ !#en Seek length quaternion
+ */
+ static len (a: Out): number;
+ /**
+ !#zh 求四元数长度平方
+ !#en Seeking quaternion square of the length
+ */
+ static lengthSqr (a: Out): number;
+ /**
+ !#zh 归一化四元数
+ !#en Normalized quaternions
+ */
+ static normalize (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: 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: Out, view: Vec3, up?: Vec3): Out;
+ /**
+ !#zh 根据旋转轴和旋转弧度计算四元数
+ !#en The quaternion calculated and the arc of rotation of the rotary shaft
+ */
+ static fromAxisAngle (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: Out, mat: Mat3): Out;
+ /**
+ !#zh 根据欧拉角信息计算四元数,旋转顺序为 YZX
+ !#en The quaternion calculated Euler angle information, rotation order YZX
+ */
+ static fromEuler (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: VecLike, q: Out): VecLike;
+ /**
+ !#zh 返回定义此四元数的坐标系 Y 轴向量
+ !#en This returns the result of the quaternion coordinate system Y axis vector
+ */
+ static toAxisY (out: VecLike, q: Out): VecLike;
+ /**
+ !#zh 返回定义此四元数的坐标系 Z 轴向量
+ !#en This returns the result of the quaternion coordinate system the Z-axis vector
+ */
+ static toAxisZ (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: Out, q: IQuatLike, outerZ?: boolean): Out;
+ /**
+ !#zh 四元数等价判断
+ !#en Analyzing quaternion equivalent
+ */
+ static strictEquals (a: Out, b: Out): boolean;
+ /**
+ !#zh 排除浮点数误差的四元数近似等价判断
+ !#en Negative floating point error quaternion approximately equivalent Analyzing
+ */
+ static equals (a: Out, b: Out, epsilon?: number): boolean;
+ /**
+ !#zh 四元数转数组
+ !#en Quaternion rotation array
+ @param ofs 数组内的起始偏移量
+ */
+ static toArray > (out: Out, q: IQuatLike, ofs?: number): Out;
+ /**
+ !#zh 数组转四元数
+ !#en Array to a quaternion
+ @param ofs 数组起始偏移量
+ */
+ static fromArray (out: Out, arr: IWritableArrayLike, 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;
+ }
+ /** 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: Out, mat: IMat3Like, ofs?: number): Out;
+ /**
+ !#zh 数组转矩阵
+ !#en Transfer matrix array
+ @param ofs 数组起始偏移量
+ */
+ static fromArray (out: Out, arr: IWritableArrayLike, 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
+ cc.Size is the class for size object,
+ please do not use its constructor to create sizes,
+ use {{#crossLink "cc/size:method"}}{{/crossLink}} alias function instead.
+ It will be deprecated soon, please use cc.Vec2 instead.
+
+ !#zh
+ cc.Size 是 size 对象的类。
+ 请不要使用它的构造函数创建的 size,
+ 使用 {{#crossLink "cc/size:method"}}{{/crossLink}} 别名函数。
+ 它不久将被取消,请使用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
+ 线性插值。
+ 当 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 = new Vec2;
+ 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 = new Vec2;
+ 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 = new Vec2;
+ 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 = new Vec2;
+ 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 = new Vec2;
+ 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 (a: Out): Vec2;
+ /**
+ !#zh 复制指定向量的值
+ */
+ static copy (out: Out, a: Out): Out;
+ /**
+ !#zh 设置向量值
+ */
+ static set (out: Out, x: number, y: number): Out;
+ /**
+ !#zh 逐元素向量加法
+ */
+ static add (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量减法
+ */
+ static subtract (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量乘法
+ */
+ static multiply (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量除法
+ */
+ static divide (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量向上取整
+ */
+ static ceil (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量向下取整
+ */
+ static floor (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量最小值
+ */
+ static min (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量最大值
+ */
+ static max (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量四舍五入取整
+ */
+ static round (out: Out, a: Out): Out;
+ /**
+ !#zh 向量标量乘法
+ */
+ static multiplyScalar (out: Out, a: Out, b: number): Out;
+ /**
+ !#zh 逐元素向量乘加: A + B * scale
+ */
+ static scaleAndAdd (out: Out, a: Out, b: Out, scale: number): Out;
+ /**
+ !#zh 求两向量的欧氏距离
+ */
+ static distance (a: Out, b: Out): number;
+ /**
+ !#zh 求两向量的欧氏距离平方
+ */
+ static squaredDistance (a: Out, b: Out): number;
+ /**
+ !#zh 求向量长度
+ */
+ static len (a: Out): number;
+ /**
+ !#zh 求向量长度平方
+ */
+ static lengthSqr (a: Out): number;
+ /**
+ !#zh 逐元素向量取负
+ */
+ static negate (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量取倒数,接近 0 时返回 Infinity
+ */
+ static inverse (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量取倒数,接近 0 时返回 0
+ */
+ static inverseSafe (out: Out, a: Out): Out;
+ /**
+ !#zh 归一化向量
+ */
+ static normalize (out: Out, a: Vec2Like): Out;
+ /**
+ !#zh 向量点积(数量积)
+ */
+ static dot (a: Out, b: Out): number;
+ /**
+ !#zh 向量叉积(向量积),注意二维向量的叉积为与 Z 轴平行的三维向量
+ */
+ static cross (out: Vec2, a: Out, b: Out): Vec2;
+ /**
+ !#zh 逐元素向量线性插值: A + t * (B - A)
+ */
+ static lerp (out: Out, a: Out, b: Out, t: number): Out;
+ /**
+ !#zh 生成一个在单位圆上均匀分布的随机向量
+ */
+ static random (out: Out, scale?: number): Out;
+ /**
+ !#zh 向量与三维矩阵乘法,默认向量第三位为 1。
+ */
+ static transformMat3 (out: Out, a: Out, mat: IMat3Like): Out;
+ /**
+ !#zh 向量与四维矩阵乘法,默认向量第三位为 0,第四位为 1。
+ */
+ static transformMat4 (out: Out, a: Out, mat: MatLike): Out;
+ /**
+ !#zh 向量等价判断
+ */
+ static strictEquals (a: Out, b: Out): boolean;
+ /**
+ !#zh 排除浮点数误差的向量近似等价判断
+ */
+ static equals (a: Out, b: Out, epsilon?: number): boolean;
+ /**
+ !#zh 排除浮点数误差的向量近似等价判断
+ */
+ static angle (a: Out, b: Out): number;
+ /**
+ !#zh 向量转数组
+ */
+ static toArray > (out: Out, v: IVec2Like, ofs?: number): Out;
+ /**
+ !#zh 数组转向量
+ */
+ static fromArray (out: Out, arr: IWritableArrayLike, 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
+ 近似判断两个点是否相等。
+ 判断 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
+ 返回指定限制区域后的向量。
+ 向量大于 max_inclusive 则返回 max_inclusive。
+ 向量小于 min_inclusive 则返回 min_inclusive。
+ 否则返回自身。
+ @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.
+
+ 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
+ 返回归一化后的向量。
+
+ 注意,当前向量不变,并返回一个新的归一化向量。如果你想来归一化当前向量,可使用 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 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 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: Out): Out;
+ /**
+ !#zh 获得指定向量的拷贝
+ !#en Obtaining copy vectors designated
+ */
+ static clone (a: Out): Vec3;
+ /**
+ !#zh 复制目标向量
+ !#en Copy the target vector
+ */
+ static copy (out: Out, a: Vec3Like): Out;
+ /**
+ !#zh 设置向量值
+ !#en Set to value
+ */
+ static set (out: Out, x: number, y: number, z: number): Out;
+ /**
+ !#zh 逐元素向量加法
+ !#en Element-wise vector addition
+ */
+ static add (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量减法
+ !#en Element-wise vector subtraction
+ */
+ static subtract (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量乘法 (分量积)
+ !#en Element-wise vector multiplication (product component)
+ */
+ static multiply (out: Out, a: Vec3Like_1, b: Vec3Like_2): Out;
+ /**
+ !#zh 逐元素向量除法
+ !#en Element-wise vector division
+ */
+ static divide (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量向上取整
+ !#en Rounding up by elements of the vector
+ */
+ static ceil (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量向下取整
+ !#en Element vector by rounding down
+ */
+ static floor (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量最小值
+ !#en The minimum by-element vector
+ */
+ static min (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量最大值
+ !#en The maximum value of the element-wise vector
+ */
+ static max (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量四舍五入取整
+ !#en Element-wise vector of rounding to whole
+ */
+ static round (out: Out, a: Out): Out;
+ /**
+ !#zh 向量标量乘法
+ !#en Vector scalar multiplication
+ */
+ static multiplyScalar (out: Out, a: Vec3Like, b: number): Out;
+ /**
+ !#zh 逐元素向量乘加: A + B * scale
+ !#en Element-wise vector multiply add: A + B * scale
+ */
+ static scaleAndAdd (out: Out, a: Out, b: Out, scale: number): Out;
+ /**
+ !#zh 求两向量的欧氏距离
+ !#en Seeking two vectors Euclidean distance
+ */
+ static distance (a: Out, b: Out): number;
+ /**
+ !#zh 求两向量的欧氏距离平方
+ !#en Euclidean distance squared seeking two vectors
+ */
+ static squaredDistance (a: Out, b: Out): number;
+ /**
+ !#zh 求向量长度
+ !#en Seeking vector length
+ */
+ static len (a: Out): number;
+ /**
+ !#zh 求向量长度平方
+ !#en Seeking squared vector length
+ */
+ static lengthSqr (a: Out): number;
+ /**
+ !#zh 逐元素向量取负
+ !#en By taking the negative elements of the vector
+ */
+ static negate (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量取倒数,接近 0 时返回 Infinity
+ !#en Element vector by taking the inverse, return near 0 Infinity
+ */
+ static inverse (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量取倒数,接近 0 时返回 0
+ !#en Element vector by taking the inverse, return near 0 0
+ */
+ static inverseSafe (out: Out, a: Out): Out;
+ /**
+ !#zh 归一化向量
+ !#en Normalized vector
+ */
+ static normalize (out: Out, a: Vec3Like): Out;
+ /**
+ !#zh 向量点积(数量积)
+ !#en Vector dot product (scalar product)
+ */
+ static dot (a: Out, b: Out): number;
+ /**
+ !#zh 向量叉积(向量积)
+ !#en Vector cross product (vector product)
+ */
+ static cross (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: 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: Out, scale?: number): Out;
+ /**
+ !#zh 向量与四维矩阵乘法,默认向量第四位为 1。
+ !#en Four-dimensional vector and matrix multiplication, the default vectors fourth one.
+ */
+ static transformMat4 (out: Out, a: Vec3Like, mat: MatLike): Out;
+ /**
+ !#zh 向量与四维矩阵乘法,默认向量第四位为 0。
+ !#en Four-dimensional vector and matrix multiplication, vector fourth default is 0.
+ */
+ static transformMat4Normal (out: Out, a: Out, mat: MatLike): Out;
+ /**
+ !#zh 向量与三维矩阵乘法
+ !#en Dimensional vector matrix multiplication
+ */
+ static transformMat3 (out: Out, a: Out, mat: MatLike): Out;
+ /**
+ !#zh 向量仿射变换
+ !#en Affine transformation vector
+ */
+ static transformAffine(out: Out, v: VecLike, mat: MatLike): Out;
+ /**
+ !#zh 向量四元数乘法
+ !#en Vector quaternion multiplication
+ */
+ static transformQuat (out: Out, a: VecLike, q: QuatLike): Out;
+ /**
+ !#zh 以缩放 -> 旋转 -> 平移顺序变换向量
+ !#en To scale -> rotation -> transformation vector sequence translation
+ */
+ static transformRTS(out: Out, a: VecLike, r: QuatLike, t: VecLike, s: VecLike): Out;
+ /**
+ !#zh 以平移 -> 旋转 -> 缩放顺序逆变换向量
+ !#en Translational -> rotation -> Zoom inverse transformation vector sequence
+ */
+ static transformInverseRTS(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: 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: 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: Out, v: Out, o: Out, a: number): Out;
+ /**
+ !#zh 向量等价判断
+ !#en Equivalent vectors Analyzing
+ */
+ static strictEquals (a: Out, b: Out): boolean;
+ /**
+ !#zh 排除浮点数误差的向量近似等价判断
+ !#en Negative error vector floating point approximately equivalent Analyzing
+ */
+ static equals (a: Out, b: Out, epsilon?: number): boolean;
+ /**
+ !#zh 求两向量夹角弧度
+ !#en Radian angle between two vectors seek
+ */
+ static angle (a: Out, b: Out): number;
+ /**
+ !#zh 计算向量在指定平面上的投影
+ !#en Calculating a projection vector in the specified plane
+ @param a 待投影向量
+ @param n 指定平面的法线
+ */
+ static projectOnPlane (out: Out, a: Out, n: Out): Out;
+ /**
+ !#zh 计算向量在指定向量上的投影
+ !#en Projection vector calculated in the vector designated
+ @param a 待投影向量
+ @param n 目标向量
+ */
+ static project (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 向量转数组
+ !#en Vector transfer array
+ @param ofs 数组起始偏移量
+ */
+ static toArray > (out: Out, v: IVec3Like, ofs?: number): Out;
+ /**
+ !#zh 数组转向量
+ !#en Array steering amount
+ @param ofs 数组起始偏移量
+ */
+ static fromArray (out: Out, arr: IWritableArrayLike, 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
+ 近似判断两个点是否相等。
+ 判断 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
+ 返回指定限制区域后的向量。
+ 向量大于 max_inclusive 则返回 max_inclusive。
+ 向量小于 min_inclusive 则返回 min_inclusive。
+ 否则返回自身。
+ @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.
+
+ 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
+ 返回归一化后的向量。
+
+ 注意,当前向量不变,并返回一个新的归一化向量。如果你想来归一化当前向量,可使用 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.
+ 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 (a: Out): Vec4;
+ /**
+ !#zh 复制目标向量
+ !#en Copy the target vector
+ */
+ static copy (out: Out, a: Out): Out;
+ /**
+ !#zh 设置向量值
+ !#en Set to value
+ */
+ static set (out: Out, x: number, y: number, z: number, w: number): Out;
+ /**
+ !#zh 逐元素向量加法
+ !#en Element-wise vector addition
+ */
+ static add (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量减法
+ !#en Element-wise vector subtraction
+ */
+ static subtract (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量乘法
+ !#en Element-wise vector multiplication
+ */
+ static multiply (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量除法
+ !#en Element-wise vector division
+ */
+ static divide (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量向上取整
+ !#en Rounding up by elements of the vector
+ */
+ static ceil (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量向下取整
+ !#en Element vector by rounding down
+ */
+ static floor (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量最小值
+ !#en The minimum by-element vector
+ */
+ static min (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量最大值
+ !#en The maximum value of the element-wise vector
+ */
+ static max (out: Out, a: Out, b: Out): Out;
+ /**
+ !#zh 逐元素向量四舍五入取整
+ !#en Element-wise vector of rounding to whole
+ */
+ static round (out: Out, a: Out): Out;
+ /**
+ !#zh 向量标量乘法
+ !#en Vector scalar multiplication
+ */
+ static multiplyScalar (out: Out, a: Out, b: number): Out;
+ /**
+ !#zh 逐元素向量乘加: A + B * scale
+ !#en Element-wise vector multiply add: A + B * scale
+ */
+ static scaleAndAdd (out: Out, a: Out, b: Out, scale: number): Out;
+ /**
+ !#zh 求两向量的欧氏距离
+ !#en Seeking two vectors Euclidean distance
+ */
+ static distance (a: Out, b: Out): number;
+ /**
+ !#zh 求两向量的欧氏距离平方
+ !#en Euclidean distance squared seeking two vectors
+ */
+ static squaredDistance (a: Out, b: Out): number;
+ /**
+ !#zh 求向量长度
+ !#en Seeking vector length
+ */
+ static len (a: Out): number;
+ /**
+ !#zh 求向量长度平方
+ !#en Seeking squared vector length
+ */
+ static lengthSqr (a: Out): number;
+ /**
+ !#zh 逐元素向量取负
+ !#en By taking the negative elements of the vector
+ */
+ static negate (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量取倒数,接近 0 时返回 Infinity
+ !#en Element vector by taking the inverse, return near 0 Infinity
+ */
+ static inverse (out: Out, a: Out): Out;
+ /**
+ !#zh 逐元素向量取倒数,接近 0 时返回 0
+ !#en Element vector by taking the inverse, return near 0 0
+ */
+ static inverseSafe (out: Out, a: Out): Out;
+ /**
+ !#zh 归一化向量
+ !#en Normalized vector
+ */
+ static normalize (out: Out, a: Out): Out;
+ /**
+ !#zh 向量点积(数量积)
+ !#en Vector dot product (scalar product)
+ */
+ static dot (a: Out, b: Out): number;
+ /**
+ !#zh 逐元素向量线性插值: A + t * (B - A)
+ !#en Vector element by element linear interpolation: A + t * (B - A)
+ */
+ static lerp (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: Out, scale?: number): Out;
+ /**
+ !#zh 向量矩阵乘法
+ !#en Vector matrix multiplication
+ */
+ static transformMat4 (out: Out, a: Out, mat: MatLike): Out;
+ /**
+ !#zh 向量仿射变换
+ !#en Affine transformation vector
+ */
+ static transformAffine