Button Zentrieren - Let's Game Dev
Vložit
- čas přidán 26. 08. 2024
- Mein Kanal: bit.ly/LetsGame...
bit.ly/LetsGame...
----Mehr Coole Infos ----
Buchempfehlungen:
Manchmal besser und schneller als Google:
bit.ly/JavaKurz...
Über den Aufbau von Videospielen und der Mathematik dahinter:
bit.ly/GameEngi...
Zum Lernen von OpenGL (3D Programmierung):
bit.ly/OpenGLSu...
2D und 3D Spiele in Java:
bit.ly/KillerGa...
Wie man eine Story und Charaktere aufbaut:
bit.ly/VideoGam...
Kostenloses Java ebook von Galileo:
openbook.galile...
---------------------------------
Kamera: Canon 600D + Magic Lantern: bit.ly/600_D
Mikro: Zoom H1 (Also wenn ich's mal zutze^^): bit.ly/Zoom_H1A
Schnitt: Magix Video Pro X4
dein intro ist immer noch das beste :D
Prinzipiell ist das ganze richtig, Divisionen sind teurer als Multiplikationen. Aber wenn wir davon ausgehen, dass du bei den Pixelgrößen eh mit int arbeitest ist die * 0.5 Methode umständlicher. Ein optimierender Compiler wird nämlich eine division durch 2 durch einen 1-Bit-Rechtsshift ersetzen was so ziemlich die billigste Rechenoperation ist, die man machen kann. D.h. in C(++) könnte man einfach xPos = (fensterBreite + buttonBreite) / 2 oder explizit, wenn man dem Compiler nicht vertraut, (fensterBreite + buttonBreite) >> 1 verwenden.
Sehr gut erklärt!
Ich mag deinen Videostil! Hau ruhig mal mehr Content raus :D
Ein Kommentar für unsere Bit-Shifter:
besonders bei UI anpassungen empfiehlt sich das Big-Shifting nicht.
1. Es ist schwerer zu lesen.
2. wenn mann dann von 0.5 plötzlich auf 0.4 wechseln muss, dann muss man das >>1 plötzlich eh kicken.
3. die 0 bis 1 darstellung ist gerade durch ihren Normierungscharakter einfacher anzuwenden
Super, habe alles verstanden!
Diese Grundlage hat scheinbar vielen Leuten gefallen, das ist schön, aber kommen denn auch wieder anspruchsvollere Themen? :)
Schön erklärt, dennoch sollte bedacht werden, dass es sich hier um UI-Programmierung handelt. Das bedeutet, dass diese Berechnung nur einmal durchgeführt werden und dann die Position des Elementes feststehen sollte. Da aber meist nicht sehr viele UI-Elemente vorhanden sind (dies würde auch die Übersichtlichkeit stark beeinträchtigen) ist der Performance-Gewinn (Ob dieser überhaupt minimal vorhanden ist, ist eine ganz andere Frage) zu gering um diese Schreibweise zu rechtfertigen. Desweiteren geht das auch auf Kosten der Lesbarkeit des Codes und wenn man nachträglich nur eine Seite der Berechnung ändern möchte ist dies auch nicht möglich ohne die Gleichung wieder in ihren ursprünglichen Zustand zu versetzten. Den einzigen Vorteil den ich da sehe ist, dass man weniger Tippen muss. Aber ob es sich dafür wirklich lohnt..
In Programmiersprachen ist das Ganze viel einfacher als in HTML bzw. in CSS. Da arbeitet man dann mit Prozentangaben oder mit dem bekannten "margin:0 auto;" wobei sich "auto" auf den Abstand links und rechts bezieht und sich dieser ebenso automatisch der Bildschirmbreite anpasst. Ähnlich wirds dann erst, wenn man das Element absolut positioniert. Dann bekommt das Element ein "left:50%;" und ein "margin-left:- [elementbreite]". Das ist aber dann auch wieder blöd, wenn das Element keine feste Breite hat, sondern ebenfalls per Prozent abhängig von der Bildschirmbreite ist. Programmieren ist manchmal echt einfacher ^^
Du kannst noch dem HTML Element das Attribut align="center" geben und es im CSS mit
vertical-align: middle
versuchen, dass klappt aber auch nur manchmal.
Ja, aber ich benutze eigentlich nie solche Attribute in HTML-Tags. Du bist damit nämlich viel unflexibler. Da ich sowieso mit nem CMS ( Typo3 ) arbeite und dafür Seitenvorlagen erstelle, sind dann solche Sachen nicht gut. Du musst ja allgemeine Seitenvorlagen machen. Meistens ist das nur Startseite und eine Unterseite. Im Typo3 kannst du dann den Inhaltselementen auch so Positionierungen mitgeben. Diese macht Typo3 aber in Form einer Class und nicht mit einem Attribut. Wenns dann gar nicht geht, muss man auch mal auf Javascript bzw. JQuery zurückgreifen und damit einzelne Sachen den Elementen mitgeben, ist aber oft ungeschickt.
Wäre es nicht in einem ganzzahligem Koordinaten-System (Müsste man ja wegen absoluten pixelzahlen eh haben) nicht schneller, per Bit-Shifting zu arbeiten? also zb:
(screen.w - btn.w) >> 1
Was ist der Unterschied zwischen "C" und "C++" welche Vorteile bietet das eine gegenüber dem anderen?
Umd was würdest du eher bevorzugen
www.lmdfdg.at/?q=was+ist+der+unterschied+zwischen+c+und+c%2B%2B
Das mit dem /2 langsamer als 0.5 stimmt nicht. Wenn du durch 2 teilst werden nur die bits verschoben. Rechnest du mal 0.5 wird die Zahl erst nach double und dann zurück nach integer umgewandelt. Das gilt aber nur in diesem speziellen Fall, wo do einen Integerwert durch einen 2^irgendwas teilst.
Cool, danke :)
Hab es auf eine andere Prog. Sprache übertragen und es funktioniert suuuuuper!!! Nach dieser Formel hab ich schon sooo lange gesucht! DANKE!!!
Tut mir leid aber das war das 1. wirklich langweilige Video das ich von dir gesehen habe. Das war viel zu simpel :/
Im Corona SDk kann man einfach x / 2 und y / 2 nehmen da dort die Sprites automatisch zentriert werden.
x = display.contentCenterX / 2
y = display.contentCenterY / 2
Edit
btn.x = display.contentCenterX / 2
btn.y = display.contentCenterY / 2
DizzyNiho oder halt * 0.5
*Besserwisser Modus activated*
btn.x = display.contentCenterX * 0.5
btn.y = display.contentCenterY * 0.5
*Besserwisser Modus deactivated* :DD
Könntest du mal erklären, was ein Vector ist?
wie heißt es in "ich - einfach unverbesserlich" so schön
Mein Name ist Vector, eine mathematische bezeichnung für einen Pfeil mit einer fest definierten länge und richtung.
Oder meinst du vector als eine art dynamisches array?
Hallo Tom , Ich weiß ja nicht ob du das kennst aber wenn ja ist Patrick Washington DC´s Java DVD zu empfehlen , ist auf English und ist jetzt auch nicht so auf Spiele Programmierung spezialisiert .. ist soetwas trotzdem hilfreich für einen Anfänger ? MfG Falk :)
Hey Tom, ich fange am Montag bei einer Firma an als Schul-Praktikant als QA-Manager was muss ich dort machen :( Bitte schnell antworten habe mich vorher nicht Infomiert ^^
...dann mach's doch jetzt?
***** lmgtfy.com/?q=QA-Manager+
Kannst du bitte mal ein Video zur Wahl der Programmiersprache machen???
Ist doch egal welche Programmiersprache du benutzt solange du eine gute Engine/Library hast.
DizzyNiho Ich kann mich einfach nicht entscheiden. Außerdem möchte ich mir dann ein gutes Buch zur Sprache kaufen, das auch auf Spieleprogrammierung eingeht.
Fledermaus8 Ich programmiere in C# und Lua. Ich kann dir Lua empfehlen da es leicht zu lernen ist und es viele Engines und Librarys zum scripten benutzen z.B CryEngine, Corona SDK... Das einige Problem ist das es so gut wie keine Deutschen Bücher gibt du musst also gut Englisch können. Wenn du für PC entwickeln willst empfehle ich Love2D für Mobile Geräte Corona SDK.
Links:
www.lua dot org
love2d dot org
coronalabs dot com
dazu gibts schon ein video ^^
Flehwah Echt? Wie ist der Link davon?
mal ein halb xD
ne mal ehrlich, ich kann doch wohl von nem aktuellen compiler erwarten, dass der wenn ich i=i+1 schreibe, der keine 32 bit addition ausführt, sondern einen viel kürzeren inkrement befehl verwendet. Gleiches bei anderen Rechenarten
Ach ja, und von wegen optimieren, das ist performanter...
Soll Intel doch einfach nen schnelleren Prozessor bauen!
Andreas Eckmayr
erzähl das mal Spieleentwicklern, die vertreten leider meine leicht ironische Ansicht. Es ist nämlich leider ein Lösung, keine gute, aber eine Lösung
Es geht noch schneller: (wScreen-wButton)>>1 (also Right-Shift).
(meno, zu langsam-.-)
shiftright
geht noch schneller
+/- 1px bei einem ungeraden Button Pixelmass. Ist wurscht sieht keiner!
Sehr cooles Video dieses mal, mit deinem gelaber rund um den F****n Button...
was ist mit Hearteater
man KÖNNTE es noch beschleunigen indem man mit nem Bitshift dividiert :DD
uuund wie es aussieht war schon jemand schneller xD
stimmt, aber ein schlauer compiler sollte sehen, dass das durch zwei rechnen schneller durch einen shift zu realisieren ist
Du hast vergessen das du das ganze noch runden musst.
Ohne einen Integer Wert bringt das ganze nicht ;)
Nicht wenn du sowieso mit ints rechnest. Und normal hast du ja die Auflösung als Ganzzahlen ;)
Du rechnest aber mit einer Float Zahl.
Das läuft meines Wissens garnicht.
Wenn ich mich nicht total täusche wird da ne Exception geschmießen.
2. Man berrechnet immer schlechte Eingabe-Werte das ist die Pflicht eines Programmieres.
[gelöscht]
MrDavibu In Java und C# ist das auf jeden Fall nicht so, da wird bei Integer automatisch gerundet.
In dem gegebenen Beispiel handelt es sich um sogenannten "Pseudocode" der auschließlich der Erklärung dient. Streng genommen fehlen nämlich auch noch die Seikola am ende der Codezeile, using bzw. include Anweisungen etc. .. Was die Auflösung angeht. Soweit ich informiert bin verwenden alle Engines und Frameworks int werte. Dein Monitor kann ja keine halben Pixel darstellen. :) Bei Unity 3D und XNA kann ich sagen das es ohne Typecast funktioniert.
sollte eig alles logisch sein^^