Random value generators
In this section:
Utils.randomColor() is useful when any old color will do.
Utils.randomColor() without arguments will return a randomly chosen color with 100% opacity.
layer = new Layer backgroundColor: Utils.randomColor()
In the upcoming ‘Lotto numbers’ example project we give each circle a random color with 70% opacity.
circle = new Layer borderRadius: "50%" backgroundColor: Utils.randomColor .7
Utils.randomNumber() will return a random number within a range that you specify.
Utils.randomNumber a, b
a — The lowest possible number.
b — The highest possible number.
The function does not return whole numbers; the result will have many decimals:
print Utils.randomNumber 1, 100 » 59.59754673670977
That’s why in the example project on the next page we pass Random Number’s result through 🛠 Round to get an integer.
circle = new Layer html: Utils.round Utils.randomNumber 1, 59
Lotto numbers example
This prototype will show six numbers between 1 and 59, generated by the Random Number utility.
The circles get their colors by calling Random Color with an opacity of 70%.
Some numbers may appear twice because the code doesn’t check for doubles.
Utils.randomImage will grab a random image for your layer from unsplash.com.
layerA = new Layer image: Utils.randomImage()
Using it like this will download the biggest version of the image, though, and a 1024 by 1024 JPG is probably overkill for most layers.
It’s better to pass the function a layer, by calling it after you’ve created the layer. This will optimize the size of the downloaded image for the size of the layer, and also reuse the same image.
layerB = new Layer layerB.image = Utils.randomImage layerB
The image is chosen randomly from a collection of ~30 preselected images. If you have a favorite, you can select it by passing the function a number instead of a layer.
layerC = new Layer image: Utils.randomImage 5
But this will download a 1024 pixel image again since you can’t pass in a layer and a number at the same time (the function accepts only one parameter).
Random Image example
# Unoptimized, will download a big (1024) image layerA = new Layer x: Align.center -250 y: Align.center image: Utils.randomImage()
# Preferred use layerB = new Layer point: Align.center layerB.image = Utils.randomImage layerA
# Selecting an image # (will also download a 1024 version) layerC = new Layer x: Align.center 250 y: Align.center image: Utils.randomImage 5