PDA

View Full Version : Exchanging information between Floaters


KaMe
04-11-2004, 10:37 PM
Ok, here is an example script that i made just to show what i'm talking about.


global porcentagem = 0
global plbl = "0%"

rollout progress_roll "Progress"
(
progressbar pb height:30 width:274 color:(color 0 255 0)
label lbl "0%"

on Progress_roll open do
(
pb.value = porcentagem
lbl.text = plbl
)
)

rollout create_roll "Create Boxes"
(
button btn "Create Boxes" height:50
spinner spn "Number" width:100 type:#integer range:[0,100000,0]

on btn pressed do
(
for y=1.0 to spn.value do
(
global porcentagem = ((y/spn.value)*100)
porc = porcentagem as integer
global plbl = porc as string + "%"
destroydialog progress_roll
createdialog progress_roll 300 60
newbox = Box()
)
destroydialog progress_roll
)
)

myflo = newRolloutFloater "Create Boxes" 200 120
addrollout create_roll myflo


What i was trying to do is, when you click on a button, it opens a new Dialog with a progress bar, when the progress gets to 100% the dialog will automatcly close.

The script above works, but it is 2x slower then the same script without the new dialog. (It keeps closing and opening the dialog to update it).

I would like to know if there is an better way of doing this?

Bobo
04-11-2004, 10:53 PM
Originally posted by KaMe


The script above works, but it is 2x slower then the same script without the new dialog. (It keeps closing and opening the dialog to update it).

I would like to know if there is an better way of doing this?


--you don't need these anymore:
--global porcentagem = 0
--global plbl = "0%"

rollout progress_roll "Progress"
(
progressbar pb height:30 width:274 color:(color 0 255 0)
label lbl "0%"
)

rollout create_roll "Create Boxes"
(
button btn "Create Boxes" height:50
spinner spn "Number" width:100 type:#integer range:[0,100000,0]

on btn pressed do
(
createdialog progress_roll 300 60 --create once when starting
for y=1 to spn.value do --don't need 1.0 here, see below
(
local porcentagem = 100.0*y/spn.value --because 100.0 is a Float, the result will be Float, too
progress_roll.pb.value = porcentagem --assign directly to the value in the open dialog
progress_roll.lbl.text = (porcentagem as integer) as string + "%" --assign the string using integer to the label
newbox = Box() --create the box
sleep 0.01 --wait a 1/100 second, otherwise the script is so fast
--you would not see the progressbar with 100 boxes :o)
--remove the line to get max. speed!
)
destroydialog progress_roll --destroy when ready
)
)

myflo = newRolloutFloater "Create Boxes" 200 120
addrollout create_roll myflo


Some timing tests with the old and the new one:
(Using Dual Athlon MP 2800+, YMMV)

*Creating 1000 boxes with your script took 16.61 seconds.
*Creating 1000 boxes with the new one (without the 0.01 delay) took 1.844 seconds!


Bobo

KaMe
04-14-2004, 05:13 PM
Thanks Bobo :thumbsup:
The script is much faster now :]

CGTalk Moderation
01-17-2006, 08:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.