Startseite › Foren › Deutsches LiveCode-Forum › Objekte per Skript erstellen
- Dieses Thema hat 7 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 8 Monaten von gfz.
-
AutorBeiträge
-
-
April 14, 2018 um 18:37 Uhr #5291
Hallo liebe LCerInnen!
Ich würde gerne Objekte per Skript erstellen wie es in Haukes Buch auf Seite 228 dargestellt wird. Allerdings wollte ich das Skript etwas allgemeiner gestalten, scheitere aber am Fehler:
„compilation error at line 5 (create: no alias or directory name supplied) near ‚pObject‘, char 13“Hier mein Skript:
command createObjectMatrix pObject if pObject is among the words of "field button image" then repeat with w = 1 to 6 repeat with d = 1 to 7 create pObject ("W"&w&"D"&d) set the width of it to pWidth set the height of it to pHeight set the showBorder of it to true end repeat end repeat end if end createObjectMatrix
Wie könnte man das bewerkstelligen – falls überhaupt möglich? Und wie könnte ich das Skript aufrufen, um die gewünschten Objekte auf einem anderen Stack bzw. einer Card erstellen zu lassen?
liebe Grüße,
Georg -
April 14, 2018 um 19:09 Uhr #5293
Okay die Kopfzeile des Commands muss natürlich auch die Parameter pWidth und pHeight enthalten.
-
April 14, 2018 um 19:19 Uhr #5295
Okay ein Problem habe ich gelöst – hier ein kurzer Update:
command createObjectMatrix pObject pWidth pHeight if pObject is among the words of "field button image" then repeat with w = 1 to 6 repeat with d = 1 to 7 switch pObject case "field" create field ("W"&w&"D"&d) break case "button" create button ("W"&w&"D"&d) break case "image" create image ("W"&w&"D"&d) break end switch if (pWidth is an integer) and (pWidth > 0) then set the width of it to pWidth end if if (pHeight is an integer) and (pHeight > 0) then set the height of it to pHeight end if set the showBorder of it to true end repeat end repeat end if end createObjectMatrix
Offen ist nun noch die Möglichkeit dieses Skript beispielsweise in einem eigenen Stack abzuspeichern, aber nach Aufruf die gewünschten Objekte auf der Card eines anderen Stacks erstellen zu lassen. Hat jemand eine Idee, wie das klappen könnte?
mfG,
Georg -
April 14, 2018 um 20:59 Uhr #5297
Dank Dr. Google konnte ich auch dafür die Lösung finden.
Für den Fall, dass sich jemand dafür interessiert hier das Skript:command createObjectMatrix pObject pWidth pHeight pM pN pStackName if pStackName is not empty then set the defaultStack to pStackName end if if pObject is among the words of "field button image" then if (pM is an integer) AND (pM > 0) then if (pN is an integer) AND (pN > 0) then repeat with m = 1 to pM repeat with n = 1 to pN switch pObject case "field" create field ("fldM"&m&"N"&n) break case "button" create button ("btnM"&m&"N"&n) break case "image" create image ("imgM"&m&"N"&n) break end switch if (pWidth is an integer) AND (pWidth > 0) then set the width of it to pWidth end if if (pHeight is an integer) AND (pHeight > 0) then set the height of it to pHeight end if set the showBorder of it to true end repeat end repeat end if end if end if end createObjectMatrix
liebe Grüße,
Georg -
April 14, 2018 um 21:32 Uhr #5298
## command createObjectMatrix pObject pWidth pHeight pM pN pStackName
Im eigenen Interesse die Parameter mit Komma trennen:
command createObjectMatrix pObject, pWidth, pHeight, pM, pN, pStackName
Oder ist das wieder ein Glitsch der Forumsoftware? 😀 -
April 14, 2018 um 21:39 Uhr #5299
Danke für den Hinweis Klaus. Beim Aufruf der Prozedur setze ich Beistriche zwischen den Parametern.
Aber warum meckert die IDE nicht, wenn ich die Beistriche bei der Definition nicht setze?
Fällt Dir noch was ein, wie die Parameter gegen falsche Werte abgesichert werden könnten/sollten?
Grüße,
Georg -
April 15, 2018 um 14:32 Uhr #5316
HI Georg,
Aber warum meckert die IDE nicht, wenn ich die Beistriche bei der Definition nicht setze?
das kann ich Dir nicht sagen, aber in zukunft wird sie das sicher mal tun!
Ich habe festgestellt, daß die Engine mit jeder Version weniger nachsichtig ist, also liebe direkt die offizielle Syntax verwenden!Fällt Dir noch was ein, wie die Parameter gegen falsche Werte abgesichert werden könnten/sollten?
Hm, Du könntest abfragen, wie viel Parameter es gibt mit: paramcount(), aber ansonsten kommt es auf die Funktion/Handler an, ob und wie man die Parameter prüft.
Gruß
Klaus
-
April 15, 2018 um 20:28 Uhr #5319
Klaus, ich danke dir für deine Ratschläge.
Gruß
Georg
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.