hintereinander passieren lassen

Startseite Foren Deutsches LiveCode-Forum hintereinander passieren lassen

Ansicht von 12 Antwort-Themen
  • Autor
    Beiträge
    • #19285
      GerryS
      Teilnehmer

        Hallo Leute,
        ich komme im Moment nicht weiter. Die ersten 3 Abläufe hintereinander funktionieren, wie sie sollen.
        Aber dann? Ich habe da einen unsichtbaren Fehler. Er wird mir nicht angezeigt.
        Hier ist mein Versuch:
        if the hilited of widget “lesen” then
        revSetSpeechSpeed 210
        revSpeak fld “Geschichte”
        if the hilited of widget “wechsel” then
        set the backgroundColor of fld “led1” to red
        end if
        end if
        Kann da mir jemand weiterhelfen.
        Die Sache mit dem <Geschichte vorlesen> über einen Schalter funktioniert.
        Habe ich den nächsten Schalter, benannt “Wechsel” eingeschaltet, wird mir die Geschichte immer wiederholt, bis ich “beide” Schalter ausschalte. die led1 geht aber nicht an.
        Danke GerryS

      • #19288
        GerryS
        Teilnehmer

          Hallo, die Geschichte wird so oft vorgelesen, bis alle > end if< durch sind. Das natürlich nur bei eingeschalteten Schalter. Wenn ich , wie gesagt, den >Wechselschalter< aus lasse liest sie es mir nur einmal vor.
          Gruß GerryS

        • #19290
          Werner
          Teilnehmer

            Müsste es nicht so aussehen?

            if the hilited of widget "lesen" then
                 ...
             else if if the hilited of widget "wechsel" then
                 ...
             endif

            Gruß – Werner –

          • #19291
            Klaus Major
            Administrator

              Hm, revspeak ist ja laut Dictionary nicht “blocking”, daher verstehe ich das Ganze nicht so ganz. Ich habe das hier mal nachgestellt, das Feld wird sofort rot und die Story wird vorgelesen, EINMAL!?

              Probier doch mal so rum:

                 ...
                 if the hilited of widget "lesen" then
                    if the hilited of widget "wechsel" then
                       set the backgroundColor of fld "led1" to red
                    end if
                    revSetSpeechSpeed 210
                    revSpeak fld "Geschichte"
                 end if
                 ...

              macOS 10.14.6, LC 9.5.1 INDY

            • #19303
              GerryS
              Teilnehmer

                Hallo Werner,
                danke für die Antwort.

                Wenn ich das >else< zwischen den Ablauf der beiden Schalter setze, reagiert der Ablauf nicht und bleibt sogar vor dem “lesen-Schalter” stehen und hat keine Lust vorzulesen. Der “Wechselschalter” macht mir auch keine Led’s an.

                Hallo Klaus, auch Danke.

                executing at 1:11:56 PM
                Type Chunk: no such object
                Object Timer down
                Line set the backgroundColor of fld “led1” to red
                Hint uhrAktualisieren

                Ich hab den Wechselschalter mit der Led zwischen den Vorleseschalter gesetzt, da hat er auch vor den beiden letzten Schalter angehalten.
                Er hat also die Led nicht gefunden.
                Es wäre ja auch langweilig, wenn alles glatt durchlaufen würde. ??
                Vielleicht ist der Fehler ja auch VOR diesem Ablauf zu suchen.

              • #19305
                Klaus Major
                Administrator

                  Wie ich schrieb, das klappt hier alle ganz vorzüglich!
                  Der Tausch der Reihenfolge hat nichts gebracht?
                  Hast Du es ausprobiert?
                  Deine Fehlermeldung weist auf ein nicht vorhandens LC Objekt hin!

                  Bitte poste doch mal Dein gesamtes involvieretes Skript und setze es bitte in die CODE Tags! 😎

                • #19360
                  GerryS
                  Teilnehmer

                    `on uhrAktualisieren
                    revSetSpeechSpeed 270
                    put fld “uhr” into zeitwert
                    subtract 1 from zeitwert
                    put zeitwert into fld “uhr”
                    revSpeak fld “uhr”
                    add 1 to fld “meineZahl”
                    if zeitwert > 0 then
                    send uhrAktualisieren to me in 1 seconds
                    else
                    subtract 30 from fld “meineZahl”
                    put the foregroundColor of the button “W” into the fld “au”
                    set backgroundColor of stack “Timer down” to white
                    set the foregroundColor of fld “uhr” to black
                    set the foregroundColor of fld “Schalter” to black
                    set the foregroundColor of fld “meineZahl” to black
                    set the foregroundColor of fld “vorlesen” to black
                    set the foregroundColor of fld “Geschichte” to black
                    beep
                    if the hilited of widget “farben” then
                    set backgroundColor of stack “Timer down” to blue
                    set the foregroundColor of fld “uhr” to white
                    set the foregroundColor of fld “Schalter” to white
                    set the foregroundColor of fld “meineZahl” to white
                    set the foregroundColor of fld “vorlesen” to white
                    set the foregroundColor of fld “Geschichte” to white
                    end if
                    if the hilited of widget “lesen” then
                    revSetSpeechSpeed 210
                    revSpeak fld “Geschichte”
                    end if
                    end if
                    end uhrAktualisieren

                    Hallo Klaus,
                    hast du das so gemeint mit Code Tags?

                  • #19361
                    GerryS
                    Teilnehmer

                      Hallo Klaus,
                      wie meinst du das mit den CODE Tags.
                      Ich hab da oben das “Code” angeklickt und es hierhin kopiert. Das sah aber komisch aus?

                    • #19362
                      Klaus Major
                      Administrator

                        Hi Gerry,

                        hast du das so gemeint mit Code Tags?

                        seufz, ein Blick auf meinen vorletzen Post sollte diese Frage beantworten…

                        Aber was genau funktioniert denn an dem Skript nicht?
                        Und wie lang ist denn Deine “Geschichte”?
                        Da Du ja “uhrAktualisieren” jede Sekunde abfeuerst.

                        Ich habe mal ein paar Optimierungen vorgenommen, bite auf die Kommentare achten.

                        on uhrAktualisieren
                        
                          ## Immer wichtig, wenn wir mehr als ein oder zwei Sachen auf dem Montor aktualisieren.
                          ## Das beschleunigt den Bildschirmaufbau, Gilt BESONDERS für Felder!
                          lock screen
                        
                           revSetSpeechSpeed 270
                           put fld "uhr" into zeitwert
                           subtract 1 from zeitwert
                           put zeitwert into fld "uhr"
                           revSpeak fld "uhr"
                           add 1 to fld "meineZahl"
                           if zeitwert > 0 then
                              
                              ## Strings, dazu gehören auch die Namen der zu SENDenden Handler, immer in Anführungszeichen!
                              send "uhrAktualisieren" to me in 1 seconds
                           else
                              subtract 30 from fld "meineZahl"
                              
                              ## DEFAULT-Wert setzen:
                              put BLACK into tFarbe
                              
                              ## KEIN THE bei der Ansprache von LC Objekten! 
                              ## Das benötigen wir bei Custom Properties!
                              ## put the foregroundColor of the button "W" into the fld "au"
                              put the foregroundColor of button "W" into fld "au"
                              set backgroundColor of stack "Timer down" to white
                              beep
                              
                              if the hilited of widget "farben" then
                                 
                                 ## Die andere Option:
                                 put WHITE into tFarbe
                                 set backgroundColor of stack "Timer down" to blue
                              end if
                              
                              ## Jetzt erst alle Felder einfärben:
                              ## In einem REPEAT LOOP, spart Tipparbeit! :-)
                              repeat for each item tFeld in "uhr,Schalter,meineZahl,vorlesen,Geschichte"
                                 set the foregroundColor of fld tFeld to tFarbe
                              end repeat
                              
                              if the hilited of widget "lesen" then
                                 revSetSpeechSpeed 210
                                 revSpeak fld "Geschichte"
                              end if
                           end if
                           
                           ## Alles fertig, Vorhang wieder auf:
                           unlock screen
                        end uhrAktualisieren

                        Und so sieht das mit den CODE Tags aus! 😎
                        Rein logisch gibt es aber in dem Skript keinen Grund nicht zu funktionieren!?

                        Gruß

                        Klaus

                      • #19371
                        GerryS
                        Teilnehmer

                          Hallo Klaus,
                          also das rein logische ist ja das, was mich nicht dahinter kommen lässt. Ich habe zuerst einen “kleinen Stack” mit “einzelnen” Funktionen ausprobiert. Wenn das auch bei mir funktioniert, und nicht nur im Buch, mit kleinen Änderungen, dann habe ich es auf einem größeren Stack aufgebaut.
                          Zuerst habe ich mir eine Zahlenreihe bis Null runtersagen lassen.
                          Gleichzeitig wurde eine Minuszahl hochgezählt und am Schluss wieder abgezogen.
                          Bei Null wechselte ein zuvor eingestellter Schalter die Hintergrundfarbe umgeschaltet.
                          War dieser Schalter nicht auf EIN, dann ändert sich die Farbe wieder, wenn sie vorher anders war. Sonst blieb die Farbe, wie sie war.
                          Ein anderes Quadrat bekam eine Zufallsfarbe, welche auf einem weiteren Rechteck die 3 Zahlen der Farben angeben.
                          Nach erreichen der Null vom ersten Ablauf wurde, wieder durch einen Schalter eingestellt, eine kleine Geschichte erzählt. 19 Wörter.
                          Und DANN SOLLTEN 2 leds, eingeschaltet mit einem Schalter, abwechseln in verschiedenen Farben blinken.
                          Aber mit den verschiedenen Farben blinken ist noch nicht so weit.!!?? Beim anschalten dieses Schalters
                          wurde mir die Geschichte so oft vorgelesen, bis die Anzahl der “end if” durch war bis zum Ende.
                          Die leds wurden nicht einmal hell. WO ist die Logik geblieben.
                          Das ist nun das komische dabei.
                          Danke Klaus, dass du bis hierhin durchgelesen hast.

                        • #19372
                          Klaus Major
                          Administrator

                            Hi Gerry,

                            hmmm, very FUNKY! 😀

                            Wenn Du magst, darfst Du mir gerne den Stack zuschicken und ich gucke da mal rein!
                            Hierhin bitte: klaus AT major-k.de

                            Gruß

                            Klaus

                          • #19373
                            GerryS
                            Teilnehmer

                              Hallo Klaus,
                              wie bekommst du die Skipte so hin, dass sie auch manierlich aussehen.
                              Ich weis es nicht.
                              wie bekomme ich es an diese Adresse ?
                              Hast du auch eine E-Mail Adresse?
                              Ich hätte da noch ein paar Fragen, welche aber hier wohl gar nicht von Interesse sind.
                              Einige Stellen im Buch verstehe ich bislang gar nicht.
                              Gruß
                              Gerd

                            • #19374
                              Klaus Major
                              Administrator

                                Hi Gerd,

                                Skript in LC kopieren
                                Hier PASTEn
                                Dann das Skript hier wieder markieren
                                Dann oben auf CODE klicken
                                Das wars 🙂

                                Tja, meine Emailadresse steht oben ja, aber für ROBOTS nicht lesbar! 😎
                                Wenn Du selber nicht drauf kommst:
                                Das AT mit @ ersetzen und die Leerzeichen entfernen, fertig ist eine gültige Emailadresse! 😀

                                Und denk dran, ich besitze das Buch von Hauke nicht!

                                Gruß

                                Klaus

                            Ansicht von 12 Antwort-Themen
                            • Du musst angemeldet sein, um auf dieses Thema antworten zu können.