我想在切换到状态后将状态中预加载的图像/精灵添加到状态a
(其中是 的实例)。phaserGameInstance.world
b
phaserGameInstance
Phaser.Game
由于所有资产都全局存储在浏览器缓存中,并且phaserGameInstance.cache
它们应该在所有状态下都可用,但实际上并非如此。
我发现的解决方法是使用状态缓存对象b
的属性扩展状态缓存对象,a
这有点令人不安,可能不是预期的方式:
var priorCache = phaserGameInstance.state.getCurrentState().cache; // State 'a'
phaserGameInstance.state.start('b'); // Switch to state 'b'
jQuery.extend( // Merges the cache of state 'a' recursively
true, // into the cache of the current state 'b'
phaserGameInstance.state.getCurrentState().cache,
priorCache
);
我还没有测试在状态下预加载资产时这是否有效b
(也许合并过程会覆盖 state 的属性b
),但由于我只在状态下预加载我的东西,a
这是我目前正在使用的修复。
如何独立于状态使用预加载资产?