v1.0 1st release
==============
- Little move blocks
- left , right , up , down : move the current
sprite on the screen (1 pixel in that
direction) to move it to a specific place
on the stage.
- left _ , right _ , up _ , down _ : move the
current sprite on the screen (1 pixel in
that direction) to move it to a specific
place on the stage.
- center horizontally (on the stage)
- center vertically (on the stage)
v1.1
===
- Pivot blocks
- set pivot to my center
- move horizontal pivot to _
- move vertical pivot to _
v1.2
===
- Alignment blocks
- _ alignment of _ <> with _ offset _
(ex: left-left 0 alignment of sprite with
sprite2 offset 10)
- distribute sprites _ <> _ on the stage
(keep natural order t/f)
(ex: distribute sprites sprite sprite2
sprite3 <> vertically on the stage true)
- Object helper : an object picker to use
with "distribute sprite" block
v1.3
===
- Alignment blocks
- distribute free space between sprites _
<> _ ( keep natural order _ )
(ex: distribute free space between
sprites sprite sprite2 sprite3 <>
vertically ( keep natural order true)
v1.4
===
Add a demo for alignment aud distribute blockdata:image/png;base64,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.0 1st release
==============
- Little move blocks
- left , right , up , down : move the current
sprite on the screen (1 pixel in that
direction) to move it to a specific place
on the stage.
- left _ , right _ , up _ , down _ : move the
current sprite on the screen (1 pixel in
that direction) to move it to a specific
place on the stage.
- center horizontally (on the stage)
- center vertically (on the stage)
v1.1
===
- Pivot blocks
- set pivot to my center
- move horizontal pivot to _
- move vertical pivot to _
v1.2
===
- Alignment blocks
- _ alignment of _ <> with _ offset _
(ex: left-left 0 alignment of sprite with
sprite2 offset 10)
- distribute sprites _ <> _ on the stage
(keep natural order t/f)
(ex: distribute sprites sprite sprite2
sprite3 <> vertically on the stage true)
- Object helper : an object picker to use
with "distribute sprite" block
v1.3
===
- Alignment blocks
- distribute free space between sprites _
<> _ ( keep natural order _ )
(ex: distribute free space between
sprites sprite sprite2 sprite3 <>
vertically ( keep natural order true)
v1.4
===
Add a demo for alignment aud distribute block10101010Center this sprite horizontally on the stage
Block by Loucheman v1.0Center this sprite vertically on the stage
Block by Loucheman v1.0de:Kostüm aus Text _ Größe _
pt:um traje com o texto _ de tamanho _
A72This is a message !480360Return a costume from commands.Last position will be the pivot.
ex:
goto 0,0
pen down
move 10
rotate 90
move 10de:Kostüm aus Text _ Größe _
pt:um traje com o texto _ de tamanho _
ca:vestit amb el text _ i mida _
Finds each instance of a block or variable in a project and shows the script(s) it is in (minus any hat block)
If you enter plain text, it will return scripts that contain that text.
Note: You need to right-click and ringify the block/variable being searched for
Cymplecy block thk!result1key1resultvaluesprite refall spritesReturn a new costume of the color of your choice.
Block by Loucheman§_costumesMenu§_costumesMenuthingframeDo an aligment on sprite1 over sprite 2
left-left mean left of the 1st sprite will be align with left of the 2nd sprite
Block by Loucheman (v1.03)left-leftleft-left
right-right
top-top
bottom-bottom
center horizontal
center vertical
center h & v
left-right
right-left
top-bottom
bottom-top
pivot-pivotmyself§_objectsMenuchoose...§_objectsMenu0the 2nd sprite can be the stage... no error in this case...0can't align a sprite with itself: remove it from the list...sprite1no offset in this caseno offset in this caseno offset in this caseno offset in this casev1.00 : Original block : only left alignment
v1.01 : Fusion of 4 blocks (left,right,top,bottom) into 1 block
Adding alignment parameter (left,right,top,bottom)
v1.02 : More alignment parameters (now left-left,right-right,
top-top,bottom-bottom,center horizontal,center vertical,
left-right,right-left,top-bottom,bottom-top,pivot-pivot)
v1.03 : Adding offset parameterObject name picker
It's an helper block for the distribute horizontally and vertically blocks
See inside the block for more info...
Block by Loucheman§_objectsMenuHow to use it ?Drop it into this slot
VCatch errors.
Runs the first script. If it succeeds, nothing else happens.
But if it has an error (something that would otherwise result
in a red halo around the block), then the second script is run,
with the text of the error message that would have been shown in the variable ERROR.pt:tenta executar _ e, em caso de erro _ , executa _
ca:prova de forma segura _ i si _ _
Catch errors in a reporter.
Evaluates its first input. If that expression successfully reports a value, this block reports that value. If the expression causes a Snap! error,
then the final input slot is evaluated with the text of what would have
been the error message in variable ERROR. SAFELY TRY then reports the value of that final expression.
Sometimes you'll want to throw an error in the final expression. You
can put an ERROR block inside a CALL block to do that.ca:prova de forma segura reportant _ i si _ reportant _
errLET (FOO) BE (5)
is equivalent to
SCRIPT VARIABLES (FOO)
SET (FOO) TO (5)pt:cria a variável de guião _ com valor _
Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.ca:elimina els duplicats de _
Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot. For a list of numbers, using < as the comparison function will sort from low to high; using > will sort from high to low.ca:ordena _ segons criteri _
The second input is an "association list," a list of two-item lists. Each of those smaller lists has a "key" as its first item and a "value" as its second. ASSOC reports the first key-value pair in the association list whose key matches the first input.ca:associació _ _
This block carries out the given script for each item of the given list, like the primitive FOR EACH.
What's different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.ca:_ per cada _ de _ _
1Takes a (possibly deep) list as input,
and reports a human-readable text form
of the list (namely, Lisp notation).
Will not work on circular lists.ca:notació textual de _
()SENTENCE is the main constructor for sentences, represented
as lists of words. It takes zero or more inputs, each of which can
be either a list or a text string. If a list, the input is assumed to be
a list of words. If a text string, it is converted to a list of words using
SENTENCE→LIST. Then all the lists of words are appended to form a new list of words.
If the inputs are lists of lists rather than lists of words, SENTENCE,
like APPEND, does only one level of flattening, reporting a list of
all the items of all the input lists.ca:frase _
ZIP takes any number of lists as inputs. The lists should all be the same length. ZIP reports a list of lists in which the first item is a list of all the first items, the second item is a list of all the second items, etc.
Viewing the inputs as the rows of a matrix, ZIP reports its transpose.The identity function reports its input.Takes as input a function of N inputs and N lists.
The function is called with item 1 of all the lists as its inputs, with item 2 of all the lists as its inputs, and so on. (The lists should all be the same length.)ca:multi-mapeja _ sobre _
Takes a sentence in text string form and reports the sentence as a list of its words.de:Satz $arrowRight Liste _
ca:frase $arrowRight llista _
es:frase $arrowRight lista _
fr:phrase $arrowRight liste _
pt:uma lista com as palavras da frase _
de:animiere Setter _ Getter _ Delta _ über _ Sek. beschleunigt _
ca:modifica setter _ i getter _ amb delta _ en _ segons de forma _
pt:anima com modificador _ e inspector _ de _ em _ s de forma _
501de:Grad _
ca:graus de _ radians
pt:_ radianos em graus
0.5de:Fehler _
pt:assinala o erro _
de:gleite _ in _ Sek. beschleunigt: _
ca:llisca _ en _ segons de forma _
fr:glisser _ en _ sec. accélérer _
pt:desliza _ em _ s de forma _
501linearlinear
quadratic={
quadratic-in
quadratic-out
quadratic-in-out
}
cubic={
cubic-in
cubic-out
cubic-in-out
}
quart={
quart-in
quart-out
quart-in-out
}
sinusoidal={
sine-in
sine-out
sine-in-out
}
elasticend time1000deltaXdeltaYde:animiere _ um _ in _ Sek. beschleunigt: _
ca:modifica _ amb _ en _ segons de forma _
pt:anima _ de _ em _ s de forma _
x positionx position
y position
direction
size
ghost effect
color effect
saturation effect
brightness effect
fisheye effect
whirl effect
pixelate effect
mosaic effect
negative effect
tempo
volume
balance501linearlinear
quadratic={
quadratic-in
quadratic-out
quadratic-in-out
}
cubic={
cubic-in
cubic-out
cubic-in-out
}
quart={
quart-in
quart-out
quart-in-out
}
sinusoidal={
sine-in
sine-out
sine-in-out
}
elasticy positiondirectionsizetempovolumebalance1012de:Beschleunigung _
ca:de forma _
pt:a forma _
linearlinear
quadratic={
quadratic-in
quadratic-out
quadratic-in-out
}
cubic={
cubic-in
cubic-out
cubic-in-out
}
quart={
quart-in
quart-out
quart-in-out
}
sinusoidal={
sine-in
sine-out
sine-in-out
}
elasticquadratic-inquadratic-outquadratic-in-outcubic-incubic-outcubic-in-outquart-inquart-outquart-in-outsine-insine-outsine-in-outelasticunknown easing function ""de:für _ = _ bis _ _ in _ Sek. beschleunigt: _ _
ca:per _ = _ fins _ _ en _ segons de forma _ _
pt:para _ de _ a _ _ em _ s de forma _ _
01001linearlinear
quadratic={
quadratic-in
quadratic-out
quadratic-in-out
}
cubic={
cubic-in
cubic-out
cubic-in-out
}
quart={
quart-in
quart-out
quart-in-out
}
sinusoidal={
sine-in
sine-out
sine-in-out
}
elasticDistribute a list of sprite on the stage with the same spacing between sprites
Sprites: Write sprites name into the variadic slot or you can use the helper block (an object picker).
Sprite can be: the name of a sprite, an object (like my self or a clone), a list of object (like"my other sprites" or your own list)
keep natural order :
true: display sprites on the screen in natural order
(left to right / top to botton) order to
false: display sprites on the screen ordered in order
of the parameters
See inside the block for an example of how to use the helper block to pick a sprite.
Block by Loucheman v1.1verticallyvertically
horizontallytruespritesno duplicated sprites allowed...verticallyspritesreverse: because draw botton to topspacingStagevalue1where to left alignStage#itemwherewhere to left alignspacingStagevalue1where to left alignStage#itemwherewhere to left alignpt:o texto multilinha _
ca:multilínia _
If input is TRUE, comparisons made by functions in the string library will be case-independent (so "FOO" = "foo"). This is the default.
If input is FALSE, comparisons will be exact.pt:altera comparações ignorando distinção minúsculas/maiúsculas para _
ca:ignora la diferenciació de majúscules _
Reports True if the first input string contains the second input string, otherwise false.
Comparison is case-independent by default; use USE CASE-INDEPENDENT COMPARISONS to change that.pt:o texto de _ antes de _
ca:text _ conté _ ?
Calculate the distance between 2 positions (x1y1 -> x2y2) or 2 objects.Détermine x2y2212Si le paramètre est une coordonnéePytagore:on trouve la longueur de l'hypoténuse22Set the horizontal pivot (rotation center) to the left, center or right of the sprite.
Block by Loucheman v1.0leftleft
center
rightSet the vertical pivot (rotation center) to the top, center or bottom of the sprite.
Block by Loucheman v1.0toptop
center
bottomSet the pivot (rotation center) in the middle of the costume (x & y)
Block by Loucheman v1.0Distribute a list of sprite on the stage with the same spacing between sprites
Sprites: Write sprites name into the variadic slot or you can use the helper block (an object picker). You need at least 3 sprite to see an effect...
Sprite can be: the name of a sprite, an object (like my self or a clone), a list of object (like"my other sprites" or your own list)
keep natural order :
true: display sprites on the screen in natural order
(left to right / top to botton) order to
false: display sprites on the screen ordered in order
of the parameters
See inside the block for an example of how to use the helper block to pick a sprite.
Block by Loucheman v1.1verticallyvertically
horizontallytruespritesno duplicated sprites allowed...verticallynatural order: order by top of each spritespritesreverse: because draw botton to topspacingvaluevaluevalue1where to alignvaluefind the lowest bottom from sprite list, will draw the 1st sprite on the botton from this point#itemwherewhere to alignspacingvaluevaluevalue1where to alignvaluefind the leftiest (?) from sprite list, will draw the 1st sprite on the left from this point#itemwherewhere to alignButton costume from text v1.1
By Loucheman
Create a costume for any button you want !
text: text on the button
Size: size of text
MarX: left and right margin to increase the width of the button
MarY: save as MarX but fot height
pensize: thickness of the line
Thk Dardoro for the color picker functionality.Button2020105centerleft
center
rightcenterupper
center
bottom7272pt:a soma de _
Reports the portion of the first input string starting after the first occurrence of the second string. If the second string isn't found in the first string, reports an empty string.pt:o texto de _ depois de _
Reports the character position (starting from 1) of the beginning of the first input string inside the second input string.
If it's not found, reports 0.pt:a posição de _ em _
err_resetReports the input text with lower case letters instead of capital letters in the input. Uses the user's locale's rules for case conversion.pt:em minúsculas _
Reports the portion of the first input (string) starting at the position given by the second input (counting from 1, like LETTER n OF) and ending at the position given by the third input (also counting from 1). If the third input is empty, reports the portion from the first position to the end of the string.
If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.pt:o texto de _ entre as posições _ e _ , inclusive
Reports the part of the first string up to the first instance of the second string inside it. If the second string isn't found, reports the entire first string.pt:o texto de _ antes de _
Takes three inputs for red, green, and blue
values, each between 0 and 255. 0,0,0 is black; 255,255,255 is white. 255,255,0 is yellow, and so on.
The SET PEN block in this library lets you set individual red, green, or blue without changing the others, lets you provide a list of three RGB color components, and lets you provide a six-digit hexadecimal number, the form in which RGB color values are usually found online.
See Appendix A of the Snap! Reference Manual for details.pt:altera a cor da tua caneta para vermelho _ , verde _ e azul _ (0 a 255)
ca:fixa el llapis al color r: _ g: _ b: _
25500Button costume from text v1.2
By Loucheman
Create a costume for any button you want !
text: text on the button
Size: size of text
MarX: left and right margin to increase the width of the button
MarY: save as MarX but fot height
pensize: thickness of the line
Thk Dardoro for the color picker functionality.Button2020105centerleft
center
rightcenterupper
center
bottom§_objectsMenudata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==true100100100100100Demo alignmentalignment type00Demo distribute horizontally on the stage4040Demo distribute vertically on the stage2020Demo - Align buttons on the screenhorizontal buttons setupleft-left,right-right,top-top,bottom-bottom,center horizontal,center vertical,center h & v,left-right,right-left,top-bottom,bottom-top,pivot-pivot