Vai al contenuto

Volume con Applescript (Studio)


Emiliano_13

Messaggi raccomandati

Salve, sto cercando di creare una minuscola applicazione con Xcode, e tra i comandi ho messo canzone precedente, play/pause, canzone successiva, artista, titolo, album e VOLUME. E qui casca l'asino.

Volevo creare uno slider che mi permetteva di regolare il volume trascinando il pallino blu, e con InterfaceBuilder l'ho sistemato nella finestra, chiamandolo "volumeSlider"

E fin qui tutto a posto, ho selezionato "Action" nell'inspector e cliccando su edit sono ritornato alla finestra di codice di Xcode. E ho scritto:

on action theObject

set content of slider "volumeSlider" of window "theWindow" to volume1

set volume volume1

end action

E' giusto, no?

Ho cliccato su Build & Go e tutto a posto, mi colorava di verde e di blu il codice ed è apparsa normalmente la finestra. con i vari comandi e lo slider. Quando cerco di spostare il cursore e lo rilascio, mi da questo errore:

AppleScript Error

The variable volume1 is not defined. (-2753)

Qual'è il problema? Ho sbagliato qualcosa nel codice?

Con la mia (poca) esperienza di "programmatore" ho capito che se gli dico set deve impostarmi la variabile, e allora, come è possibile che non sia definita?

Grazie in anticipo per gli aiuti!

Link al commento
Condividi su altri siti

No, è sbagliato il codice.

Il comando set si usa al contrario:

set [b]VARIABILE[/b] to [b]VALORE[/b]

Tu invece hai fatto il contrario. :fiorellino:

Se ho capito quello che vuoi fare basta che scrivi:

set volume to content of slider "volumeSlider" of window "theWindow"

In questo modo ti imposta il volume con il valore restituito dallo slider.

Spero di essere stao chiaro, se c'è qualcosa chiedi pure. :ciao:

Ciao!

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

Allora riguardando il codice mi sono accorto di una cosa; la funzione on action theObject viene richiamata dall'oggetto theObject, che è l'oggetto collegato alla funzione stessa.

Se ci sono più oggetti collegati a quella funzione devi controllare quale oggetto richiama la funzione e regolarti di conseguenza.

Se invece la funzione è richiamata solamente dallo slider vuol dire che theObject è in realtà lo slider stesso, quindi dovrebbe bastare che scrivi:

on action theObject
set volume to content of theObject
end action

Se ti da di nuovo errore prova a controllare la sintassi del codice che sia tutta corretta.

Per esempio il modo in cui si imposta il volume, nel primo esempio scrivevi:

set volume volume1

quindi il codice giusto potrebbe essere:

on action theObject
set volume (content of theObject)
end action

Fammi sapere. :fiorellino:

Ciao!

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

quindi il codice giusto potrebbe essere:

on action theObject
set volume (content of theObject)
end action

Sostituendo con questo non mi da più Build Failed, ma in compenso quando provo a regolare il volume con lo slider (NSslider) mi da questo errore:

AppleScript Error

Can't make «class conT» of «class sliI» id 4 of «class boxO» id 3 of «class boxO» id 2 of window id 1 into type «class sing». (-1700)

...

Mi dai il tuo contatto di Messenger o iChat?

...

Link al commento
Condividi su altri siti

Ciao! :ghghgh:

Probabilmente è un problema di tipi di variabili.

Dovresti controllare nei dizionari che tipo di dato restituisce lo slider e che tipo di dato accetta il volume.

Di solito questo tipo di errori vengono fuori quando si cerca di assegnare un tipo di dato ad una proprietà di un'altro tipo.

Il mio contatto AIM è themacmomo, ma non penso che questi giorni sarò raggiungibile :fiorellino:, conviene che se c'è qualcosa la scrivi direttamente qui nel forum così se passo posso risponderti, ed eventualmente può farlo chiunque conosca la risposta :angioletto:.

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...