Frage zu meiner Lib

  • VB.NET

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

    Ok. Eine dumme Frage xD: Für was ist der Typ dabei eigentlich gut ? Was kann ich damit dann machen ? Wenn ich in der Form dann schreibe:

    VB.NET-Quellcode

    1. ​Dim LeftStick as new Stick

    Was bringt mir das dann ?

    lukekogv schrieb:

    Versuch mal bitte zu erklären, was du dir unter einem Namespace, einer Class, einer Structure und einer Property vorstellst, vllt. können wir dir dann zeigen, wie du deine Library aufbauen könntest / solltest.

    Ich verweise mal auf meinen Beitrag, denn ich vermute, dass du dir falsche Vorstellungen machst, was unter Klassen, Namespaces etc. zu verstehen ist. Im Moment sieht es danach, als fehlten dir da Grundlagen im OO-Bereich.

    Edit: Um deine Frage zu beantworten: Du hast ein Objekt vom Typ 'Stick'.
    Crashkurs in Sachen OOP:
    Es gibt 2(eig. 3) Arten von Programmierung: objektorientierte und n. OO Programmierung. In einer n. OOP hast du ein Korb voll Funktionen und rufst diese auf, zusätzlich gibt's fundamentale Typen und ggf. Structures. Im Gegensatz dazu arbeitet man (auch du) mit Objekten. Um ein Objekt definieren zu können wird in VB eine Klasse benutzt. Dazu gibts ganz tolle Features wie Vererbung, Polymorphie und Kapselung. Eine Klasse ist wie jeder fundamentale Typ erstmal ein Typ. Dieser kann deklariert werden wie jeder Typ. Dim/Public/Private/Protected/etc. [name] As [Typ]. Der Unterschied ist, dass Klassen Referenztypen sind. D.h. sie werden nicht auf den Stack gelegt, sondern auf den Heap (nicht in allen Sprachen so, aber in C#/VB). Damit etwas auf den Heap gelegt wird, benutzt man das Schlüsselwort New, gleichzeitig damit wird ein Objekt instanziiert und der Konstruktor des Objekts aufgerufen. Die Variable ist nun ein Zeiger aufs Objekt aufm Heap und wird immer per Referenz übergeben (da Zeiger). Wenn es nicht mehr gebraucht wird,ruft der GC den Finalizer des Objekts auf, löscht es für dich und gibt den Speicher frei. Ohne New gibts dann natürlich kein Objekt und du hast nur einen Zeiger (eine Referenz) auf die Speicheraddresse 0 im Heap -> NullReferenceException.
    Danke :) Ich habe es jetzt ungefähr so versucht wie man es mir gesagt hat. Funktioniert auch fast alles. Ein paar Probleme gibts da aber noch:
    1. Ich kann so: "Controller.LeftStick.Location" nicht darauf zugreifen -> Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. So kann ich es aber: "Stick.Location". Unter der Klasse Controller habe ich: "Public WithEvents LeftStick As Stick", was mich eigentlich zu der Klasse "Stick" leiten soll. Hab ein "new" reingesetzt und es geht :)
    2.Bei "Controller.LeftStick.IsPressed" kommt immer "true" heraus. Der Code davon:

    VB.NET-Quellcode

    1. ​Public ReadOnly Property IsPressed As Boolean
    2. Get
    3. myjoyEX.dwSize = 64
    4. myjoyEX.dwFlags = &HF
    5. Call joyGetPosEx(Controller.ID, myjoyEX)
    6. Return TasteGedrückt(8, myjoyEX.dwButtons)
    7. End Get
    8. End Property
    9. Private Function TasteGedrückt(Taste As Integer, Flag As Integer) As Boolean
    10. Return ((Flag And (1 << Taste)) = (1 << Taste))
    11. End Function


    3. Die Form sieht aufeinmal alt aus. Die Buttons sind nicht abgerundet etc. und wenn ich auf ihn klicke, verschwindet der Text darauf oder manchmal sind dort japanische oder chinesische Zeichen darauf.

    mfg Frank
    Hab' es jetzt so gemacht aber zeigt immernoch das gleiche an:

    VB.NET-Quellcode

    1. Public ReadOnly Property IsPressed As Boolean
    2. Get
    3. myjoyEX.dwSize = 64
    4. myjoyEX.dwFlags = &HF
    5. joyGetPosEx(Controller.ID, myjoyEX)
    6. Return KeyPressed(Keys.LeftStick, myjoyEX.dwButtons)
    7. End Get
    8. End Property
    9. Private Enum Keys
    10. Cross = 0
    11. Circle = 1
    12. Square = 2
    13. Triangle = 3
    14. LeftStick = 8
    15. End Enum
    16. Private Function KeyPressed(Key As Integer, Flag As Integer) As Boolean
    17. Return ((Flag And (1 << Key)) = (1 << Key))
    18. End Function


    Und danke nochmal, mein Visualstyles war wirklich aufeinmal weg :( Hab dann Application.EnableVisualstyles gemacht und jetzt geht's :)
    Sorry, dass ich diesen Thread noch einmal ausgrabe, aber da ich mit meinen anderen Programmen soweit zufrieden bin, mach' ich nun mit diesem weiter. Meine Frage:
    wie sollte ich am besten den Wert der DPad-Buttons ausgeben ? Grad ?

    mfG Frank
    Definiere

    xd-franky-5 schrieb:

    DPad-Button
    1. Haben Button einen Wert?
      Habe ich Dich falsch verstanden oder hast Du Dich verkehrt ausgedrückt?
    2. Grad
      Welche Optionen gibt es?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    D-Pad ist dieser Sternbutton, wie auch immer man es nennen mag. Man hat Up, Down, Left Right und man kann ja auch zwischen Up und Right drücken. Ich kann somit z.B. den Wert als Grad ausgeben. Wenn man dann 90 bekommt, weiß man es ist Right, bei 180 Down und bei 150 dazwischen aber näher bei Down.

    xd-franky-5 schrieb:

    Ich kann somit z.B. den Wert als Grad ausgeben.
    Dann speichere genau diesen Wert ab, wenn er den vollständigen Zustand repräsentiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    xd-franky-5 schrieb:

    möchte doch auch wissen
    heißt, dass dieser Wert den vollständigen Zustand nicht repräsentiert.
    Poste bitte die vollständige und belastbare Problemstellung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ist die DLL OpenSource?
    Oder besser gesagt, kann man den XBOX Guide Button auch belegen? Das wäre sehr cool.
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!