Minor fixes
Making sure LayerAdapter doesn't wait for ThangType to load the image more than once. LayerAdapter skips rendering if there's a prerendered sprite sheet whose image is not loaded.
This commit is contained in:
parent
305cffb5ea
commit
b77626b8ee
2 changed files with 9 additions and 3 deletions
app
|
@ -179,7 +179,8 @@ module.exports = LayerAdapter = class LayerAdapter extends CocoClass
|
||||||
@listenToOnce(thangType, 'raster-image-loaded', @somethingLoaded)
|
@listenToOnce(thangType, 'raster-image-loaded', @somethingLoaded)
|
||||||
@numThingsLoading++
|
@numThingsLoading++
|
||||||
else if prerenderedSpriteSheet = thangType.getPrerenderedSpriteSheetToLoad()
|
else if prerenderedSpriteSheet = thangType.getPrerenderedSpriteSheetToLoad()
|
||||||
prerenderedSpriteSheet.loadImage()
|
startedLoading = prerenderedSpriteSheet.loadImage()
|
||||||
|
return if not startedLoading
|
||||||
@listenToOnce(prerenderedSpriteSheet, 'image-loaded', -> @somethingLoaded(thangType))
|
@listenToOnce(prerenderedSpriteSheet, 'image-loaded', -> @somethingLoaded(thangType))
|
||||||
@numThingsLoading++
|
@numThingsLoading++
|
||||||
|
|
||||||
|
@ -353,6 +354,8 @@ module.exports = LayerAdapter = class LayerAdapter extends CocoClass
|
||||||
|
|
||||||
renderSegmentedThangType: (thangType, colorConfig, actionNames, spriteSheetBuilder) ->
|
renderSegmentedThangType: (thangType, colorConfig, actionNames, spriteSheetBuilder) ->
|
||||||
prerenderedSpriteSheet = thangType.getPrerenderedSpriteSheet(colorConfig, 'segmented')
|
prerenderedSpriteSheet = thangType.getPrerenderedSpriteSheet(colorConfig, 'segmented')
|
||||||
|
if prerenderedSpriteSheet and not prerenderedSpriteSheet.loadedImage
|
||||||
|
return
|
||||||
containersToRender = thangType.getContainersForActions(actionNames)
|
containersToRender = thangType.getContainersForActions(actionNames)
|
||||||
spriteBuilder = new SpriteBuilder(thangType, {colorConfig: colorConfig})
|
spriteBuilder = new SpriteBuilder(thangType, {colorConfig: colorConfig})
|
||||||
for containerGlobalName in containersToRender
|
for containerGlobalName in containersToRender
|
||||||
|
@ -377,6 +380,8 @@ module.exports = LayerAdapter = class LayerAdapter extends CocoClass
|
||||||
prerenderedSpriteSheet = thangType.getPrerenderedSpriteSheet(colorConfig, 'singular')
|
prerenderedSpriteSheet = thangType.getPrerenderedSpriteSheet(colorConfig, 'singular')
|
||||||
prerenderedFramesMap = {}
|
prerenderedFramesMap = {}
|
||||||
if prerenderedSpriteSheet
|
if prerenderedSpriteSheet
|
||||||
|
if not prerenderedSpriteSheet.loadedImage
|
||||||
|
return
|
||||||
scale = @resolutionFactor / (prerenderedSpriteSheet.get('resolutionFactor') or 1)
|
scale = @resolutionFactor / (prerenderedSpriteSheet.get('resolutionFactor') or 1)
|
||||||
for frame, i in prerenderedSpriteSheet.spriteSheet._frames
|
for frame, i in prerenderedSpriteSheet.spriteSheet._frames
|
||||||
sprite = new createjs.Sprite(prerenderedSpriteSheet.spriteSheet)
|
sprite = new createjs.Sprite(prerenderedSpriteSheet.spriteSheet)
|
||||||
|
|
|
@ -541,8 +541,8 @@ class PrerenderedSpriteSheet extends CocoModel
|
||||||
@className: 'PrerenderedSpriteSheet'
|
@className: 'PrerenderedSpriteSheet'
|
||||||
|
|
||||||
loadImage: ->
|
loadImage: ->
|
||||||
return if @loadingImage or @loadedImage
|
return false if @loadingImage or @loadedImage
|
||||||
return unless imageURL = @get('image')
|
return false unless imageURL = @get('image')
|
||||||
@image = $("<img src='/file/#{imageURL}' />")
|
@image = $("<img src='/file/#{imageURL}' />")
|
||||||
@loadingImage = true
|
@loadingImage = true
|
||||||
@image.one('load', =>
|
@image.one('load', =>
|
||||||
|
@ -554,6 +554,7 @@ class PrerenderedSpriteSheet extends CocoModel
|
||||||
@loadingImage = false
|
@loadingImage = false
|
||||||
@trigger('image-load-error', @)
|
@trigger('image-load-error', @)
|
||||||
)
|
)
|
||||||
|
return true
|
||||||
|
|
||||||
buildSpriteSheet: ->
|
buildSpriteSheet: ->
|
||||||
@spriteSheet = new createjs.SpriteSheet({
|
@spriteSheet = new createjs.SpriteSheet({
|
||||||
|
|
Reference in a new issue