Startseite › Foren › Deutsches LiveCode-Forum › geichzeitiges ändern der Höhe von 2 Images
Schlagwörter: change height
- Dieses Thema hat 9 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 2 Jahren, 7 Monaten von Klaus Major.
-
AutorBeiträge
-
-
Juni 7, 2022 um 21:35 Uhr #44378
Hallo und guten Abend.
Ich habe 2 Images (.png) deren Höhe sich auf Klick eines Buttons gleichzeitig und sichtbar
ändern soll.
Dazu habe ich folgendes Script geschrieben:local myVar1, myVar2, tPosition1, tPosition2 on mouseUp //if the height of image "Line-magenta" = 1 then put the height of image "Line-magenta" into myVar1 put the height of image "Line-green" into myVar2 put 1 into tPosition1 put 1 into tPosition2 ##lock screen resizeImage1 the long id of img "Line-magenta" wait 1 milliseconds with messages resizeImage2 the long id of img "Line-green" ##unlock screen //end if end mouseUp on resizeImage1 theImg put the bottom of theImg into tBalkenUnten if tPosition1 < myVar1 then put 1 into myVar1 repeat until myVar1 > tPosition1 set the height of theImg to myVar1 wait 15 milliseconds with messages add 1 to myVar1 set the bottom of theImg to tBalkenUnten end repeat end resizeImage1 theImg on resizeImage2 theImg put the bottom of theImg into tBalkenUnten if tPosition2 < myVar2 then put 1 into myVar2 repeat until myVar2 > tPosition2 set the height of theImg to myVar2 wait 15 milliseconds with messages add 1 to myVar2 set the bottom of theImg to tBalkenUnten end repeat end resizeImage2 theImg
Das Problem ist, dass sich zuerst img „Line-magenta“ in der Höhe ändert und
danach img „Line-green“.Wie erreiche ich, dass sich img „Line-magenta“ und img „Line-green“ gleichzeitig in der Höhe ändern?
-
Juni 10, 2022 um 14:07 Uhr #44472
Hi akrages,
dein Code funktioniert bei mir gar nicht, die Images schrumpfen und bleiben klein.
Ich vermute, dass sich zwei Balken gleichzeitig in der Höhe animiert verändern sollen, z.B. als „wachsende“ Balken. In der jetzigen Form wächst aber erst der eine komplett und dann der andere, es muss also komplett anders gemacht werden.Da ich das Problem sehr interessant fand, habe ich etwas dran gearbeitet:
on mouseup ## Zurücksetzen der Variablen für zu vergrößernden und die bereits vergrößerten Objekte put empty into tObjects put empty into tMaxsizedObjectsList ## Einstellen der Verzögerung der Animationsschritte put 3 into tMilliWaits ## Stelle die Liste der zu animierenden Objekte und ihrer Endgröße zusammen -- Hier ist die Stelle, an der beliebig viele Objekte (können auch Grafiken, Buttons etc. sein) -- angelegt werden, um sie später alle gleichzeigig zu animieren -- durch die Angabe als log id sind alle Objekttypen möglich. put the long id of graphic "green" & tab & 100 & cr after tObjects put the long id of graphic "yellow" & tab & 200 & cr after tObjects put the long id of graphic "red" & tab & 300 & cr after tObjects ## Zurücksetzen der bisherige Objekte auf Größe 1 repeat for each line tObjectData in tObjects put 20 into tMinSize set itemdelimiter to tab put item 1 of tObjectData into tObject put the bottom of tObject into tBottom set the height of tObject to tMinSize set the bottom of tObject to tBottom end repeat ## Wiederhole solange, bis alle Objekte bis zu ihrem zugewiesenen Größe vergrößert wurden repeat ## Wiederhole für jedes Objekt in der Liste repeat for each line tObjectData in tObjects set itemdelimiter to tab put item 1 of tObjectData into tObject put item 2 of tObjectData into tMaxSize ## Verstecke das Vergrößern, um dne Eindruck zu erwecken, dass sich alle Objekte gleichzeig verändern lock screen ## Verändere die Größe es Objekts, falls es noch nicht fertig vergrößert ist if tObject is not in tMaxsizedObjectsList then put changeHeight(tObject,tMaxSize) into tResult ## Setze das Objekt auf die Liste der bereits feertig vergrößerten Objekte, wenn es "Finished" zurückmeldet if tResult = "Finished" then put tObject & cr after tMaxsizedObjectsList end if end if unlock screen wait tMilliWaits milliseconds with messages end repeat if the number of lines in tMaxsizedObjectsList = the number of lines in tObjects then exit repeat end if end repeat end mouseup -------------------------------------------------- function changeHeight pObject,pMaxHeight put the height of pObject into tCurrentHeight put the bottom of pObject into tObjectBottom if tCurrentHeight < pMaxHeight then add 1 to tCurrentHeight set the height of pObject to tCurrentHeight set the bottom of pObject to tObjectBottom else return "Finished" end if end changeHeight --------------------------------------------------
Der Code geht in einen Button und auf der Karte erwarte ich drei Grafik-Objekte, die grün, gelb und rot sind.
Und so sieht es dann aus:
https://www.dropbox.com/s/nzo3mr9hseaz0hk/Paralleles-Wachsen.mov?dl=0Happy Coding
Torsten -
Juni 10, 2022 um 22:39 Uhr #44491
Hi Torsten,
Warum mein Skript bei Dir nicht funzt verstehe ich nicht.
Vielen Dank für dein Skript.
Es funktioniert nach einer kleinen Anpassung sehr gut.
Bis auf folgendes:
Die Graphiken bzw. Images stehen für ein Balkendiagramm. Darum ist es wichtig, dass diese -wenn sich die Werte erhöhen- nicht jedesmal bei 0 mit dem „wachsen“ beginnen, sondern bei ihrem momentanen Wert weiterwachsen. Verstehst Du was ich meine?In meinem Script hatte ich dazu diese Anweisung:
put the height of image "Line-magenta" into myVar1 put the height of image "Line-green" into myVar2
Wie kann ich dein Skript dahingehend anassen?
-
Juni 10, 2022 um 22:53 Uhr #44493
Sorry, wer lesen kann ist klar im Vorteil!
Habs gerade selbst herausgefunden.
-
Juni 11, 2022 um 09:54 Uhr #44501
Spitze!
Viel Spass noch beim Coden
Torsten -
Juni 12, 2022 um 10:59 Uhr #44540
Hallo Gemeinde,
ich habe die voherige changeHeight-Funktion so geschrieben, dass sie nur eine Änderung macht, wenn die neue Höhe größer als die bisherige ist. Man kann sich aber leicht vorstellen, dass sich Zahlen auch nach unten ändern können und das Objekt dann schrumpfen muss.
Deswegen hier eine Version, welche die Größe des Objekts je nach Zielgröße um einen Pixel nach oben oder unten verändert.function changeHeight pObject,pFinalHeight put the height of pObject into tCurrentHeight put the bottom of pObject into tObjectBottom if tCurrentHeight < pFinalHeight then add 1 to tCurrentHeight else if tCurrentHeight > pFinalHeight then subtract 1 from tCurrentHeight else return "Finished" end if set the height of pObject to tCurrentHeight set the bottom of pObject to tObjectBottom end changeHeight
Happy Coding
Torsten -
Juni 14, 2022 um 19:57 Uhr #44595
Hallo Torsten.
Ich habe deine letzte changeHeight-Funktion geich mal ausprobiert.
Dabei habe ich festgestellt, dass sie nur mit positiven Ganzzahlen funktioniert.
d.h.put the long id of graphic "green" & tab & 1.2345 & cr after tObjects put the long id of graphic "yellow" & tab & 2.6789 & cr after tObjects put the long id of graphic "red" & tab & 0 & cr after tObjects
bringt die IDE dazu, dass sie sich aufhängt bzw. einfriert.
Der Editor reagiert dann nicht mehr und auch ein sauberes beenden der Anwendung ist nicht mögich.
Nur ein „abschießen“ von Livecode über den Taskmanager ist dann die Rettung.Mein Lösungsansatz:
Da meine App Werte mit Kommazahlen (lasse ich natürlich durch punkt ersetzen) generiert,
lasse ich diese Werte zunächst auf- bzw. abrunden.
Und die Tage, die in der Zukunft liegen -also noch keine Werte enthalten- fange ich z.B. mit:If tPositionPicksMit1 >0 then
und
If tPositionPicksDon1 >0 then
etc. ab. Da mein Balkendiagramm die ganze Woche anzeigt bedeutet dies, dass ich die „If-Abfrage“ für jeden Tag der Woche stellen muss.
Es müsste doch aber auch einfacher gehen.!?!
Ich habe schon einiges probiert, aber leider noch nicht die richtige Stelle in deinem Script gefunden.
Wo müsste ich die Abfrage nach positiven Werten in deinem Skript einfügen? -
Juni 16, 2022 um 12:19 Uhr #44648
Das einfachste ist, nur positive Zahlen an die Balken zu schicken 🙂
Ich weiss jetzt nicht genug über dein Programm, um den besten Weg zu erkunden. Wenn Du magst, schick einfach den Stack an mich: torsten.holmer AT web.deHappy Coding
Torsten -
Juni 17, 2022 um 21:23 Uhr #44674
Stimmt!
Jetzt läuft alles genau so, wie es soll.
Vielen Dank und ein großes Lob für deine Hilfe. Das gleiche geht an Klaus Major.
Wenn einmal etwas klemmt und man nicht weiter weiß, dann seid ihr beiden immer zur Stelle.Gruß
akrages
-
Juni 17, 2022 um 21:31 Uhr #44676
Stets zu Diensten! 🙂
Ich war eine Woche weg, daher habe ich den Fred jetzt erst gesehen.
Schön, daß Du es hinbekommen hast!Bitte auch das funktionierende Skript posten, danke!
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.