Zum Inhalt springen

Objekt wärend der Laufzeit wechseln


developer

Empfohlene Beiträge

Hallo,

ich habe ein Programm in dem ich ein Objekt erzeuge. Wärend der Laufzeit greife ich auf dieses Objekt1 zu und arbeite damit... Soweit ja ziemlich ungewöhnlich.

Nun möchte ich ein Objekt2 erzeugen welches die gleichen Eigenschaften wie Objekt1 hat.

Ich Führe z.B. eine Sub durch, wobei Objekt1 irgendwas macht. Nun möchte ich aber auch wechseln können, dass die Sub auch von Objekt2 durchgelaufen werden kann.

Wie kann ich nun wärend der Laufzeit zwischen Objekt1 und Objekt2 wechsel?

Ich hoffe es ist verständlich :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

mal sehen ob ich das richtig verstanden habe:

sind die objekte o1 und o2 instanzen unterschiedlicher klassen?

dann müssten diese eine gemeinsame schnittstelle implementieren, und du kannst dann in der funktion auf die methoden, eigenschaften der gemeinsamen schnittstelle zugreifen.

hoffe, das war verständlich, sonst einfach nachfragen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Konkret sieht es so aus, dass ich einen MS Assistenten animieren möchte.

Da es aber ja mehrere Assisten gibt, möchte ich keine Redundanz erzeugen und einfach nur die gleiche ANimation von einem anderen Assistenten erledigen lassen.

z.B.

Private Sub PeedyStart()


Dim Animation As Variant


  On Error Resume Next

  Agent1.Characters.Load "Peedy", "Peedy.acs"

  Set Peedy = Agent1.Characters("Peedy")

  Peedy.Show


  List1.Clear

  For Each Animation In Peedy.AnimationNames

    List1.AddItem Animation

  Next Animation


  With Peedy

    .MoveTo (Form1.Left + Form1.Width) / Screen.TwipsPerPixelX, _

         (Form1.Top + (Form1.Height / 2)) / Screen.TwipsPerPixelY

    .Play "Surprised"

    .Play "Greet"

    .Speak "Hallo, dies ist ein Test."

    .Play "GestureDown"

    .Speak "Klicken sie bitte auf einem Listeneintrag, " & _

           "um meine Fähigkeiten zu testen."

  End With


End Sub

Dies lässt den Vogel "Peedy" verschiedene Dinge erledigen. Falls der User aber "Merlin" oder "Genie" auswählt, soll ja nur ein anderes Objekt genommen werden. Allerdings soll er ja in die gleiche Sub springen, welche dann natürlich einen anderen Namen erhält.

Zugegriffen wird auf das Microsoft Agent Control

Link zu diesem Kommentar
Auf anderen Seiten teilen

und wieso legst du dich nicht einfach nicht nur auf Peedy fest...

Private Sub PeedyStart([Color=red]Figur as string[/Color])


Dim Animation As Variant


  On Error Resume Next

  Agent1.Characters.Load [Color=red]Figur[/Color], [Color=red]Figur & ".acs"[/Color]

  Set Peedy = Agent1.Characters([Color=red]Figur[/Color])

  Peedy.Show


  List1.Clear

  For Each Animation In Peedy.AnimationNames

    List1.AddItem Animation

  Next Animation


  With Peedy

    .MoveTo (Form1.Left + Form1.Width) / Screen.TwipsPerPixelX, _

         (Form1.Top + (Form1.Height / 2)) / Screen.TwipsPerPixelY

    .Play "Surprised"

    .Play "Greet"

    .Speak "Hallo, dies ist ein Test."

    .Play "GestureDown"

    .Speak "Klicken sie bitte auf einem Listeneintrag, " & _

           "um meine Fähigkeiten zu testen."

  End With


End Sub

das war jetzt nur so ne idee... kann sein das ich etwas übersehen habe und es nicht funktioniert...

btw: hast du den Agent in Deutsch? wenn ja wo gibts den? :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von developer

Ich lege mich nicht fest, da ich unsere Kunden kenne... :rolleyes: Die einen wollen ein Vögelchen, die anderen lieber den Merlin... Mich festlegen wollte ich ja genau nicht.

Versteh ich jetzt nicht... das Agent Steuerelement kann doch alle Figuren annehemen, die du ihm anbietest... du lässt den user wählen und gibst dem Objekt dann halt die Figur die der User gewählt hat... ich hab da irgendwo noch ein Beispiel rumliegen *wühl*

btw: Danke ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hrgggggggg, :floet: :rolleyes: ich "#!*# ....

Ich ändere


Agent1.Characters.Load "Peedy", "Peedy.acs"

  Set Peedy = Agent1.Characters("Peedy")

  Peedy.Show

einfach um in

If Option1.value = True then

      Agent1.Characters.Load "Peedy", "Peedy.acs"

      Set Agent = Agent1.Characters("Peedy")

      Agent.Show

if Option2.value = True then

      Agent1.Characters.Load "Merlin", "Merlin.acs"

      Set Agent = Agent1.Characters("Merlin")

      Agent.Show

...

....

....

....

End If

Oh man... Wieso denke ich immer so kompliziert?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...