Steuerung einer 360° Produktansicht

roschki

Grünschnabel
Hallo,

ich habe ein Frage bezüglich der 360° Rundbildanimationen.
Wie schaff ich es meinen Film so zu steuern, wie unter:

http://3d.hahnix.com/Abriss-Haus/

Den Flashfilm habe ich schon erstellt. Er nutzt 32 Einzelfotos, die das Produkt von allen Seiten zeigen. Leider bekomme ich es nur hin, das Produkt über Buttons Foto für Foto zu drehen.

Ich will aber, dass der User es so frei drehen kann wie auf dem oberen Beispiel.

Ciao
roschki
 
Hi,

prinzpiell kannst Du in einer onEnterFrame-Methode je nach Position des Mauszeigers zu einem bestimmten Frame springen:
Code:
this.onEnterFrame = function() {
  var perc = _xmouse * 100 / Stage.width;
  gotoAndStop(Math.ceil(perc * _totalframes / 100));
]

Gruß
.
 
Hi,

ich hab mittlerweile die Drehung hinbekommen. Mein Problem ist nur noch der Anfangspunkt, der Animation. Momentan ist es so, dass der letzte Punkt der Animation nicht gespeichert wird und dadurch beim erneuten Klicken das Bild zu der Animation springt, die durch die Cursorposition ermittelt wird.

Wie schaff ich es nun, dass man einfach "Absetzen" und weiterdrehen kann? Schließlich will ich es schaffen, dass Objekt einmal komplett zu drehen. Auch mit evtl. Absetzen zwischen drin.

Mein jetziger Code:
Code:
mouseListener.onMouseMove = function() {
		if(rotate) {				
				
			var perc = _xmouse * 100 / (Stage.width);
			aktPic = Math.ceil(perc * (imageL.anzahl-1) / 100);			
			if(aktPic>0)
				aktPic %= (anzahl-1);
			if(aktPic<0)				
				aktPic = (anzahl-1) + (aktPic%(anzahl-1));
				trace(startPic);				
			imageL.changePic(aktPic);	
		}
	};

Hinweis: Die Einzelbilder werden beim Start in ein Array geladen und dann immer nur mit der changePic-Funktion sichtbar gemacht.

Um die Animation mal zu sehen, hier die swf:
URL vom Author entfernt

Bitte erst warten bis fertig geladen (noch kein preloader - Bilder dreht sich).

Wie man sehen kann, springt die Animation beim "Absetzen" und neuem ziehen und macht nicht an der Position weiter an der ich die Maustaste losgelassen hab. Wie implementiere ich das?
Bitte um schnelle Hilfe, eilt.

Danke
roschki
 
Zuletzt bearbeitet:
Hi,

probiere es mal mit diesem Code:
Code:
stop();

var fac = 25;

var ml = new Object();

ml.onMouseDown = function() {
	startSlide(_xmouse);
}

ml.onMouseUp = function() {
	stopSlide();
}

Mouse.addListener(ml);

function startSlide(offset) {
	var sframe = _currentframe;
	this.onEnterFrame = function() {
		var mp = _xmouse / fac - offset / fac;
		var df = Math.ceil(sframe + (mp % _totalframes));
		while (df > _totalframes) {
			df -= _totalframes;
		}
		while (df < 1) {
			df += _totalframes;
		}
		gotoAndStop(df);
	}
}

function stopSlide() {
	delete this.onEnterFrame;
}
Die Variable "fac" (am Anfang des Codes) bestimmt die Abbremsung (je höher, desto weniger Frames werden pro Mauszeiger-Pixel weitergeschaltet).

Gruß
.
 
Hallo Tobias,

allererste Sahne. ;)

Das war es. Hab nur noch den Code an meinen angepasst und jetzt funktioniert es.
Musste nur die Sachen mit den _totalframes und _currentframes austauschen, da ich das ganze nicht in einem MC abhandle sondern einem Array. (Die Bilder der Rundumansicht werden dynamisch geladen.

Vielen Dank
 
Zurück