@@ -8,6 +8,7 @@ import { Texture } from '@pixi/core';
88import { Spritesheet } from '@pixi/spritesheet' ;
99
1010type Complete = ( instance : MovieClip | null ) => void ;
11+ type Progress = ( value : number ) => void ;
1112export interface LoadOptions
1213{
1314 /**
@@ -18,6 +19,10 @@ export interface LoadOptions
1819 * Callback for load completion.
1920 */
2021 complete ?: Complete ;
22+ /**
23+ * Callback for load progress.
24+ */
25+ progress ?: Progress ;
2126 /**
2227 * Base root directory
2328 */
@@ -94,6 +99,8 @@ export function load(scene: AnimateAsset, options: LoadOptions): void;
9499export function load ( scene : AnimateAsset , optionsOrComplete ?: Complete | LoadOptions ) : void
95100{
96101 const complete : Complete = typeof optionsOrComplete === 'function' ? optionsOrComplete : optionsOrComplete ?. complete ;
102+ const progress : Progress | undefined = typeof optionsOrComplete === 'function' ? undefined : optionsOrComplete ?. progress ;
103+
97104 let basePath = '' ;
98105 let parent : Container = null ;
99106 let metadata : any ;
@@ -143,6 +150,9 @@ export function load(scene: AnimateAsset, optionsOrComplete?: Complete | LoadOpt
143150
144151 if ( assets && Object . keys ( assets ) . length )
145152 {
153+ let totalAssets = 0 ;
154+ let loadedAssets = 0 ;
155+
146156 const promises : Promise < any > [ ] = [ ] ;
147157 // assetBaseDir can accept either with trailing slash or not
148158
@@ -152,6 +162,8 @@ export function load(scene: AnimateAsset, optionsOrComplete?: Complete | LoadOpt
152162 }
153163 for ( const id in assets )
154164 {
165+ if ( progress ) totalAssets ++ ;
166+
155167 let data = null ;
156168
157169 if ( metadata )
@@ -169,9 +181,16 @@ export function load(scene: AnimateAsset, optionsOrComplete?: Complete | LoadOpt
169181 }
170182 promises . push ( Assets . load ( { alias : [ id ] , src : basePath + assets [ id ] , data } ) . then ( ( loadedAsset ) =>
171183 {
184+ if ( progress )
185+ {
186+ loadedAssets ++ ;
187+
188+ progress ( loadedAssets / totalAssets ) ;
189+ }
190+
172191 if ( ! loadedAsset )
173192 {
174- return ; // not sure if this can evet happen
193+ return ; // not sure if this can ever happen
175194 }
176195 if ( loadedAsset instanceof Spritesheet )
177196 {
0 commit comments