|
Post by Admin on Jan 28, 2021 14:41:29 GMT
Besides all the JavaScript functionality Tauon Basic Script Language offers following: print(text) - adds text to the console output warning(text) - adds warning to the console output (without program termination) error(text) - throws error to the console and terminates the program alert(text) - show an alert box with a specified text and an OK button. confirm(text) - show a dialog box with OK and Cancel buttons. Returns true if "OK" button pressed, false otherwise. prompt(text, default) - Show a dialog box with a specified text, input field, and an OK button. Returns user inputted string. say(text,lang="en-US") Say the text using language specified. Language constants: "de-DE" - German "en-GB" - United Kingdom English "en-US" - United States English (default) "es-ES" - Spanish "fr-FR" - French "it-IT" - Italian "ru-RU" - Russian (Cyrillic characters not supported yet - use translit) end() return to IDE or exit from the application if in standalone mode. isKeyDown(scanCode) - returns true if keyboard key with specified scan code is pressed. beep(pitch,duration,channel=0,resetQueue=false) plays simple beep sound, as in ZX Basic. Be aware that argument order differs. ZX Basic BEEP 1,0 equals to Tauon Basic beep(0,1) setOscillatorType(oscillatorType,channel=0) set the oscillator type of specified audio channel (0 by default). Supported types are: 'sine','square','sawtooth','triangle'. playSoundFrequency(frequency,duration,fade=0,channel=0,resetQueue=false) adds specified frequency to the play queue for the specified audio channel (0 by default). Parameter fade [0..1] specifies how much sound should fade through the duration. playMidiNote(note,duration,fade=0,channel=0,resetQueue=false) plays note by number (as per MIDI specification). Parameter fade [0..1] specifies how much sound should fade through the duration. playMusic(musicNotationString,channel=0,resetQueue=false) play complicated music track. The notation description you can find here. hexColorToRGBA(hexString) convert hex color to RGBA array paletteCharToHexColor(paletteChar,paletteIndex) returns hex color from Palette with index paletteChar (paletteIndex=0 - ZX Spectrum Palette, paletteIndex=1 - Commodore 64 Palette) exitOnAnyKey(exitOnAnyKeyPressed) call this function with false argument to prevent program from exit when any key is pressed. shellExec(cmd,func) execute Linux shell command and pass the result to function when done. If you define onUpdate function in your code, it will be constantly called 50-60 times per second; Small code samples: tauon.boards.net/thread/15/tauon-basic-script-examplesExamples distributed with TauonPC firmware: TauonBasicExamples.zip
|
|
|
Post by Admin on Jan 28, 2021 14:59:53 GMT
Screen global object, contains the following properties:
width - screen width. height - screen height. randX - get random X coordinate on the screen. randY - get random Y coordinate on the screen.
Functions:
Screen.setSize(width,height) width - new screen width height - new screen height
Example: Screen.setSize(320,240);
Screen.setMode(mode) mode - set one of the predefined screen modes: 0 - 320x180 1 - 640x360 2 - 1280x720 (default) 3 - 1920x1080
Example: Screen.setMode(0);
|
|
|
Post by Admin on Jan 28, 2021 15:00:32 GMT
Time global object, contains the following properties:
time - time since the current program is running in milliseconds. deltaTime - time passed since the last frame. smoothDeltaTime - smoothed time passed since the last frame. now - current system time in milliseconds. fps - average FPS. ticks - ticks passed since the program start.
|
|
|
Post by Admin on Jan 28, 2021 15:03:08 GMT
Stage global object, holds all sprites and sprite groups created.
Stage.clear(color) - clears the stage and sets background color if provided.
Stage.setBGColor(color) set background color.
|
|
|
Post by Admin on Jan 28, 2021 15:57:10 GMT
The Sprite global object holds all sprites functions. You can call functions directly (simplified version) or through the global object.
Sprite.createGroup(arguments,...) create new sprite group and add it to the Stage. You can pass various sprites as parameters to add them to the group.
Sprite.show(sprite) show the sprite on Stage.
Sprite.hide(sprite) hide the sprite from Stage.
Sprite.set(sprite,px,py,pz,rz,sx,sy) sets the position, z-order, rotation and scale of the sprite on stage.
Sprite.setScale(sprite,sx,sy) sets the scale of the sprite on stage.
Sprite.init(sprite) re-initialize sprite.
Sprite.loadFromUrl(src) returns sprite created from image found on URL.
Sprite.loadFromFile(fileName) returns sprite loaded from the local filesystem path.
Sprite.createFromChar(character,size,inkColor,paperColor,clampWidth,clampHeight,fontFace) returns sprite created from characters, LiberationMono and TwemojiMozilla font faces are supported.
Sprite.createFromEmoji(character,size,paperColor,clampWidth,clampHeight) returns sprite created from Emoji found in TwemojiMozilla font.
Sprite.createFromData(imageDataStr,width,height,paletteIndex) returns sprite created from imageDataStr, where each character represents pixel in palette [0..9A..Z]. The two default palettes have 17 colors [0..G]. You can use ' ' space character in string to mark a fully transparent pixel.
Sprite.createFromBin(bytesArray,width,height,inkColor="#FFFFFFFF",paperColor="#00000000") returns sprite created from binary data array. Each element of the array would be treated as a binary number [0..255]. Each bit of that number will define 8 pixels in the sprite. All bits equal to 1 would produce pixels with inkColor. Bits equal to 0 - with paperColor. If paperColor parameter is omitted, a transparent color would be used for 0 bits.
Sprite.isReady(sprite) returns true if sprite is loaded and initialized (loading sprites and creating them from font could take some time)
Sprite.whenReady(sprite,func) sets callback function that would be called when sprite is loaded and initialized.
Sprite.clone(sprite) returns cloned sprite or spritegroup. Make sure the source sprite is already fully loaded or function will throw an error.
Sprite.setFilter(sprite,filter) applies CSS filter to the sprite. supported filters are: none, blur(), brightness(), contrast(), drop-shadow(), grayscale(), hue-rotate(), invert(), opacity(), saturate(), sepia()
Examlpes: Sprite.setFilter(mySprite,"blur(10px)"); Sprite.setFilter(mySprite,"contrast(50%)"); Sprite.setFilter(mySprite,"grayscale(50%)"); Sprite.setFilter(mySprite,"hue-rotate(90deg)");
Sprite.setOpacity(sprite,value) or setSpriteOpacity(sprite,value) sets the opacity of the sprite or spritegroup. Example: Sprite.setOpacity(mySprite,"50%"); Sprite.setOpacity(mySprite,0.5);
|
|
|
Post by Admin on Jan 28, 2021 17:50:54 GMT
The Canvas global object holds functions related to canvas drawing. Properties: lineWidth - width of the strokes, in pixels. fillStyle - color or style to use when filling shapes. font - font style to use on canvas, default is "10px sans-serif" Functions: Canvas.init(color,contextAttributes) You must initialize the Canvas global object to use it. All functions and properties of CanvasRenderingContext2D are accessible, including: Canvas.fillText(text,x,y)Canvas.beginPath() Starts a new path by emptying the list of sub-paths. Call this method when you want to create a new path. Canvas.closePath() Causes the point of the pen to move back to the start of the current sub-path. It tries to draw a straight line from the current point to the start. Canvas.moveTo() Moves the starting point of a new sub-path to the (x, y) coordinates. Canvas.lineTo() Connects the last point in the current sub-path to the specified (x, y) coordinates with a straight line. Canvas.arc(x, y, radius, startAngle, endAngle [, anticlockwise]) Adds a circular arc to the current path. Canvas.arcTo(x1, y1, x2, y2, radius) Adds an arc to the current path with the given control points and radius, connected to the previous point by a straight line. Canvas.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle [, anticlockwise]) Adds an elliptical arc to the current path. Canvas.rect(x,y,width,height) Creates a path for a rectangle at position (x, y) with a size that is determined by width and height. Canvas.fillRect(x,y,width,height) Fills rectangle at position (x, y) with a size that is determined by width and height. Canvas.strokeRect(x,y,width,height) Stroke rectangle at position (x, y) with a size that is determined by width and height. Canvas.fill() fills the current path with the current fill style. Canvas.stroke() strokes (outlines) the current path with the current stroke style. Some additional functions implemented: Canvas.line(x1,y1,x2,y2) strokes line from (x1,y1) to (x2,y2) Canvas.circle(x,y,radius) creates a circular path at position (x, y) with a size that is determined by raidus. Canvas.strokeCircle(x,y,radius) Stroke circle at position (x, y) with a size that is determined by raidus. Canvas.fillCircle(x,y,radius)
|
|
|
Post by Admin on Jan 29, 2021 1:38:35 GMT
Tauon Basic Script language contains a powerful Music Notation interpreter, accessible through the playMusic function: The notation might start with BPM character sequence, for example, "BPM120" This defines the Tempo of the music. The default Tempo is 120.
You can set the current Octave with the O character, followed by the octave number (0-9). For example "O3" sets the third octave as a default one for the notes that will follow. The default octave is 4.
Capital letters represent single Note: C, D, E, F, G, A, B. R character represents Rest (pause). It is treated as a Note by the engine, so all duration modifications could be applied. # (sharp) symbol before Note raises the Note by a semitone (half-step up), for example, sharp C could be written as "#C". b (small B letter) before Note lowers the Note by a semitone (half-step down), for example, flat D could be written as "bD". To modify the octave of the Note - add a single number just after the Note: "C5" equals C from the fifth octave. This octave shift doesn't affect the notes that will follow. You can shift the octave up for the following Note using the "+" character. For example "O4 +C" equals C from the fifth octave. This octave shift doesn't affect the notes that will follow. You can shift the octave down for the following Note using the "-" character. For example "O4 -C" equals C from the third octave. This octave shift doesn't affect the notes that will follow. You can control the duration of notes that will follow using the L modifier. With L0 being the longest (Semibreve) and L6 being shortest (Hemidemisemiquaver). The dot "." character after the Note increases duration by half. Two dots ".." will increase the duration by 1/2+1/4 and so on. The slash character "/" after the Note will decrease its duration by half. Two slashes will decrease Note duration by the factor of four. The multiply character "*" after the Note will increase its duration by the factor of two. Two characters will increase Note duration by the factor of four. Underscore "_" character specifies that the following note is beamed with the current one
|
|