Skriptování

Popis jazyka
Id objektu
Import skriptů
Editace skriptu
Knihovna funkcí
Seznam operací
    pro položky, skupiny,
    síťové a ostatní operace
Spuštění skriptu
Práce s časovačem
Práce s událostmi
Ukázkové příklady

Popis jazyka

V Media Creator-u (MC) je použit skriptovací jazyk JavaScript založený na ECMAScript. Jde o jazyk popsaný mezinárodním standardem ISO/IEC 16262. Jazyk je hojně používán v prostředí web-u pod dialekty JavaScript, ActionScript, a JScript.
V MC je používán zejména pro zřetězení akcí prováděných nad objekty scény jako jsou obrázky, zvuky ap. Pro složitější operace lze použít veškerých možností, které ECMAScript nabízí, např. cyklů, podmínek ap.
Odchylky syntaxe
Vzhledem k nutnosti přepočítávat id objektů při importu z jiného .mc souboru jsou vybrané kontrukce ve skriptech MC odlišné od standardu ECMAScript.

Id objektu

Každý objekt vložený do dokumentu Media Creator-u (MC) má svoje jednoznačné celočíselné identifikační číslo (id). Toto číslo lze zjistit v seznamu médií (tlačítko Média v hlavním panelu) ve sloupci Id. Další možností je najetí kurzorem nad daný objekt a jeho id se zobrazí v nápovědné bublině. Konečně id se zobrazuje po vybrání objektu ve statusové liště.
Id objektu se používá ve skriptech pro identifikaci objektu, nad kterým chceme provést zvolenou operaci.
Objekty mohou být dále slučovány do skupin. Některé operace jsou určeny pro skupiny objektů. V tom případě se místo id objektu použije gid skupiny.
Jako id lze použít q.id(), což je id objektu, ke kterému je skript přiřazen. Například q.move(q.id(), dx, dy) posuned objekt, ke kterému je skript přiřazen, o hodnoty dx a dy. Kromě q.id() nesmí být jako id použito nikdy nic jiného než přímo zapsané celé dekadické číslo, protože při importu do jiného dokumentu dochází ke změně id položek včetně odpovídajícího přečíslování id ve skriptech a například ve skriptu i=2371; q.move(i, 100, 5); by potřebné přečíslování nenastalo.

Import skriptů

Při importování z jiného .mc souboru dojde automaticky k vytvoření položek pod jinými id a tudíž je třeba tato id ve skriptovacích operacích přepočítat. To je zajištěno automaticky.
Navíc je přepočet proveden pro následující syntaktické konstrukty, kde jsou obsažená čísla (number) brána jako id položek a při importu tudíž budou přepočítána.
// pole vyhradne cisel (number) pomoci konstruktoru new Array(),
// number je brano jako id polozky a bude pri importu prepocitano
new Array(number, number, ...)

// volani funkci pojmenovanych prefixem f_,s
// ciselne parametry (number) jsou brany jako id polozek 
// a budou pri importu prepocitany
f_XXX(..., number, number, ...)
Pokud je třeba vytvořit pole čísel, a tato nepřepočítat, je možné použít alternativní konstrukt pro vytváření polí, který nepoužívá klíčová slova new Array(). Co se týče funkcí, je třeba se vyhnout prefixu f_ v jejich názvu.
// tato cisla v poli se neberou jako id polozek a tudiz nebudou prepocitana
pole = [1, 2, 3];

Editace skriptu

Řada typů položek má v kontextovém menu, které se vyvolá pravým tl. myši, položku "ECMA script". Po jejím zvolení je spuštěn editor kódu , ve kterém je možné skript editovat.
Existuje rovněž položka obsahující právě pouze skript. Ten se v jejím kontextovém menu edituje volbou "Upravit".

Knihovna funkcí

První skript v dokumentu pojmenovaný "include" je automaticky zahrnut na začátek všech ostatních spouštěných skriptů. Takto lze např. připravit knihovnu funkcí, které mohou všechny skripty v dokumentu používat.
Pozor! Pokud se v "include" skriptu vyskytne syntaktická chyba, nebude fungovat žádný skript v dokumentu, dokud nebude chyba odstraněna.

Například:
Skript pojmenovaný "include" může mimo jiné obsahovat následující funkci.
// zrotuje predane pole polozek items_ids o uhel angle
function rotate_items(item_ids, angle) {
    for (var i = 0; i < item_ids.length; i++) {
        q.rotate(item_ids[i], angle);
    }
}
V dokumentu pak může být následující skript, který tuto funkci používá.
// zrotujeme polozky s id 3 a 4 o 45 stupnu
var id_polozek = new Array("3", "4");
rotate_items(id_polozek, 45);

Seznam operací

Media Creator-u (MC) je k dispozici níže uvedený seznam operací pracujících nad vloženými objekty (obrázky, zvuky, poznámky, ...). Hodnota id reprezentuje id objektu (celé kladné číslo), hodnota gid id skupiny (group) objektů. Pro zajištění propojení s MC je nutné každé operaci předřadit prefix q., např. q.show(). Jednotlivé operace je třeba od sebe oddělovat znakem ';', např. q.show(1); q.rotate(1, 30); provede zobrazení objektu s id=1 a jeho následné otočení o 30 stupňů.
OperacePopis
Operace pro jednoduché položky
q.id()Id položky, ve které je skript nadefinován.
int q.itemId(id) Vrátí předané id položky. Parametr se při exportu a importu správně přečísluje.
Využití viz příklad.
    function mojeFunkce(id)
    {
        ...
        q.hide(id);
        ...
        q.show(id);
        ...
    }
    
    var mojeId = q.itemId(1234); // precisluje se pri exportu/importu
    mojeFunkce(mojeId);
    mojeFunkce(1234); // neprecisluje se pri exportu/importu
    
int q.getIdByName(name)Pro předaný název vrátí id položky.
Pokud je v aktuální stránce nalezeno více položek odp. názvu, vrátí id některé z nich.
int q.getSnapMark(id)Vrátí značku položky mající dané id.
q.setSnapMark(id, snapMark)Nastaví značku položky mající dané id (bez uložení do souboru).
q.show(id)Zobrazení položky
q.showAt(id, x, y, width, height)Zobrazení položky na dané pozici a v dané velikosti.
q.hide(id)Skrytí položky
q.pos(id, x, y)Nastavení pozice položky.
Levý horní roh stránky má souřadnice 0,0.
q.move(id, dx, dy)Přesun položky.
Parametry dx, dy jsou celá čísla a určují posun po ose x a y.
q.scale(id, factor)Změna velikosti položky.
Parametr factor je reálné číslo > 0.
Hodnota < 1 značí zmenšení, > 1 zvětšení.
q.rotate(id, angle)Rotace položky.
Parametr angle je číslo a vyjadřuje úhel.
q.action(id)Vyvolání akce prováděné při poklepání na položku.
q.playAudio(id[, showPlayer]) Přehrání audio položky s daným id.
Pokud je druhý nepovinný parametr false, pak nezobrazí přehrávač.
q.playVideo2(id, [startVttIdx, stopVttIdx]) Přehrání video2 položky s daným id.
Položka musí ve stránce existovat. Nepovinné parametry určují počáteční a koncovou VTT záložku, na které se má přehrávání omezit (k videu musí existovat .vtt soubor).
NEPOUŽÍVAT q.playAudioFile(path[, showPlayer]) Přehrání audio souboru. V path je relativní cesta od umístění .mc souboru.
Pokud je druhý nepovinný parametr false, pak nezobrazí přehrávač.
Bude odstraněna z důvodu problémů s chybějícím id, použít q.playAudio(id).
Např.: q.playAudioFile("audio/red.mp3", false);
q.setLayer(id, layer) Nastavení vrstvy položky.
Vrstva je určena parametrem layer >= 0.
bool q.isLayer(id, layer) Ověření, jestli položka s daným id má vrstvu odp. par. layer.
Pokud ano, vrátí true (pravda), jinak false (nepravda).
q.switchLayer(id1, id2)Prohození vrstev dvou položek.
q.switchVisibility(id1, id2)Prohození viditelnosti dvou položek.
int q.getLastDropId() Vrátí ID naposledy upuštěné (drop) textové, či obrázkové položky,
nebo -1 v případě chyby.
bool q.isLastDropId(id) Porovnání id posledně upuštěné (drop) položky s hodnotou parametru id.
Pokud jsou shodné, vrátí true (pravda), jinak false (nepravda).
Lze použít pouze pro upuštění obrázku a textu.
Poznámka:
Pokud má být po upuštění položky automaticky spuštěn skript, lze s výhodou
použít obrázkovou mapu v režimu "drop", případně nastavit značku ve vlastnostech položky.
int q.getLastDragId() Vrátí id naposledy přesouvané (drag) jednoduché položky,
nebo -1 v případě chyby.
bool q.isLastDragId(id) Porovnání id posledně přesouvané (drag) jednoduché položky s hodnotou parametru id.
Pokud jsou shodné, vrátí true (pravda), jinak false (nepravda).
bool q.getSingleChoiceImageValue(id) Pokud položka pro výběr z obrázků existuje a obsahuje správnou volbu, pak vrátí true. Jinak vrátí false.
q.copyNewImg(id, x, y, width, height[, autoSave, script, edit]) Zkopírování obrázku s daným id na pozici x, y.
Kopie obrázku patří právě přihlášenému uživateli.
Pokud obrázek s daným id neexistuje, operace se neprovede.
Parametry width, height určují rozměry nového obrázku (kopie).
Nepovinné parametry autoSave, script, edit určují automatické ukládání
kopie obrázku při zavření editoru (autoSave=true), skript,
který je u kopie obrázku nastaven a konečně vynechání editace, pokud je par. edit nastaven na false (jinak je editace spuštěna).
q.mapImg(sourceId, targetId1, targetId2[, targetId3]) Namapování zdrojového obrázku sourceId do cílových obrázků
targetId1, targetId2, případně targetId3. Mapování je provedeno od levého horního rohu. Pokud některý cílový obrázek neexistuje, tak se jeho mapování přeskočí. Zdrojový obrázek existovat musí, jinak se operace neprovede. Cílové obrázky musí mít právě přihlášený uživatel právo modifikovat.
q.edit(id[, autoSave, undoLog]) Editace obrázku s daným id, pokud na to má uživatel oprávnění.
Pokud obrázek s daným id neexistuje, operace se neprovede.
Parametr autoSave nastavený na true vynechá dotaz na uložení a uložení je provedeno vždy automaticky.
Parametr undoLog nastaveny na false umožní editaci cizího obrázku (např. vypublikovaného) bez možnosti uložení změn do souboru.
// editace vypublikovaneho obrazku bez ukl. zmen do souboru
q.edit(q.id(), true, false); 
bool q.isOverRect(id, x, y, width, height) Ověření, jestli položka s daným id překrývá obdélníkovou oblast
zadanou parametry x, y, width, height. Pokud ano, vrátí true (pravda),
jinak false (nepravda).
bool q.isOverItem(idItem1, idItem2) Ověření, jestli položka s daným id=idItem1 překrývá položku s id=idItem2.
Pokud ano, vrátí true (pravda), jinak false (nepravda).
Pokud některá položka neexistuje, vrátí false.
Určeno pouze pro položky, nikoli pro skupiny.
bool q.isVisible(id) Ověření, jestli je položka s daným id viditelná.
Pokud ano, vrátí true (pravda), jinak false (nepravda).
q.saveItemState(id) Uchování stavu položky do paměti.
q.restoreItemState(id) Obnova stavu položky uchované pomocí q.saveItemState(id).
q.deleteItemState(id) Výmaz uchovaného stavu položky z paměti.
string q.getOCRText(id, lang[, whitelist, trans, onechar]) Získání řetězce pro OCR položku s daným id.
Parametr lang (jazyk) může být "ces", nebo "eng".
Parametr whitelist (možné znaky) je nepovinný a může být i prázdný, pro převod čísel může jít např. o "0123456789".
Parametr trans (přepsat na tiskací) je nepovinný,
může být true (přepsat), nebo false (nepřepisovat - výchozí).
Parametr onechar (jeden znak) je nepovinný,
může být true (předpokládá se jeden znak), nebo false (více znaků - výchozí).
Příklad:
q.getOCRText(12, "eng", "", true, false);
string q.getLastOCRText(lang[, whitelist]) Získání posledního OCR řetězce.
Parametr lang (jazyk) může být "ces", nebo "eng".
Parametr whitelist (možné znaky) je nepovinný,
pro převod čísel může jít např. o "0123456789".
Příklady:
q.getLastOCRText("ces");
q.getLastOCRText("ces", "0123456789");
q.getLastOCRText("eng", "yesYESnoNO");
string q.getLastOCRNumbers() Získání posledního OCR řetězce čísel.
Jedná se o ekvivalent q.getLastOCRText("eng", "0123456789")
string q.getTextField(id) Získání řetězce textového pole s daným id.
Příklad:
var s = q.getTextField(1); // id pole je 1
q.alert(s); // zobrazeni ziskaneho rezezce
number q.getX(id) Získání x-ové souřadnice položky s daným id.
number q.getY(id) Získání y-ové souřadnice položky s daným id.
number q.getWidth(id) Získání šířky položky s daným id.
number q.getHeight(id) Získání výšky položky s daným id.
q.flipImg(id, horizontal, vertical) Zrcadlení obrázku.
Parametry horizontal, vertical jsou typu bool a mohou nabývat hodnot true/false.
Příklad:
// id obrazku je 1, bude prekopen jen horizontalne
q.flipImg(1, true, false);
q.gifPlay(id) Pokud jde o animovaný gif, spustí jeho animaci.
q.gifPause(id) Pokud jde o animovaný gif, pozastaví jeho animaci.
q.gifStop(id) Pokud jde o animovaný gif, zastaví jeho animaci.
q.gifModify(id, playMode, onClick, repeatMode[, repeatCount = 0]) Pokud jde o animovaný gif, změní jeho nastavení (bez uložení do souboru).
Parametr playMode nabývá hodnot 0 (spustit automaticky), 1 (po kliknutí), 2 (skriptem).
Parametr onClick nabývá hodnot 0 (nereagovat na kliknutí), 1 (klik pro play&pause).
Parametr repeatMode nabývá hodnot 0 (bez opakování), 1 (stále opakovat), 2 (zadaný počet opakování podle par. repeatCount).
q.animate(curveId, time, type[, scriptId=0, repeat=false]) Animace po křivce. Lze vložit do skriptu vybraných objektů, např. obrázků. Par. curveId je id křivky (např. lomené čáry), po které se bude posouvat, time určuje dobu pohybu v ms, type typ pohybu (0 lineární, ...). Volitelný par. scriptId určuje id skriptu k vykonání po dokončení animace (0 zn. bez skriptu). Volitelný par. repeat nastavený na true umožňuje opakované spuštění animace.
q.animateItem(itemId, curveId, time, type[, scriptId=0, repeat=false]) Animace po křivce curveId (např. lomená čára) pro položku určenou parametrem itemId. Význam ostatních parametrů je shodný jako u operace q.animate() viz výše.
Operace pro skupiny (gid je id skupiny)
int q.groupId(gid) Vrátí předané id skupiny. Parametr se při exportu a importu správně přečísluje.
Viz též obdobná operace q.itemId() pro jednoduché položky.
q.showGroup(gid)Zobrazení (zviditelnění) skupiny položek.
q.hideGroup(gid)Skrytí skupiny položek.
q.actionGroup(gid)Vyvolání akce prováděné při poklepání na skupinu položek.
q.posGroup(gid, x, y)Změna pozice skupiny položek.
Levý horní roh stránky má souřadnice 0,0.
q.moveGroup(gid, dx, dy)Přesun skupiny položek.
Parametry dx, dy jsou celá čísla a určují posun po ose x a y.
q.scaleGroup(gid, factor)Změna velikosti skupiny položek.
Parametr factor je reálné číslo > 0.
Hodnota < 1 značí zmenšení, > 1 zvětšení.
q.rotateGroup(gid, angle)Rotace skupiny položek.
Parametr angle je číslo a vyjadřuje úhel.
bool q.isGroupVisible(gid)Test viditelnosti skupiny položek s daným gid.
Síťové operace
bool q.isLoggedIn() Test přihlášení uživatele na server MCWS (Media Creator Web Server).
string q.getUserRole() Získání role na síť přihlášeného uživatele.
Možné hodnoty jsou "admin", "teacher" a "student".
q.pubTest() Umožňuje přihlášenému učiteli zadat žákům test k vypracování.
Pouze pro interní využití generátorem odeslání testů.
q.sendRes() Umožňuje přihlášeným žákům odeslat vyřešený test.
Pouze pro interní využití generátorem odeslání testů.
q.getTestPageOrd() Získání pořadí strany aktuálního testu.
Pouze pro interní využití generátorem odeslání testů.
q.resetTestPageOrd() Vyresetování pořadí strany aktuálního testu.
Pouze pro interní využití generátorem odeslání testů.
q.getTestId() Získání id aktuálního testu.
Pouze pro interní využití generátorem odeslání testů.
q.resetTestId() Vyresetování id aktuálního testu.
Pouze pro interní využití generátorem odeslání testů.
Ostatní operace
q.exit([prompt = true]); Ukončení aplikace.
Pokud je prompt nastaven na true (přednastaveno),
pak zobrazí dotaz "Opravdu ukončit?".
q.showFloatMainMenu(); Zobrazí hlavní menu v okně. Použití zejména v režimu bez panelů.
string q.getTitleResource() Získání složky a názvu souboru titulu, např. "pub_test1/pub_test1.mc".
Zejména pro interní využití generátorem odeslání testů.
q.alert(message)Zobrazení okna s hlášením dle parametru message.
Hlášení je řetězec, tj. musí být obklopený apostrofy nebo uvozovkami.
q.dice([n = 6])Spuštění hrací kostky (rulety). Může být předán par. n určující počet dílků.
q.diceAtScreenPos(x, y [, n = 6])Spuštění hrací kostky (rulety) na zadaných souřadnicích obrazovky.
Může být předán par. n určující počet dílků.
q.diceAtScenePos(x, y [, n = 6])Spuštění hrací kostky (rulety) na zadaných souřadnicích scény.
Může být předán par. n určující počet dílků.
q.vkeyb()Spuštění virtuální klávesnice.
q.showColPal()Zobrazení plovoucí palety barev.
q.showColPalAt(x, y)Zobrazení plovoucí palety barev
na zadané pozici scény.
q.hideColPal()Skrytí plovoucí palety barev.
q.showRuler(x, y, angle, scale[, length]) Zobrazení rovného pravítka na dané pozici, v daném natočení, měřítku (hodnota 1 odpovídá 1:1) a délce (pokud nezadána použije se výchozí délka pravítka v 660px).
q.showTrigRuler(x, y, angle, scale)Zobrazení trojúhelníku na dané pozici, v daném natočení a měřítku (hodnota 1 odpovídá 1:1).
q.showProtractor(x, y, angle, scale)Zobrazení úhloměru na dané pozici, v daném natočení a měřítku (hodnota 1 odpovídá 1:1).
q.showCompass(x, y, angle, length[, height = 0]) Zobrazení kružítka na dané pozici, v daném natočení a délce rozevření (length). Pokud je height > 0, pak se také nastaví výška kružítka.
q.hideRuler()Skrytí rovného pravítka.
q.hideTrigRuler()Skrytí trojúhelníku.
q.hideProtractor()Skrytí úhloměru.
q.hideCompass()Skrytí kružítka.
q.setTool(ord)Nastavení grafického nástroje.
Hodnoty ord: 0-výběr, 1-obdélník, 2-text, 3-volný tah, 4-elipsa,
5-čára, 6-ruka, 7-kyblík s barvou, 8-kapátko, 9-guma, 10-zvýrazňovač,
12-položka OCR, 13-polygon, 14-geometrický bod, 15-textové pole.
Hodnota 11 (tl. vkládání IC) je pro operaci q.setTool() nepoužitelná.
q.setPenWidth(width)Nastaví tloušťku tahu na width.
Povolené hodnoty width jsou od 1 do 22.
q.showPerTab()Zobrazení periodické tabulky chem. prvků.
q.sleep(time)Prodleva v ms dle parametru time.
Pozor, blokuje pouze kód MC, nikoli kód skriptu.
Pro blokování skriptu je třeba použít časovač.
q.showShade([alpha])Překryje stránku poloprůhlednou fólií.
Paramet alpha, pokud je uveden, nabývá hodnot 0-255.
q.hideShade()Skryje poloprůhlednou fólii.
q.newImg(x, y, width, height, fileDialog=false, edit=true)Vložení nového obrázku na pozici x, y a spuštění jeho editace.
Parametry width, height určují rozměry obrázku.
Obrázek patří právě přihlášenému uživateli.
Pokud fileDialog nastaven na "true", tak se obrázek vloží pomocí dialogu.
Pokud edit nastaveno na "false", tak se po vložení nespustí editace obrázku.
q.clearFreeHand()Smazání kreslení vytvořeného nástrojem volný tah aktuálně přihlášeným uživatelem.
q.hideFreeHand()Skrytí kreslení vytvořeného nástrojem volný tah.
q.showFreeHand()Zobrazení kreslení vytvořeného nástrojem volný tah.
q.drawFreeHand(x, y, dx, dy, color, lineWidth, highLighter = false); Nakreslení segmentu čáry volného tahu od bodu [x,y] v délce dx,dy barvou color (formát #aarrggbb) a tahem o síle lineWidth bodů. Pokud je poslední par. highLighter nastaven na true, pak je místo volného tahu použito kreslení zvýrazňovačem.
q.eraseFreeHand(x, y, dx, dy, eraserWidth); Vymazání segmentu čáry volného tahu od bodu [x,y] v délce dx,dy šířkou stopy gumy eraserWidth (už zahrnuje vynásobení preferenci eraserWidthMul a vydělení zoomem scény).
string q.getFgCol() Získání aktuální barvy popředí (tahu).
Získaná hodnota je ve formátu #, pak 2 hex znaky pro alfa složku,
2 hex znaky pro červenou, 2 zelenou, 2 modrou, např. '#ff0000ff'.
q.setFgCol('#aarrggbb') Nastavení aktuální barvy popředí (tahu).
Předaný parametr je ve formátu #, pak 2 hex znaky pro alfa složku,
2 hex znaky pro červenou, 2 zelenou, 2 modrou, např. '#ff0000ff'.
string q.getBgCol() Získání aktuální barvy pozadí (výplně plochy).
Získaná hodnota je ve formátu #, pak 2 hex znaky pro alfa složku,
2 hex znaky pro červenou, 2 zelenou, 2 modrou, např. '#ff77cc77'.
q.setBgCol('#aarrggbb') Nastavení aktuální barvy pozadí (výplně plochy).
Předaný parametr je ve formátu #, pak 2 hex znaky pro alfa složku,
2 hex znaky pro červenou, 2 zelenou, 2 modrou, např. '#ff77cc77'.
q.fillIgnoreColor('#rrggbb') Nastavení barvy, kterou (a jí blízké barvy) bude nástroj kyblík ignorovat.
Předaný parametr je ve formátu #, pak 2 hex znaky pro červenou,
2 zelenou, 2 modrou, např. '#ffffff' pro bílou.
Lze na dané straně volat vícekrát pro různé barvy,
po přechodu na jinou stranu je vše automaticky vyresetováno.
q.clearFillIgnoreColor() Ruší nastavení provedené pomocí q.fillIgnoreColor('#rrggbb').
q.fillOnlyColor('#rrggbb') Nastavení barvy, kterou (a jí blízké barvy) bude nástroj kyblík výhradně barvit.
Předaný parametr je ve formátu #, pak 2 hex znaky pro červenou,
2 zelenou, 2 modrou, např. '#ffffff' pro bílou.
Lze na dané straně volat vícekrát pro různé barvy,
po přechodu na jinou stranu je vše automaticky vyresetováno.
q.clearFillOnlyreColor() Ruší nastavení provedené pomocí q.fillOnlyColor('#rrggbb').
q.setTextBgCol(id, '#rrggbb') Nastaví barvu pozadí zadané textové položky.
Předaná barva je ve formátu #, pak 2 hex znaky pro červenou, 2 pro zelenou a 2 pro modrou složku. Např. '#ffffff' reprezentuje bílou barvu.
q.setTextFieldBgCol(id, '#rrggbb') Nastaví barvu pozadí zadaného textového pole.
Předaná barva je ve formátu #, pak 2 hex znaky pro červenou, 2 pro zelenou a 2 pro modrou složku. Např. '#ffffff' reprezentuje bílou barvu.
q.setMeasure(bool) Pro předaný parametr true zapne měření nově vkládaných čar.
Použije se měřítko a jednotka z vlastností dané stránky.
Po přechodu na jinou stranu je měření přenastaveno dle odp. předvolby pro tvorbu.
q.setSnapToPoints(bool) Pro předaný parametr true zapne přichytávání geom. objektů.
Po přechodu na jinou stranu je přichytávání přenastaveno dle odp. předvolby pro grafické nástroje.
q.resetActPage([bool refreshPages]) Reset aktuální stránky dle posledního uloženého stavu.
Par refreshPages je nepovinný a jeho výchozí hodnota je false (neaktualizovat náhledy stran a stránkovač). Pokud si přejete aktualizovat náhledy stran a stránkovač, zadejte hodnotu true.
q.scrollPageBottom() Operace provede nascrollovanání stránky do její spodní části. Viz též vlastnost stránky Výška reset.
number q.getActPgOrd() Vrátí pořadí aktuální (dvou)strany. Nebere ohled na nastavení čísla počáteční strany a dvoustrany.
q.set(key, val); Uchování hodnoty val pro klíč key.
Příklad:
// tento skript muze byt umisten napr. na strane 1
q.set('a', 'Ahoj!');
// tento skript muze byt umisten napr. na strane 2
q.alert(q.get('a')); // zobrazi retezec Ahoj!
string q.get(key); Získání dříve uložené hodnoty pro klíč key.
Příklad viz popis q.set(key, val).
bool q.gotoPage(int pageNum); Provede skok na zvolenou řádnou stranu s číslem pageNum.
Vrátí true, pokud je zvolená strana rovna aktuální straně.
q.setCursor(ord); Nastaví kurzor myši dle odpovídajícího grafického nástroje.
Hodnoty par. ord viz popis operace q.setTool(ord).
Operaci zejména interně využívá makrorekordér.
q.setCursorPos(x, y); Nastaví souřadnice kurzoru myši dle předaných parametrů.
Operaci zejména interně využívá makrorekordér.
q.getCursorX(); Vrátí X-ovou souřadnici kurzoru myši
q.getCursorY(); Vrátí Y-ovou souřadnici kurzoru myši
q.drawLine(x, y, width, height, color, penWidth[, detWin = true]); Nakreslí čáru do okna naposledy otevřeného detailu (výchozí chování), nebo do hlavní scény pokud je poslední parametr detWin nastavena na 0 (false). Příklady:
// zobrazi detail obrazku s id=1 a nakresli do nej zlutou caru 2px tlustou
q.action(1);
q.drawLine(20, 20, 100, 0, "#ccffff00", 2);
// nakresli do hlavni sceny zlutou caru 2px tlustou
q.drawLine(20, 20, 100, 0, "#ccffff00", 2, 0);
q.drawRect(x, y, width, height, penColor, fillColor, penWidth, cornerRadius[, detWin = true]); Nakreslí obdélník do okna naposledy otevřeného detailu (výchozí chování), nebo do hlavní scény pokud je poslední parametr detWin nastavena na 0 (false). Parametr penWidth určuje tloušťku čáry. Parametr cornerRadius je poloměr zaoblení rohů.
q.drawEllipse(x, y, width, height, penColor, fillColor, penWidth[, detWin = true]); Nakreslí elipsu do okna naposledy otevřeného detailu (výchozí chování), nebo do hlavní scény pokud je poslední parametr detWin nastavena na 0 (false). Parametr penWidth určuje tloušťku čáry.
q.printText(x, y, width, plainText, color, fontSize[, fontFamily = "sans", detWin = true, alignToCenter = false]); Zobrazí text do okna naposledy otevřeného detailu (výchozí chování), nebo do hlavní scény pokud je poslední parametr detWin nastavena na 0 (false). Parametr fontSize určuje velikost písma, parametr fontFamily rodinu písma (přednastaven na bezpatkové písmo) a par. plainText obsahuje text požadovaný k zobrazení (např. "Toto je text."). Parametr alignToCenter pokud je nastaven na true tak způsobí zarovnání na střed.
q.hidePrintedText() Skryje text dříve zobrazený metodou q.printText().
q.showShield(left, top, width, height, color) Zobrazí clonu dané velikosti a barvy.
q.hideShield() Skryje clonu. Použít v případě, že q.moveShield() clonu sám neskryje (disappearType=2), nebo pokud jsme clonou vůbec nepohybovali a chceme ji skrýt.
q.moveShield(dx, dy, type, duration, disappearType, disappearDuration) Posune clonu po x-ové souřadnici o dx, po y-ové o dy.
Par. type je 0 pro lineární, 1 exponenciální, nebo 2 sinusový pohyb.
Par. duration je doba pohybu v ms (tj. např. 1000 pro 1s).
Par. disappearType je 0 pro okamžité, 1 postupné a 2 neprovedené zmizení clony.
Par. disappearDuration určuje dobu mizení clony v ms.
q.undoFreeHand() Krok zpět volného tahu. Platí i pro záznam volného tahu makrorekordérem.
int q.showCustomButton(x, y, w, h, source) Vytvoří tlačítko na dané pozici, dané velikosti w/h a s popisem source, který buď musí odkazovat na platný resource aplikace (např. ":/general/resources/images/play_big.png"), nebo source obsahuje textový popisek tlačítka (např. "Ok"). Funkce vrací jednoznačnou číselnou identifikaci tlačítka (id), kterou je možné použít v metodách viz níže.
q.showCustomButton(id) Zobrazí tlačítko dle id.
bool q.custButPressed(id) Vrátí true, bylo-li tlačítko se zadaným id alespoň 1x stisknuto.
q.hideCustomButton(id) Skryje tlacitko s daným id.
q.deleteCustomButton(id) Skryje a uvolní z paměti instanci tlačítka s daným id.
q.openWebFile(path) Otevře do nového okna www prohlížeče html soubor určený par. path.
Použít pouze pro položky vložené na téže straně (i skryté), např. pro otevření IC do nového okna pro hru více hráčů.
Cesta v path je relativní vzhledem k umístění .mc souboru, např.:
q.openWebFile('swf/exc0001/tmpl8.html');

Spuštění skriptu

Spuštění skriptu se provede poklepáním na objekt, ke kterému je skript přiřazen. Pokud se jedná o obrázek mající obrázkovou mapu, skript se nevykoná a provede se akce dle obrázkové mapy.

Práce s časovačem

Pokud je třeba blokovat provádění kódu skriptu na zadanou časovou prodlevu, je nutno použít mechanismus časovače. Například následující příklad zobrazí na 1s objekt s id=1, a poté ho skryje.
q.show(1);
setTimeout("f1()", 1000);
function f1()
{
    q.hide(1);
}

Práce s událostmi

Aktuálně jsou podporovány následující události:
onPageLoad vyvolaná 1x po zobrazení dané stránky.
První skript nacházející se na stránce, který je pojmenován "onPageLoad", se 1x provede po zobrazení dané stránky (při reloadu stejné stránky nikoli).
onPageReload vyvolaná po každém zobrazení dané stránky.
První skript nacházející se na stránce, který je pojmenován "onPageReload", se provede po každém zobrazení dané stránky, i při reloadu (resetu) této stránky.
onDrag vyvolaná po drag každé položky ve stránce.
První skript nacházející se na stránce, který je pojmenován "onDrag", se provede po drag každé položky ve stránce.
onDrop vyvolaná po drop každé položky ve stránce.
První skript nacházející se na stránce, který je pojmenován "onDrop", se provede po drop každé položky ve stránce.

Ukázkové příklady

Akce při upuštění položky A nad jinou položkou B
Položka A může být obrázek, nebo text. Položka B musí být obrázek s obrázkovou mapou v režimu drop (Akce: drop). Poté je možné oblasti v obrázkové mapě přiřadit skript, který může vypadat např. následovně.
// upustena polozka A ma id=1
if (q.isLastDropId(1)) {
    q.alert('Byla upustena polozka s id=1.');
} else {
    q.alert('Byla upustena polozka s id jinym nez 1.');
}
Test viditelnosti položky
Následující příklad testuje viditelnost položky s id=5.
// test na viditelnost polozky s id=5
if (q.isVisible(5)) {
    q.alert('Polozka s id=5 je viditelna.');
} else {
    q.alert('Polozka s id=5 neni viditelna, nebo neexistuje.');
}
Upuštění položky A nad obdélníkovou oblastí.
Jak funguje test na upuštění položky je popsáno v příkladu 2x výše. Zde navíc přídáme test, jestli je zároveň položka A upuštěna nad ve scéně ohraničenou obdélníkovou oblastí s levým horním rohem na pozici 0,0 širokou 200 a vysokou 100 bodů. Původní hlášení o upuštění položky s id=1 je v příkladu zakomentováno (zleva dva znaky //).
// upustena polozka A ma id=1
if (q.isLastDropId(1)) {
    // q.alert('Byla upustena polozka s id=1.');
    if (q.isOverRect(1, 0, 0, 200, 100)) {
        q.alert('Byla upustena polozka s id=1 nad oblastí 0,0;200,100.');
    }
}
Příklad lze ekvivalentně zapsat také takto:
// upustena polozka A ma id=1
if (q.isLastDropId(1) && q.isOverRect(1, 0, 0, 200, 100)) {
    q.alert('Byla upustena polozka s id=1 nad oblastí 0,0;200,100.');
}
Losování náhodného čísla
Javascript má vestavěné funkce pro generování náhodného čísla a zaokrouhlování.
V příkladu níže jsou použity pro simulaci hodu kostkou.
// do cislo se vygeneruje hodnota 1-6 (mozno upravit pro lib. cislo,
// napr. dosad nize 100 misto 6 pro hodnoty 1-99)
var cislo = 1 + Math.floor(Math.random() * 6);

// ladici zprava - zobrazime vygenerovane cislo
q.alert(cislo);

// pro kazdou hodnotu umoznime jinou akci (sekvenci prikazu) ukoncenou break;
switch(cislo) {
case 1: q.alert('Akce pro cislo 1'); q. break;
case 2: /* sem akce pro 2 */ break;
case 3: /* sem akce pro 3 */ break;
case 4: /* sem akce pro 4 */ break;
case 5: /* sem akce pro 5 */ break;
case 6: /* sem akce pro 6 */ break;
default: // sem se nedostaneme, jedine ze by chybel
         // case pro nekterou volbu 1-6
}