Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
f3de

Cambiare Un Rollout In Tempo Reale

Recommended Posts

mi chiedevo come, se possibile cambiare il menu di un rollout in tempo reale magari tramite la scelta di un radiobutton.

per esempio:


test = newrolloutfloater "test" 250 200


rollout params "bones"
(
radiobuttons pippo labels:#( "1","2") default:1 pos:[80,25]

button 1 "1"


)

addrollout params test


[/codebox]

ora selezionando il radiobutton 2 vorrei che cambiasse il menu tipo che il bottone "1" sparisca e ci siano altri elementi.

ho provato con i vari if/do oppure if/then/else oppure "on radiobuttons.state changed do" ma evidentemente o non è la via giusta o sbaglio a scrivere qualcosa

Share this post


Link to post
Share on other sites

dai uno sguardo a questi

rollout params "bones" width:200 height:136(

	radiobuttons pippo labels:#( "1","2") default:1 pos:[80,25]

	button pulsante1 "1" visible:true

	button pulsante2 "2" visible:false

	on pippo changed valore do (

		pulsante1.visible = not pulsante1.visible

		pulsante2.visible = not pulsante2.visible

	)

)

test = newrolloutfloater "test" 250 200

addrollout params test
rollout params "bones" width:200 height:136(

	radiobuttons pippo labels:#( "1","2") default:1 pos:[80,25]

	button pulsante1 "1" enabled:true

	button pulsante2 "2" enabled:false

	on pippo changed valore do (

		pulsante1.enabled = not pulsante1.enabled 

		pulsante2.enabled = not pulsante2.enabled 

	)

)

test = newrolloutfloater "test" 250 200

addrollout params test


: :  Youtube : : 

Share this post


Link to post
Share on other sites

mmmhh.... ci siamo quasi però cosi mi funziona al primo "cambio" del radiobutton cioe se clicco sul 2, ma non funziona se torno alla scelta 1. comunque credo non sia possibile fargli "scrivere un menu piuttosto che un altro tramite radiobutton, al massimo posso fare apparire o sparie cose già presenti oppure disbilitarle e siccome nel mio caso c'era da cambiare più dche un bottone mi sa che devo trovare un altra strada.

Share this post


Link to post
Share on other sites

la questione non è subito semplice....

In pratica con i soliti metodi non è possibile creare interfacce dinamiche, come hai detto tu riesci ad abilitare o far apparire e scomparire le varie parti, ma non crearne delle nuove o toglierne delle vecchie.

per poter far questo devi crearti una stringa con il codice dello script del rollout creato tramite il tuo script in base alle opzioni scelte(non so se sono riuscito a spiegarmi molto bene) e poi eseguirla tramite la funzione execute.

Che non fa altro che prendere delle stringhe, leggerle ed eseguirle come se fossero script.

Questo se vuoi una cosa personalizzata.

ad esempio se crei una stringa

stringa="a=4 \n b=3 \n print (a+b)"
e poi la esegui
execute stringa
il risultato sarà 7, come se avessi creato uno script
a=4

b=3

print (a+b)

se all'interno della tua stringa devi aggiungere delle virgolette ad esempio per i nomi dei rollout, devi usare la \ prima di metterle, in questo modo maxscript capisce che sono un carattere della stringa e non la fine della stringa.

altrimenti cerca nella reference del maxscript "RolloutCreator Functions", sono una serie di funzioni implementate per la creazione di rollout dinamici(credo utilizzino sempre l'execute) ma almeno non devi sbatterti a creare la stringa.

non le ho mai usate e non so quanta libertà permettano, magari stasera ci do uno sguardo.

fammi sapere, ciao!!!!!

NB: col metodo dell'execute quando viene cambiata un'opzione che va a modificare il rollout prima di ricreare la stringa e lanciarla con l'execute ti consiglio di distruggere quello vecchio.

ciao!

Share this post


Link to post
Share on other sites

ok, intanto grazie per le risposte comunque stanotte ci ho sbattuto la testa e ho trovaqto questa soluzione:


pippo = newrolloutfloater "pippo" 250 300
rollout radio "radio" height:400
( radiobuttons rd "" labels:#("primo","secondo")
subrollout test "test"


on rd changed state do

if rd.state == 2 then

(AddsubRollout radio.test BB
removesubrollout radio.test AA
)
else
(AddsubRollout radio.test AA
removesubrollout radio.test BB
)


)


rollout AA "opzioni primo" height:150
(
spinner spA "spinner 1"
)
rollout BB "opzioni secondo" height:150
(
button btn1 "bottone 2"
checkbox ckb1 "checkbox 2" align:#center
)

addrollout radio pippo
AddsubRollout radio.test AA


radio.height += 150
radio.test.height += 80
[/codebox]

ora devo verificare se i componenti dei due rollout che appaiono/scompaiono poi funzionano effettivamente in base a quale dei due è al momento attivo.


Edited by f3de

Share this post


Link to post
Share on other sites

bella soluzione, comunque se non vuoi inestare dei rollout dentro a degli altri ti tocca passare per gli altri metodi.

mi sono permesso di fare un'aggiunta al tuo script:

global AA

global BB


pippo = newrolloutfloater "pippo" 250 300

rollout radio "radio" height:400

( radiobuttons rd "" labels:#("primo","secondo")

subrollout test "test"



on rd changed state do


if rd.state == 2 then


(AddsubRollout radio.test BB

removesubrollout radio.test AA

)

else

(AddsubRollout radio.test AA

removesubrollout radio.test BB

)



)



rollout AA "opzioni primo" height:150

(

spinner spA "spinner 1"

)

rollout BB "opzioni secondo" height:150

(

button btn1 "bottone 2"

checkbox ckb1 "checkbox 2" align:#center

)


addrollout radio pippo

AddsubRollout radio.test AA



radio.height += 150

radio.test.height += 80

è una cavolata, ho aggiunto le dichiarazioni globali all'inizio dello script dei rollout AA e BB in modo che la prima volta che esegui lo script non compaia il messaggio di errore e vada alla prima.

tienici aggiornati!!!!!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x