# API di scripting Lua di pxstud.io — Slice

> Parte del riferimento di scripting Lua di pxstud.io, la cui panoramica (https://pxstud.io/it/docs/scripting.md) ne spiega le convenzioni. I gruppi di opzioni e i tipi a cui rimanda sono in https://pxstud.io/it/docs/scripting/option-groups.md e https://pxstud.io/it/docs/scripting/types.md. Tutto in un unico file (in inglese): https://pxstud.io/llms-full.txt. L'indice dell'intero sito (in inglese): https://pxstud.io/llms.txt.

### Slice
Rettangoli con nome, ad esempio per le regioni di esportazione o gli hitbox. Uno slice può anche essere un 9-slice (un rettangolo centrale) e avere un punto di perno; entrambi sono relativi all'angolo in alto a sinistra dello slice, come in Aseprite, e si spostano con esso quando la tela viene ridimensionata, ritagliata o ruotata.

#### `app.addSlice(name, x, y, width, height, opts?)` — modifica, annullabile
Aggiunge un nuovo slice rettangolare con nome, facoltativamente un 9-slice (center) e/o con un perno.

- `name` (string)
- `x` (number)
- `y` (number)
- `width` (number)
- `height` (number)
- `opts` (table, facoltativo)
  - `center` ({ x, y, width, height }) — Il centro del 9-slice { x, y, width, height }, relativo all'origine dello slice: dentro lo slice, con dimensioni positive.
  - `pivot` ({ x, y }) — Il punto di perno { x, y }, relativo all'origine dello slice (può trovarsi fuori dallo slice).

Restituisce (string): L'id del nuovo slice.

#### `app.getSlices(frameId?)` — legge
Ogni slice come { id, name, x, y, width, height, center = { x, y, width, height } (slice a 9 parti), pivot = { x, y } (slice con un pivot), keyFrameIds (fotogrammi in cui lo slice ha una propria chiave, solo slice con chiavi per fotogramma) }. center e pivot sono relativi all'origine dello slice. Passa un id di fotogramma per la geometria in vigore in quel fotogramma.

- `frameId` (string, facoltativo) — Il fotogramma in cui leggere gli slice (uno slice può cambiare limiti, centro e perno per fotogramma); omettilo per quelli del primo fotogramma.

Restituisce (table): Array di tabelle slice.

#### `app.removeSlice(sliceId)` — modifica, annullabile
Rimuove uno slice.

- `sliceId` (string)

Non restituisce nulla.

#### `app.removeSliceKey(sliceId, frameId)` — modifica, annullabile
Rimuove la chiave di uno slice in un fotogramma (non il primo, che contiene la geometria propria dello slice): da quel fotogramma in poi torna ad applicarsi la geometria della chiave precedente. Genera un errore se lo slice non ha una chiave in quel fotogramma.

- `sliceId` (string)
- `frameId` (string)

Non restituisce nulla.

#### `app.updateSlice(sliceId, props, frameId?)` — modifica, annullabile
Aggiorna una o più proprietà di uno slice. Ridimensionare un 9-slice ne mantiene il centro solo se ci sta ancora; altrimenti passa anche un nuovo center (o false). Con un frameId successivo al primo fotogramma, x, y, width, height, center e pivot modificano la chiave dello slice in quel fotogramma (creandola: la nuova geometria vale da quel fotogramma fino alla chiave successiva); name vale sempre per l'intero slice.

- `sliceId` (string)
- `props` (table) — Le chiavi omesse restano invariate.
  - `name` (string) — Il nome dello slice.
  - `x` (integer) — Bordo sinistro, in pixel dello sprite.
  - `y` (integer) — Bordo superiore, in pixel dello sprite.
  - `width` (integer ≥ 1) — Larghezza in pixel.
  - `height` (integer ≥ 1) — Altezza in pixel.
  - `center` ({ x, y, width, height } or false) — Il centro del 9-slice { x, y, width, height }, relativo all'origine dello slice: dentro lo slice, con dimensioni positive. false lo rimuove.
  - `pivot` ({ x, y } or false) — Il punto di perno { x, y }, relativo all'origine dello slice (può trovarsi fuori dallo slice). false lo rimuove.
- `frameId` (string, facoltativo) — Il fotogramma in cui si applica la geometria; se omesso o se è il primo fotogramma, modifica la geometria propria dello slice.

Non restituisce nulla.
