In der Zeitleiste zum nächsten Frame springen

madom

Grünschnabel
Hallo zusammen,

eine einfache Frage:

Ich möchte per Mausklick in der Zeitleiste ein Frame nach vorne springen.

In den vordefinierten Verhalten von DW finde ich nur, "gehe zu Frame x" und die Eingabe +1 wird nicht akzeptiert.

Kann mir hier jemand helfen?

Bin sehr verbunden.
m.
 
ja ich denke das ist Javascript. Der Befehl, um zu Frame x zu springen heisst:

onClick="MM_timelineGoto('Timeline1','x') -- ich dachte, vielleicht könnte man das irgendwie modifizieren.

Wenn du den ganzen JS-Karsumpel der im <head></head> steht noch willst, sags einfach.

Danke,
m.
 
Achso... Diese Codetemplates vom Dreamweaver und des gleichen...
Jo diese "JS-Karsumpel" wär schon nicht schlecht...
 
ok, das ist aber ein wurm:

Code:
function MM_initTimelines() { //v4.0
    //MM_initTimelines() Copyright 1997 Macromedia, Inc. All rights reserved.
    var ns = navigator.appName == "Netscape";
    var ns4 = (ns && parseInt(navigator.appVersion) == 4);
    var ns5 = (ns && parseInt(navigator.appVersion) > 4);
    document.MM_Time = new Array(1);
    document.MM_Time[0] = new Array(2);
    document.MM_Time["Timeline1"] = document.MM_Time[0];
    document.MM_Time[0].MM_Name = "Timeline1";
    document.MM_Time[0].fps = 15;
    document.MM_Time[0][0] = new String("sprite");
    document.MM_Time[0][0].slot = 1;
    if (ns4)
        document.MM_Time[0][0].obj = document["BildLayer1"];
    else if (ns5)
        document.MM_Time[0][0].obj = document.getElementById("BildLayer1");
    else
        document.MM_Time[0][0].obj = document.all ? document.all["BildLayer1"] : null;
    document.MM_Time[0][0].keyFrames = new Array(1, 2);
    document.MM_Time[0][0].values = new Array(1);
    document.MM_Time[0][0].values[0] = new Array("hidden","hidden");
    document.MM_Time[0][0].values[0].prop = "visibility";
    if (!ns4)
        document.MM_Time[0][0].values[0].prop2 = "style";
    document.MM_Time[0][1] = new String("sprite");
    document.MM_Time[0][1].slot = 1;
    if (ns4)
        document.MM_Time[0][1].obj = document["BildLayer2"];
    else if (ns5)
        document.MM_Time[0][1].obj = document.getElementById("BildLayer2");
    else
        document.MM_Time[0][1].obj = document.all ? document.all["BildLayer2"] : null;
    document.MM_Time[0][1].keyFrames = new Array(3, 4);
    document.MM_Time[0][1].values = new Array(1);
    document.MM_Time[0][1].values[0] = new Array("visible","visible");
    document.MM_Time[0][1].values[0].prop = "visibility";
    if (!ns4)
        document.MM_Time[0][1].values[0].prop2 = "style";
    document.MM_Time[0].lastFrame = 4;
    for (i=0; i<document.MM_Time.length; i++) {
        document.MM_Time[i].ID = null;
        document.MM_Time[i].curFrame = 0;
        document.MM_Time[i].delay = 1000/document.MM_Time[i].fps;
    }
}
 
Wenn ich ehrlich bin... Durchblicken tu ich da auch nicht... Aber versuchs mal mit

Code:
MM_timelineGoto('Timeline1',document.MM_Time[0].curFrame+x)

Ob das funktioniert oder nicht, dabei bin ich aber extrem unsicherer...

// Nachtrag:

Hast du vielleicht noch den Inhalt der Funktion MM_timelineGoto irgendwo? Das könnte helfen...
 
Vielen dank für deine Hilfe, leider kommt da "Fehler auf der Seite"

aber die Funktion ist hier:

Code:
function MM_timelineGoto(tmLnName, fNew, numGotos) { //v2.0
  //Copyright 1997, 2000 Macromedia, Inc. All rights reserved.
  var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;
  if (document.MM_Time == null) MM_initTimelines(); //if *very* 1st time
  tmLn = document.MM_Time[tmLnName];
  if (numGotos != null)
    if (tmLn.gotoCount == null) tmLn.gotoCount = 1;
    else if (tmLn.gotoCount++ >= numGotos) {tmLn.gotoCount=0; return}
  jmpFwd = (fNew > tmLn.curFrame);
  for (i = 0; i < tmLn.length; i++) {
    sprite = (jmpFwd)? tmLn[i] : tmLn[(tmLn.length-1)-i]; //count bkwds if jumping back
    if (sprite.charAt(0) == "s") {
      numKeyFr = sprite.keyFrames.length;
      firstKeyFr = sprite.keyFrames[0];
      lastKeyFr = sprite.keyFrames[numKeyFr - 1];
      if ((jmpFwd && fNew<firstKeyFr) || (!jmpFwd && lastKeyFr<fNew)) continue; //skip if untouchd
      for (keyFrm=1; keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]; keyFrm++);
      for (j=0; j<sprite.values.length; j++) {
        props = sprite.values[j];
        if (numKeyFr == props.length) propNum = keyFrm-1 //keyframes only
        else propNum = Math.min(Math.max(0,fNew-firstKeyFr),props.length-1); //or keep in legal range
        if (sprite.obj != null) {
          if (props.prop2 == null) sprite.obj[props.prop] = props[propNum];
          else        sprite.obj[props.prop2][props.prop] = props[propNum];
      } }
    } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);
  }
  tmLn.curFrame = fNew;
  if (tmLn.ID == 0) eval('MM_timelinePlay(tmLnName)');
}
 
ok, ich hab was gefunden, danke trotzdem für die hilfe. wen es interessiert:

Code:
function YY_timelineGoBy(tmLnName, fNew) { //v3.0
  var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;
  if (document.MM_Time == null) MM_initTimelines(); //if *very* 1st time
  tmLn = document.MM_Time[tmLnName];
  if (tmLn.gotoCount == null) tmLn.gotoCount = 1;
  jmpFwd = (fNew > 0);
  fNew = fNew/2*2 + tmLn.curFrame;
  if (fNew<0) fNew=0;
  if (fNew>tmLn.lastFrame)fNew=tmLn.lastFrame;
  for (i = 0; i < tmLn.length; i++) {
    sprite = (jmpFwd)? tmLn[i] : tmLn[(tmLn.length-1)-i]; //count bkwds if jumping back
    if (sprite.charAt(0) == "s") {
      numKeyFr = sprite.keyFrames.length;
      firstKeyFr = sprite.keyFrames[0];
      lastKeyFr = sprite.keyFrames[numKeyFr - 1];
      if ((jmpFwd && fNew<firstKeyFr) || (!jmpFwd && lastKeyFr<fNew)) continue; //skip if untouchd
      for (keyFrm=1; keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]; keyFrm++);
      for (j=0; j<sprite.values.length; j++) {
        props = sprite.values[j];
        if (numKeyFr == props.length) propNum = keyFrm-1 //keyframes only
        else propNum = Math.min(Math.max(0,fNew-firstKeyFr),props.length-1); //or keep in legal range
        if (sprite.obj != null) {
          if (props.prop2 == null) sprite.obj[props.prop] = props[propNum];
          else        sprite.obj[props.prop2][props.prop] = props[propNum];
      } }
    } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);
  }
  tmLn.curFrame = fNew;
}

und dann

Code:
onClick="YY_timelineGoBy('Timeline1','x')"

wobei x die Anzahl Frames in der Zeitleiste ist. Mann kann z.B. auch -5 angeben, dann springt er 5 Frames zurück.

Dank an http://www.yaromat.com
 

Neue Beiträge

Zurück