Mehrere "action" gemeinsam ablaufen lassen?

  • Hallo,

    ich habe mir vorgestellt, bei einem bestimmten Pano mit einem Schwenk/Zoom zu beginnen. Gleichzeitig soll ein Textfeld eingeblendet und nach einer bestimmten Zeit ausgeblendet werden.
    Bis zum Einblenden des Textfeldes funktioniert alles wunderbar, nur an der Ausblendung scheitere ich immer. Ein Teil meiner XML sieht folgendermaßen aus:

    <events onloadcomplete="delayedcall(1, hidetextfeld() ); set(events.onloadcomplete,null);" />

    <plugin name="textfeld"
    url="textfeld.png"
    align="Bottomleft"
    onloaded="set(alpha,0); tween(alpha,1.0);" />

    <action name="hidetextfeld">
    if(plugin[textfeld].enabled,
    set(plugin[textfeld].enabled,false);
    tween(plugin[textfeld].alpha, 0.0, 0.5, default, removeplugin(textfeld)););

    </action>


    <events onloadcomplete="delayedcall(1.0, normalview());" />

    <action name="normalview">
    tween(view.fov, 79, 4, easeInOutQuad );
    tween(view.vlookat, -7, 18, linear,WAIT );
    tween(view.hlookat, 360, 36, easeInOutQuad );

    </action>


    Wenn ich die zwei "action" in der Reihenfolge austausche, wird das Textfeld ausgeblendet, aber der Schwenk/Zoom läuft nicht mehr ab.

    Hat mir jemand einen Rat?

    Gruß Michael

    Edited once, last by m.bond (March 23, 2010 at 5:59 PM).

  • Hallo iceman,
    danke für deinen Tip. Im gewissen Sinne funktioniert es jetzt. Ein Teil meiner XML sieht jetzt folgendermaßen aus:


    <events onloadcomplete="delayedcall(1.0, normalview());delayedcall(1, hidetextfeld() ); set(events.onloadcomplete,null);" />

    <action name="normalview">
    tween(view.fov, 79, 4, easeInOutQuad );
    tween(view.vlookat, -7, 18, linear,WAIT );
    tween(view.hlookat, 360, 36, easeInOutQuad );

    </action>

    <plugin name="textfeld"
    url="textfeld.png"
    align="Bottomleft"
    onloaded="set(alpha,0); tween(alpha,1.0);" />

    <action name="hidetextfeld">
    if(plugin[textfeld].enabled,
    set(plugin[textfeld].enabled,false);
    tween(plugin[textfeld].alpha, 0.0, 0.5, default, removeplugin(textfeld)););

    </action>


    Die Ausblendung des Textfeldes erfolgt jetzt direkt nach "tween(view.vlookat, -7, 18, linear,WAIT );". War so nicht geplant und ich verstehe auch nicht warum,
    aber mit dieser Lösung kann ich leben. Vielleicht kannst du mir noch sagen, ob die event-Zeile so in Ordnung ist. Danke!

    Gruß Michael

  • Du hast ja ein WAIT in das 2.Tween eingebaut.
    Damit wird solange gewartet, bis der Tween fertig ist.

    Deshalb ist in dieser Zeit auch schon das Textfeld verschwunden, da dies als separater Task abläuft.

    Grundlegend ist Deine event-Zeile korrekt.
    Wozu Du allerdings das set(events....) in Deinem Fall brauchst, wird mir aus diesem Stück Code nicht ersichtlich.

  • Hallo iceman,
    danke für deine Erklärungen. Sie helfen mir schon ein ganzes Stück weiter.

    Das WAIT hatte ich eigentlich eingebaut, um den horizontalen Schwenk erst nach dem vertikalen ablaufen zu lassen. Daß dadurch das <action name="hidetextfeld"> auch entsprechend wartet, hatte ich nicht berücksichtigt.

    Warum ich das set(events....) noch enthalten ist? Ich kann es dir nicht sagen. Ich habe die komplette Zeile aus einem Beispiel entnommen und, ehrlich gesagt, nicht hinterfragt, nachdem alles wie gewünscht ablief (zumindest dieses Teil). Es liegt einfach daran, daß ich noch frisch im Geschäft bin und momentan in vielen Fällen einfach vom Versuch und Irrtum lebe (.......... zumindest bis zu dem Punk, an dem ich nicht mehr weiterkomme). Das Verstehen der Zusammenhänge erfolgt erst so allmählich und die bestehende Dokumentation hift mir nur bedingt.
    Auf jeden Fall habe ich das set(events....) herausgenommen und wie du schon vermutet hattest, funktioniert alles auch ohne diesen Zusatz!

    Dankeschön noch einmal für deine Hilfe.

    Gruß Michael

  • Das WAIT hatte ich eigentlich eingebaut, um den horizontalen Schwenk erst nach dem vertikalen ablaufen zu lassen. Daß dadurch das <action name="hidetextfeld"> auch entsprechend wartet, hatte ich nicht berücksichtigt.


    Das löst Du besser über das Tween, da kannst Du als Parameter angeben, welche Aktion bei Beendigung des Tweens aufgerufen werden soll.
    Dies wäre dann Dein nächster Tween.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!