Crearea dinamică și ștergerea obiectelor
Desigur, puteți crea întotdeauna toate obiectele necesare în avans, le puteți ascunde de utilizator și le puteți afișa la momentul potrivit. Dar aceasta nu a fost o soluție foarte convenabilă, în special pentru jocuri sau proiecte cu cod complex. Așa că am ajuns la principalul lucru. Începând cu versiunea 4.9.8, puteți să creați dinamic majoritatea obiectelor principale și chiar să le ștergeți (pentru a economisi memoria) cu comanda DeleteObject. Pentru a modifica proprietățile obiectelor create dinamic, utilizați comanda SetObjectParam.
Iată o listă de comenzi care vă permit să creați dinamic obiecte:- Butonul de creare - CreateTextButton ("inlabel", "outlabel $, x, y, w, h, text")
- Creați un obiect text - CreateText ("inlabel", "outlabel $, x, y, text")
- Crearea textului cu o bară de derulare - CreateParagraph ("inlabel", "outlabel $, x, y, w, h, text")
- Creați un cerc - CreateCircle ("inlabel", "outlabel $, x, y, w, h, r, g, b")
- Creați un dreptunghi - CreateRectangle ("inlabel", "outlabel $, x, y, w, h, r, g, b")
- Crearea liniei (poziționare relativă) - CreateLine ( "inlabel", "outlabel $, x, y, w, h, r, g, b")
- Crearea unui dreptunghi (poziționare absolută) - CreateLineAB ( "inlabel", "outlabel $, x1, y1, x2, y2, r, g, b")
- Creați o regiune activă - CreateHotSpot ("inlabel", "outlabel $, x, y, w, h")
- Crearea scriptului - CreateScript ("inlabel", "outlabel $")
x este coordonata x a obiectului
y este coordonata obiectului de-a lungul axei y
w este lățimea obiectului
h este înălțimea obiectului
r. g. b - culoarea obiectului din sistemul RGB (valori de la 0 la 255)
text - textul obiectului
inlabel - numele personalizat al obiectului, de exemplu Text. Dacă în proiect există deja un obiect cu acest nume, un număr va fi atașat la numele de utilizator și numele rezultat va fi transferat la variabila de ieșire outlabel $. După cum probabil știți, pe aceeași pagină nu pot exista două obiecte cu același nume.
Pe scurt, dacă un obiect există deja (de exemplu, Text), va fi folosit primul nume posibil bazat pe numele de utilizator (de exemplu, Text13). Acest nume va fi transmis variabilei outlabel $ și va fi utilizat de MMB. Dacă trebuie să eliminați sau să ascundeți acest obiect, va trebui să utilizați variabila outlabel $ în comanda corespunzătoare.
Toți parametrii sunt introduși (cu excepția excepției $) și pot fi specificați utilizând variabile numerice sau șir.
Toți parametrii sunt opționali, dar este recomandat să specificați cel puțin text / coordonate;)
Dacă parametrul inlabel nu este specificat, funcția va utiliza numele implicite (de exemplu, TextBTN, Circle.). Dacă dimensiunile / coordonatele nu sunt specificate, atunci obiectul va fi creat la punctul 0,0 și va avea dimensiunea implicită.
Puteți săriți câțiva parametri, dar tot trebuie să utilizați numărul de virgule corespunzător ca delimitatori de parametri. De exemplu, doriți să creați un buton cu o anumită etichetă la un moment dat și să lăsați dimensiunea butonului la discreția MMB. Codul ar trebui să arate așa.
Utilizând comenzile CreateLine și CreateLineAB, puteți crea o linie.
Parametri posibili pentru comanda CreateLine.
nume obișnuit, variabilă de ieșire
x. y - coordonatele x, y
w. h - lățime și înălțime
r. g. b - culoare
Parametrii posibili pentru comanda CreateLineAB.
nume obișnuit, variabilă de ieșire
x1. y1 - coordonatele punctului de pornire
x2. y2 - coordonatele punctului final
r. g. b - culoare
În timp ce linia a fost creată cu comanda CreateLineAB. are coordonatele absolute ale punctelor de început și de sfârșit în fereastra proiectului, poziția liniei create cu CreateLine este determinată de lungimea / înălțimea dreptunghiului de legare. Cu alte cuvinte, două comenzi cu exact aceleași valori vor da rezultate diferite, deoarece interpretează valorile date în mod diferit.
Vă rugăm să aruncați o privire la ilustrație:
Iată codul care a fost folosit pentru a crea această imagine:
CreateLine ("LINE", "outlabel $, 20,20,280,200,255,0,0")
CreateLineAB ("LINE", "outlabel $, 20,20,280,200,0,0,255")
După cum probabil știți, de cele mai multe MMB obiectelor coordonatele determinate de poziția colțul din stânga sus, precum și lungimea și înălțimea obiectului, care este de fapt coordonatele colțul din dreapta jos. Același lucru este valabil și pentru comanda CreateLine. În ciuda faptului că se pare inutil (pentru a specifica lungimea și înălțimea liniei), este foarte convenabil atunci când aveți nevoie pentru a crea mai multe linii, cu poziționare relativă.
** Acest exemplu arată cum se creează o galerie de imagini cu numărul maxim de imagini care se potrivesc în fereastra proiectului
pw = PubWidth ()
ph = PubHeight ()
** distanța dintre imagini
coef = 10
w = 50
h = 50
** numărul de imagini pentru lățimea curentă a ferestrei
n_imgs_w = pw / (w + coef)
RoundNum1 = INT (n_imgs_w)
RoundNum2 = n_imgs_w-RoundNum1
Dacă (RoundNum2> = 0. 5) Apoi
n_imgs_w = RoundNum1 + 1
capăt
** numărul de coloane
n_imgs_w = n_imgs_w- 1
** numărul de imagini pentru înălțimea curentă a ferestrei
n_imgs_h = ph / (h + coef)
RoundNum1 = INT (n_imgs_h)
RoundNum2 = n_imgs_h-RoundNum1
Dacă (RoundNum2> = 0. 5) Apoi
n_imgs_h = RoundNum1 + 1
capăt
** numărul de linii
n_imgs_h = n_imgs_h- 1
********************
x = coef
y = coef
Pentru j = 1 Pentru n_imgs_h
Pentru i = 1 Pentru a n_imgs_w
Întrerupeți ("50")
CreateHotSpot ("HSpot", "obiect [i] $, x, y, w, h")
** Nouă coordonată x (pentru o coloană)
x = x + w + coef
** adăugați cod pentru zona activă
script $ = 'CurObj $ = CurrentObject ()' + CHR (13) + CHR (10)
script $ = script $ + '("SelectedObject", "CurObj $") + + CHR (13) + CHR (10)
SetObjectParam ("obiect [i] $", "MOUSEUPSCRIPT: 1 = script $")
/ * specificați repetarea imaginilor. Dacă ai doar 3 în director
imaginile și numărul de zone active este mai mare, atunci va trebui să
repetați fotografiile. În exemplul nostru, există doar 3 fișiere în director,
prin urmare, dacă numărul regiunilor este mai mare sau egal cu 3,
efectuați resetarea numărătorului de imagini * /
Dacă (ni> = 3) Apoi
** altfel noi crestem valoarea contorului
ni = ni + 1
capăt
imgpath $ = '
** Încărcarea unei imagini în zona activă
ReplaceImage ("obiect [i] $", "imgpath $")
** mutați obiectul în fundal
ReorderObject ("obiect [i] $", "BACK")
Reîmprospătați ("")
Înainte i
** reseteaza coordonata x (pentru o coloana)
x = coef
** Noua coordonată y (pentru o linie)
y = y + h + coef
Cu această comandă puteți crea un script.
Parametri posibili:
nume obișnuit, variabilă de ieșire
Obiectul script este o cutie galbenă mică care conține scripturi care pot fi invocate utilizând comenzile RunScript și ScriptTimer. Aceasta este ceva de genul unei proceduri care poate fi apelată dintr-un alt runtime (folosind RunScript) din proiectul dvs. sau poate fi rulată în paralel (prin ScriptTimer). De obicei, obiectele de script sunt create în timpul dezvoltării proiectului. Dar acum, datorită comenzii CreateScript, puteți crea un obiect de script nou și la timpul de execuție și puteți atribui un cod specific acestuia folosind comanda SetObjectParam. care permite (începând cu versiunea 4.9.8) să înlocuiască scriptul obiect curent cu unul nou. Codul de script poate fi generat într-un alt script, descărcat dintr-un fișier sau pur și simplu tastat într-o casetă de editare;)
** Crearea unui script numit "SCRIPT"
CreateScript ("SCRIPT", "outlabel $")
** Atribuiți un nou cod
ScriptParam $ = 'SCRIPT: 1 =' + 'Mesaj ("Bună ziua!", ")"
SetObjectParam ("outlabel $", "ScriptParam $")
** Rulați scriptul generat
RunScript ("outlabel $")
** Crearea unui script numit "SCRIPT", de data aceasta cu mai multe rânduri de cod
CreateScript ("SCRIPT", "outlabel $")
** Atribuiți un nou cod
script $ = 'SCRIPT: 1 =' + 'Pentru i = 1 până la 10' + CHR (13) + CHR (10)
script $ = script $ + 'buclă $ = CHAR (i) + + CHR (13) + CHR (10)
scriptul $ = script $ + 'Mesaj ("Buclă", "buclă $") + + CHR (13) + CHR (10)
script $ = script $ + 'Next i'
SetObjectParam ("outlabel $", "script $")
** Rulați scriptul generat
RunScript ("outlabel $")
** ștergerea obiectului "TextBTN"
DeleteObject ("TextBTN")
** ștergeți toate butoanele de la TextBTN1 la TextBTN10
Pentru i = 1 până la 10
DeleteObject ("TextBTN [i]")
Înainte i