@leafer/renderer 1.0.0-beta → 1.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +8 -7
  2. package/src/Renderer.ts +14 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer/renderer",
3
- "version": "1.0.0-beta",
3
+ "version": "1.0.0-beta.10",
4
4
  "description": "@leafer/renderer",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -19,13 +19,14 @@
19
19
  "leaferjs"
20
20
  ],
21
21
  "dependencies": {
22
- "@leafer/event": "1.0.0-beta",
23
- "@leafer/math": "1.0.0-beta",
24
- "@leafer/data": "1.0.0-beta",
25
- "@leafer/platform": "1.0.0-beta",
26
- "@leafer/debug": "1.0.0-beta"
22
+ "@leafer/image": "1.0.0-beta.10",
23
+ "@leafer/event": "1.0.0-beta.10",
24
+ "@leafer/math": "1.0.0-beta.10",
25
+ "@leafer/data": "1.0.0-beta.10",
26
+ "@leafer/platform": "1.0.0-beta.10",
27
+ "@leafer/debug": "1.0.0-beta.10"
27
28
  },
28
29
  "devDependencies": {
29
- "@leafer/interface": "1.0.0-beta"
30
+ "@leafer/interface": "1.0.0-beta.10"
30
31
  }
31
32
  }
package/src/Renderer.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ILeaf, ILeaferCanvas, IRenderer, IRendererConfig, IEventListenerId, IBounds, IFunction, IRenderOptions } from '@leafer/interface'
2
- import { LayoutEvent, RenderEvent, ResizeEvent } from '@leafer/event'
2
+ import { AnimateEvent, LayoutEvent, RenderEvent, ResizeEvent } from '@leafer/event'
3
+ import { ImageManager } from '@leafer/image'
3
4
  import { Bounds } from '@leafer/math'
4
5
  import { DataHelper } from '@leafer/data'
5
6
  import { Platform } from '@leafer/platform'
@@ -42,6 +43,7 @@ export class Renderer implements IRenderer {
42
43
  this.canvas = canvas
43
44
  if (userConfig) this.config = DataHelper.default(userConfig, this.config)
44
45
  this.__listenEvents()
46
+ this.__requestRender()
45
47
  }
46
48
 
47
49
  public start(): void {
@@ -53,7 +55,6 @@ export class Renderer implements IRenderer {
53
55
  }
54
56
 
55
57
  public update(): void {
56
- if (!this.changed) this.__requestRender()
57
58
  this.changed = true
58
59
  }
59
60
 
@@ -62,7 +63,10 @@ export class Renderer implements IRenderer {
62
63
  }
63
64
 
64
65
  public render(callback?: IFunction): void {
65
- if (!(this.running)) return
66
+ if (!(this.running && this.canvas.view)) {
67
+ this.changed = true
68
+ return
69
+ }
66
70
 
67
71
  const { target } = this
68
72
  this.times = 0
@@ -74,6 +78,8 @@ export class Renderer implements IRenderer {
74
78
  this.emitRender(RenderEvent.START)
75
79
  this.renderOnce(callback)
76
80
  this.emitRender(RenderEvent.END, this.totalBounds)
81
+
82
+ ImageManager.clearRecycled()
77
83
  } catch (e) {
78
84
  debug.error(e)
79
85
  }
@@ -210,10 +216,12 @@ export class Renderer implements IRenderer {
210
216
  protected __requestRender(): void {
211
217
  const startTime = Date.now()
212
218
  Platform.requestRender(() => {
219
+ this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - startTime)))
213
220
  if (this.changed) {
214
- this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - startTime)))
215
- if (this.running) this.render()
221
+ if (this.running && this.canvas.view) this.render()
216
222
  }
223
+ if (this.running) this.target.emit(AnimateEvent.FRAME)
224
+ if (this.target) this.__requestRender()
217
225
  })
218
226
  }
219
227
 
@@ -235,7 +243,7 @@ export class Renderer implements IRenderer {
235
243
  if (item.updatedList) item.updatedList.list.some(leaf => {
236
244
  empty = (!leaf.__world.width || !leaf.__world.height)
237
245
  if (empty) {
238
- debug.warn(leaf.innerName, ': none bounds')
246
+ if (!leaf.isLeafer) debug.warn(leaf.innerName, ': empty')
239
247
  empty = (!leaf.isBranch || leaf.isBranchLeaf) // render object
240
248
  }
241
249
  return empty