or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

animation.mdapplication.mdassets.mddisplay-objects.mdevents.mdfilters.mdgraphics.mdindex.mdmath.mdrendering.mdtext.mdtextures.mdutils.md

assets.mddocs/

0

# Asset Loading and Management

1

2

Comprehensive asset loading system supporting textures, fonts, JSON, and custom formats. Includes caching, URL resolution, progress tracking, and background loading with a powerful plugin architecture for handling different asset types.

3

4

## Capabilities

5

6

### Assets Class

7

8

Main static class for asset management providing a simple interface for loading, caching, and resolving assets.

9

10

```typescript { .api }

11

/**

12

* Main assets management class

13

*/

14

class Assets {

15

/**

16

* Load assets by URL or alias

17

* @param urls - URLs or aliases to load

18

* @param onProgress - Progress callback

19

* @returns Promise resolving to loaded assets

20

*/

21

static load<T = any>(urls: string | string[], onProgress?: ProgressCallback): Promise<T>;

22

23

/**

24

* Add assets to the resolver

25

* @param assets - Asset configurations to add

26

*/

27

static add(assets: string | AssetInitOptions | (string | AssetInitOptions)[]): void;

28

29

/**

30

* Get cached asset by key

31

* @param keys - Asset keys to retrieve

32

* @returns Cached asset(s)

33

*/

34

static get<T = any>(keys: string | string[]): T;

35

36

/**

37

* Check if asset exists in cache

38

* @param key - Asset key to check

39

* @returns True if asset exists

40

*/

41

static has(key: string): boolean;

42

43

/**

44

* Unload assets and remove from cache

45

* @param urls - URLs or aliases to unload

46

* @returns Promise resolving when unloaded

47

*/

48

static unload(urls: string | string[]): Promise<void>;

49

50

/**

51

* Initialize assets system

52

* @param options - Initialization options

53

* @returns Promise resolving when initialized

54

*/

55

static init(options?: AssetsInitOptions): Promise<void>;

56

57

/** Asset cache system */

58

static readonly cache: Cache;

59

60

/** Asset URL resolver */

61

static readonly resolver: Resolver;

62

63

/** Asset loader */

64

static readonly loader: Loader;

65

66

/**

67

* Set base URL for all assets

68

* @param url - Base URL

69

*/

70

static setBaseUrl(url: string): void;

71

72

/**

73

* Reset assets system

74

*/

75

static reset(): void;

76

}

77

```

78

79

### Asset Configuration

80

81

Configuration objects for adding assets to the system.

82

83

```typescript { .api }

84

interface AssetInitOptions {

85

/** Asset alias */

86

alias?: string | string[];

87

88

/** Asset URL */

89

src: string | string[];

90

91

/** Asset data */

92

data?: any;

93

94

/** Asset format */

95

format?: string;

96

97

/** Load parser */

98

loadParser?: string;

99

100

/** Cache parser */

101

cacheParser?: string;

102

}

103

104

interface AssetsInitOptions {

105

/** Base URL for assets */

106

basePath?: string;

107

108

/** Default search parameters */

109

defaultSearchParams?: Record<string, string>;

110

111

/** Prefer worker loading */

112

preferWorkers?: boolean;

113

114

/** Manifest URL */

115

manifest?: string;

116

117

/** Asset bundles */

118

bundles?: BundleIdentifierOptions[];

119

}

120

121

interface BundleIdentifierOptions {

122

/** Bundle name */

123

name: string;

124

125

/** Assets in bundle */

126

assets: AssetInitOptions[];

127

}

128

```

129

130

### Loader

131

132

Asset loading system with queue management and progress tracking.

133

134

```typescript { .api }

135

/**

136

* Asset loader with queue management

137

*/

138

class Loader {

139

constructor();

140

141

/**

142

* Add assets to load queue

143

* @param assetsToLoad - Assets to add

144

* @returns This loader

145

*/

146

add(assetsToLoad: string | LoadAsset | (string | LoadAsset)[]): this;

147

148

/**

149

* Load all queued assets

150

* @param onProgress - Progress callback

151

* @returns Promise resolving to loaded assets

152

*/

153

load<T>(onProgress?: ProgressCallback): Promise<T>;

154

155

/**

156

* Load assets by URLs

157

* @param urls - URLs to load

158

* @param onProgress - Progress callback

159

* @returns Promise resolving to loaded assets

160

*/

161

load<T>(urls: string | string[], onProgress?: ProgressCallback): Promise<T>;

162

163

/**

164

* Reset loader state

165

* @returns This loader

166

*/

167

reset(): this;

168

169

/**

170

* Get loading progress

171

* @returns Progress percentage (0-1)

172

*/

173

get progress(): number;

174

175

/** Currently loading flag */

176

readonly loading: boolean;

177

178

/** Number of assets to load */

179

readonly totalToLoad: number;

180

}

181

182

interface LoadAsset {

183

/** Asset alias */

184

alias?: string[];

185

186

/** Asset URL */

187

src: string;

188

189

/** Loading data */

190

data?: any;

191

192

/** Load parser to use */

193

loadParser?: string;

194

}

195

196

type ProgressCallback = (progress: number) => void;

197

```

198

199

### Resolver

200

201

URL resolution system for asset aliases and bundles.

202

203

```typescript { .api }

204

/**

205

* Asset URL resolver

206

*/

207

class Resolver {

208

constructor();

209

210

/**

211

* Add asset configurations

212

* @param assets - Assets to add

213

*/

214

add(assets: string | ResolveAsset | (string | ResolveAsset)[]): void;

215

216

/**

217

* Resolve URL from alias

218

* @param key - Asset key or alias

219

* @returns Resolved URL(s)

220

*/

221

resolveUrl(key: string): string | string[];

222

223

/**

224

* Resolve asset configuration

225

* @param key - Asset key

226

* @returns Resolved asset configuration

227

*/

228

resolve(key: string): ResolveAsset;

229

230

/**

231

* Check if key exists

232

* @param key - Asset key

233

* @returns True if exists

234

*/

235

hasKey(key: string): boolean;

236

237

/**

238

* Remove asset from resolver

239

* @param key - Asset key to remove

240

*/

241

remove(key: string): void;

242

243

/**

244

* Add bundle of assets

245

* @param bundleId - Bundle identifier

246

* @param assets - Assets in bundle

247

*/

248

addBundle(bundleId: string, assets: ResolveAsset[]): void;

249

250

/**

251

* Remove bundle

252

* @param bundleId - Bundle identifier

253

*/

254

removeBundle(bundleId: string): void;

255

256

/**

257

* Get bundle asset keys

258

* @param bundleId - Bundle identifier

259

* @returns Asset keys in bundle

260

*/

261

resolveBundle(bundleId: string): string[];

262

263

/**

264

* Set base URL

265

* @param url - Base URL

266

*/

267

setBaseUrl(url: string): void;

268

269

/**

270

* Reset resolver

271

*/

272

reset(): void;

273

}

274

275

interface ResolveAsset {

276

/** Asset alias */

277

alias?: string[];

278

279

/** Asset URL */

280

src: string;

281

282

/** Asset format */

283

format?: string;

284

285

/** Asset data */

286

data?: any;

287

}

288

```

289

290

### Cache

291

292

Asset caching system for storing loaded assets.

293

294

```typescript { .api }

295

/**

296

* Asset cache system

297

*/

298

class Cache {

299

constructor();

300

301

/**

302

* Set cached asset

303

* @param key - Asset key

304

* @param asset - Asset to cache

305

*/

306

set<T>(key: string, asset: T): void;

307

308

/**

309

* Get cached asset

310

* @param key - Asset key

311

* @returns Cached asset

312

*/

313

get<T>(key: string): T;

314

315

/**

316

* Check if asset is cached

317

* @param key - Asset key

318

* @returns True if cached

319

*/

320

has(key: string): boolean;

321

322

/**

323

* Remove asset from cache

324

* @param key - Asset key

325

*/

326

remove(key: string): void;

327

328

/**

329

* Clear all cached assets

330

*/

331

reset(): void;

332

333

/** All cached keys */

334

readonly keys: string[];

335

}

336

```

337

338

### Asset Parsers

339

340

Parsers for different asset types and formats.

341

342

```typescript { .api }

343

/**

344

* Asset parser interface

345

*/

346

interface LoaderParser<ASSET = any, META_DATA = any> {

347

/** Parser name */

348

name?: string;

349

350

/** Supported extensions */

351

extension: string | string[];

352

353

/** Test if parser can handle asset */

354

test?: (url: string, options?: LoadAsset) => boolean;

355

356

/** Load asset */

357

load?: (url: string, asset: LoadAsset, loader: Loader) => Promise<ASSET>;

358

359

/** Unload asset */

360

unload?: (asset: ASSET, resolvedAsset?: ResolveAsset) => void | Promise<void>;

361

}

362

363

/**

364

* Texture loader parser

365

*/

366

const loadTextures: LoaderParser;

367

368

/**

369

* JSON loader parser

370

*/

371

const loadJson: LoaderParser;

372

373

/**

374

* Web font loader parser

375

*/

376

const loadWebFont: LoaderParser;

377

378

/**

379

* SVG loader parser

380

*/

381

const loadSVG: LoaderParser;

382

383

/**

384

* Video texture loader parser

385

*/

386

const loadVideoTextures: LoaderParser;

387

```

388

389

### Background Loading

390

391

Background asset loading system for preloading assets.

392

393

```typescript { .api }

394

/**

395

* Background loader for preloading assets

396

*/

397

class BackgroundLoader {

398

constructor(loader: Loader);

399

400

/**

401

* Add assets to background load queue

402

* @param urls - URLs to load in background

403

*/

404

add(urls: string | string[]): void;

405

406

/**

407

* Start background loading

408

*/

409

start(): void;

410

411

/**

412

* Stop background loading

413

*/

414

stop(): void;

415

416

/** Is currently loading */

417

readonly active: boolean;

418

}

419

```

420

421

**Usage Examples:**

422

423

```typescript

424

import { Assets, Texture, Sprite } from 'pixi.js';

425

426

// Basic asset loading

427

const texture = await Assets.load('character.png');

428

const sprite = new Sprite(texture);

429

430

// Multiple assets

431

const assets = await Assets.load([

432

'background.jpg',

433

'character.png',

434

'music.mp3'

435

]);

436

437

// Using aliases

438

Assets.add([

439

{ alias: 'hero', src: 'characters/hero.png' },

440

{ alias: 'villain', src: 'characters/villain.png' },

441

{ alias: 'bgm', src: 'audio/background.mp3' }

442

]);

443

444

const heroTexture = await Assets.load('hero');

445

const villain = await Assets.load('villain');

446

447

// Progress tracking

448

const manifest = await Assets.load({

449

alias: 'gameAssets',

450

src: [

451

'level1/background.jpg',

452

'level1/tiles.png',

453

'level1/enemies.json',

454

'level1/music.mp3'

455

]

456

}, (progress) => {

457

console.log(`Loading: ${Math.round(progress * 100)}%`);

458

});

459

460

// Bundle loading

461

Assets.addBundle('level1', [

462

{ alias: 'bg', src: 'level1/bg.jpg' },

463

{ alias: 'tiles', src: 'level1/tiles.png' },

464

{ alias: 'config', src: 'level1/config.json' }

465

]);

466

467

const level1Assets = await Assets.loadBundle('level1');

468

469

// Preloading with background loader

470

Assets.backgroundLoad([

471

'level2/background.jpg',

472

'level2/enemies.png',

473

'level3/background.jpg'

474

]);

475

476

// Custom asset types

477

Assets.add({

478

alias: 'gameData',

479

src: 'data/game.json',

480

data: { parseAsGameConfig: true }

481

});

482

483

// Unloading assets

484

await Assets.unload(['level1', 'unused-texture.png']);

485

486

// Cache management

487

const cachedTexture = Assets.get('hero');

488

if (Assets.has('hero')) {

489

console.log('Hero texture is cached');

490

}

491

492

// Web fonts

493

Assets.add({

494

alias: 'gameFont',

495

src: 'fonts/GameFont.woff2',

496

data: { family: 'GameFont' }

497

});

498

await Assets.load('gameFont');

499

500

// Video textures

501

const videoTexture = await Assets.load('intro-video.mp4');

502

const videoSprite = new Sprite(videoTexture);

503

```