Warum kein ImagesCollide im Menü?
Übersicht

![]() |
BadudelBetreff: Warum kein ImagesCollide im Menü? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
wie wir ja alle wissen, sollte man kein ImagesCollide in Menüs benutzen, sondern die X- und Y-Koordinaten direkt überprüfen. Ich vertrete aber die Ansicht, dass in einem Menü sowieso nicht viel passiert; so viel Ressourcen kann man in einem durchscnittlichen Menü nicht verbrauchen, als dass man mit IC sein Programm langsamer machen könnte. Selbstverständlich gehe ich nicht von einem Menü mit rechteckigen Buttons aus, sondern irgendwelche mit Transparenzen (Ellipsen, Buttons mit abgerundeten Ecken usw). Bei solchen Menüs finde ich die Überprüfung der Koordinaten viel problematischer - bei runden siehts blöd aus, außerdem ist die Programmierung per IC einfacher. Was meint ihr dazu? Gruß, Badudel |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke, es geht nicht um Ressourcenverbrauch, sondern darum, dass bei manchen Grafikkarten ImagesCollide eine MAV bringt. | ||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
ImagesCollide macht Probleme bei vielen nVida-Grafikkarten.
Außerdem finde ich Abfrage über Koordinaten viel schöner ![]() EDIT: Lesen bildet nicht nur, sondern hilft auch dabei den Inhalt des vorherigen Posts wahrzunemen... Wenn das hier jemand löschen will, darf er es gerne tun. MFG |
||
![]() |
Badudel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso... Ja dann ist das tatsächlich ein Problem... Das habe ich noch gar nicht mitbekommen.
Also gut, dann ist das also gar nicht grundlos... Schade. Gruß |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst auch die Ersatzfunktion für ImageRectCollides von hier nehmen: https://www.blitzforum.de/foru...hp?t=27025
Die eignet sich für Buttons auch gut und ist nur wenig langsamer. |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
für buttons, die in den meisten fällen rechtecke sind, nutze ich in der regel eine einfache mouseover funktion:
BlitzBasic: [AUSKLAPPEN] Function MouseOver(Mouse_X,Mouse_Y,Pos_X,Pos_Y,Width,Height) gruß bernhard |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
oder rectsoverlap | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn deine anwendung imagescollide verwendet ist es auch egal wenns probleme im menü gibt...
so lange die anwendung nicht funktioniert wie sie funktionieren soll macht auch ein funktionierendes menü nichts her... und wenn du einen button in random form hast mit transparenz ist sicher eine koordinatenabfrage nicht das mittel zum zweck (bis gar "unmöglich") resourcen etc sind im menü ohnehin kein problem.. edit: was ist eine MAV? |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Memory Access Violation, es wird auf etwas zugegriffen auf das man nicht zugreifen darf (oder das nicht exitstiert). | ||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok... was es ausgeschrieben bedeutet ist mir klar
abkürzung hab ich dennoch noch nie gehört - und ich studiere informatik im 3. semester ![]() |
||
- Zuletzt bearbeitet von BBPro2 am Mi, Nov 25, 2009 21:47, insgesamt einmal bearbeitet
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist ja auch eine eingeführte von blitzbasic.. denke nicht dass man die im Studium beigebracht kriegt. | ||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn Pixelgenaue Kollision mit dem Mauszeiger erforderlich ist so kann man IMagesCollide dennoch umgehen, mit folgender Vorgangsweise:
(Achtung, der Code wurde hier im Portal kurz nachn Aufstehen rein getippt, nicht getestet - aber geht ja darum dass ihr das Prinzip versteht) Code: [AUSKLAPPEN] ;Zuerst ARGB-Farbwert der transparenten Stelle ermitteln, gleich nach dem Laden mit ReadPixel
;->Wert zwischenspeichern, ich nehme mal "transparent_col" ;Button-Abfrage, "button_img" sei hierbei das Image des buttons If ReadPixel(MouseX(),Mousey(),ImageBuffer(buttin_img)<>transparent_col Then ;Maus über Button! Endif Ja, natürlich kann bzw. soll man auch hier Mousex(), Mousey() und Mousehit() vorher zwischenspeichern. Ein LockBuffer und anschließendes ReadPixelFast zur schnelleren Durchführung empfehle ich nicht, da nur ein einziges Mal ReadPixelFast aufgerufen wird und ein eventueller Geschwindigkeitsvorteil gegenüber ReadPixel durch LockBuffer und dem danach benötigten UnLockBuffer sofort zunichte gemacht wird. Diese Befhele brauchen nämlich auch Zeit. Und man muss sie immer ausführen da man ein Bild mit gelocktem ImageBuffer nicht zeichnen kann. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group