Klick und Doppelklick Button

  • Hallo Sokobana,


    benötige nochmal Deine Hilfe oder von denen die auch noch das Handwerk beherschen:


    Ich möchte mir auf der Map einen Klick + Doppelklick Button einrichten der zwei_unterschiedliche_Mortscript.exe ansteuert:


    1-Klick Launch: einzelKlick.exe
    2-Klick: Launch: doppelKlick.exe


    Wie kann ich das grundsätzlich realisieren? ?(


    Gruß
    ssnweb

  • Hallo ssnweb,
    dann mache ich mal den Anfang.


    Im Varioskin 2 hatte ich mal einen Doppelklick-Button mit der Gopalfunktion DoubleClick realisiert:


    Change2D3DButton // added by sokobana
    {
    Class: DoubleClickButton;
    Coordinates: 125,230,40,40;
    Enabled: 131,0,0,30,30,0,10;
    Pushed: 131,0,0,30,30,10,0;
    PYOffset: 2;
    BGMode: transparent;
    FocussedColor: 0,0,0,0;
    DisableFocus: yo;
    Wordbreak: yes;
    KPush: enter,left;
    Action: MapMenu.3d;
    DoubleClickAction: MapMenu.overview;
    }


    Damit lassen sich aber nur Actions und keine Programme starten. Actions sind Gopal eigene Routinen, die man z.B. wie in dem Beispiel-Code angeführt starten kann.


    Du willst dagegen zwei Programme starten. Das geht auch. Ist meist aber um ein vielfaches aufwendiger, wenn man Glück hat auch nicht. ;D Es kommt also genau auf den Einzelfall an. Deshalb beschreibe uns mal erst:


    - was genau willst Du machen (Funktion 1 und 2 bitte genau beschreiben)?
    - Sind die Scripte schon fertig?
    - wo willst Du das genau machen (am besten Screenshot mit dem Button reinstellen)?
    - Was soll beim 1. Klick ausgelöst werden?
    - was soll beim 2. Klick ausgelöst werden?
    - Ist die Reihenfolge eventuell egal?
    - Sind es entweder/oder-Aktionen, die man mit einem einzigen Script abwickeln kann?


    Gruß sokobana

    Einmal editiert, zuletzt von sokobana ()


  • Schön dass Du Dich meldest, Sokobana,


    ich möchte div. Button im Map-Menu mit der Double-Klick Funktion ausstatten. Ich werde das mal anhand von einem Beispiel beschreiben:


    In meinem tHM-Design habe ich rechts und links je 6 Buttons. Dein V3 werde ich noch mit einem tHM-XL Design ausstatten, wobei es hier nur je 5 Buttons, dafür größere, geben wird. Kurz: tHM steht für transparentes Höhen Moped - Design. Stichwort Moped, hier sollte man das Navi mit möglichst wenigen Tastendrücken effektiv und komfortabel bedienen können.


    Mit dem Button für die Sonnenbrille (T/N) möchte ich auch das Tag/Nachtdesign bedienen können. Die Scripte stammen aus Deinem V3, wurden ggf. wie folgt von mir modifiziert:


    Sonnenbrille soll den Klick bekommen, da häufiger verwendet:


    # Copyright Sokobana / PrinzEmu


    voldelay = RegRead ("HKCU","Software\sokobana", "VOLDELAY")
    SetVolume ( voldelay )
    PlaySound ("\My Flash Disk\Sokobana\MortScript\sonnenbrille.wav")
    RegWriteString ("HKCU", "Software\sokobana", "FARBWERT", 1)


    Sleep ( 3000 )


    #While ( ColorAt (479,0) ne 255 )
    # Sleep ( 300 )
    #Endwhile
    #ROTWERT = ColorAt (479,20)
    #RegWriteDWord ("HKCU","Software\sokobana", "ROTWERT", ROTWERT)
    #ABfarbe = ColorAt (479,18)
    #RegWriteDWord ("HKCU","Software\sokobana", "ABfarbe", ABfarbe)


    SetVolume (255)






    Tag/Nacht Umschaltung soll Double-Klick werden, da seltener benötigt:


    voldelay = RegRead ("HKCU","Software\sokobana", "VOLDELAY")
    SetVolume ( voldelay )


    # repariert Gopal "heimliche" 3D-Resets
    RegWriteDWord ("HKCU","Software\sokobana", "Map3D", 3)


    MouseClick ( 240, 60 )
    DESIGNx = ( RegRead ("HKCU","Software\3Soft\Pathfinder\MapConfig", "Design") )


    if ( DESIGNx = 1 )
    PlaySound ("\My Flash Disk\Sokobana\MortScript\tagansicht.wav")
    MouseClick ( 10, 100 )
    Endif
    if ( DESIGNx = 2 )
    PlaySound ("\My Flash Disk\Sokobana\MortScript\nachtansicht.wav")
    Mouseclick ( 10, 148 )
    Else
    MouseClick ( 10, 48 )
    Endif
    Sleep ( 5000 )
    Mouseclick ( 10, 230 )


    Mann könnte ggf. beide scipts zu einem Bedigungsscipt If/Else zusammenfassen, sofern das notwendig ist.


    Den Screenshot habe ich angehängt, T/N ist der 4-te Button von oben/rechts.


    Danke für Deine Hilfe.


    Gruß
    ssnweb

  • Ok, diesen Gedanken habe ich auch schon verfolgt. Letzlich bin ich aber zu dem Schluß gekommen, dass es sicherer ist zwei getrennte Buttons dafür zu nutzen. Deshalb im Varioskin 3 Der Design-Button und daneben der unsichtbare Sonnenbrillen-Button.


    Fortgeschrittenen-Lehrgang für Skinner: ;)


    Doch nun zu Deinem Wunsch. Sicherlich hast Du schon eigene Versuche unternommen. Dabei wirst Du bemerkt haben, wie schwierig es ist, beim zweiten Klick auf den gleichen Button, eine andere Reaktionen hervorzurufen als beim ersten Klick.


    Was passiert nun eigentlich beim Klick?


    a) Solange Du den Finger auf dem Button drückst, passiert noch garnichts. Erst beim Loslassen wird der Start des gewünschten Scripts ausgelöst.


    b) Der nun folgende Klick macht aber nichts anderes als der erste Klick: Nach dem Loslassen wird wieder das gleiche Script gestartet.


    c) Ich habe jetzt nicht genau im Kopf, wie MortScript darauf reagiert. Entweder wird das erste Script in der Fortführung beendet und neu gestartet , oder der zweite Start wird ignoriert und das Script macht unbeeindruckt weiter (oder war es noch ganz anders?). Lies das mal selbst nach in der MortScript-Anleitung.


    - Ein weiterer möglicher Fall: beim zweiten Klick war die Scriptverarbeitung des ersten Klicks bereits beendet. Woher könnte das Script also wissen, dass der zweite Klick als "Doppelklick" gemeint war? Wird es den zweiten Klick nicht doch wieder als "ersten Klick" interpretieren? Das sind erstmal die ersten Dinge, die Du berücksichtigen mußt.


    - Wir haben hier also noch ein Timingproblem: Du mußt definieren, wie lange zwei aufeinander folgende Klicks auseinanderliegen dürfen, um noch als "Doppelklick" interpretiert zu werden, und nicht als zwei unabhängige Einzelklicks.


    - Wenn Du das für Dich geklärt hast, überlegst Du als nächstes, wie Du dem Script beibringst, dass es nicht einfach "drauflos ackert", sondern "lauscht" ob es einen zweiten Klick gibt, der als "Doppelklick" gemeint ist, also eventuell eine ganz andere Reaktion hervorzaubern soll, als wäre nur ein Klick erfolgt. In diesem Fall sollte vermutlich Reaktion 1 garnicht erfolgen, sondern nur Reaktion 2. Dafür ist z.B. als einfachste Lösungsmöglichkeit der Sleep-Befehl dienlich.



    Hypothese: Falls der zweite Klick MortScript nicht dazu veranlaßt, das Script neu zustarten, mußt Du überlegen, wie das "Lauschen" funktionieren könnte.
    - Tipp: Koord465 kann gleichzeitig einen Registry-Eintrag umschalten und ein Programm, also auch ein MortScript starten. Na, das ist doch schon was, oder? :) Hier kann Dir die Anleitung zu Koord oder Stephan persönlich hilfreich sein.


    Du kannst also erstmal eine definierte Pause einplanen und danach abfragen, ob Koord einen bestimmten RegEintrag gesetzt hat. Wenn Ja, war es der "Doppelklick", wenn nicht, der "einsame" Klick.


    Hinweis: Das funktioniert nur, weil der Umschaltbefehl für den Registry-Eintrag bei jedem(!) Klick auf den Button ausgeführt wird. Unabhängig ob viel oder wenig Zeit zwischen zwei Klicks vergangen ist. Und das ganze funktioniert nur, wenn die Hypothese oben stimmt. Stimmt sie nicht, gib mir Bescheid, damit wir unsere Taktik ändern... ;)


    So, ich denke, ich habe Dir jetzt erstmal genug zum Nachdenken und forschen auf den Weg gegeben. Kläre also erstmal ab, wie sich MortScript verhält und tue das Ergebnis hier kund. Dann sehen wir weiter.


    Wenn Du zu dem Schluß kommen solltest, dass ein Doppelklick doch nicht das "Gelbe vom Ei" ist, kein Problem, dann zeig ich Dir einen weiteren Weg auf.


    Was ich ganz toll finde: Dass Du hier nicht eine fertige Lösung abforderst, sondern Dich selbst auf den steinigen Weg begibst. Der beste Weg, ein erfolgreicher Skinner zu werden. :)


    Gruß sokobana

  • Hallo,


    wenn alles versagt, dann könnte ich auch die Buttons, die man schon jetzt mit Koord erstellen kann, soweit erweitern, dass Sie auch einen Doppelklick beherrschen.
    Momentan reagieren "meine" Buttons nur auf die erste Berührung (also MOUSE_CLICK_DOWN).


    Natürlich sehen diese Buttons nicht so schön aus, da sie nicht in GoPal integriert sind.


    Eine andere Möglichkeit -sozusagen eine Mischform- wäre ein "normaler" Button in GoPal, der ein Koord-Mini-Menü aufruft und dann die weitere Auswahl zur Verfügung stellt.


    Gruß,
    Stefan

  • Zitat

    Was ich ganz toll finde: Dass Du hier nicht eine fertige Lösung abforderst, sondern Dich selbst auf den steinigen Weg begibst. Der beste Weg, ein erfolgreicher Skinner zu werden. :)


    Gruß sokobana

    [/QUOTE]


    Oh Danke Sokobana, das macht die Sache erst interesant und man entwickt selber noch zusätzliche Ideen.
    Mir schwebt da noch eine ganz andere Richtung vor:


    Meine Spontane Idee:
    Skinbrocken könnten mit folgender Anregung aufgebaut werden:


    Action1: ist die Sonnenbrille und bekommt in
    Params1: einen Lklick1 auf den unsichtbaren Button der Sonnenbrille
    Action2: ist das Tag/Nachtdesigen und kann mit der Gopal Menuangabe angesteuer werden.
    Params2: wird wahrscheinlich nicht benötigt.


    Da ich aber auch die Routensperrung und andere Buttons mit Double Klicks versehen möchte, weder ich mich am Wochenende ausgibig mit Deiner o.a.
    Anregung beschäftigen.


    Gruß und danke
    ssnweb

  • nochmal: Mit Action kannst Du m.W. keine Programme starten, s.o.


    Gruß sokobana

  • Hallo Stefan,


    über Koord habe ich ein generelles Problem, das ich schon im Höhen Thread beschieben hatten:


    Der Koordserver ist bei mir kontinuierlich an, damit die Höhe angezeigt wird.
    Dadurch werden andere KordServ "befehle" nicht mehr ausgeführt, es sei denn dass ich den Koordserver per z.B. mouse click deaktiviere.


    So habe ich es bei den Presetbuttons von Sokobana gemacht.


    Bei dem Nach Hause Button geht es z.B. nicht, hier werden die LKlicks
    nicht ausgeführt. Und ich habe die Bedenken, dass ich gleiche Probleme
    mit einem DoubleKlick bekomme wenn er von Koord gesteuert wird.


    Gruß
    ssnweb

  • Zitat


    Action1: Map.menu
    Action2: Darstellung
    Launch: $Koordspfad2"
    params1: steuer ich die sonnenbrillen.exe oder .mscr an
    params2: entfällt, oder steuer ich die Tag/Nacht.exe oder .mscr an


    wenn params2 entfällt, komme ich direkt in richtige menu, dass reicht mir eigentlich schon.


    Oder hast Du Bedenken an die Ausführungsbefehle Action1+2, Launch und params?


    Die wird nur ein kurzer Test, Stunde Arbeit und ich habe die Antwort.




    Deine zuvor beschriebene Variante benötige ich auch für die anderen Buttons. Hier muss ich mich erst einmal sehr intensiv mit beschäftigen.




    Gruß
    ssnweb

  • Für Doppelklicks mit Action ist die Klassifizierung des Buttons:
    Class: DoubleClickButton;


    Für ProgrammstartButtons dagegen:
    Class: LauncherButton;


    Ob man das unter einen Hut bekommt wage ich zu bezweifeln.
    Aber probieren geht über studieren... :D

  • Hallo ssnweb,

    Zitat

    Original von ssnweb
    Der Koordserver ist bei mir kontinuierlich an, damit die Höhe angezeigt wird.
    Dadurch werden andere KordServ "befehle" nicht mehr ausgeführt, es sei denn dass ich den Koordserver per z.B. mouse click deaktiviere.


    man müsste die Sache anders angehen:
    Koord-Server müsste immer im Hintergrund laufen, die Einblendungen könnte man dann dynamisch per Kontrollpixel oder per Klick steuern.
    Man kann sich auch ganze mehrseitige Menüs aufbauen. Siehe z.B. hier.



    Aber wenn Du es anders gelöst bekommst, dann soll es mir recht sein!


    Gruß,
    Stefan

  • Zitat

    man müsste die Sache anders angehen:
    Koord-Server müsste immer im Hintergrund laufen, die Einblendungen könnte man dann dynamisch per Kontrollpixel oder per Klick steuern.
    Man kann sich auch ganze mehrseitige Menüs aufbauen.


    Hallo Stefan,


    Koord-Server im Hintergrund bedeutet KoordServ=1 ???
    So ist meine Höheneinstellung eingestellt, die ich keinesfalls aufgeben möchte. Hier müssten wir das Problem angehen.




    Zitat

    Aber wenn Du es anders gelöst bekommst,


    ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?( ?(
    Aber ich werde erst einmal alle Gedanken andenken, bevor ich mich für
    einen Lösungsweg entscheide. Bitte nicht sauer sein, Koord ist schon echt großartig! ;)


    Aber die Buttons sollten auf jedenfall in GoPal eingebunden sein, das heißt
    nicht auf GoPal liegen und per Pixwnd= gesteuert und ausgeblendet werden, da hier die Ausblendung immer mit Zeitverzögerung ausgeführt wird.


    Gruß
    ssnweb

    Einmal editiert, zuletzt von ssnweb ()

  • Zitat

    Ob man das unter einen Hut bekommt wage ich zu bezweifeln.
    Aber probieren geht über studieren... :D

    [/QUOTE]


    Du hast nicht gezweifelt, du wußtest dass es nicht geht! :( ;D


    Gruß
    ssnweb

    Einmal editiert, zuletzt von ssnweb ()

  • Zitat

    Hypothese: Falls der zweite Klick MortScript nicht dazu veranlaßt, das Script neu zustarten, mußt Du überlegen, wie das "Lauschen" funktionieren könnte.
    - Tipp: Koord465 kann gleichzeitig einen Registry-Eintrag umschalten und ein Programm, also auch ein MortScript starten. Na, das ist doch schon was, oder? :) Hier kann Dir die Anleitung zu Koord oder Stephan persönlich hilfreich sein.


    Ja, ich sehe in Deinem Lösungsweg bereits die Lösung in weiter Ferne!
    Um in der Registry a) schreiben und lesen zu können, benötige ich erst
    einmal einen geeigneten Regiditor damit ich b) mir überhaupt erst mal anschaue was ich lesen und schreiben kann. ?(


    Kannst Du mir einen Regeditor empfehlen?
    Am besten einen der mir die Registry am PC anzeigt. : drink


    Gruß
    ssnweb

    Einmal editiert, zuletzt von ssnweb ()

  • Suche mal nach Mobile Registry Editor.
    Der funktioniert bei mir unter XP und auch Vista.


    Lesen und Schreiben in der Registry machst Du aber mit MortScript:
    RegRead ...
    RegWriteString
    RegWriteDWord
    RegDelete


    Gruß sokobana

    Einmal editiert, zuletzt von sokobana ()