Animation über Textverknüpfung

Fragen & Antworten zur Steuerung von 3D Inhalten in PDFs über JavaScript
acrorookie
Beiträge: 7
Registriert: 05.03.2008, 11:54

Animation über Textverknüpfung

Beitrag von acrorookie » 12.03.2008, 13:17

Hallo,

zuerst muss ich sagen, das ich dem Gebiet JavaScript bisher absoluter Anfänger bin.

Ich habe folgendes versucht:

1. Aus dem Beispiel Greifer_Anim_JS.pdf in dem 3D-Toolkit habe ich das 3D Modell  mit    der Animation als separate .u3D Datei abgespeichert.

2. Leere PDF Datei (eine Seite) .u3D-Datei als 3D Objekt importiert.

3. Button definiert und als Aktion JavaScript ausführen angegeben.
 
4. Das Originalscript des Schalters Animation An/Aus als Script verwendet

Resultat: Keine Steuerung der Animation wie im Orginaldokument.

Was fehlt ?



Michael



acrorookie
Beiträge: 7
Registriert: 05.03.2008, 11:54

Animation über Textverknüpfung

Beitrag von acrorookie » 13.03.2008, 10:29

Meine Frage hat sich erledigt.

Gruß

Michael

Benutzeravatar
mavue7
Beiträge: 60
Registriert: 13.12.2006, 07:44

Animation über Textverknüpfung

Beitrag von mavue7 » 19.03.2008, 22:37

dann wäre es toll, wenn du die lösung auch noch postest

acronaut
Beiträge: 693
Registriert: 14.09.2006, 21:32
Kontaktdaten:

Animation über Textverknüpfung

Beitrag von acronaut » 19.03.2008, 23:19

Hi Mavue,

gute Antwort ;-)

Danke,
Andi

acrorookie
Beiträge: 7
Registriert: 05.03.2008, 11:54

Animation über Textverknüpfung

Beitrag von acrorookie » 26.03.2008, 13:03

Die Lösung ist sich gewisse Sachen ganz genau durchzulesen.
Diese "Lösung" kann ich jedem empfehlen. :)
(Zur Erklärung: Ich hatte beim ersten Lesen die Einbindung der Datei Animation_Controller übersehen).

Nächste Frage:
Ich habe eine PDF Datei mit verschiedenen Animationen die über Buttons aktiviert werden (hierbei werden auch unterschiedliche Teile ein- und ausgeblendet). Wenn ich während einer laufenden Animation einen Button zum Starten einer anderen Animation drücke, passiert es des öfteren das zwar wie geplant die zur Animation gehörigen Teile ein- bzw. ausgeblendet werden, jedoch die "alte" Animation weiterläuft. Der Zustand kann nur durch 3D deaktivieren und aktivieren wieder auf die Reihe bekommen werden. Wie lässt sich das für jeden Button per Java realisieren ?
Mit reset bin ich nicht richtig weitergekommen.

MfG

Michael

 

Hildy
Beiträge: 2
Registriert: 30.03.2008, 20:04

Animation über Textverknüpfung

Beitrag von Hildy » 30.03.2008, 23:30

Hallo alle zusammen,

ich bin neu hier und verfolge gespannt eure Konversation und probiere das hier nachzuvollziehen.

Wenn ich es anhand eurer Animationen mache funktionierts, wenn ich selbst eine Animation erstelle spielt es alles ab.

Wie kann ich

[font=arial]C3D.MyAnimation.setPlayRange(0,4)
[/font]
mit meinen Bauteilen verknüpfen. Muss ich das im Toolkit definieren?

Würde mich über ne Ino freuen

Bis denne

Hildy

acronaut
Beiträge: 693
Registriert: 14.09.2006, 21:32
Kontaktdaten:

Animation über Textverknüpfung

Beitrag von acronaut » 31.03.2008, 21:01

Hi,

Du kannt 2 Wege gehen:

1. Wenn Du alles in einer "Liniue" nacheinander animierst, kannst Du eben über diesen Playrange eine gewisse Sekundenanzahl aus deiner linearen Animation herausgreifen.

2. Wenn Du teile unabhängig voneinander animieren möchtest (Klassiker Auto: erst Fahrertüre, dann Beifahrertüre, dann Kofferraum öffnen, aber in ganz anderer Reihgenfolge wieder schließen, ohne die anderen geometrien davon zu beeinflussen) , solltest Du über Animationssequenzen im Toolkit arbeiten. Damit ist es möglich voneinander unabhängige Animationen zu gestalten, die aber den Animationstatus der anderen geometrien nicht beeinflussen. Diese Sequenzen müssen dann über eine Anpassung im JavaScript (Animation_Controller) angesprochen werden. Die der letzen Zeile in diesem Script:

Code: Alles auswählen

var MyAnimation = new AnimationController(scene.animations.getByIndex(0));
Musst Du dann einerseits die Zahl hinter "getByIndex" austauschen um somit Deine einzelnen Sequenzen anzusprechen (diese werden einfach durchgezählt) wie aber auch den Namen der variablen "MyAnimation" natürlich ebenso entsprechend ändern. Also beispielsweise "MyAnimation01", 02, 03...

Du kannst aber auch anstatt dem "getByIndex(Zahl)" ein "getByName("Sequenzname")" verwenden.

Gruß,
Andreas Vogel

Hildy
Beiträge: 2
Registriert: 30.03.2008, 20:04

Animation über Textverknüpfung

Beitrag von Hildy » 31.03.2008, 22:42

Hallo,

 

da war ich auf dem Schlauch gestanden. Wenn die Ani nur 1 Sec. hat geht halt nicht Viel.

Das mit den Sequenzen ist aber die bessere Lösung in meinen Augen. Hab hier schöne Animationen erstellt.

Also Danke für die prompte Hilfe.

Hildy

acronaut
Beiträge: 693
Registriert: 14.09.2006, 21:32
Kontaktdaten:

Animation über Textverknüpfung

Beitrag von acronaut » 12.05.2008, 03:59

Hi Hildy,

Du weisst hoffentlich, dass es hier auch einen Berich für Beispiel-PDFs gibt. Wenn Du also schöne hast, lass sie doch mal sehen ;)

Gruß,
Andi Vogel

Benutzeravatar
basho84
Beiträge: 25
Registriert: 16.05.2008, 15:32

Animation über Textverknüpfung

Beitrag von basho84 » 27.05.2008, 08:16

reset() funktioniert nicht!

Habe 2 Sequenzen im Toolkit angelegt und kann diese nach Änderung im Select+Animationcontroller.js (habe 2 Variablen definiert mit MyAnimation00 und MyAnimation01) auch im Acrobat per JavaSkript ansteuern.

Die Funktion play() mit den Parameter setPlayRange; setCurrentPosition; setPlaySpeed; setPlayForward funktioniert auch prima für beide Sequenzen mit diesem Script:

var C3D = getAnnots3D(0)[0].context3D;
C3D.MyAnimation01.setPlayRange(0,1.5);
C3D.MyAnimation01.setCurrentPosition(0);
C3D.MyAnimation01.setPlaySpeed(1);
C3D.MyAnimation01.setPlayForward(true);  
C3D.MyAnimation01.setPingPong(false);
C3D.MyAnimation01.play();

Leider funktioniert die Funktion reset() nicht :(

Woran kann es liegen, dass rest() nicht funktioniert? Springe über PlayRange an unterschiedlichen Stellen mit der Play-Funktion. Kommt damit für die Reset-Funktion die "CurrentPosition" durcheinander?

So gehts jedenfalls nicht:

var C3D = getAnnots3D(0)[0].context3D;
C3D.MyAnimation01.setPlayRange(0,1.5);
C3D.MyAnimation01.setCurrentPosition(0);
C3D.MyAnimation01.setPlaySpeed(1);
C3D.MyAnimation01.setPlayForward(true);  
C3D.MyAnimation01.setPingPong(false);
C3D.MyAnimation01.reset();

 

 

Antworten