Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie

Das Präsentationsgrafikprogramm

Moderator: Moderatoren

Zöllner
Beiträge: 8
Registriert: Mi, 07.09.2016 11:29
Wohnort: Schweiz, Nähe Basel

Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie

Beitrag von Zöllner »

Ihr Lieben

Für eine Weihnachtsfeier tüftle ich momentan an einem interaktiven Adventskalender mit Impress (einfaches Beispiel siehe Anhang):
Folie 2 zeigt ein Titelbild mit den Türchen (Textfelder mit Nummer). Wenn ich ein Textfeld anklicke, lässt eine Animation über diesem Textfeld ein farbiges Rechteck erscheinen, das für die geöffnete Tür steht. Klicke ich nun auf dieses Rechteck, komme ich über einen Link auf die passende Folie mit einem Bild, einem Text, einem Rätsel etc. => das ist der Inhalt des Türchens. Über einen Pfeil komme ich nun wieder zurück zu Folie 2 mit dem Titelbild.

Das funktioniert alles bestens. Jetzt kommt mein Problem: Ich möchte nach der Rückkehr auf das Titelbild sehen, welche Türchen bereits geöffnet sind, also welche Eingangs-Animationen bereits abgelaufen sind. Beim erneuten Aufruf der Folie sind jedoch alle Animationen wieder zurückgesetzt. Als ich noch bei MS-PPT war, konnte ich das Problem so lösen, dass ich über die "Zurück"-Funktion wieder zum Titelblatt zurückgekehrt bin; die Folie hatte sich "gemerkt", welche Animationen bereits abgelaufen sind. Bei Impress scheint das jedoch nicht der Fall zu sein.

Jetzt wäre meine Lösungsidee, wenn ich ein Rechteck anklicke, über ein Makro dessen Animation einfach zu löschen, bevor ich die Folie verlasse. Wenn ich dann die Folie wieder aufrufe, ist das Rechteck gerade zu sehen, da es nicht mehr bis zum Aufruf einer Eingangs-Animation verborgen ist.

Da ich dazu jedoch nichts gefunden habe, möchte ich hier erst einmal nachfragen:
Wäre dieser Lösungsansatz überhaupt machbar? Kann ich über ein Makro einem Objekt eine Animation zuweisen bzw. eine diesem zugewiesene Animation löschen? Und wenn ich diesen Thread hier recht verstehe, ist es nicht möglich, über ein allgemeines Makro, das ich dem Klick-Ereignis aller Rechtecke zuweise, an das Objekt zukommen, auf das ich geklickt habe? Ich müsste 24 unterschiedliche Makros haben - aber das wäre ja machbar.
Adventskalender Impress.odp
(11.75 KiB) 285-mal heruntergeladen
Liebe Grüsse
Marc
Zöllner
Beiträge: 8
Registriert: Mi, 07.09.2016 11:29
Wohnort: Schweiz, Nähe Basel

Re: Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie

Beitrag von Zöllner »

Guten Morgen

Ich habe gestern noch ausprobiert, was ich in diesem Thread gefunden habe:
Ich habe Kalender und Inhalte in zwei unterschiedliche Präsentation gepackt und dann mit dem Hyperlink ein Sprungziel auf die entsprechende Folie im anderen Dokument angelegt.
Dabei haben sich jedoch zwei neue Probleme ergeben:
1. Der Sprung von Präsentation "Kalender Inhalt" zurück in die Präsentation "Kalender Übersicht" hat dazu geführt, dass die Folie mit den Kalendertürchen wieder zurückgesetzt war (alle Türchen waren wieder geschlossen). Ich kann also nicht zurückspringen, sondern muss die Präsentation "Kalender Inhalt" schliessen, um wieder zur anderen zurückzukommen (das war ja auch so in dem oben verlinkten Thread beschrieben). Dadurch ergab sich aber Problem Nr. 2:
2. Wenn ich von der Präsentation "Kalender Übersicht" in die geschlossene Präsentation "Kalender Inhalt" mittels Hyperlink springe, startet die Präsentation im Bearbeitungsmodus, nicht im Präsentationsmodus (Vollbild). Nur wenn ich beide Präsentationen gestartet habe, kann ich von der einen zur anderen im Präsentationsmodus springen. Dadurch tritt aber wieder Problem 1 auf...

Kennt jemand eine Möglichkeit mittels Hyperlink eine zweite Präsentation direkt im Präsentationsmodus zu öffnen? Ich habe den Parameter "-show" vor oder hinter dem Dateinamen ausprobiert; da kommt aber die Fehlermeldung, dass die Datei nicht existiert.

Meine Angaben zum System habe ich oben noch vergessen und liefere ich hiermit nach: OS: Linux Ubuntu 16.4 LTS, LO: 5.2.3.2

Liebe Grüsse
Marc
Zöllner
Beiträge: 8
Registriert: Mi, 07.09.2016 11:29
Wohnort: Schweiz, Nähe Basel

Re: Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie

Beitrag von Zöllner »

Guten Abend

Nach einigen Versuchen habe ich es jetzt mit einem Würgaround so gelöst, dass ich die bereits geöffneten Türchen mit zusätzlichen Rechtecken abdecke. Im geschlossenen Zustand werden diese Rechtecke über ein Reset-Makro auf invisible gesetzt. Wenn ich ein Türchen öffne, setze ich das entsprechende Rechteck darüber auf visible. Das hat den Vorteil, dass der Zustand des Adventskalenders sogar erhalten bleibt, wenn die Präsentation angehalten und neu gestartet wird.

Zwei Lösungsideen habe ich leider nicht hinbekommen:
1. Den entsprechenden Eingangseffekt zu löschen mit oObject.setPropertyValue("Effect", com.sun.star.presentation.AnimationEffect.NONE); ich konnte zwar einen anderen Effekt hinzufügen, aber den bestehenden Effekt nicht entfernen.
2. Im Makro das Objekt zu ermitteln, über welches das Makro gestartet wurde. In Formularen funktioniert das problemlos über einen Parameter - Sub Programm(oEvent AS OBJECT) - bei Impress funktioniert das leider nicht. Ebensowenig werden die angeklickten Objekte selektiert, so dass man sie darüber abfragen könnte. Deshalb muss ich jetzt für jedes Türchen ein eigenes Makro schreiben, das den entsprechenden Wert an das Makro sbTuerchenOeffnen übergibt.

Hat jemand noch eine Idee zu diesen beiden Lösungsideen? Vor allem 2. würde mich interessieren.

Hier sind die Makros zum Kalender:

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit

Sub sbResetCalendar
	dim oDoc as OBJECT
	dim oDrawPages as OBJECT
	dim oSlide as OBJECT
	dim oObject as OBJECT
	dim oController as OBJECT
	dim i as INTEGER

	oDoc = ThisComponent
	oDrawPages = oDoc.getDrawPages()
	oSlide = oDrawPages.getByName("Uebersicht")
	for i = 0 to oSlide.Count - 1
	   oObject = oSlide.getByIndex(i)
	   If Left(oObject.Name,5) = "Offen" Then
			oObject.Visible = False
	   End If
	Next i
	
	oController = oDoc.getPresentation().getController() 
	oController.gotoSlide(oDrawPages.getByName("Uebersicht"))	
	
End Sub

Sub sbTuer01
	sbTuerchenOeffnen(1)
End Sub

Sub sbTuer02
	sbTuerchenOeffnen(2)
End Sub

Sub sbTuerchenOeffnen(intNummer AS Integer)
	dim oDoc as OBJECT
	dim oDrawPages as OBJECT
	dim oSlide as OBJECT
	dim oObject as OBJECT
	dim oController as OBJECT
	dim i as INTEGER

	oDoc = ThisComponent
	oDrawPages = oDoc.getDrawPages()
	oSlide = oDrawPages.getByName("Uebersicht") 'Slides are indexed from zero
	for i = 0 to oSlide.Count - 1
	   oObject = oSlide.getByIndex(i)
	   If oObject.Name = "Offen" & CStr(intNummer) Then oObject.Visible = True
	Next i

	oController = oDoc.getPresentation().getController() 
	oController.gotoSlide(oDrawPages.getByName("Tuerchen" & CStr(intNummer)))	
	
End Sub
Liebe Grüsse
Marc
Dateianhänge
Adventskalender mit Impress.odp
(13.37 KiB) 290-mal heruntergeladen
Antworten