Dinamikus objektumok létrehozása és törlése
Dinamikus objektumok létrehozása és törlése
Természetesen mindig előállíthatsz minden szükséges tárgyat, elrejtheted őket a felhasználótól, majd megjelenítheted őket a megfelelő időben. De ez nem volt nagyon kényelmes megoldás, különösen a komplex kóddal rendelkező játékok vagy projektek esetében. Tehát a lényegre jutottunk. A 4.9.8 verziótól kezdve a DeleteObject paranccsal dinamikusan hozhatja létre a legtöbb fő objektumot, és akár törölheti is őket (a memória megtakarítása érdekében). A dinamikusan létrehozott objektumok tulajdonságainak megváltoztatásához használja a SetObjectParam parancsot.
Az alábbi parancsok listája lehetővé teszi az objektumok dinamikus létrehozását:- Létrehozás gomb - CreateTextButton ("inlabel", "outlabel $, x, y, w, h, szöveg")
- Szöveges objektum létrehozása - CreateText ("inlabel", "outlabel $, x, y, szöveg")
- Szöveg létrehozása görgetősávval - CreateParagraph ("inlabel", "outlabel $, x, y, w, h, szöveg")
- Kör létrehozása - CreateCircle ("inlabel", "outlabel $, x, y, w, h, r, g, b")
- Téglalap létrehozása - CreateRectangle ("inlabel", "outlabel $, x, y, w, h, r, g, b")
- Sor létrehozása (relatív pozícionálás) - CreateLine ("inlabel", "outlabel $, x, y, w, h, r, g, b")
- Téglalap létrehozása (abszolút pozícionálás) - CreateLineAB ("inlabel", "outlabel $, x1, y1, x2, y2, r, g, b"
- Hozzon létre egy aktív régiót - CreateHotSpot ("inlabel", "outlabel $, x, y, w, h")
- A szkript létrehozása - CreateScript ("inlabel", "outlabel $")
x az objektum x koordinátája
y az objektum koordinátája az y tengely mentén
w az objektum szélessége
h az objektum magassága
r. g. b - az objektum színe az RGB rendszerben (0 és 255 közötti értékek)
szöveg - az objektum szövege
inlabel - az objektum egyéni neve, például a Szöveg. Ha egy ilyen nevű objektum már létezik a projektben, akkor egy számot csatolunk a felhasználónévhez, és az így kapott név át lesz adva a $ kimeneti változóra. Mint valószínűleg tudja, ugyanazon az oldalon nem lehet két objektum ugyanazzal a névvel.
Röviden, ha egy objektum már létezik (mondjuk Szöveg), akkor a felhasználónéven alapuló első lehetséges név (például Text13) kerül felhasználásra. Ez a név átkerül a $ outlabel változóra, és az MMB fogja használni. Ha el kell távolítania vagy el kell rejtenie ezt az objektumot, akkor a megfelelő parancsban kell használni a $ outlabel változót.
Minden paraméter be van adva (a $ outlabel kivételével), és numerikus vagy sztring változókkal megadható.
Minden paraméter opcionális, de javasoljuk legalább szöveg / koordináták meghatározását;)
Ha az inlabel paraméter nincs megadva, a függvény az alapértelmezett neveket használja (például TextBTN, Kör.). Ha a dimenziók / koordináták nincsenek megadva, akkor az objektum a 0.0 pontban lesz létrehozva, és az alapértelmezett méret.
Bizonyos paramétereket kihagyhat, de még mindig meg kell adnia a megfelelő számú vesszőt paraméterhatárolóként. Például egy adott ponton egy adott címkével ellátott gombot szeretne létrehozni, és a gomb méretét hagyja az MMB mérlegelésénél. A kódnak így kell kinéznie.
A CreateLine és CreateLineAB parancsok használatával létrehozhat egy sort.
A CreateLine parancs lehetséges paraméterei.
egyéni név, kimeneti változó
x. y - az x, y koordinátákat
w. h - szélesség és magasság
r. g. b - szín
A CreateLineAB parancs lehetséges paraméterei.
egyéni név, kimeneti változó
x1. y1 - a kiindulási pont koordinátái
x2. y2 - a végpont koordinátái
r. g. b - szín
A CreateLineAB paranccsal létrehozott sor. a projekt ablakának kezdő és végpontjainak abszolút koordinátái, a CreateLine-lel létrehozott vonal pozícióját a határoló téglalap hosszúsága / magassága határozza meg. Más szavakkal, két, pontosan ugyanolyan értékű parancs eltérő eredményt ad, mivel másképpen értelmezik az adott értékeket.
Kérjük, nézze meg az illusztrációt:
Itt található a kép létrehozásához használt kód:
CreateLine ("LINE", "outlabel $, 20,20,280,200,255,0,0")
CreateLineAB ("LINE", "outlabel $, 20,20,280,200,0,0,255")
Mint valószínűleg tudja, a legtöbb MMB objektum koordinátáit a bal felső sarok pozíciója határozza meg, valamint az objektum hosszát és magasságát, amelyek valójában a jobb alsó sarok koordinátái. Ugyanez vonatkozik a CreateLine parancsra is. Bár ez hiábavalónak tűnik (a vonal hosszát és magasságát jelezve), ez nagyon hasznos olyan esetekben, amikor több vonalat kell létrehozni, amelyek viszonylagos pozícionálással rendelkeznek.
** Ez a példa azt mutatja be, hogyan lehet létrehozni egy képgalériát a projektablakban lévő maximális képek számával
pw = PubWidth ()
ph = PubHeight ()
** a képek közötti távolság
koef = 10
w = 50
h = 50
** az ablak aktuális szélességéhez tartozó képek száma
n_imgs_w = pw / (w + koef)
RoundNum1 = INT (n_imgs_w)
RoundNum2 = n_imgs_w-RoundNum1
Ha (RoundNum2> = 0. 5) Ezután
n_imgs_w = RoundNum1 + 1
vég
** oszlopok száma
n_imgs_w = n_imgs_w- 1
** az ablak aktuális magasságához tartozó képek száma
n_imgs_h = ph / (h + koef)
RoundNum1 = INT (n_imgs_h)
RoundNum2 = n_imgs_h-RoundNum1
Ha (RoundNum2> = 0. 5) Ezután
n_imgs_h = RoundNum1 + 1
vég
** vonalak száma
n_imgs_h = n_imgs_h- 1
********************
x = koef
y = koef
J = 1-hez n_imgs_h
Az i = 1-nél n_imgs_w
Szünet ("50")
CreateHotSpot ("HSpot", "objektum [i] $, x, y, w, h")
** Új x koordináta (egy oszlophoz)
x = x + w + koef
** adjon hozzá kódot az aktív területhez
script $ = 'CurObj $ = CurrentObject ()' + CHR (13) + CHR (10)
script $ = script $ + 'Üzenet ("SelectedObject", "CurObj $")' + CHR (13) + CHR (10)
SetObjectParam ("objektum [i] $", "MOUSEUPSCRIPT: 1 = script $")
/ * adja meg a képek ismétlését. Ha csak 3 van a könyvtárban
képek, és az aktív területek száma nagyobb, akkor meg kell
ismételje meg a képeket. Példánkban csak 3 fájl található a könyvtárban,
ezért ha a régiók száma nagyobb vagy egyenlő 3-mal,
hajtsa végre a képszámláló reszetét * /
Ha (ni> = 3) akkor
** egyébként növeljük a számláló értékét
ni = ni + 1
vég
imgpath $ = '
** Kép feltöltése az aktív területre
ReplaceImage ("objektum [i] $", "imgpath $")
** mozgassa az objektumot a háttérbe
ReorderObject ("objektum [i] $", "BACK")
Frissítés ("")
Következő i
** állítsa vissza az x koordinátát (egy oszlophoz)
x = koef
** Új y koordináta (egy vonalhoz)
y = y + h + koef
Ezzel a paranccsal létrehozhat egy parancsfájlt.
Lehetséges paraméterek:
egyéni név, kimeneti változó
A szkriptobjektum egy kis sárga mező, amely parancsfájlokat tartalmaz, amelyek a RunScript és a ScriptTimer parancsok használatával hívhatók le. Ez olyan eljárás, amely egy másik futási időből hívható meg (a RunScript program része), vagy futhat párhuzamosan (a ScriptTimer segítségével). Általában szkriptobjektumokat hoz létre a projekt fejlesztése során. Most azonban a CreateScript parancsnak köszönhetően új szkriptobjektumot hozhat létre és futtatható, és hozzárendelhet egy meghatározott kódot a SetObjectParam parancs használatával. amely lehetővé teszi (a 4.9.8 verziótól kezdve), hogy az aktuális objektumkódot újra cserélje. A szkriptkód egy másik szkriptben generálható, letölthető egy fájlból, vagy egyszerűen beírható egy szerkesztőkészülékbe;)
** "SCRIPT" nevű parancsfájl létrehozása
CreateScript ("SCRIPT", "outlabel $")
** Hozzon létre egy új kódot
ScriptParam $ = 'SCRIPT: 1 =' + 'Üzenet ("Hello!", "") "
SetObjectParam ("outlabel $", "ScriptParam $")
** Futtassa a generált szkriptet
RunScript ("outlabel $")
** "SCRIPT" nevű script létrehozása, ezúttal több sornyi kóddal
CreateScript ("SCRIPT", "outlabel $")
** Hozzon létre egy új kódot
forgatókönyv $ = 'SCRIPT: 1 =' + 'i = 1 és 10' között + CHR (13) + CHR (10)
script $ = script $ + 'hurok $ = CHAR (i)' + CHR (13) + CHR (10)
script $ = script $ + 'Üzenet ("Loop:", "loop $")' + CHR (13) + CHR (10)
script $ = script $ + 'Következő i'
SetObjectParam ("outlabel $", "script $")
** Futtassa a generált szkriptet
RunScript ("outlabel $")
** a "TextBTN" objektum törlése
DeleteObject ("TextBTN")
** törölje az összes gombot a TextBTN1-ről a TextBTN10-re
I = 1 és 10 között
DeleteObject ("TextBTN [i]")
Következő i