Mousedown - Funktion trotzdem nur einmal ausführen (nochmal)
Übersicht

![]() |
miLORDBetreff: Mousedown - Funktion trotzdem nur einmal ausführen (nochmal) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
Ich möchte bei mousedown(1), dass eine funktion ausgeführt wird. Leider wird diese funktion oft nacheinander ausgeführt, wenn man nciht ganz schnell die taste wieder loslässt. Wie kann man das programmieren, dass die funktion selbst nur einmal ausgeführt wird, der rest (der sonst noch bei mousedown passiert) jedoch ständig? vielen dank schonmal im vorraus miLORD |
||
brqwq?! oO |
- Zuletzt bearbeitet von miLORD am Do, Mai 25, 2006 18:33, insgesamt einmal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann nimm für die funktion ql:mousehit. | ||
![]() |
miLORD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenns so einfach wäre...
Ich möchte den rest ja immer ausgeführt haben... |
||
brqwq?! oO |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Siehe hier:
https://www.blitzforum.de/foru...t=mousehit MfG D2006 |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
mach es so:
am anfang einer repeat-schleife machst du mh1=MouseHit(1) und überall, wo es verwendet werden soll, schreibst du einfach mh1 statt MouseDown(1). In der Funktion setzt du es dann auf 0...also mh1=0 mh1 sollte am besten global deklariert sein ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
miLORD |
![]() Antworten mit Zitat ![]() |
---|---|---|
mir geht ein licht auf! prima, vielen dank allen! | ||
brqwq?! oO |
![]() |
miLORD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal sry für den doppelpost, aber sonst wird das hier nicht mehr angesehn:
Funktioniert leider doch nicht so, wie ich das will. ich möchte eine rückgängig-funktion schreiben. wenn man also etwas macht, soll man mit keyhit(14) die letzten rückgängig machen können (is nicht wahr, DAZU is sone rückgängig-funktion da?!?). Man muss folglich die letzten schritte speichern, was ich nur EINMAL haben will, da er sonst 40 mal das gleiche rückgängig macht. allerdings soll man sachen ziehen können, weshalb keyhit nicht möglich ist... Hab schon timer ausprobiert, aber das geht auch nicht... ![]() |
||
brqwq?! oO |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
oha...das ist ein schwierigeres unterfangen:
also du kannst ja jeden schritt in nem typ speichern...: Type aktion Field aktions_id ; 1 für Objekt bewegt etc.. Field bank End Type In die Bank kannst du dann die Informationen reinpacken: Wir bewegen mal ein Objekt: BlitzBasic: [AUSKLAPPEN] |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
miLORD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ich schon fertig war mit der funktion, hab ich das so:
Code: [AUSKLAPPEN] Dim last_schritt$(40) Dim last_Z(40) Dim last_S(40) ;wenn was bewegt wird If LMB = Down Then letzterSchritt(Zeile,Spalte) EndIf Function letzterSchritt(saved_Z,saved_S) If Not ((last_schritt$(rueckschritt)=level$(saved_Z,saved_S)) And (last_Z(rueckschritt) = saved_Z) And (last_S(rueckschritt) = saved_S)) Then rueckschritt = rueckschritt + 1 If rueckschritt = 41 Then For T = 3 To 40 last_schritt$(T) = last_schritt$(T-1) last_Z(T) = last_Z(T-1) last_S(T) = last_S(T-1) Next rueckschritt = 40 EndIf Last_Schritt(rueckschritt) = level(saved_Z,saved_S) last_Z(rueckschritt) = saved_Z last_S(rueckschritt) = saved_S EndIf End Function Function rueckgaengig() Level(last_Z(rueckschritt),last_S(rueckschritt)) = last_schritt$(rueckschritt) rueckschritt = rueckschritt - 1 If rueckschritt =< 1 Then rueckschritt = 2 End Function Es sind max. 40 schritte "rückgängigmachbar"... sobald man mehr hat, werden alle einen schritt weiter nach hinten verschoben, der letzte entfällt. Das funktioniert ja auch prächtig, nur wird diese funktion sehr oft ausgeführt, wenn man länger gedrückt hält als eine millisekunde! Dementsprechend macht er alles zig-mal als letzten schritt und es verändert sich erst beim x-ten mal rückgängigmachen etwas. und das ist mein problem. Meine Idee war, zu prüfen, ob der jetzige letzte schritt dem vorherigen gleich ist, und wenn ja, ihn einfach nciht zu speichern. habs probiert, mach aber irgendwas falsch... ich weiß nicht mehr weiter... |
||
brqwq?! oO |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
mach doch einfach einen timer, der nur einen klick pro 500 Millisekunden aufnimmt... sollte eigentlich schon reichen!
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
miLORD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie oben geschrieben, geht das nicht, da, wenn man zieht, einige kästchen gar nciht ins rückgängigmachen fallen, weil der timer davor ist... man müsste für jedes kästchen einen neuen timer ablaufen lassen, dann ginge es. hab ich auch schon probiert, wie auch die überprüfung ob der schritt dem letzten entspricht...
EDIT: Hat sich erledigt, ich habe die abfrage einfach vor das mousedown gesetzt. danke an alle. |
||
brqwq?! oO |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group