In Bezug auf Makros gibt es nur sehr wenige mit Impress (keine Aufzeichnung von Makros, keine Python-Skripte, nur Basic usw.) und sehr wenige Beispiele.Wie erstelle ich einen Einblendeffekt für die Auswahl?
Es gibt kein Beispiel, wie man "manuell" eine Textanimation erstellt. Ich habe eine gefunden here (6 Jahre alt) und es gibt eine Menge Informationen.
Bisher habe ich es geschafft, (1) nach einer Textanimation "Fadein" zu scannen, die schon da ist (2) nach allen anderen Textanimationen zu scannen und sie dann durch einen Klon des "Fadein" zu ersetzen "Animation:
sub MyFunction
' --------------------------------------------------------------------
' (1) scan for a text animation "fadein" that is already there
effectNodeFadeIn = Null
doc = ThisComponent
numSlides = doc.getDrawPages().getCount()
slide = doc.drawPages(numSlides-1)
mainSequence = getMainSequence(slide)
clickNodes = mainSequence.createEnumeration()
while clickNodes.hasMoreElements() and IsNull(effectNodeFadeIn)
clickNode = clickNodes.nextElement()
groupNodes = clickNode.createEnumeration()
while groupNodes.hasMoreElements() and IsNull(effectNodeFadeIn)
groupNode = groupNodes.nextElement()
effectNodes = groupNode.createEnumeration()
while effectNodes.hasMoreElements() and IsNull(effectNodeFadeIn)
effectNode = effectNodes.nextElement()
' ICIC
if effectNode.ImplementationName = "animcore::ParallelTimeContainer" then
if hasUserDataKey(effectNode, "preset-id") then
v = getUserDataValue(effectNode, "preset-id")
if v = "ooo-entrance-fade-in" then ' ooo-entrance-appear
effectNodeFadeIn = effectNode
end if
end if
end if
' useless loop just in case I need it:
animNodes = effectNode.createEnumeration()
while animNodes.hasMoreElements()
animNode = animNodes.nextElement()
wend
wend
wend
wend
' --------------------------------------------------------------------
' (2) scan for all other text animations,
' and then remove them an replace them by a clone of the "fadein" animation
if not IsNull(effectNodeFadeIn) then
clickNodes = mainSequence.createEnumeration()
while clickNodes.hasMoreElements()
clickNode = clickNodes.nextElement()
groupNodes = clickNode.createEnumeration()
while groupNodes.hasMoreElements()
groupNode = groupNodes.nextElement()
effectNodes = groupNode.createEnumeration()
while effectNodes.hasMoreElements()
effectNode = effectNodes.nextElement()
' ICIC
if effectNode.ImplementationName = "animcore::ParallelTimeContainer" then
if hasUserDataKey(effectNode, "preset-id") then
v = getUserDataValue(effectNode, "preset-id")
if v <> "ooo-entrance-fade-in" then ' ooo-entrance-appear
groupNode.removeChild(effectNode)
n = effectNodeFadeIn.createClone()
groupNode.appendChild(n)
' useless loop just in case I need it:
animNodes = effectNode.createEnumeration()
while animNodes.hasMoreElements()
animNode = animNodes.nextElement()
wend
end if
end if
end if
wend
wend
wend
end if
end sub
function hasUserDataKey(node as Object, key as String) as Boolean
for each data in node.UserData
if data.Name = "node-type" then
hasUserDataKey = True
exit function
end if
next data
hasUserDataKey = False
end function
function getUserDataValue(node as Object, key as String) as Variant
for each data in node.UserData
if data.Name = key then
getUserDataValue = data.Value
exit function
end if
next data
end function
Wenn ich den Effekt klonen, ist es immer noch‚verbunden‘auf den ursprünglichen Text und dann wird das übergeordnete entfernt und ersetzt durch den‚FadeIn‘Text. Irgendeine Idee, wie man das korrigiert?
Wo sind die Definitionen von 'hasUserDataKey()' und 'getUserDataValue()'? –
Frage aktualisiert mit den 2 fehlenden Funktionen. –