scrollen von movie clip

John86

Mitglied
hallo nochmal,
keine sorge, das ist keine normaler "wie scoll ich meinen mc" treath. würde gerne einen effekt einbauen wie bei der seite http://www.sandra-hess.com . also damit meine ich das wenn ich in der navigation einen link betätige, soll der hintergrund zur richtigen stelle scrollen. hab sowas leider noch nie gemacht, also fehlt mir jeder ansatz wie ich da dran gehen könnte, ein tutorial oder ne beispiel .fla würden mich schon mal ein ganzen stück vorraus bringen! danke im vorraus!

lg artur
 
Hi,

prinzipiell kannst Du jedem Button eine Zielkoordinate für den Hintergrund zuweisen, und ihn anschließend mit einer onEnterFrame-Methode verschieben:
Code:
var buttons = new Array(button1, button2, button3); // Buttons in einem Array ablegen

var positions = new Array(0, -400, -735); // Positionen des Hintergrunds

for (var i=0; i<buttons.length; i++) {
  buttons[i].dx = positions[i];
  buttons[i].onRelease = function() {
    slideTo(this.dx);
  }
}

function slideTo(dx) {
  bgnd.onEnterFrame = function() {
    this._x += (dx - this._x) / 4;
    if (Math.abs(dx - this._x) < 1) this._x = dx;
    if (this._x == dx) delete this.onEnterFrame;
  }
}
("bgnd" ist hierbei der Instanzname des Hintergrunds)

Gruß
.
 
Ich bins nochmal! also die Formel hab ich mehr oder weniger verstanden, aber mit dem array komme ich gar nicht klar. wenn es nicht zu große Umstände macht würde es mir sehr helfen wenn du vielleicht eine kleine Beispiel .fla basteln könntest. dann würde ich die zusammenhänge besser verstehen! danke nochmal!

lg artur
 
Hi,

die Buttons packe ich nur deshalb in ein Array, damit ich ihnen die Positionen und Mausereignisse bequem in einer Schleife zuweisen kann.

Beispiel findet sich im Anhang.

Gruß
.
 

Anhänge

Noch mal eine Rückfrage, bin hier grade am rum experementieren und stoße wieder an meine Grenzen:( wie sieht das eigentlich aus wenn man mit einem Button 2 verscheidene MC's, mit verschiedenen Positionsangaben steuern will? Denn wenn ich das Script nochmal druntersetze und nur die Instanz wechsle, wird das erste Script nicht mehr ausgeführt.
Meine zweite Frage wäre, wie gibt man die Position an wenn man einen MC horizontal und gleichzeitig vertikal bewegen will? ich weiß, Fragen über Fragen, würde mich trotzdem feuen wenn jemand nen Moment Zeit hätte!

lg artur
 
oh, jo, wenn ich das richtig verstehe kann ich das gut für das gleichzeitige horizontale und vertikale Scrollen verwenden. aber um 2 MC's gleichzeitig zu bewegen muss es so auch eine einfacher Lösung geben denke ich. gibt es da keine andere Möglichkeit? wollte mich eher langsam und unkompliziert voranarbeiten;P würde dir da noch was einfallen Tobias?!

lg Artur
 
hab da ganze volgendermaßen probiert, funktioniert auch fast, leider wird die zweite Variable(positions2) nicht genommen, so das der MC "bgho" die werte der ersten Variable benutzt, hat jemand einen Tip für mich?

Code:
//slide hintergrund
var buttons = new Array(button1, button2, button3,button4,button5);		 // Buttons in einem Array ablegen

var positions = new Array(-53.5, 447.5, -553.5, 947.5, -1054); 	// Positionen des Hintergrunds vetikal

var positions2 = new Array(-300, -400, -500, -600, -700); 	// Positionen des Hintergrunds horizontal



for (var i=0; i<buttons.length; i++) {			//Hintergrund horizontal
  buttons[i].dx = positions2[i];
  buttons[i].onRelease = function() {
    slideTo(this.dx);
  }
};


for (var i=0; i<buttons.length; i++) { 			 //Hintergrund vetikal
  buttons[i].dx = positions[i];
  buttons[i].onRelease = function() {
    slideTo(this.dx);
  }
}


function slideTo(dx) {
  bgho.onEnterFrame = function() {
    this._x += (dx - this._x) / 10;
    if (Math.abs(dx - this._x) < 1) this._x = dx;
    if (this._x == dx) delete this.onEnterFrame;
  }
    bgnd.onEnterFrame = function() {
    this._y += (dx - this._y) / 10;
    if (Math.abs(dx - this._y) < 1) this._y = dx;
    if (this._y == dx) delete this.onEnterFrame;
  }
 };
 
Hi,

Dein Code macht überhaupt keinen Sinn: Zum einen überschreibst Du die erste onPress-Funktion mit einer anderen (und auch die Variable "dx" der MCs), zum anderen willst Du mit der Funktion slideTo zwei Eigenschaften (._x und ._y) ändern, übergibst ihr aber nur einen Parameter. Auch das Anlegen zweier onEnteFrame-Methoden macht keinen Sinn.

Am einfachsten (wenn Du keine Prototypes verwenden willst), ginge es so:
Code:
var buttons = new Array(button1, button2, button3,button4,button5);

var positionsX = new Array(-53.5, 447.5, -553.5, 947.5, -1054);

var positionsY = new Array(-300, -400, -500, -600, -700);

for (var i=0; i<buttons.length; i++) {	
  buttons[i].dx = positionsX[i];
  buttons[i].dy = positionsY[i];
  buttons[i].onRelease = function() {
    slideTo(this.dx, this.dy);
  }
}

function slideTo(dx, dy) {
  bgnd.onEnterFrame = function() {
    this._x += (dx - this._x) / 10;
    this._y += (dy - this._y) / 10;
    if (Math.abs(dx - this._x) < 1) this._x = dx;
    if (Math.abs(dy - this._y) < 1) this._y = dy;
    if (this._x == dx && this._y == dy) delete this.onEnterFrame;
  }
}

Gruß
.
 
Zurück