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 block
10
10
10
10
Center this sprite horizontally on the stage Block by Loucheman v1.0
Center this sprite vertically on the stage Block by Loucheman v1.0
de:Kostüm aus Text _ Größe _ pt:um traje com o texto _ de tamanho _ A72
This is a message !
480360
Return a costume from commands.Last position will be the pivot. ex: goto 0,0 pen down move 10 rotate 90 move 10
de: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 sprites
Return a new costume of the color of your choice. Block by Loucheman
§_costumesMenu
§_costumesMenuthing
frame
Do 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 parameter
Object 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 V
Catch 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 _ err
LET (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 _ _
1
Takes 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 _ 501
de:Grad _ ca:graus de _ radians pt:_ radianos em graus 0.5
de: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 time1000deltaXdeltaY
de: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 positiondirectionsizetempovolumebalance1 012
de: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 } elastic
Distribute 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.1
verticallyvertically horizontallytruespritesno duplicated sprites allowed...verticallyspritesreverse: because draw botton to topspacingStagevalue1where to left alignStage#itemwherewhere to left alignspacingStagevalue1where to left alignStage#itemwherewhere to left align
pt: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énuse22
Set the horizontal pivot (rotation center) to the left, center or right of the sprite. Block by Loucheman v1.0
leftleft center right
Set the vertical pivot (rotation center) to the top, center or bottom of the sprite. Block by Loucheman v1.0
toptop center bottom
Set the pivot (rotation center) in the middle of the costume (x & y) Block by Loucheman v1.0
Distribute 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.1
verticallyvertically 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 align
Button 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 bottom
72
72
pt: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_reset
Reports 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: _ 25500
Button 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
§_objectsMenu
data: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