diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index d40dc60..6047e01 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -1,18 +1,34 @@ :root { - --light-hl-0: #0000FF; - --dark-hl-0: #569CD6; + --light-hl-0: #001080; + --dark-hl-0: #9CDCFE; --light-hl-1: #000000; --dark-hl-1: #D4D4D4; - --light-hl-2: #267F99; - --dark-hl-2: #4EC9B0; - --light-hl-3: #001080; - --dark-hl-3: #9CDCFE; - --light-hl-4: #098658; - --dark-hl-4: #B5CEA8; - --light-hl-5: #795E26; - --dark-hl-5: #DCDCAA; - --light-hl-6: #0070C1; - --dark-hl-6: #4FC1FF; + --light-hl-2: #800000; + --dark-hl-2: #808080; + --light-hl-3: #800000; + --dark-hl-3: #569CD6; + --light-hl-4: #000000FF; + --dark-hl-4: #D4D4D4; + --light-hl-5: #E50000; + --dark-hl-5: #9CDCFE; + --light-hl-6: #0000FF; + --dark-hl-6: #CE9178; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; + --light-hl-8: #A31515; + --dark-hl-8: #CE9178; + --light-hl-9: #0000FF; + --dark-hl-9: #569CD6; + --light-hl-10: #0070C1; + --dark-hl-10: #4FC1FF; + --light-hl-11: #795E26; + --dark-hl-11: #DCDCAA; + --light-hl-12: #008000; + --dark-hl-12: #6A9955; + --light-hl-13: #267F99; + --dark-hl-13: #4EC9B0; + --light-hl-14: #098658; + --dark-hl-14: #B5CEA8; --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } @@ -25,6 +41,14 @@ --hl-4: var(--light-hl-4); --hl-5: var(--light-hl-5); --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --hl-14: var(--light-hl-14); --code-background: var(--light-code-background); } } @@ -36,6 +60,14 @@ --hl-4: var(--dark-hl-4); --hl-5: var(--dark-hl-5); --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --hl-14: var(--dark-hl-14); --code-background: var(--dark-code-background); } } @@ -47,6 +79,14 @@ --hl-4: var(--light-hl-4); --hl-5: var(--light-hl-5); --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --hl-14: var(--light-hl-14); --code-background: var(--light-code-background); } @@ -58,6 +98,14 @@ --hl-4: var(--dark-hl-4); --hl-5: var(--dark-hl-5); --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --hl-14: var(--dark-hl-14); --code-background: var(--dark-code-background); } @@ -68,4 +116,12 @@ .hl-4 { color: var(--hl-4); } .hl-5 { color: var(--hl-5); } .hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +.hl-11 { color: var(--hl-11); } +.hl-12 { color: var(--hl-12); } +.hl-13 { color: var(--hl-13); } +.hl-14 { color: var(--hl-14); } pre, code { background: var(--code-background); } diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 7003b5d..e6499c9 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACo2YX2/aMBTFv0ueq7EidX/6RgubIoGKoOvLVE0mGPCa2JF9s4KmfffJCQQ7ub7Oq885P66dGE77828C/AjJfTLlm2q/53qq2fvzqeTJTVIyOCT3CZdVYUZd/cMBijy5Sd6E3Cb3X/7dtKTlKl2kz+nL7NfiaTrrcnw1TFlxoyqdcYMN44lhxvpxMsenuCrh9DM/wkRmB6W76asSTk9yYMYaK+2Mn+XMGG5GruozbsceRYqCgVDSIIxWIwnVVigkbJejuQWTbM91IH5WKcoDMzx4CI5IMR5VngsjlOwTWimSV8gW6mU6J4EJiW2/laj8lAFrX9Q+w5NJjmbvbJMjB3hRqPTsD5cwKwQAthFXpSjf5+sD22KEi0KlU1lWEHyXXJWizBU+QbNOJRcMDj9A5MhTaKVIXosjGtbiSCZVZXhw565KUZ42v3kGS6XyPuOqUYSlDfWydpVMHU5GZCY4v69TpBXPoJ+3q3RKbrnGPvmi0Ong3Rt071pTcP9dB0Vbc5khV7heJnMl0285n8m9kFjelWmOFoAC7DqVtF/R/ZxdjaWCB+eIMQb6yzHgV+NsIUe46iRJFCjALpM5zaTZKV2Mp0j6KlKMF56B0uN+/izQWQ38ONGanR6q3Q7bQ88yrIusQblPRUjgescyr5PUHh83vvvk4gC02FTAU7lTOMx1UKi0/dhvmhXuhXdoXdMw4FMJXvNAgY2JBtrCVP/aBlitTmLawkOgfM8wXLODwMF1XcOQK26qPDZiY4oAi1IZAUpHhuzYItBzgSPP0fUMw0VG9F0RZHnyW5+PalQS4f7JhmNcRwRlQGliIMdAgzR7nwvJyYPqmKLAKGwoaKny0z5yG/q+KNaeSpTpmEhg/TZOgg+ilUlI3blra2Aix0CC5sIAl3yLUy4qjVBs2/kqDQyFOaNo8o47BhJUN3X7FxuOaeU4hDp0x0CCbNsPX8WLSiKaAk2etmeJwHpN2wehbTsEOVcy4qmh1mHwcHXpeEic17qpioAYI2DbxsnH4llImK24JMox0CBbdakX1zHEQfRIjoNGXQs0Dez5KKy9O/Z/ijisVQf1WjNXGfNfDbDhUd/R4X38+vn2buz/K8qArmzl78IcKUZJC7Z3d9YAmlU8+/of/QpJ+iAWAAA=" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACpWYX2/aMBTFv0ueq3VF6v70jRVWIYGKaNeXaZpMMOA1sZHtrKBp331ygGAn18fZq885P64dO/Hl+5/M8r3N7rIRX1abDdcjzd6eDzueXWU7ZrfZXcZlVZrrtv5ua8siu8pehVxld5/+XjWkB812W5GzgsIEYpwxX0xmk+fJy/jn7HE0bkNCNU5ZcKMqnXNDVRKIccbT/XBKV3FR4ulnvrdDmW+VbqcvSjw9LCwzzlhpr/y8YMZwc+2rIeNmEFCkKJkVShqC0WiQUK2EIsJuOJmbMck2XEfiJxVRvjDDo4vgiYhxr4pCGKFkl9BIibwiplAP45y0TEhq+o2E8iNmWbNRu4xAhhzN3tiyIBbwrKD0+DeXdlwKa6mJ+CqiPEyftmxFEc4KTJ9fHET8LKH8RO4qG92LvoooU0XP4DiOkjNmt9+sKIin2EiJvBZ7MqzFHiZVZXh05r6KKI/LXzy3c6WIB3DREGHuQp2sG4Wp7cGI3ETrD3VEWvDcdvNuFKfkimvql88KTkfPbq9z25ii8287EO2Jy5x4BdTDMLdj+rXgY7kRksr7MuZoYUmAG0dJ94rv5txoKhVdOE9MMcgvT4+vzskCS7jokCRKEuCGYU4zadZKl4MRkb6IiPHCc6v0oJs/CTirLd8PtWaHL9V6Tc2hY+l3l3myyn8qQlqu1ywP7jS1J8QNbj/4OGu1WFaWT+Ra0TDfgVCT5me/alb6B96jtU39gI87G9xcSODRhIHuwlV/rSOsRocYd+VqPrnHn43MlnJC9L3QecEhM7Bg2PliB6YcevrhcHktVz/kgpuqSJV4NCWA5U4ZYZVOFNmyJaCniypcR9/TD5coMXQlkLtDeLsNUUcVIvz2lsb4jgTKWKVBQZ4BgzR7mwqJz0PLlAQmYX1Bc1UcNonT0PUlsW5VkkzPBIH1bhxGH0QjQ0jdG9TWSEWeAYKmwlgu+YqmnFWMUGzVeuVHiqKcSTQ8454BguqOwnWmNKaR0xC06J4Bgvps0//Yoq7JiZ/sswoRruOA5XiGBMg1IAmUZ0nAOp1KCCK7lRjkdKUFu4m09oPHr34tD8QFXQu6YhHGBNh1M/CxBBYIcy0CRHkGDHKtAjpQniENwiV5Doy6NCAY2PEhrDuE7j9dGtaovfoCM1U5C7eGdeHrrqPFe//5483tIPwr0FhduZapDfOkFGUSv3kfWR1DkliyDe9i6lE6++Mf181aXjYYAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index c9e2303..cfee1b4 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/AltasTexture.html b/docs/classes/AltasTexture.html index f41359a..af83163 100644 --- a/docs/classes/AltasTexture.html +++ b/docs/classes/AltasTexture.html @@ -1,7 +1,7 @@ AltasTexture | sparkle-engine
sparkle-engine

Class AltasTexture

裁剪区域纹理

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Accessors

Constructors

Properties

region: Rect = ...

裁剪区域

-

Accessors

\ No newline at end of file +

Constructors

Properties

region: Rect = ...

裁剪区域

+

Accessors

\ No newline at end of file diff --git a/docs/classes/Animations.html b/docs/classes/Animations.html index 6c1109f..5f758c0 100644 --- a/docs/classes/Animations.html +++ b/docs/classes/Animations.html @@ -1,4 +1,4 @@ -Animations | sparkle-engine
sparkle-engine

Class Animations

Hierarchy (view full)

Implements

Constructors

constructor +Animations | sparkle-engine

Class Animations

Hierarchy (view full)

Implements

Constructors

Properties

Methods

Constructors

Properties

animations: {
    [name: string]: IAnimationFrames;
}

动画

-

Type declaration

gapSize: number

间隔

-
hFrames: number

横着几帧

-
texture: Texture

纹理

-
vFrames: number

竖着几帧

-

Methods

\ No newline at end of file +

Constructors

Properties

animations: {
    [name: string]: IAnimationFrames;
}

动画

+

Type declaration

gapSize: number

间隔

+
hFrames: number

横着几帧

+
texture: Texture

纹理

+
vFrames: number

竖着几帧

+

Methods

\ No newline at end of file diff --git a/docs/classes/Audio.html b/docs/classes/Audio.html index 9f124a9..832c2e6 100644 --- a/docs/classes/Audio.html +++ b/docs/classes/Audio.html @@ -1,9 +1,9 @@ -Audio | sparkle-engine
sparkle-engine

Hierarchy (view full)

Implements

Constructors

constructor +Audio | sparkle-engine

Hierarchy (view full)

Implements

Constructors

Properties

Methods

Constructors

Properties

buffer: AudioBuffer
context: AudioContext
source?: AudioBufferSourceNode

Methods

  • 播放音频

    +

Constructors

Properties

buffer: AudioBuffer
context: AudioContext
source?: AudioBufferSourceNode

Methods

  • 播放音频

    Parameters

    • when: number = 0

      开始时间

      -

    Returns AudioBufferSourceNode

\ No newline at end of file +

Returns AudioBufferSourceNode

\ No newline at end of file diff --git a/docs/classes/AudioManager.html b/docs/classes/AudioManager.html index f14bac9..8cae3c0 100644 --- a/docs/classes/AudioManager.html +++ b/docs/classes/AudioManager.html @@ -1,6 +1,6 @@ -AudioManager | sparkle-engine
sparkle-engine

Class AudioManager

Constructors

constructor +AudioManager | sparkle-engine

Class AudioManager

Constructors

Properties

Methods

Constructors

Properties

context: AudioContext

Methods

  • Parameters

    • audio: ArrayBuffer

    Returns Promise<AudioBuffer>

\ No newline at end of file +

Constructors

Properties

context: AudioContext

Methods

  • Parameters

    • audio: ArrayBuffer

    Returns Promise<AudioBuffer>

\ No newline at end of file diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 8866b2a..9e2a598 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -1,11 +1,11 @@ BaseTexture | sparkle-engine
sparkle-engine

Class BaseTexture

基础纹理,包含一个 WebGLTexture, 由 Texture 使用 通常情况下不会用到该类型,但请勿直接实例化该类,可使用 SparkleEngine.texture 使用

-

Constructors

Constructors

Properties

Methods

Constructors

Properties

height: number
source: Images
texture: WebGLTexture
width: number

Methods

\ No newline at end of file +

Constructors

Properties

height: number
source: Images
texture: WebGLTexture
width: number

Methods

\ No newline at end of file diff --git a/docs/classes/Collision.html b/docs/classes/Collision.html index 70d6104..c040739 100644 --- a/docs/classes/Collision.html +++ b/docs/classes/Collision.html @@ -1,4 +1,7 @@ -Collision | sparkle-engine
sparkle-engine

Hierarchy (view full)

Constructors

constructor +Collision | sparkle-engine

Example: 示例

const collision = new Collision({
shape: Collision.rectShape(0, 0, 12, 10)
})
collision.onBodyEnter=(res)=>{} // 其他物理体进入
collision.onBodyExit=(res)=>{} // 其他物理体离开
collision.onClick=()=>{} //被点击
// 以上上个均可以用事件连接 +
+

该节点的事件,请查看:ICollisionEvent

+

Hierarchy (view full)

Constructors

Properties

ShapePosition: Vector2[] = []
children: Container[] = []

子节点列表

-
collisions: Collision[] = []
destroyed: boolean = false

是否被销毁

-
globalPosition: Vector2 = ...

全局坐标

-
globalRotation: number = 0

全局旋转

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
offset: Vector2

偏移

-
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
pool: PoolManager

对于对象池的引用

-
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

-
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

Constructors

Properties

ShapePosition: Vector2[] = []
children: Container[] = []

子节点列表

+
collisions: Collision[] = []
destroyed: boolean = false

是否被销毁

+
globalPosition: Vector2 = ...

全局坐标

+
globalRotation: number = 0

全局旋转

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
offset: Vector2

偏移

+
parent?: null | Container

父节点

+
pool: PoolManager

对于对象池的引用

+
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

+
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
results: ICollisionResult[] = []
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

-
scale: Vector2

缩放,缩放同样是相对父的

-
shape: Vector2[] = []
skew: Vector2

斜切

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-

Accessors

Methods

results: ICollisionResult[] = []
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

+
scale: Vector2

缩放,缩放同样是相对父的

+
shape: Vector2[] = []
skew: Vector2

斜切

+
tag: Set<string>

Tag 用于节点查找,可以有多个tag

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • Parameters

    • dt: number

    Returns void

  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Color.html b/docs/classes/Color.html index d138139..73ff0d7 100644 --- a/docs/classes/Color.html +++ b/docs/classes/Color.html @@ -1,5 +1,5 @@ Color | sparkle-engine
sparkle-engine

颜色

-

Implements

Constructors

Implements

Constructors

Properties

Constructors

  • Parameters

    • r: number = 0
    • g: number = 0
    • b: number = 0
    • alpha: number = 1

    Returns Color

Properties

alpha: number = 0
b: number = 0
g: number = 0
r: number = 0

Methods

  • 判断是否相等

    -

    Parameters

    Returns boolean

  • 直接设置颜色

    -

    Parameters

    • r: number
    • g: number
    • b: number
    • alpha: number = 1

    Returns void

\ No newline at end of file +

Constructors

Properties

alpha: number = 0
b: number = 0
g: number = 0
r: number = 0

Methods

\ No newline at end of file diff --git a/docs/classes/Container.html b/docs/classes/Container.html index 7f56632..50e7cf1 100644 --- a/docs/classes/Container.html +++ b/docs/classes/Container.html @@ -1,5 +1,8 @@ Container | sparkle-engine
sparkle-engine

所有游戏对象的基类,可以容纳子节点

-

Hierarchy (view full)

Implements

Constructors

Example

const node = new Container()
+
+

该节点的事件,请查看:IContainerEvent

+

Hierarchy (view full)

Implements

Constructors

Properties

children: Container[] = []

子节点列表

-
destroyed: boolean = false

是否被销毁

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
listened: IListened[] = []
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
pool: PoolManager

对于对象池的引用

-
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

Constructors

Properties

children: Container[] = []

子节点列表

+
destroyed: boolean = false

是否被销毁

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
listened: IListened[] = []
parent?: null | Container

父节点

+
pool: PoolManager

对于对象池的引用

+
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-

Accessors

Methods

tag: Set<string>

Tag 用于节点查找,可以有多个tag

+

Accessors

Methods

  • 根据tag查找子节点

    Parameters

    • tag: string | string[]

      要查找的tag(支持多个)

    • deep: boolean = true

    Returns Container[]

    找到的子节点数组

    -
  • 判断节点是不是子节点(包括所有子孙节点)

    -

    Parameters

    Returns boolean

  • 判断节点是不是父节点(包括所有祖辈节点)

    -

    Parameters

    Returns boolean

  • 使用该方法取消 onEvent 监听的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 判断节点是不是子节点(包括所有子孙节点)

    +

    Parameters

    Returns boolean

  • 判断节点是不是父节点(包括所有祖辈节点)

    +

    Parameters

    Returns boolean

  • 使用该方法取消 onEvent 监听的事件

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 设置父节点 如果当前节点已经有父节点,则先从原来的父节点中移除

    -

    Parameters

    Returns void

  • 设置所在的父节点的子排序

    -

    Parameters

    • index: number

    Returns void

  • 设置所在的父节点的子排序

    +

    Parameters

    • index: number

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/DataResources.html b/docs/classes/DataResources.html index 2ca76ba..5332a81 100644 --- a/docs/classes/DataResources.html +++ b/docs/classes/DataResources.html @@ -1,4 +1,4 @@ DataResources | sparkle-engine
sparkle-engine

Class DataResources<T>

数据资源,LoadJSON会创建该资源

-

Type Parameters

  • T = unknown

Hierarchy (view full)

Constructors

Type Parameters

  • T = unknown

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

data: T
\ No newline at end of file +

Constructors

Properties

data: T
\ No newline at end of file diff --git a/docs/classes/Drawable.html b/docs/classes/Drawable.html index e4d7ab9..57997e2 100644 --- a/docs/classes/Drawable.html +++ b/docs/classes/Drawable.html @@ -1,5 +1,5 @@ Drawable | sparkle-engine
sparkle-engine

所有可显示的游戏对象的基类

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

children: Container[] = []

子节点列表

-
color: Color

颜色叠加

-
destroyed: boolean = false

是否被销毁

-
drawSize: Vector2 = ...

绘制的大小

-
globalPosition: Vector2 = ...

全局坐标

-
globalRotation: number = 0

全局旋转

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
offset: Vector2

偏移

-
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
pool: PoolManager

对于对象池的引用

-
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

-
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

Constructors

Properties

children: Container[] = []

子节点列表

+
color: Color

颜色叠加

+
destroyed: boolean = false

是否被销毁

+
drawSize: Vector2 = ...

绘制的大小

+
globalPosition: Vector2 = ...

全局坐标

+
globalRotation: number = 0

全局旋转

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
offset: Vector2

偏移

+
parent?: null | Container

父节点

+
pool: PoolManager

对于对象池的引用

+
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

+
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

-
scale: Vector2

缩放,缩放同样是相对父的

-
skew: Vector2

斜切

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-
visible: boolean = true

是否可见

-

Accessors

Methods

rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

+
scale: Vector2

缩放,缩放同样是相对父的

+
skew: Vector2

斜切

+
tag: Set<string>

Tag 用于节点查找,可以有多个tag

+
visible: boolean = true

是否可见

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/EventEmitter.html b/docs/classes/EventEmitter.html index e835b9d..850de34 100644 --- a/docs/classes/EventEmitter.html +++ b/docs/classes/EventEmitter.html @@ -1,11 +1,11 @@ -EventEmitter | sparkle-engine
sparkle-engine

Class EventEmitter<T>

Type Parameters

  • T extends Record<string | symbol, any>

Hierarchy (view full)

Constructors

constructor +EventEmitter | sparkle-engine

Class EventEmitter<T>

Type Parameters

  • T extends Record<string | symbol, any>

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

eventMap: eventMap<T> = ...

Methods

  • 触发事件

    -

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • Rest ...args: Parameters<T[K]>

    Returns boolean

  • 取消监听事件

    -

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • listener: T[K]

    Returns this

  • 监听事件

    -

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • listener: T[K]

    Returns this

  • 监听一次性事件

    -

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • listener: T[K]

    Returns this

\ No newline at end of file +

Constructors

Properties

eventMap: eventMap<T> = ...

Methods

  • 触发事件

    +

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • Rest ...args: Parameters<T[K]>

    Returns boolean

  • 取消监听事件

    +

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • listener: T[K]

    Returns this

  • 监听事件

    +

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • listener: T[K]

    Returns this

  • 监听一次性事件

    +

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • eventName: K
    • listener: T[K]

    Returns this

\ No newline at end of file diff --git a/docs/classes/GLShader.html b/docs/classes/GLShader.html index 2ab2ca3..bbed555 100644 --- a/docs/classes/GLShader.html +++ b/docs/classes/GLShader.html @@ -1,6 +1,6 @@ GLShader | sparkle-engine
sparkle-engine

webgl shader 封装了一些方法

-

Implements

Constructors

Implements

Constructors

Properties

fragment gl program @@ -13,11 +13,11 @@

Constructors

  • Parameters

    • gl: WebGLRenderingContext
    • vertex: string

      顶点 shader

    • fragment: string

      片元 shader

    • Optional precision: string

      质量,为空则自动使用最高支持

      -

    Returns GLShader

Properties

fragment: string
gl: WebGLRenderingContext
program: WebGLProgram
vertex: string

Methods

  • 获取 shader 中 attribute 的 location

    -

    Parameters

    • name: string

    Returns number

  • 获取 uniform 的 Location

    -

    Parameters

    • name: string

    Returns null | WebGLUniformLocation

  • 设置一个顶点属性 的信息

    +

Returns GLShader

Properties

fragment: string
gl: WebGLRenderingContext
program: WebGLProgram
vertex: string

Methods

  • 获取 shader 中 attribute 的 location

    +

    Parameters

    • name: string

    Returns number

  • 获取 uniform 的 Location

    +

    Parameters

    • name: string

    Returns null | WebGLUniformLocation

  • 设置一个顶点属性 的信息

    Parameters

    • gl: WebGLRenderingContext
    • attributes: AttributeInfo[]

      顶点属性信息

    • vertexByteSize: number

      一个顶点有多少byte,用于 stride

      -

    Returns void

\ No newline at end of file +

Returns void

\ No newline at end of file diff --git a/docs/classes/Graphical.html b/docs/classes/Graphical.html new file mode 100644 index 0000000..0cd5713 --- /dev/null +++ b/docs/classes/Graphical.html @@ -0,0 +1,97 @@ +Graphical | sparkle-engine
sparkle-engine

绘制图形,圆形多边形,正方形等

+

Hierarchy (view full)

Constructors

Properties

children: Container[] = []

子节点列表

+
color: Color

颜色叠加

+
destroyed: boolean = false

是否被销毁

+
drawSize: Vector2 = ...

绘制的大小

+
fill: boolean
globalPosition: Vector2 = ...

全局坐标

+
globalRotation: number = 0

全局旋转

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
lineWidth: number
offset: Vector2

偏移

+
parent?: null | Container

父节点

+
path?: Vector2[]
pool: PoolManager

对于对象池的引用

+
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

+
radius?: number
rect?: Rect
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +在切换场景时不会被销毁(其子节点同样不会被销毁) +注意:常驻节点必须是根节点的一级子节点

+
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

+
scale: Vector2

缩放,缩放同样是相对父的

+
skew: Vector2

斜切

+
tag: Set<string>

Tag 用于节点查找,可以有多个tag

+
visible: boolean = true

是否可见

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 遍历所有子节点

    +

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

      +
        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    +
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file diff --git a/docs/classes/InputManager.html b/docs/classes/InputManager.html index a5ab331..0255d00 100644 --- a/docs/classes/InputManager.html +++ b/docs/classes/InputManager.html @@ -1,8 +1,8 @@ InputManager | sparkle-engine
sparkle-engine

Class InputManager

监听输入

-

Implements

Constructors

Implements

Constructors

Properties

Methods

Constructors

Properties

pressedKeys: Set<string> = ...

所有按下的按键

-

Methods

  • 获取所有点击的按键

    -

    Returns Set<string>

\ No newline at end of file +

Constructors

Properties

pressedKeys: Set<string> = ...

所有按下的按键

+

Methods

\ No newline at end of file diff --git a/docs/classes/Loader.html b/docs/classes/Loader.html index fadd60c..8fb20d7 100644 --- a/docs/classes/Loader.html +++ b/docs/classes/Loader.html @@ -2,13 +2,13 @@ 比如loadImage 会直接返回 HTMLImageElement 若想加载游戏引擎封装资源,请使用engine resource属性 ResourcesManager

-

Constructors

Constructors

Properties

Methods

Constructors

Properties

baseUrl?: string

Methods

  • 加载一个音频

    -

    Parameters

    • path: string

    Returns Promise<AudioBuffer>

  • 加载一个图像

    -

    Parameters

    • path: string

    Returns Promise<HTMLImageElement>

\ No newline at end of file +

Constructors

Properties

baseUrl?: string

Methods

\ No newline at end of file diff --git a/docs/classes/MathUtils.html b/docs/classes/MathUtils.html index 64dee00..c96f78b 100644 --- a/docs/classes/MathUtils.html +++ b/docs/classes/MathUtils.html @@ -1,5 +1,5 @@ MathUtils | sparkle-engine
sparkle-engine

MathUtil 类包含一些常用的数学工具函数。

-

Constructors

Constructors

Methods

choose clamp degreesToRadians @@ -10,26 +10,26 @@

Constructors

Methods

  • 从给定的选项数组中随机选择一个元素。

    Type Parameters

    • T

    Parameters

    • options: T[]

      选项数组。

    Returns T

    随机选择的元素。

    -
  • 将数值限制在指定范围内。

    +
  • 将数值限制在指定范围内。

    Parameters

    • value: number

      要限制的数值。

    • min: number

      最小值。

    • max: number

      最大值。

    Returns number

    限制在范围内的数值。

    -
  • 将角度转换为弧度。

    +
  • 将角度转换为弧度。

    Parameters

    • degrees: number

      要转换的角度。

    Returns number

    对应的弧度。

    -
  • 线性插值。

    Parameters

    • start: number

      起始值。

    • end: number

      结束值。

    • t: number

      插值参数,介于0和1之间。

    Returns number

    插值结果。

    -
  • 将弧度转换为角度。

    +
  • 将弧度转换为角度。

    Parameters

    • radians: number

      要转换的弧度。

    Returns number

    对应的角度。

    -
  • 返回一个介于0(包含)和1(不包含)之间的随机数。

    +
  • 返回一个介于0(包含)和1(不包含)之间的随机数。

    Returns number

    随机数。

    -
  • 返回一个介于min(包含)和max(包含)之间的随机整数。

    +
  • 返回一个介于min(包含)和max(包含)之间的随机整数。

    Parameters

    • min: number

      最小值。

    • max: number

      最大值。

    Returns number

    随机整数。

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Matrix.html b/docs/classes/Matrix.html index 583e951..60d537a 100644 --- a/docs/classes/Matrix.html +++ b/docs/classes/Matrix.html @@ -1,5 +1,5 @@ Matrix | sparkle-engine
sparkle-engine

矩阵

-

Implements

Constructors

Implements

Constructors

Properties

Methods

apply clone @@ -14,21 +14,21 @@ setMatrix skew translate -

Constructors

Properties

element: Float32Array

[a, b, tx] +

Constructors

Properties

element: Float32Array

[a, b, tx] [c, d, tx] a 和 d 表示 X轴和Y轴的缩放 b 和 c 表示旋转 tx 和 ty 表示沿X轴和Y轴的平移

-

Methods

  • 变换一个二维坐标

    -

    Parameters

    • x: number
    • y: number

    Returns number[]

  • 获取该矩阵的角度

    -

    Returns number

  • 获取该矩阵的缩放

    -

    Returns number[]

  • 旋转这个矩阵

    -

    Parameters

    • r: number

    Returns void

  • 缩放矩阵

    -

    Parameters

    • x: number
    • y: number = x

    Returns void

  • 设置绝对缩放

    -

    Parameters

    • x: number
    • y: number = x

    Returns void

  • 直接设置

    -

    Parameters

    • v: Float32Array | number[]

    Returns void

  • 斜切

    -

    Parameters

    • x: number
    • y: number = x

    Returns void

  • 平移矩阵

    -

    Parameters

    • x: number
    • y: number

    Returns void

\ No newline at end of file +

Methods

\ No newline at end of file diff --git a/docs/classes/MouseManager.html b/docs/classes/MouseManager.html index b4be3b0..4c65383 100644 --- a/docs/classes/MouseManager.html +++ b/docs/classes/MouseManager.html @@ -1,5 +1,5 @@ MouseManager | sparkle-engine
sparkle-engine

Class MouseManager

鼠标输入

-

Implements

Constructors

Implements

Constructors

Properties

Constructors

Properties

canvas: HTMLCanvasElement
isMouseDown: boolean = false

鼠标是否点击

-
mousePosition: Vector2 = ...

鼠标的全局位置

-

Methods

  • Parameters

    • event: MouseEvent

    Returns void

  • Parameters

    • event: MouseEvent

    Returns void

  • Parameters

    • event: MouseEvent

    Returns void

\ No newline at end of file +

Constructors

Properties

canvas: HTMLCanvasElement
isMouseDown: boolean = false

鼠标是否点击

+
mousePosition: Vector2 = ...

鼠标的全局位置

+

Methods

\ No newline at end of file diff --git a/docs/classes/ObjectPool.html b/docs/classes/ObjectPool.html index 5f34d5b..43c6ea6 100644 --- a/docs/classes/ObjectPool.html +++ b/docs/classes/ObjectPool.html @@ -1,19 +1,19 @@ ObjectPool | sparkle-engine
sparkle-engine

Class ObjectPool<T>

一个基本的对象池,对象池用于重复利用某些频繁删除或创建的对象 来减少创建创建所造成的开销,每个对象池的对象都必须是IPoolable 也就是说必须实现poolReset方法,这将会在拉取旧的对象时被调用

-

Example

class MyType {
constructor(coin){
coin = coin ?? 0
}
poolReset(coin){
coin = coin ?? 0
}
}
let pool = new ObjectPool(MyType)
pool.push(obj)
pool.pull(arg) +

Example

class MyType {
constructor(coin){
coin = coin ?? 0
}
poolReset(coin){
coin = coin ?? 0
}
}
let pool = new ObjectPool(MyType)
pool.push(obj)
pool.pull(arg)
-

Type Parameters

Constructors

Type Parameters

Constructors

Properties

Methods

Constructors

Properties

factory: Constructor<T>
maxObject: number = 1024

对象池中最大对象数量

-
objects: T[] = []

Methods

  • 拉取一个对象

    -

    Parameters

    • Rest ...arg: Parameters<T["poolReset"]>

    Returns T

    Example

    let pool = new ObjectPool(MyType)
    pool.pull(...arg) +

Constructors

Properties

factory: Constructor<T>
maxObject: number = 1024

对象池中最大对象数量

+
objects: T[] = []

Methods

  • 拉取一个对象

    +

    Parameters

    • Rest ...arg: Parameters<T["poolReset"]>

    Returns T

    Example

    let pool = new ObjectPool(MyType)
    pool.pull(...arg)
    -
  • 回收一个对象

    -

    Parameters

    • obj: T

    Returns void

    Example

    let pool = new ObjectPool(MyType)
    pool.push(obj) +
  • 回收一个对象

    +

    Parameters

    • obj: T

    Returns void

    Example

    let pool = new ObjectPool(MyType)
    pool.push(obj)
    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Path.html b/docs/classes/Path.html index 99cd5e1..e71e3e1 100644 --- a/docs/classes/Path.html +++ b/docs/classes/Path.html @@ -1,14 +1,16 @@ Path | sparkle-engine

表示一个路径

-

Constructors

Constructors

Properties

firstPoint: boolean = true
fistStack: boolean[] = []
path: Vector2[] = []
startPoint: Vector2 = ...

Methods

  • Parameters

    • fn: ((start, end, nextStart?, nextEnd?) => void)
        • (start, end, nextStart?, nextEnd?): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • fn: ((point, i) => void)
        • (point, i): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • x: number
    • y: number

    Returns void

  • Parameters

    • x: number
    • y: number

    Returns void

\ No newline at end of file +

Constructors

Properties

firstPoint: boolean = true
fistStack: boolean[] = []
path: Vector2[] = []
startPoint: Vector2 = ...

Methods

  • Parameters

    • radius: number

    Returns void

  • Parameters

    • fn: ((start, end) => void)

    Returns void

  • Parameters

    • fn: ((point, i) => void)
        • (point, i): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • x: number
    • y: number

    Returns void

  • Parameters

    • x: number
    • y: number

    Returns void

\ No newline at end of file diff --git a/docs/classes/PhysicsManager.html b/docs/classes/PhysicsManager.html index 0db7f09..69e32f6 100644 --- a/docs/classes/PhysicsManager.html +++ b/docs/classes/PhysicsManager.html @@ -1,4 +1,4 @@ -PhysicsManager | sparkle-engine

Class PhysicsManager

Constructors

constructor +PhysicsManager | sparkle-engine

Class PhysicsManager

Constructors

Properties

Methods

add @@ -6,8 +6,8 @@ remove reset

Constructors

Properties

physicsObjects: Set<Collision> = ...

Methods

\ No newline at end of file +

Parameters

Returns PhysicsManager

Properties

physicsObjects: Set<Collision> = ...

Methods

\ No newline at end of file diff --git a/docs/classes/Rect.html b/docs/classes/Rect.html index 0581a61..7cd5b72 100644 --- a/docs/classes/Rect.html +++ b/docs/classes/Rect.html @@ -1,5 +1,5 @@ Rect | sparkle-engine

矩形

-

Implements

Constructors

Implements

Constructors

Properties

h w x @@ -8,12 +8,12 @@ clone copy setRect -

Constructors

Properties

h: number = 0

高度

-
w: number = 0

宽度

-
x: number = 0

坐标x

-
y: number = 0

坐标y

-

Methods

  • 复制一个矩形到该矩形

    -

    Parameters

    Returns void

  • 直接设置矩形

    -

    Parameters

    • x: number = ...
    • y: number = ...
    • w: number = ...
    • h: number = ...

    Returns void

\ No newline at end of file +

Constructors

Properties

h: number = 0

高度

+
w: number = 0

宽度

+
x: number = 0

坐标x

+
y: number = 0

坐标y

+

Methods

  • 复制一个矩形到该矩形

    +

    Parameters

    Returns void

  • 直接设置矩形

    +

    Parameters

    • x: number = ...
    • y: number = ...
    • w: number = ...
    • h: number = ...

    Returns void

\ No newline at end of file diff --git a/docs/classes/Renderer.html b/docs/classes/Renderer.html index 140ebb2..32f9f01 100644 --- a/docs/classes/Renderer.html +++ b/docs/classes/Renderer.html @@ -1,5 +1,5 @@ Renderer | sparkle-engine

renderer 用于绘制所以能在屏幕上看见的东西

-

Constructors

Constructors

Properties

antialias: boolean

是否开启抗锯齿

-
backgroundColor: Color

背景颜色

-
canvas: HTMLCanvasElement

游戏的canvas

-
compositors: Map<string, Compositor> = ...

合成器存储

-
currentCompositors: Compositor

当前状态的合成器

-
currentShader: GLShader

当前状态的shader

-
devicePixelRatio: number
gl: WebGLRenderingContext

webgl 上下文

-
matrixStack: Matrix[] = []

矩阵堆栈,用于记录状态

-
modelMatrix: Matrix

当前状态的模型矩阵

-
nativeSize: Vector2

游戏有多少像素

-
path: Path = ...

用于绘制多边形或线条的Path,合成器使用

-
projectionMatrix: Float32Array

投影矩阵

-
scaleMode: SCALE_MODE

当canvas大小改变时的缩放策略

-

Default

{@link SCALE_MODE.ADAPTIVE}
+

Constructors

Properties

antialias: boolean

是否开启抗锯齿

+
backgroundColor: Color

背景颜色

+
canvas: HTMLCanvasElement

游戏的canvas

+
compositors: Map<string, Compositor> = ...

合成器存储

+
currentCompositors: Compositor

当前状态的合成器

+
currentShader: GLShader

当前状态的shader

+
devicePixelRatio: number
gl: WebGLRenderingContext

webgl 上下文

+
matrixStack: Matrix[] = []

矩阵堆栈,用于记录状态

+
modelMatrix: Matrix

当前状态的模型矩阵

+
nativeSize: Vector2

游戏有多少像素

+
path: Path = ...

用于绘制多边形或线条的Path,合成器使用

+
projectionMatrix: Float32Array

投影矩阵

+
scaleMode: SCALE_MODE

当canvas大小改变时的缩放策略

+

Default

{@link SCALE_MODE.ADAPTIVE}
 
-
visable: boolean = true

当前状态是否隐藏

-
visableStack: boolean[] = []

显示堆栈,用于记录状态

-

Accessors

Methods

  • 添加一个合成器

    -

    Parameters

    • name: string
    • compositors: Compositor

    Returns void

  • 创建投影矩阵

    +
visable: boolean = true

当前状态是否隐藏

+
visableStack: boolean[] = []

显示堆栈,用于记录状态

+

Accessors

Methods

  • 添加一个合成器

    +

    Parameters

    • name: string
    • compositors: Compositor

    Returns void

  • 创建投影矩阵

    Parameters

    • left: number
    • right: number
    • bottom: number
    • top: number

    Returns Float32Array

    矩阵

    -
  • 设置当前的合成器

    Parameters

    • compositorsName: string

      合成器名称

    • Optional shader: GLShader

      自定义shader

      -

    Returns void

  • 更新 NativeSize

    -

    Parameters

    • width: number
    • height: number

    Returns void

\ No newline at end of file +

Returns void

  • 更新 NativeSize

    +

    Parameters

    • width: number
    • height: number

    Returns void

\ No newline at end of file diff --git a/docs/classes/Resources.html b/docs/classes/Resources.html index 743c1cb..85ed691 100644 --- a/docs/classes/Resources.html +++ b/docs/classes/Resources.html @@ -1,2 +1,2 @@ -Resources | sparkle-engine
\ No newline at end of file +Resources | sparkle-engine
\ No newline at end of file diff --git a/docs/classes/ResourcesManager.html b/docs/classes/ResourcesManager.html index 7b6efe4..f732eaa 100644 --- a/docs/classes/ResourcesManager.html +++ b/docs/classes/ResourcesManager.html @@ -1,5 +1,5 @@ ResourcesManager | sparkle-engine

Class ResourcesManager

资源管理器

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

所有资源

-
currectRegion: number = -1
loadingAssets: {
    [key: string]: Promise<IResources>;
} = {}

Type declaration

regions: {
    [key: string]: number;
} = {}

Type declaration

  • [key: string]: number
regionsCallback: {
    [key: string]: (() => void);
} = {}

Type declaration

  • [key: string]: (() => void)
      • (): void
      • Returns void

regionsCount: number = 0

Methods

  • 一般不会用到 +

Constructors

Properties

所有资源

+
currectRegion: number = -1
loadingAssets: {
    [key: string]: Promise<IResources>;
} = {}

Type declaration

regions: {
    [key: string]: number;
} = {}

Type declaration

  • [key: string]: number
regionsCallback: {
    [key: string]: (() => void);
} = {}

Type declaration

  • [key: string]: (() => void)
      • (): void
      • Returns void

regionsCount: number = 0

Methods

  • 一般不会用到 结束加载区域,可以监听该区域所有资源加载完成

    -

    Parameters

    • fn: (() => void)
        • (): void
        • Returns void

    Returns void

  • 加载一个裁剪纹理

    +

    Parameters

    • fn: (() => void)
        • (): void
        • Returns void

    Returns void

  • 加载一个裁剪纹理

    Parameters

    • id: string

      资源id

    • textureId: string

      纹理

    • Optional rect: Rect

      裁剪的矩形

    Returns Promise<AltasTexture>

    返回的纹理

    -
  • 加载一个音频

    +

Returns Promise<Animations>

  • 加载一个音频

    Parameters

    • id: string

      音频id

    • url: string

      音频url

      -

    Returns Promise<Audio>

  • 加载一个JSON

    +

Returns Promise<Audio>

  • 加载一个纹理

    +

Returns Promise<DataResources<unknown>>

  • 加载一个纹理

    Parameters

    • id: string

      资源id

    • data: string | Images

      可以是字符串(从url加载)或者是图片数据

    Returns Promise<Texture>

    返回的纹理

    -
  • 一般不会用到 创建一个加载区域,可以监听该区域所有资源加载完成

    -

    Returns void

\ No newline at end of file +

Returns void

\ No newline at end of file diff --git a/docs/classes/Sence.html b/docs/classes/Sence.html index 2e0c3e5..3edd435 100644 --- a/docs/classes/Sence.html +++ b/docs/classes/Sence.html @@ -1,7 +1,10 @@ -Sence | sparkle-engine

Class SenceAbstract

Constructors

constructor +Sence | sparkle-engine

Class SenceAbstract

场景

+

Example

class GameSence extends Sence{
preload(){
engine.loader.baseUrl = "."
engine.resource.loadTexture("static_img", "ground.png")
engine.resource.loadTexture("entity_img", "img.png")
}
create(){
retrun Container
}
}
+
+

Constructors

Methods

Constructors

Methods

  • 预加载,所有需要的资源可以在此处加载

    -

    Returns void

\ No newline at end of file +

Returns Container

  • 预加载,所有需要的资源可以在此处加载

    +

    Returns void

\ No newline at end of file diff --git a/docs/classes/SparkleEngine.html b/docs/classes/SparkleEngine.html index bfbe20c..7b3d505 100644 --- a/docs/classes/SparkleEngine.html +++ b/docs/classes/SparkleEngine.html @@ -1,5 +1,5 @@ SparkleEngine | sparkle-engine

Class SparkleEngine

引擎

-

Constructors

Constructors

Properties

Constructors

Properties

音频管理

-
debugger?: Debugger

debugger管理

-
getAssets: (<T>(id) => T)

获取资源快捷方式,等同于 engine.resource.get

+

Constructors

Properties

音频管理

+
debugger?: Debugger

debugger管理

+
getAssets: (<T>(id) => T)

获取资源快捷方式,等同于 engine.resource.get

Type declaration

    • <T>(id): T
    • 获取资源快捷方式,等同于 engine.resource.get

      -

      Type Parameters

      Parameters

      • id: string

      Returns T

管理键盘输入

-
lastTime: number = 0
loader: Loader

资源加载器

-
maxFPS: number

目前尚不支持限制帧率

-

管理鼠标输入

-

物理管理

-
renderer: Renderer

渲染器

-
residents: Set<Container> = ...

资源管理

-
root: Container

场景的根节点

-

文字管理

-

纹理管理

-

Methods

  • 转换到某个 Container

    -

    Parameters

    Returns void

    Example

    engine.changeSenceToContainer(Container)
    +

    Type Parameters

    Parameters

    • id: string

    Returns T

管理键盘输入

+
lastTime: number = 0
loader: Loader

资源加载器

+
maxFPS: number

目前尚不支持限制帧率

+

管理鼠标输入

+

物理管理

+
renderer: Renderer

渲染器

+
residents: Set<Container> = ...

资源管理

+
root: Container

场景的根节点

+

文字管理

+

纹理管理

+

Methods

  • 转换到某个 Container

    +

    Parameters

    Returns void

    Example

    engine.changeSenceToContainer(Container)
     
    -
  • 切换场景

    -

    Parameters

    Returns Promise<void>

    Example

    class GameSence extends Sence {
    ...
    }
    engine.changeToSence(GameSence) +
  • 切换场景

    +

    Parameters

    Returns Promise<void>

    Example

    class GameSence extends Sence {
    ...
    }
    engine.changeToSence(GameSence)
    -
  • 实例化一个场景。由于场景有preload操作,所以该操作是异步的

    -

    Type Parameters

    Parameters

    • Sence: (new () => T)
        • new (): T
        • Returns T

    Returns Promise<Container>

\ No newline at end of file +
  • 实例化一个场景。由于场景有preload操作,所以该操作是异步的

    +

    Type Parameters

    Parameters

    • Sence: (new () => T)
        • new (): T
        • Returns T

    Returns Promise<Container>

\ No newline at end of file diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index b135636..96ea664 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -1,5 +1,12 @@ Sprite | sparkle-engine

精灵

-

Hierarchy (view full)

Constructors

Example: ``` +const node = new Sprite({ + texture: yourTexture +}) +```

可以使用animations

+
const player = new Sprite({
animations: engine.getAssets("player_ani")
})
player.play("run", true) // loop +
+

Hierarchy (view full)

Constructors

Properties

aniLoop: boolean = false
aniPaused: boolean = false

是否暂停动画,如果想暂停动画,请设置该属性

-
animationTimer: Timer
animations?: Animations

动画

-
animatiosFarme: number = 0
children: Container[] = []

子节点列表

-
color: Color

颜色叠加

-
currentAni?: IAnimationFrames
currentAniName?: string
destroyed: boolean = false

是否被销毁

-
drawSize: Vector2 = ...

绘制的大小

-
enableRegion: boolean = false

是否开启纹理裁剪

-
globalPosition: Vector2 = ...

全局坐标

-
globalRotation: number = 0

全局旋转

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
offset: Vector2

偏移

-
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
pool: PoolManager

对于对象池的引用

-
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

-
region: Rect = ...
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

Constructors

Properties

aniLoop: boolean = false
aniPaused: boolean = false

是否暂停动画,如果想暂停动画,请设置该属性

+
animationTimer: Timer
animations?: Animations

动画

+
animatiosFarme: number = 0
children: Container[] = []

子节点列表

+
color: Color

颜色叠加

+
currentAni?: IAnimationFrames
currentAniName?: string
destroyed: boolean = false

是否被销毁

+
drawSize: Vector2 = ...

绘制的大小

+
enableRegion: boolean = false

是否开启纹理裁剪

+
globalPosition: Vector2 = ...

全局坐标

+
globalRotation: number = 0

全局旋转

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
offset: Vector2

偏移

+
parent?: null | Container

父节点

+
pool: PoolManager

对于对象池的引用

+
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

+
region: Rect = ...
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

-
scale: Vector2

缩放,缩放同样是相对父的

-
skew: Vector2

斜切

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-
texture?: Texture

显示的纹理

-
textureRegion: Rect = ...

纹理裁剪区域

-
visible: boolean = true

是否可见

-

Accessors

Methods

rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

+
scale: Vector2

缩放,缩放同样是相对父的

+
skew: Vector2

斜切

+
tag: Set<string>

Tag 用于节点查找,可以有多个tag

+
texture?: Texture

显示的纹理

+
textureRegion: Rect = ...

纹理裁剪区域

+
visible: boolean = true

是否可见

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 播放某个动画,如果已经在播放目标动画,则不会重新播放 若希望重新播放,请设置restart参数为true

    Parameters

    • name: string

      动画名称

    • loop: boolean = false

      是否循环

    • restart: boolean = false

      是否重启动画

      -

    Returns void

  • 设置动画帧

    -

    Parameters

    • frame: number

    Returns void

  • 设置父节点 +

Returns void

  • 设置动画帧

    +

    Parameters

    • frame: number

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file diff --git a/docs/classes/Text.html b/docs/classes/Text.html index 9908f46..7b57d86 100644 --- a/docs/classes/Text.html +++ b/docs/classes/Text.html @@ -1,5 +1,7 @@ Text | sparkle-engine

精灵

-

Hierarchy (view full)

Constructors

Example

const node = new Text({
text: "Hello!",
font: "40px Arial",
anchor: TextAnchor.CENTER
}) +
+

Hierarchy (view full)

Constructors

Properties

_text: string
anchor: TextAnchor

文字锚点

-
children: Container[] = []

子节点列表

-
color: Color

颜色叠加

-
destroyed: boolean = false

是否被销毁

-
drawSize: Vector2 = ...

绘制的大小

-
font: string

文字的字体

-
globalPosition: Vector2 = ...

全局坐标

-
globalRotation: number = 0

全局旋转

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
offset: Vector2

偏移

-
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
pool: PoolManager

对于对象池的引用

-
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

-
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

Parameters

Returns Text

Properties

_text: string
anchor: TextAnchor

文字锚点

+
children: Container[] = []

子节点列表

+
color: Color

颜色叠加

+
destroyed: boolean = false

是否被销毁

+
drawSize: Vector2 = ...

绘制的大小

+
font: string

文字的字体

+
globalPosition: Vector2 = ...

全局坐标

+
globalRotation: number = 0

全局旋转

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
offset: Vector2

偏移

+
parent?: null | Container

父节点

+
pool: PoolManager

对于对象池的引用

+
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

+
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

-
scale: Vector2

缩放,缩放同样是相对父的

-
skew: Vector2

斜切

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-
texture: BaseTexture
visible: boolean = true

是否可见

-

Accessors

Methods

rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

+
scale: Vector2

缩放,缩放同样是相对父的

+
skew: Vector2

斜切

+
tag: Set<string>

Tag 用于节点查找,可以有多个tag

+
texture: BaseTexture
visible: boolean = true

是否可见

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • Parameters

    • text: string

    Returns void

  • Parameters

    • text: string

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file diff --git a/docs/classes/TextManager.html b/docs/classes/TextManager.html index 2f59351..9f44905 100644 --- a/docs/classes/TextManager.html +++ b/docs/classes/TextManager.html @@ -1,9 +1,9 @@ -TextManager | sparkle-engine

Class TextManager

Constructors

constructor +TextManager | sparkle-engine

Class TextManager

Constructors

Properties

Methods

Constructors

Properties

canvas: CanvasRenderingContext2D

Methods

  • 返回 canvas 而不是绘制一个文字,若要绘制文字请使用 Text

    +

Constructors

Properties

canvas: CanvasRenderingContext2D

Methods

  • 返回 canvas 而不是绘制一个文字,若要绘制文字请使用 Text

    Parameters

    • text: string

      文字

      -
    • font: string = '64px Arial'

      字体

      +
    • font: string = '24px monospace'

      字体

    • color: Color

      颜色

    Returns HTMLCanvasElement

    返回 canvas 而不是绘制一个文字

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 1ffd8ca..9d4367a 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -1,5 +1,5 @@ Texture | sparkle-engine

普通的纹理

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Accessors

Constructors

Accessors

\ No newline at end of file +

Constructors

Accessors

\ No newline at end of file diff --git a/docs/classes/TextureManager.html b/docs/classes/TextureManager.html index 363304f..7535bcd 100644 --- a/docs/classes/TextureManager.html +++ b/docs/classes/TextureManager.html @@ -1,12 +1,12 @@ -TextureManager | sparkle-engine

Class TextureManager

Constructors

constructor +TextureManager | sparkle-engine

Class TextureManager

Constructors

Properties

baseTextures: Map<string, BaseTexture> = ...

Methods

\ No newline at end of file +

Constructors

Properties

baseTextures: Map<string, BaseTexture> = ...

Methods

\ No newline at end of file diff --git a/docs/classes/Timer.html b/docs/classes/Timer.html index e083767..7ac38c5 100644 --- a/docs/classes/Timer.html +++ b/docs/classes/Timer.html @@ -1,9 +1,12 @@ Timer | sparkle-engine

计时器节点,有个timeout信号 timer必须在场景树里才会运行,若在场景树之外处于暂停状态 若想让在场景树之外的timer同样保持运行,请手动调用update

-
onUpdate(dt){
timer.update(dt)
} +
onUpdate(dt){
timer.update(dt)
}
-

Hierarchy (view full)

Constructors

Example

cosnt node = new Timer({
waitTime: 1,
initTimeLeft: 1,
start: true
})
node.onTimeout = ()=>{} // 或者是用信号onTimeout +
+

该节点的所有事件:ITimerEvents

+

Hierarchy (view full)

Implements

Constructors

Properties

children: Container[] = []

子节点列表

-
destroyed: boolean = false

是否被销毁

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
isStart: boolean = false
oneShot: boolean

是否只触发一次 +

Constructors

Properties

children: Container[] = []

子节点列表

+
destroyed: boolean = false

是否被销毁

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
isStart: boolean = false
oneShot: boolean

是否只触发一次 如果为true会一直重复循环

-
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
paused: boolean = false

是否暂停

-
pool: PoolManager

对于对象池的引用

-
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

parent?: null | Container

父节点

+
paused: boolean = false

是否暂停

+
pool: PoolManager

对于对象池的引用

+
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-
timeLeft: number

timer 剩余的时间(可以更改)

-
waitTime: number

计时器等待的时间

-

Accessors

Methods

tag: Set<string>

Tag 用于节点查找,可以有多个tag

+
timeLeft: number

timer 剩余的时间(可以更改)

+
waitTime: number

计时器等待的时间

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file diff --git a/docs/classes/Transform2D.html b/docs/classes/Transform2D.html index adeb75c..9502ea2 100644 --- a/docs/classes/Transform2D.html +++ b/docs/classes/Transform2D.html @@ -1,5 +1,5 @@ Transform2D | sparkle-engine

Class Transform2D

变换2D,是drawable的基类

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

children: Container[] = []

子节点列表

-
destroyed: boolean = false

是否被销毁

-
globalPosition: Vector2 = ...

全局坐标

-
globalRotation: number = 0

全局旋转

-
inTree: boolean = false

是否在场景树中

-
isReady: boolean = false

是否已就绪

-
modelMatrix: Matrix
offset: Vector2

偏移

-
onlySelfSleep: boolean = false

仅休眠我自己,不影响其子节点

-
parent?: null | Container

父节点

-
pool: PoolManager

对于对象池的引用

-
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

-
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 +

Constructors

Properties

children: Container[] = []

子节点列表

+
destroyed: boolean = false

是否被销毁

+
globalPosition: Vector2 = ...

全局坐标

+
globalRotation: number = 0

全局旋转

+
inTree: boolean = false

是否在场景树中

+
isReady: boolean = false

是否已就绪

+
modelMatrix: Matrix
offset: Vector2

偏移

+
parent?: null | Container

父节点

+
pool: PoolManager

对于对象池的引用

+
position: Vector2

坐标,坐标是相对于父的。若要设置全局坐标,请使用globalPosition

+
renderer: Renderer
resident: boolean

是否为常驻节点,如果是常驻节点的话 在切换场景时不会被销毁(其子节点同样不会被销毁) 注意:常驻节点必须是根节点的一级子节点

-
rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

-
scale: Vector2

缩放,缩放同样是相对父的

-
skew: Vector2

斜切

-
sleep: boolean = false

休眠,若sleep为真则不会调用update等函数

-
tag: Set<string>

Tag 用于节点查找,可以有多个tag

-

Accessors

Methods

rotation: number

旋转,旋转是相对于父的。若要设置全局旋转,请使用globalRotation

+
scale: Vector2

缩放,缩放同样是相对父的

+
skew: Vector2

斜切

+
tag: Set<string>

Tag 用于节点查找,可以有多个tag

+

Accessors

Methods

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 使用该种方法监听事件,当节点被销毁时自动取消监听

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns void

  • 遍历所有子节点

    Parameters

    • fn: ((child) => any)

      应用到每个子节点的函数。如果函数返回非false值,则停止遍历。

        • (child): any
        • Parameters

          Returns any

    Returns any

    如果任何fn调用返回了非false值,则返回该值;否则返回false。

    -
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    -

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file +
  • 等待某个事件被触发,想实现等待1秒,那么就用该方法等待timer的事件

    +

    Type Parameters

    • T extends Record<string, any>

    Parameters

    Returns Promise<unknown>

\ No newline at end of file diff --git a/docs/classes/Vector2.html b/docs/classes/Vector2.html index b651a8e..3aa987f 100644 --- a/docs/classes/Vector2.html +++ b/docs/classes/Vector2.html @@ -1,5 +1,5 @@ Vector2 | sparkle-engine

2D向量

-

Implements

Constructors

Implements

Constructors

Properties

x y

Accessors

direction @@ -17,4 +17,6 @@ set sub unit -

Constructors

Properties

x: number = 0
y: number = 0

Accessors

Methods

\ No newline at end of file +fromAngle +lerp +

Constructors

Properties

x: number = 0
y: number = 0

Accessors

Methods

\ No newline at end of file diff --git a/docs/classes/VertexArrayBuffer.html b/docs/classes/VertexArrayBuffer.html index 9a2dd31..923669c 100644 --- a/docs/classes/VertexArrayBuffer.html +++ b/docs/classes/VertexArrayBuffer.html @@ -1,4 +1,4 @@ -VertexArrayBuffer | sparkle-engine

Class VertexArrayBuffer

Constructors

constructor +VertexArrayBuffer | sparkle-engine

Class VertexArrayBuffer

Constructors

Properties

Constructors

Properties

buffer: ArrayBuffer
bufferF32: Float32Array
bufferU32: Uint32Array
maxVertex: number
objSize: number
vertexCount: number
vertexSize: number
\ No newline at end of file +

Constructors

Properties

buffer: ArrayBuffer
bufferF32: Float32Array
bufferU32: Uint32Array
maxVertex: number
objSize: number
vertexCount: number
vertexSize: number
\ No newline at end of file diff --git a/docs/enums/DebuggerDrawType.html b/docs/enums/DebuggerDrawType.html index a3ae8ba..000f287 100644 --- a/docs/enums/DebuggerDrawType.html +++ b/docs/enums/DebuggerDrawType.html @@ -1,4 +1,4 @@ -DebuggerDrawType | sparkle-engine

Enumeration DebuggerDrawType

Enumeration Members

COLLISION +DebuggerDrawType | sparkle-engine
\ No newline at end of file +

Enumeration Members

COLLISION: 1
CROSS: 2
NORMAL: 0
\ No newline at end of file diff --git a/docs/enums/GraphicalType.html b/docs/enums/GraphicalType.html new file mode 100644 index 0000000..22b20a7 --- /dev/null +++ b/docs/enums/GraphicalType.html @@ -0,0 +1,4 @@ +GraphicalType | sparkle-engine
\ No newline at end of file diff --git a/docs/enums/PRIMITIVE_MODE.html b/docs/enums/PRIMITIVE_MODE.html index de625d3..8b7a610 100644 --- a/docs/enums/PRIMITIVE_MODE.html +++ b/docs/enums/PRIMITIVE_MODE.html @@ -1,3 +1,3 @@ -PRIMITIVE_MODE | sparkle-engine

Enumeration PRIMITIVE_MODE

Enumeration Members

FILL: 0
LINE: 1
\ No newline at end of file diff --git a/docs/enums/ResourcesType.html b/docs/enums/ResourcesType.html index c00f824..f774e05 100644 --- a/docs/enums/ResourcesType.html +++ b/docs/enums/ResourcesType.html @@ -1,5 +1,5 @@ -ResourcesType | sparkle-engine

Enumeration ResourcesType

Enumeration Members

ANIMATION +ResourcesType | sparkle-engine
\ No newline at end of file +

Enumeration Members

ANIMATION: 3
AUDIO: 1
DATA: 2
TEXTURE: 0
\ No newline at end of file diff --git a/docs/enums/SCALE_MODE.html b/docs/enums/SCALE_MODE.html index d9d96ad..60b8bb1 100644 --- a/docs/enums/SCALE_MODE.html +++ b/docs/enums/SCALE_MODE.html @@ -1,7 +1,7 @@ -SCALE_MODE | sparkle-engine

Enumeration SCALE_MODE

Enumeration Members

ADAPTIVE +SCALE_MODE | sparkle-engine

Enumeration SCALE_MODE

Enumeration Members

Enumeration Members

ADAPTIVE: 0

在这种模式下,NativeSize会根据canvas 的实际大小变化而动态调整,以保持内容与canvas大小的一致性。

-
FIXED: 1

在这种模式下,无论canvas的实际大小如何变化,NativeSize保持 +

FIXED: 1

在这种模式下,无论canvas的实际大小如何变化,NativeSize保持 不变。这意味着内容可能会被拉伸或压缩以适应canvas的大小,但其原始比例不会改变。

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/enums/TextAnchor.html b/docs/enums/TextAnchor.html index 0fcad45..3ce9a7b 100644 --- a/docs/enums/TextAnchor.html +++ b/docs/enums/TextAnchor.html @@ -1,4 +1,4 @@ -TextAnchor | sparkle-engine

Enumeration TextAnchor

Enumeration Members

Enumeration Members

CENTER: 0
LEFT: 1
RIGHT: 2
\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 9653601..2703670 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -sparkle-engine
\ No newline at end of file +sparkle-engine
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index fed13a9..15bc0b5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1,103 @@ -sparkle-engine
\ No newline at end of file +sparkle-engine

sparkle-engine

SPARKLE.JS GAME ENGINE

Sparkle.js 是一个基于WebGL的HTML5的0依赖轻量级小巧的游戏引擎,让游戏开发变得简单且有趣! +^_^

+

目录

+

快速开始

安装

+
npm i sparkle-engine
+
+

或者是使用unpkg

+
<script src="https://unpkg.com/sparkle-engine/dist/sparkle.umd.cjs"></script>
+
+

引入

+
import { SparkleEngine } from "sparkle-engine";
+
+

第一个项目HelloWord

使用 SPARKLE GAME ENGINE 编写一个 Helloworld

+
<canvas id="game"></canvas>
+
+
const engine = new SparkleEngine({
// 指定游戏画布元素
canvas: document.getElementById("game"),
}) +
+

然后创建一个场景,切换到该场景

+
class MainSence extends Sence {
preload(){
// 在这里加载资源,不过这个Helloworld项目不需要加载资源
// 所以无需写任何代码
}
create(){
const text = new Text({
text: "Hello World!",
font: "40px Arial"
})
return text
}
}
// 切换场景
engine.changeToSence(MainSence) +
+

然后你就能看见屏幕上有个Hello World

+

第二个项目乒乓球

使用 SPARKLE GAME ENGINE 编写一个 乒乓球 游戏,项目源码 +,在线玩这个项目

+

该项目需要一个音频资源,在此处下载,或者用你自己的

+

先创建一个引擎实列

+
<canvas id="game"></canvas>
+
+
const engine = new SparkleEngine({
// 指定游戏画布元素
canvas: document.getElementById("game"),
backgroundColor: Color.fromHex("#FFFFCC"),
width: 600,
height: 300
}) +
+

然后编写一个场景,这个场景比 Helloworld 中的场景多了一个preload方法,在preload方法中加载需要预加载的资源,当perload方法中的所有资源加载完毕,会调用场景的create方法返回的节点将作为场景根节点,资源可以使用engine.getAssets("jump")获取

+
class MainSence extends Sence {
preload(){
engine.loader.baseUrl = "."
// 加载一个资源
// "jump" 是资源id,"jump.mp3"是资源的路径
engine.resource.loadAudio("jump","jump.mp3")
}
create() {
// 创建一个根节点
const root = new Container()

return root
}
}
// 切换到目标场景
engine.changeToSence(MainSence) +
+

接下来创建乒乓球游戏的板子,他接收一个position作为坐标,Graphical 可以用来显示图形(多边形,圆形,方形等),然后创建一个Collision子节点,作为一个组件。在Sparklejs中组件也是一个节点,比如CollisionTimer都是节点

+

更多信息请查看节点

+
class Board extends Graphical {
constructor(position) {
super({
type: GraphicalType.RECT,
// 一个方形
rect: new Rect(0, 0, 20, 80),
// 是否填充这个图形
fill: true,
// 图形的颜色
color: Color.fromHex("#003300"),
position, // 需要两个板子,所以position不是固定的,让使用者来设定
offset: new Vector2(0, 40),// 偏移
})
this.addChild(
// 添加这个碰撞子节点
new Collision({
shape: Collision.rectShape(0, 0, 20, 80), // 碰撞的形状
offset: new Vector2(0, 40),
tags: ["board"] // 一个标签,可以用于查找或者判断节点
})
)
}
onUpdate(dt) {
// 每一帧时将自己的坐标设置为鼠标的坐标
this.position.y = this.getMouseGlobalPositon().y
}
} +
+

标签是一个很有用的东西,能简化很多工作,详细信息请查看标签查找

+

然后实例化两个板子,并加入到主场景

+
class MainSence extends Sence {
preload(){
engine.loader.baseUrl = "."
engine.resource.loadAudio("jump","jump.mp3")
}
create() {
const root = new Container()
root.addChild(new Panel(new Vector2(30, 150)))
root.addChild(new Panel(new Vector2(560, 150)))
return root
}
}
+
+

然后打开看看效果,可以使用Ctrl+B来打开调试模式,能看见碰撞体,以及中心坐标等,接下来创建一个球

+
class Ball extends Graphical {
constructor() {
super({
// 创建形状
type: GraphicalType.CIRCLE,
radius: 20, // 半径
fill: true,
color: Color.fromHex("#808080"),
position: new Vector2(300, 150),
})
this.speed = 300
// 创建一个方向向量,球的方向
this.direction = Vector2.fromAngle(1)
// 创建一个碰撞体,也可以使用继承的方法创碰撞体
this.collision = new Collision({
// 形状
shape: Collision.rectShape(0, 0, 40, 40),
// 偏移
offset: new Vector2(20, 20),
})
// 添加这个碰撞体
this.addChild(
this.collision
)
}
// 游戏重来
reStart() {
// 重设方向
this.direction = Vector2.fromAngle(1)
// 重设坐标
this.position.set(300, 150)
}
onUpdate(dt) {
// 坐标加速,scale后面的true代表创建一个新值是缩放该向量的新向量
// 因为缩放不应该改变direction而是创建一个新的
this.position.add(this.direction.scale(dt * this.speed, true))
// 碰到上墙壁和下墙壁
if (this.position.y + 20 > 300 || this.position.y - 20 < 0) {
// 反转y方向的速度
this.direction.y = -this.direction.y
}
// 检查是否碰到了左右边界
if (this.position.x > 600 || this.position.x < 0) {
// 重来
this.reStart()
}
}
} +
+

onUpdate是每一帧都会调用的一个函数,onReady是该节点准备好且其子节点也准备好时被调用。具体请查看生命周期

+

二维向量操作函数一般后面都一个create参数,代表是否创建一个新的向量或者是修改原本的向量,然后把ball加入到主场景

+
class MainSence extends Sence {
//...
create() {
const root = new Container()
root.addChild(new Panel(new Vector2(30, 150)))
root.addChild(new Panel(new Vector2(560, 150)))
// new
root.addChild(new Ball())
return root
}
} +
+

现在你应该能看见一个能弹的球了,但是碰到板子还不会被弹开,接下来就编写碰到板子的逻辑

+

注意:是使用SAT碰撞实现,所以仅支持凸多边形

+

class Ball extends Graphical {
constructor() {
// ...
this.collision.onBodyEnter = (res) => {
// res 返回碰到的碰撞体,以及overlap
const body = res.body
if (body.tag.has("board")) { // 判断是不是板子
// 获取与板子之间的差
const rebound = this.globalPosition.sub(body.globalPosition,true)
// 设置方向
this.direction.direction = rebound.direction
// 播放声音
engine.getAssets("jump").play()
}
}
}
} +
+

engine.getAssets("jump")用于获取资源,onBodyEnter将在有物理体进入ball时被调用,但你也可使用事件来监听,好了现在你可以看见球碰到板子会反弹了

+

接下来添加一个分数

+
class scoreText extends Text{
constructor(){
// 继承于文字
super({
position: new Vector2(300, 0),
text: "0", // 初始显示一个 0
font: "32px Arial", // 字体
color: Color.black(), // 颜色
anchor: TextAnchor.CENTER, // 文字在中心
tags: ['scoreText'] // 有个标签方便其他节点访问
})
// 分数
this.score = 0
}
addScore(){
this.score++
// 修改文字可以直接设置text属性
this.text = this.score.toString()
}
reStart(){
this.score = 0
this.text = "0"
}
} +
+

你可能会好奇,为什么scoreText和collision写法有点不一样,这两种都是可以的,具体查看节点,然后把scoreText加入到主场景,并在碰撞到板子的时候加分,球跑出屏幕外时restart

+
class Ball extends Graphical {
constructor() {
// ...
this.collision.onBodyEnter = (res) => {
const body = res.body
if (body.tag.has("board")) {
this.scoreText.addScore() // 添加这个
// ...
}
}
// ...
}
onReady() {
this.scoreText = engine.root.findByTag("scoreText")
}
reStart() {
// ...
this.scoreText.reStart() // 添加这个
}
}

class MainSence extends Sence {
//...
create() {
//...
root.addChild(new scoreText())
return root
}
} +
+

好了接下来你应该就可以运行这个游戏了,若无法运行或遇到问题,可查看源码

+

接下来干什么...:

+
\ No newline at end of file diff --git a/docs/interfaces/AnimationsStore.html b/docs/interfaces/AnimationsStore.html index cf0e672..0bca9d8 100644 --- a/docs/interfaces/AnimationsStore.html +++ b/docs/interfaces/AnimationsStore.html @@ -1 +1 @@ -AnimationsStore | sparkle-engine
\ No newline at end of file +AnimationsStore | sparkle-engine
\ No newline at end of file diff --git a/docs/interfaces/AttributeInfo.html b/docs/interfaces/AttributeInfo.html index 452c858..9fd4c35 100644 --- a/docs/interfaces/AttributeInfo.html +++ b/docs/interfaces/AttributeInfo.html @@ -1,6 +1,6 @@ -AttributeInfo | sparkle-engine

Interface AttributeInfo

interface AttributeInfo {
    name: string;
    normalized?: boolean;
    offset: number;
    size: number;
    type: number;
}

Properties

name +AttributeInfo | sparkle-engine

Interface AttributeInfo

interface AttributeInfo {
    name: string;
    normalized?: boolean;
    offset: number;
    size: number;
    type: number;
}

Properties

name: string
normalized?: boolean
offset: number
size: number
type: number
\ No newline at end of file +

Properties

name: string
normalized?: boolean
offset: number
size: number
type: number
\ No newline at end of file diff --git a/docs/interfaces/IAnimationFrames.html b/docs/interfaces/IAnimationFrames.html index 492e21b..8881a2e 100644 --- a/docs/interfaces/IAnimationFrames.html +++ b/docs/interfaces/IAnimationFrames.html @@ -1,4 +1,4 @@ -IAnimationFrames | sparkle-engine

Interface IAnimationFrames

interface IAnimationFrames {
    fromFrames: number;
    time: number;
    toFrames: number;
}

Properties

fromFrames +IAnimationFrames | sparkle-engine
\ No newline at end of file +

Properties

fromFrames: number
time: number
toFrames: number
\ No newline at end of file diff --git a/docs/interfaces/IAnimationOption.html b/docs/interfaces/IAnimationOption.html index 5e6200f..c36a1d4 100644 --- a/docs/interfaces/IAnimationOption.html +++ b/docs/interfaces/IAnimationOption.html @@ -1,6 +1,6 @@ -IAnimationOption | sparkle-engine

Interface IAnimationOption

interface IAnimationOption {
    animations: AnimationsStore;
    gapSize: number;
    hFrames: number;
    texture: Texture;
    vFrames: number;
}

Properties

animations +IAnimationOption | sparkle-engine

Interface IAnimationOption

interface IAnimationOption {
    animations: AnimationsStore;
    gapSize: number;
    hFrames: number;
    texture: Texture;
    vFrames: number;
}

Properties

animations: AnimationsStore
gapSize: number
hFrames: number
texture: Texture
vFrames: number
\ No newline at end of file +

Properties

animations: AnimationsStore
gapSize: number
hFrames: number
texture: Texture
vFrames: number
\ No newline at end of file diff --git a/docs/interfaces/IAudioEvent.html b/docs/interfaces/IAudioEvent.html index 3f1f1af..cbbab88 100644 --- a/docs/interfaces/IAudioEvent.html +++ b/docs/interfaces/IAudioEvent.html @@ -1,2 +1,2 @@ -IAudioEvent | sparkle-engine
\ No newline at end of file +IAudioEvent | sparkle-engine
\ No newline at end of file diff --git a/docs/interfaces/IBaseGraphicalOptions.html b/docs/interfaces/IBaseGraphicalOptions.html new file mode 100644 index 0000000..2163b92 --- /dev/null +++ b/docs/interfaces/IBaseGraphicalOptions.html @@ -0,0 +1,12 @@ +IBaseGraphicalOptions | sparkle-engine

Interface IBaseGraphicalOptions

interface IBaseGraphicalOptions {
    color?: Color;
    engine?: SparkleEngine;
    fill?: boolean;
    lineWidth?: number;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

color?: Color
engine?: SparkleEngine
fill?: boolean
lineWidth?: number
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
\ No newline at end of file diff --git a/docs/interfaces/ICircleOptions.html b/docs/interfaces/ICircleOptions.html new file mode 100644 index 0000000..70f4b37 --- /dev/null +++ b/docs/interfaces/ICircleOptions.html @@ -0,0 +1,14 @@ +ICircleOptions | sparkle-engine

Interface ICircleOptions

interface ICircleOptions {
    color?: Color;
    engine?: SparkleEngine;
    fill?: boolean;
    lineWidth?: number;
    offset?: Vector2;
    position?: Vector2;
    radius: number;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    type: CIRCLE;
}

Hierarchy (view full)

Properties

color?: Color
engine?: SparkleEngine
fill?: boolean
lineWidth?: number
offset?: Vector2
position?: Vector2
radius: number
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
type: CIRCLE
\ No newline at end of file diff --git a/docs/interfaces/ICollisionEvent.html b/docs/interfaces/ICollisionEvent.html index 4f40d61..80160ec 100644 --- a/docs/interfaces/ICollisionEvent.html +++ b/docs/interfaces/ICollisionEvent.html @@ -1,7 +1,7 @@ -ICollisionEvent | sparkle-engine

Interface ICollisionEvent

interface ICollisionEvent {
    onBodyEnter: ((body) => void);
    onBodyExit: ((body) => void);
    onClick: (() => void);
    onEnterTree: (() => void);
    onExitTree: (() => void);
    onReady: (() => void);
}

Hierarchy (view full)

Properties

onBodyEnter +ICollisionEvent | sparkle-engine

Interface ICollisionEvent

interface ICollisionEvent {
    onBodyEnter: ((body) => void);
    onBodyExit: ((body) => void);
    onClick: (() => void);
    onEnterTree: (() => void);
    onExitTree: (() => void);
    onReady: (() => void);
}

Hierarchy (view full)

Properties

onBodyEnter: ((body) => void)

Type declaration

onBodyExit: ((body) => void)

Type declaration

    • (body): void
    • Parameters

      Returns void

onClick: (() => void)

Type declaration

    • (): void
    • Returns void

onEnterTree: (() => void)

Type declaration

    • (): void
    • Returns void

onExitTree: (() => void)

Type declaration

    • (): void
    • Returns void

onReady: (() => void)

Type declaration

    • (): void
    • Returns void

\ No newline at end of file +

Properties

onBodyEnter: ((body) => void)

Type declaration

onBodyExit: ((body) => void)

Type declaration

    • (body): void
    • Parameters

      Returns void

onClick: (() => void)

Type declaration

    • (): void
    • Returns void

onEnterTree: (() => void)

Type declaration

    • (): void
    • Returns void

onExitTree: (() => void)

Type declaration

    • (): void
    • Returns void

onReady: (() => void)

Type declaration

    • (): void
    • Returns void

\ No newline at end of file diff --git a/docs/interfaces/ICollisionOptions.html b/docs/interfaces/ICollisionOptions.html index 5bf1351..c6f359f 100644 --- a/docs/interfaces/ICollisionOptions.html +++ b/docs/interfaces/ICollisionOptions.html @@ -1,4 +1,4 @@ -ICollisionOptions | sparkle-engine

Interface ICollisionOptions

interface ICollisionOptions {
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    shape?: Vector2[];
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

engine? +ICollisionOptions | sparkle-engine

Interface ICollisionOptions

interface ICollisionOptions {
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    shape?: Vector2[];
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

Properties

engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
shape?: Vector2[]
skew?: Vector2
tags?: string[]
\ No newline at end of file +

Properties

engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
shape?: Vector2[]
skew?: Vector2
tags?: string[]
\ No newline at end of file diff --git a/docs/interfaces/ICollisionResult.html b/docs/interfaces/ICollisionResult.html index bb0e9b1..fae7907 100644 --- a/docs/interfaces/ICollisionResult.html +++ b/docs/interfaces/ICollisionResult.html @@ -1,3 +1,3 @@ -ICollisionResult | sparkle-engine

Interface ICollisionResult

interface ICollisionResult {
    body: Collision;
    overlap: Vector2;
}

Properties

body +ICollisionResult | sparkle-engine
\ No newline at end of file +

Properties

body: Collision
overlap: Vector2
\ No newline at end of file diff --git a/docs/interfaces/ICompositorOptions.html b/docs/interfaces/ICompositorOptions.html index 0b9cdbe..cb7bdfb 100644 --- a/docs/interfaces/ICompositorOptions.html +++ b/docs/interfaces/ICompositorOptions.html @@ -1,6 +1,6 @@ -ICompositorOptions | sparkle-engine

Interface ICompositorOptions

interface ICompositorOptions {
    attributes: AttributeInfo[];
    fragmentShader: string;
    renderer: Renderer;
    vertexPerObj?: number;
    vertexShader: string;
}

Properties

attributes +ICompositorOptions | sparkle-engine

Interface ICompositorOptions

interface ICompositorOptions {
    attributes: AttributeInfo[];
    fragmentShader: string;
    renderer: Renderer;
    vertexPerObj?: number;
    vertexShader: string;
}

Properties

attributes: AttributeInfo[]
fragmentShader: string
renderer: Renderer
vertexPerObj?: number
vertexShader: string
\ No newline at end of file +

Properties

attributes: AttributeInfo[]
fragmentShader: string
renderer: Renderer
vertexPerObj?: number
vertexShader: string
\ No newline at end of file diff --git a/docs/interfaces/IContainerEvent.html b/docs/interfaces/IContainerEvent.html index c428378..c06f2a1 100644 --- a/docs/interfaces/IContainerEvent.html +++ b/docs/interfaces/IContainerEvent.html @@ -1,4 +1,4 @@ -IContainerEvent | sparkle-engine

Interface IContainerEvent

interface IContainerEvent {
    onEnterTree: (() => void);
    onExitTree: (() => void);
    onReady: (() => void);
}

Hierarchy (view full)

Properties

onEnterTree +IContainerEvent | sparkle-engine

Interface IContainerEvent

interface IContainerEvent {
    onEnterTree: (() => void);
    onExitTree: (() => void);
    onReady: (() => void);
}

Hierarchy (view full)

Properties

onEnterTree: (() => void)

Type declaration

    • (): void
    • Returns void

onExitTree: (() => void)

Type declaration

    • (): void
    • Returns void

onReady: (() => void)

Type declaration

    • (): void
    • Returns void

\ No newline at end of file +

Properties

onEnterTree: (() => void)

Type declaration

    • (): void
    • Returns void

onExitTree: (() => void)

Type declaration

    • (): void
    • Returns void

onReady: (() => void)

Type declaration

    • (): void
    • Returns void

\ No newline at end of file diff --git a/docs/interfaces/IContainerOptions.html b/docs/interfaces/IContainerOptions.html index 11f7f40..20902ca 100644 --- a/docs/interfaces/IContainerOptions.html +++ b/docs/interfaces/IContainerOptions.html @@ -1,4 +1,4 @@ -IContainerOptions | sparkle-engine

Interface IContainerOptions

interface IContainerOptions {
    engine?: SparkleEngine;
    resident?: boolean;
    tags?: string[];
}

Hierarchy (view full)

Properties

engine? +IContainerOptions | sparkle-engine

Interface IContainerOptions

interface IContainerOptions {
    engine?: SparkleEngine;
    resident?: boolean;
    tags?: string[];
}

Hierarchy (view full)

Properties

Properties

engine?: SparkleEngine
resident?: boolean
tags?: string[]
\ No newline at end of file +

Properties

engine?: SparkleEngine
resident?: boolean
tags?: string[]
\ No newline at end of file diff --git a/docs/interfaces/ICopyable.html b/docs/interfaces/ICopyable.html index aa57407..33f7037 100644 --- a/docs/interfaces/ICopyable.html +++ b/docs/interfaces/ICopyable.html @@ -1,3 +1,3 @@ -ICopyable | sparkle-engine

Interface ICopyable<T>

interface ICopyable<T> {
    clone: ((pool) => T);
    copy: ((obj) => void);
}

Type Parameters

  • T

Implemented by

Properties

clone +ICopyable | sparkle-engine

Interface ICopyable<T>

interface ICopyable<T> {
    clone: ((pool) => T);
    copy: ((obj) => void);
}

Type Parameters

  • T

Implemented by

Properties

Properties

clone: ((pool) => T)

Type declaration

    • (pool): T
    • Parameters

      • pool: PoolManager

      Returns T

copy: ((obj) => void)

Type declaration

    • (obj): void
    • Parameters

      • obj: T

      Returns void

\ No newline at end of file +

Properties

clone: ((pool) => T)

Type declaration

    • (pool): T
    • Parameters

      • pool: PoolManager

      Returns T

copy: ((obj) => void)

Type declaration

    • (obj): void
    • Parameters

      • obj: T

      Returns void

\ No newline at end of file diff --git a/docs/interfaces/IDebuggerDraw.html b/docs/interfaces/IDebuggerDraw.html index 0e5131e..204d58c 100644 --- a/docs/interfaces/IDebuggerDraw.html +++ b/docs/interfaces/IDebuggerDraw.html @@ -1,6 +1,6 @@ -IDebuggerDraw | sparkle-engine

Interface IDebuggerDraw

interface IDebuggerDraw {
    h?: number;
    type: DebuggerDrawType;
    w?: number;
    x: number;
    y: number;
}

Properties

h? +IDebuggerDraw | sparkle-engine

Interface IDebuggerDraw

interface IDebuggerDraw {
    h?: number;
    type: DebuggerDrawType;
    w?: number;
    x: number;
    y: number;
}

Properties

Properties

h?: number
w?: number
x: number
y: number
\ No newline at end of file +

Properties

h?: number
w?: number
x: number
y: number
\ No newline at end of file diff --git a/docs/interfaces/IDestoryable.html b/docs/interfaces/IDestoryable.html index 8d5a930..e95e2e3 100644 --- a/docs/interfaces/IDestoryable.html +++ b/docs/interfaces/IDestoryable.html @@ -1,2 +1,2 @@ -IDestoryable | sparkle-engine
\ No newline at end of file +IDestoryable | sparkle-engine
\ No newline at end of file diff --git a/docs/interfaces/IDrawLineOptions.html b/docs/interfaces/IDrawLineOptions.html index e00b496..0b9ce1b 100644 --- a/docs/interfaces/IDrawLineOptions.html +++ b/docs/interfaces/IDrawLineOptions.html @@ -1,6 +1,5 @@ -IDrawLineOptions | sparkle-engine

Interface IDrawLineOptions

interface IDrawLineOptions {
    color?: Color;
    lineWdith: number;
    path?: Path2D;
    position: Vector2;
    shader?: GLShader;
}

Hierarchy (view full)

Properties

color? +IDrawLineOptions | sparkle-engine

Interface IDrawLineOptions

interface IDrawLineOptions {
    color?: Color;
    lineWdith: number;
    position: Vector2;
    shader?: GLShader;
}

Hierarchy (view full)

Properties

color?: Color
lineWdith: number
path?: Path2D
position: Vector2
shader?: GLShader
\ No newline at end of file +

Properties

color?: Color
lineWdith: number
position: Vector2
shader?: GLShader
\ No newline at end of file diff --git a/docs/interfaces/IDrawOptions.html b/docs/interfaces/IDrawOptions.html index 2f56e48..e6114eb 100644 --- a/docs/interfaces/IDrawOptions.html +++ b/docs/interfaces/IDrawOptions.html @@ -1,4 +1,4 @@ -IDrawOptions | sparkle-engine

Interface IDrawOptions

interface IDrawOptions {
    color?: Color;
    position: Vector2;
    shader?: GLShader;
}

Hierarchy (view full)

Properties

color? +IDrawOptions | sparkle-engine

Interface IDrawOptions

interface IDrawOptions {
    color?: Color;
    position: Vector2;
    shader?: GLShader;
}

Hierarchy (view full)

Properties

Properties

color?: Color
position: Vector2
shader?: GLShader
\ No newline at end of file +

Properties

color?: Color
position: Vector2
shader?: GLShader
\ No newline at end of file diff --git a/docs/interfaces/IDrawPolygonOptions.html b/docs/interfaces/IDrawPolygonOptions.html index ede7373..0d2f9e2 100644 --- a/docs/interfaces/IDrawPolygonOptions.html +++ b/docs/interfaces/IDrawPolygonOptions.html @@ -1,5 +1,4 @@ -IDrawPolygonOptions | sparkle-engine

Interface IDrawPolygonOptions

interface IDrawPolygonOptions {
    color?: Color;
    path?: Path2D;
    position: Vector2;
    shader?: GLShader;
}

Hierarchy (view full)

Properties

color? -path? +IDrawPolygonOptions | sparkle-engine

Interface IDrawPolygonOptions

interface IDrawPolygonOptions {
    color?: Color;
    position: Vector2;
    shader?: GLShader;
}

Hierarchy (view full)

Properties

Properties

color?: Color
path?: Path2D
position: Vector2
shader?: GLShader
\ No newline at end of file +

Properties

color?: Color
position: Vector2
shader?: GLShader
\ No newline at end of file diff --git a/docs/interfaces/IDrawableOptions.html b/docs/interfaces/IDrawableOptions.html index 4557ca1..344ed26 100644 --- a/docs/interfaces/IDrawableOptions.html +++ b/docs/interfaces/IDrawableOptions.html @@ -1,4 +1,4 @@ -IDrawableOptions | sparkle-engine

Interface IDrawableOptions

interface IDrawableOptions {
    color?: Color;
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

color? +IDrawableOptions | sparkle-engine

Interface IDrawableOptions

interface IDrawableOptions {
    color?: Color;
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

Properties

color?: Color
engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
\ No newline at end of file +

Properties

color?: Color
engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
\ No newline at end of file diff --git a/docs/interfaces/IEventAble.html b/docs/interfaces/IEventAble.html index 1f64ca6..5966312 100644 --- a/docs/interfaces/IEventAble.html +++ b/docs/interfaces/IEventAble.html @@ -1,2 +1,2 @@ -IEventAble | sparkle-engine
\ No newline at end of file +IEventAble | sparkle-engine

Interface IEventAble<T>

interface IEventAble<T> {
    event: EventEmitter<T>;
}

Type Parameters

  • T extends Record<string | symbol, any>

Implemented by

Properties

Properties

event: EventEmitter<T>
\ No newline at end of file diff --git a/docs/interfaces/IInputEvents.html b/docs/interfaces/IInputEvents.html index 201a930..698e2da 100644 --- a/docs/interfaces/IInputEvents.html +++ b/docs/interfaces/IInputEvents.html @@ -1,5 +1,5 @@ -IInputEvents | sparkle-engine

Interface IInputEvents

interface IInputEvents {
    onKeyDown: ((key) => void);
    onKeyPress: ((key) => void);
    onKeyPressRepeat: ((key) => void);
    onKeyRelease: ((key) => void);
}

Properties

onKeyDown +IInputEvents | sparkle-engine

Interface IInputEvents

interface IInputEvents {
    onKeyDown: ((key) => void);
    onKeyPress: ((key) => void);
    onKeyPressRepeat: ((key) => void);
    onKeyRelease: ((key) => void);
}

Properties

onKeyDown: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

onKeyPress: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

onKeyPressRepeat: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

onKeyRelease: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

\ No newline at end of file +

Properties

onKeyDown: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

onKeyPress: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

onKeyPressRepeat: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

onKeyRelease: ((key) => void)

Type declaration

    • (key): void
    • Parameters

      • key: string

      Returns void

\ No newline at end of file diff --git a/docs/interfaces/IListened.html b/docs/interfaces/IListened.html index 13a149f..202d5c7 100644 --- a/docs/interfaces/IListened.html +++ b/docs/interfaces/IListened.html @@ -1,4 +1,4 @@ -IListened | sparkle-engine

Interface IListened

interface IListened {
    emitter: EventEmitter<any>;
    eventName: string;
    func: Function;
}

Properties

emitter +IListened | sparkle-engine
\ No newline at end of file +

Properties

emitter: EventEmitter<any>
eventName: string
func: Function
\ No newline at end of file diff --git a/docs/interfaces/ILoadAnimationOptions.html b/docs/interfaces/ILoadAnimationOptions.html index 66d22b6..fb05cad 100644 --- a/docs/interfaces/ILoadAnimationOptions.html +++ b/docs/interfaces/ILoadAnimationOptions.html @@ -1,6 +1,6 @@ -ILoadAnimationOptions | sparkle-engine

Interface ILoadAnimationOptions

interface ILoadAnimationOptions {
    animations: string | AnimationsStore;
    gapSize: number;
    hFrames: number;
    vFrames: number;
}

Properties

animations +ILoadAnimationOptions | sparkle-engine

Interface ILoadAnimationOptions

interface ILoadAnimationOptions {
    animations: string | AnimationsStore;
    gapSize: number;
    hFrames: number;
    vFrames: number;
}

Properties

animations: string | AnimationsStore

若为string,则从url加载

-
gapSize: number
hFrames: number
vFrames: number
\ No newline at end of file +
gapSize: number
hFrames: number
vFrames: number
\ No newline at end of file diff --git a/docs/interfaces/ILoaderEvent.html b/docs/interfaces/ILoaderEvent.html index 947167d..8b92524 100644 --- a/docs/interfaces/ILoaderEvent.html +++ b/docs/interfaces/ILoaderEvent.html @@ -1,2 +1,2 @@ -ILoaderEvent | sparkle-engine
\ No newline at end of file +ILoaderEvent | sparkle-engine
\ No newline at end of file diff --git a/docs/interfaces/IMouseData.html b/docs/interfaces/IMouseData.html index 4610f24..ef92146 100644 --- a/docs/interfaces/IMouseData.html +++ b/docs/interfaces/IMouseData.html @@ -1,3 +1,3 @@ -IMouseData | sparkle-engine

Interface IMouseData

interface IMouseData {
    event: MouseEvent;
    position: Vector2;
}

Properties

event +IMouseData | sparkle-engine
\ No newline at end of file +

Properties

event: MouseEvent
position: Vector2
\ No newline at end of file diff --git a/docs/interfaces/IMouseEvents.html b/docs/interfaces/IMouseEvents.html index 1f42f5f..dc5f5b6 100644 --- a/docs/interfaces/IMouseEvents.html +++ b/docs/interfaces/IMouseEvents.html @@ -1,4 +1,4 @@ -IMouseEvents | sparkle-engine

Interface IMouseEvents

interface IMouseEvents {
    onMouseDown: ((position) => void);
    onMouseMove: ((position) => void);
    onMouseUp: ((position) => void);
}

Properties

onMouseDown +IMouseEvents | sparkle-engine

Interface IMouseEvents

interface IMouseEvents {
    onMouseDown: ((position) => void);
    onMouseMove: ((position) => void);
    onMouseUp: ((position) => void);
}

Properties

onMouseDown: ((position) => void)

Type declaration

    • (position): void
    • Parameters

      Returns void

onMouseMove: ((position) => void)

Type declaration

    • (position): void
    • Parameters

      Returns void

onMouseUp: ((position) => void)

Type declaration

    • (position): void
    • Parameters

      Returns void

\ No newline at end of file +

Properties

onMouseDown: ((position) => void)

Type declaration

    • (position): void
    • Parameters

      Returns void

onMouseMove: ((position) => void)

Type declaration

    • (position): void
    • Parameters

      Returns void

onMouseUp: ((position) => void)

Type declaration

    • (position): void
    • Parameters

      Returns void

\ No newline at end of file diff --git a/docs/interfaces/IPolygonOptions.html b/docs/interfaces/IPolygonOptions.html new file mode 100644 index 0000000..3e124eb --- /dev/null +++ b/docs/interfaces/IPolygonOptions.html @@ -0,0 +1,14 @@ +IPolygonOptions | sparkle-engine

Interface IPolygonOptions

interface IPolygonOptions {
    color?: Color;
    engine?: SparkleEngine;
    fill?: boolean;
    lineWidth?: number;
    offset?: Vector2;
    path: Vector2[];
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    type: POLYGON;
}

Hierarchy (view full)

Properties

color?: Color
engine?: SparkleEngine
fill?: boolean
lineWidth?: number
offset?: Vector2
path: Vector2[]
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
type: POLYGON
\ No newline at end of file diff --git a/docs/interfaces/IPoolable.html b/docs/interfaces/IPoolable.html index 5ce9c16..2bea1de 100644 --- a/docs/interfaces/IPoolable.html +++ b/docs/interfaces/IPoolable.html @@ -1,2 +1,2 @@ -IPoolable | sparkle-engine
\ No newline at end of file +IPoolable | sparkle-engine
\ No newline at end of file diff --git a/docs/interfaces/IRectOptions.html b/docs/interfaces/IRectOptions.html new file mode 100644 index 0000000..384ba6b --- /dev/null +++ b/docs/interfaces/IRectOptions.html @@ -0,0 +1,14 @@ +IRectOptions | sparkle-engine

Interface IRectOptions

interface IRectOptions {
    color?: Color;
    engine?: SparkleEngine;
    fill?: boolean;
    lineWidth?: number;
    offset?: Vector2;
    position?: Vector2;
    rect: Rect;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    type: RECT;
}

Hierarchy (view full)

Properties

color?: Color
engine?: SparkleEngine
fill?: boolean
lineWidth?: number
offset?: Vector2
position?: Vector2
rect: Rect
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
type: RECT
\ No newline at end of file diff --git a/docs/interfaces/IRenderOptions.html b/docs/interfaces/IRenderOptions.html index 88b30b6..f3bcf0c 100644 --- a/docs/interfaces/IRenderOptions.html +++ b/docs/interfaces/IRenderOptions.html @@ -1,4 +1,4 @@ -IRenderOptions | sparkle-engine

Interface IRenderOptions

interface IRenderOptions {
    antialias?: boolean;
    backgroundColor?: Color;
    canvas: HTMLCanvasElement;
    height?: number;
    pixelDensity?: number;
    scaleMode?: SCALE_MODE;
    width?: number;
}

Hierarchy (view full)

Properties

antialias? +IRenderOptions | sparkle-engine

Interface IRenderOptions

interface IRenderOptions {
    antialias?: boolean;
    backgroundColor?: Color;
    canvas: HTMLCanvasElement;
    height?: number;
    pixelDensity?: number;
    scaleMode?: SCALE_MODE;
    width?: number;
}

Hierarchy (view full)

Properties

antialias?: boolean

是否启用抗锯齿

-
backgroundColor?: Color
canvas: HTMLCanvasElement

canvas

-
height?: number
pixelDensity?: number
scaleMode?: SCALE_MODE
width?: number
\ No newline at end of file +
backgroundColor?: Color
canvas: HTMLCanvasElement

canvas

+
height?: number
pixelDensity?: number
scaleMode?: SCALE_MODE
width?: number
\ No newline at end of file diff --git a/docs/interfaces/IResources.html b/docs/interfaces/IResources.html index eab0600..e3c19de 100644 --- a/docs/interfaces/IResources.html +++ b/docs/interfaces/IResources.html @@ -1,3 +1,3 @@ -IResources | sparkle-engine

Interface IResources

interface IResources {
    resourcesId?: string;
    resourcesType: ResourcesType;
}

Implemented by

Properties

resourcesId? +IResources | sparkle-engine
\ No newline at end of file +

Properties

resourcesId?: string
resourcesType: ResourcesType
\ No newline at end of file diff --git a/docs/interfaces/IResourcesManagerEvent.html b/docs/interfaces/IResourcesManagerEvent.html index 35ca1a3..e7f9d77 100644 --- a/docs/interfaces/IResourcesManagerEvent.html +++ b/docs/interfaces/IResourcesManagerEvent.html @@ -1,3 +1,3 @@ -IResourcesManagerEvent | sparkle-engine

Interface IResourcesManagerEvent

interface IResourcesManagerEvent {
    idle: (() => void);
    loaded: ((r) => void);
}

Properties

idle +IResourcesManagerEvent | sparkle-engine

Interface IResourcesManagerEvent

interface IResourcesManagerEvent {
    idle: (() => void);
    loaded: ((r) => void);
}

Properties

Properties

idle: (() => void)

Type declaration

    • (): void
    • Returns void

loaded: ((r) => void)

Type declaration

\ No newline at end of file +

Properties

idle: (() => void)

Type declaration

    • (): void
    • Returns void

loaded: ((r) => void)

Type declaration

\ No newline at end of file diff --git a/docs/interfaces/IResourcesStore.html b/docs/interfaces/IResourcesStore.html index ca179ff..618f6e2 100644 --- a/docs/interfaces/IResourcesStore.html +++ b/docs/interfaces/IResourcesStore.html @@ -1 +1 @@ -IResourcesStore | sparkle-engine
\ No newline at end of file +IResourcesStore | sparkle-engine
\ No newline at end of file diff --git a/docs/interfaces/ISparkleEngineOption.html b/docs/interfaces/ISparkleEngineOption.html index 5f9cd46..a0b424c 100644 --- a/docs/interfaces/ISparkleEngineOption.html +++ b/docs/interfaces/ISparkleEngineOption.html @@ -1,4 +1,4 @@ -ISparkleEngineOption | sparkle-engine

Interface ISparkleEngineOption

interface ISparkleEngineOption {
    antialias?: boolean;
    backgroundColor?: Color;
    canvas: HTMLCanvasElement;
    disableDebugger?: boolean;
    height?: number;
    maxFPS?: number;
    pixelDensity?: number;
    scaleMode?: SCALE_MODE;
    width?: number;
}

Hierarchy (view full)

Properties

antialias? +ISparkleEngineOption | sparkle-engine

Interface ISparkleEngineOption

interface ISparkleEngineOption {
    antialias?: boolean;
    backgroundColor?: Color;
    canvas: HTMLCanvasElement;
    disableDebugger?: boolean;
    height?: number;
    maxFPS?: number;
    pixelDensity?: number;
    scaleMode?: SCALE_MODE;
    width?: number;
}

Hierarchy (view full)

Properties

antialias?: boolean

是否启用抗锯齿

-
backgroundColor?: Color
canvas: HTMLCanvasElement

canvas

-
disableDebugger?: boolean
height?: number
maxFPS?: number
pixelDensity?: number
scaleMode?: SCALE_MODE
width?: number
\ No newline at end of file +
backgroundColor?: Color
canvas: HTMLCanvasElement

canvas

+
disableDebugger?: boolean
height?: number
maxFPS?: number
pixelDensity?: number
scaleMode?: SCALE_MODE
width?: number
\ No newline at end of file diff --git a/docs/interfaces/ISpriteOptions.html b/docs/interfaces/ISpriteOptions.html index 99bae6d..114f960 100644 --- a/docs/interfaces/ISpriteOptions.html +++ b/docs/interfaces/ISpriteOptions.html @@ -1,4 +1,4 @@ -ISpriteOptions | sparkle-engine

Interface ISpriteOptions

interface ISpriteOptions {
    animations?: Animations;
    color?: Color;
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    texture?: Texture;
}

Hierarchy (view full)

Properties

animations? +ISpriteOptions | sparkle-engine

Interface ISpriteOptions

interface ISpriteOptions {
    animations?: Animations;
    color?: Color;
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    texture?: Texture;
}

Hierarchy (view full)

Properties

Properties

animations?: Animations
color?: Color
engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
texture?: Texture
\ No newline at end of file +

Properties

animations?: Animations
color?: Color
engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
texture?: Texture
\ No newline at end of file diff --git a/docs/interfaces/ITextOptions.html b/docs/interfaces/ITextOptions.html index 8715d66..a29e2c8 100644 --- a/docs/interfaces/ITextOptions.html +++ b/docs/interfaces/ITextOptions.html @@ -1,4 +1,4 @@ -ITextOptions | sparkle-engine

Interface ITextOptions

interface ITextOptions {
    anchor?: TextAnchor;
    color?: Color;
    engine?: SparkleEngine;
    font?: string;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    text?: string;
}

Hierarchy (view full)

Properties

anchor? +ITextOptions | sparkle-engine

Interface ITextOptions

interface ITextOptions {
    anchor?: TextAnchor;
    color?: Color;
    engine?: SparkleEngine;
    font?: string;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
    text?: string;
}

Hierarchy (view full)

Properties

Properties

anchor?: TextAnchor
color?: Color
engine?: SparkleEngine
font?: string
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
text?: string
\ No newline at end of file +

Properties

anchor?: TextAnchor
color?: Color
engine?: SparkleEngine
font?: string
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
text?: string
\ No newline at end of file diff --git a/docs/interfaces/ITimerEvents.html b/docs/interfaces/ITimerEvents.html index 05c9453..858065c 100644 --- a/docs/interfaces/ITimerEvents.html +++ b/docs/interfaces/ITimerEvents.html @@ -1,5 +1,5 @@ -ITimerEvents | sparkle-engine

Interface ITimerEvents

interface ITimerEvents {
    onEnterTree: (() => void);
    onExitTree: (() => void);
    onReady: (() => void);
    timeout(): void;
}

Hierarchy (view full)

Properties

onEnterTree +ITimerEvents | sparkle-engine

Interface ITimerEvents

interface ITimerEvents {
    onEnterTree: (() => void);
    onExitTree: (() => void);
    onReady: (() => void);
    timeout(): void;
}

Hierarchy (view full)

Properties

onEnterTree: (() => void)

Type declaration

    • (): void
    • Returns void

onExitTree: (() => void)

Type declaration

    • (): void
    • Returns void

onReady: (() => void)

Type declaration

    • (): void
    • Returns void

Methods

\ No newline at end of file +

Properties

onEnterTree: (() => void)

Type declaration

    • (): void
    • Returns void

onExitTree: (() => void)

Type declaration

    • (): void
    • Returns void

onReady: (() => void)

Type declaration

    • (): void
    • Returns void

Methods

\ No newline at end of file diff --git a/docs/interfaces/ITimerOptions.html b/docs/interfaces/ITimerOptions.html index 2b2ad9c..348b2c7 100644 --- a/docs/interfaces/ITimerOptions.html +++ b/docs/interfaces/ITimerOptions.html @@ -1,8 +1,8 @@ -ITimerOptions | sparkle-engine

Interface ITimerOptions

interface ITimerOptions {
    engine?: SparkleEngine;
    initTimeLeft?: number;
    oneShot?: boolean;
    resident?: boolean;
    start?: boolean;
    tags?: string[];
    waitTime: number;
}

Hierarchy (view full)

Properties

engine? +ITimerOptions | sparkle-engine

Interface ITimerOptions

interface ITimerOptions {
    engine?: SparkleEngine;
    initTimeLeft?: number;
    oneShot?: boolean;
    resident?: boolean;
    start?: boolean;
    tags?: string[];
    waitTime: number;
}

Hierarchy (view full)

Properties

engine?: SparkleEngine
initTimeLeft?: number
oneShot?: boolean
resident?: boolean
start?: boolean
tags?: string[]
waitTime: number
\ No newline at end of file +

Properties

engine?: SparkleEngine
initTimeLeft?: number
oneShot?: boolean
resident?: boolean
start?: boolean
tags?: string[]
waitTime: number
\ No newline at end of file diff --git a/docs/interfaces/ITransform2DOptions.html b/docs/interfaces/ITransform2DOptions.html index a9b328b..e7ee469 100644 --- a/docs/interfaces/ITransform2DOptions.html +++ b/docs/interfaces/ITransform2DOptions.html @@ -1,4 +1,4 @@ -ITransform2DOptions | sparkle-engine

Interface ITransform2DOptions

interface ITransform2DOptions {
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

engine? +ITransform2DOptions | sparkle-engine

Interface ITransform2DOptions

interface ITransform2DOptions {
    engine?: SparkleEngine;
    offset?: Vector2;
    position?: Vector2;
    resident?: boolean;
    rotation?: number;
    scale?: Vector2;
    skew?: Vector2;
    tags?: string[];
}

Hierarchy (view full)

Properties

Properties

engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
\ No newline at end of file +

Properties

engine?: SparkleEngine
offset?: Vector2
position?: Vector2
resident?: boolean
rotation?: number
scale?: Vector2
skew?: Vector2
tags?: string[]
\ No newline at end of file diff --git a/docs/interfaces/PoolTypes.html b/docs/interfaces/PoolTypes.html index d785814..e06cd3c 100644 --- a/docs/interfaces/PoolTypes.html +++ b/docs/interfaces/PoolTypes.html @@ -1 +1 @@ -PoolTypes | sparkle-engine
\ No newline at end of file +PoolTypes | sparkle-engine
\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index 59f4fb8..f81b28c 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -7,6 +7,7 @@

GameNode

Audio

Others

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/AttributesLocation.html b/docs/types/AttributesLocation.html index 16c5672..2ab42c9 100644 --- a/docs/types/AttributesLocation.html +++ b/docs/types/AttributesLocation.html @@ -1 +1 @@ -AttributesLocation | sparkle-engine
\ No newline at end of file +AttributesLocation | sparkle-engine
\ No newline at end of file diff --git a/docs/types/Constructor.html b/docs/types/Constructor.html index 088861d..54106f2 100644 --- a/docs/types/Constructor.html +++ b/docs/types/Constructor.html @@ -1 +1 @@ -Constructor | sparkle-engine
\ No newline at end of file +Constructor | sparkle-engine
\ No newline at end of file diff --git a/docs/types/IGraphicalOptions.html b/docs/types/IGraphicalOptions.html new file mode 100644 index 0000000..b65ee72 --- /dev/null +++ b/docs/types/IGraphicalOptions.html @@ -0,0 +1 @@ +IGraphicalOptions | sparkle-engine
\ No newline at end of file diff --git a/docs/types/Images.html b/docs/types/Images.html index 8ed5df5..2a2da63 100644 --- a/docs/types/Images.html +++ b/docs/types/Images.html @@ -1 +1 @@ -Images | sparkle-engine
\ No newline at end of file +Images | sparkle-engine
\ No newline at end of file diff --git a/src/nodes/text.ts b/src/nodes/text.ts index d8d81ac..28dd2e0 100644 --- a/src/nodes/text.ts +++ b/src/nodes/text.ts @@ -6,7 +6,8 @@ import TextureCompositors from "../video/compositors/texture_compositor" /** * 精灵 * @category GameNode - * @example ```js + * @example + * ```js * const node = new Text({ * text: "Hello!", * font: "40px Arial", diff --git a/src/sence/sence.ts b/src/sence/sence.ts index a0f46f4..5a02f1b 100644 --- a/src/sence/sence.ts +++ b/src/sence/sence.ts @@ -2,7 +2,8 @@ import { Container, SparkleEngine } from "../main"; /** * 场景 - * @example ``` + * @example + * ``` * class GameSence extends Sence{ * preload(){ * engine.loader.baseUrl = "."