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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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.