Frage wegen Scrollbar

mogmog

Erfahrenes Mitglied
Hallo


Ich benutze den Scroller von Tobias@Datic

und wollte das AS etwas varieren, d.h. ich wollte es nicht Horizontal scrollen lassen sondern Vertikal. Darauf hin habe ich es so geändert:

Code:
slider._visible = false;

var sliding = false;

function init(h, c, m, o) {
	bgnd._width = Math.round(h - up._width * 2);
	down._y = bgnd._width + down._width;
	this.ct = c;
	this.mask = m;
	this.offset = o;
	startWatch();
}

function startWatch() {
	slider.useHandCursor = false;
	slider.onRollOver = function() {
		this._alpha = 110;
	}
	slider.onRollOut = function() {
		this._alpha = 100;
	}
	slider.onPress = function() {
		this.startDrag(false, 0, 0, 0, bgnd._width - this._width);
		sliding = true;
		this._alpha = 120;
	}
	slider.onRelease = function() {
		this.stopDrag();
		this._alpha = 110;
		sliding = false;
	}
	slider.onReleaseOutside = function() {
		this.stopDrag();
		sliding = false;
		this._alpha = 100;
	}
	up.useHandCursor = false;
	up.onRollOver = function() {
		this._alpha = 120;
	}
	up.onRollOut = function() {
		this._alpha = 100;
	}
	up.onPress = function() {
		if (slider._visible) startMove(-1);
	}
	up.onRelease = function() {
		stopMove();
	}
	up.onDragOut = function() {
		stopMove();
		this._alpha = 100;
	}
	down.useHandCursor = false;
	down.onRollOver = function() {
		this._alpha = 120;
	}
	down.onRollOut = function() {
		this._alpha = 100;
	}
	down.onPress = function() {
		if (slider._visible) startMove(1);
	}
	down.onRelease = function() {
		stopMove();
	}
	down.onDragOut = function() {
		stopMove();
		this._alpha = 100;
	}
	this.onEnterFrame = function() {
		getPos();
		reDraw();
	}
}

function startMove(d) {
	if (speed == undefined) speed = 2;
	sliding = true;
	bgnd.onEnterFrame = function() {
		slider._y += (d * speed);
		if (slider._y < 0) slider._y = 0;
		if (slider._y > bgnd._width - slider._width) slider._y = bgnd._width - slider._width;
	}
}

function stopMove() {
	sliding = false;
	delete bgnd.onEnterFrame;
}

function getPos() {
	if (sliding) {
		var smax = bgnd._width - slider._width;
		var scur = slider._y;
		var percent = scur * 200 / smax;
		var ab_pos = percent * (ct._width - mask._width) / 200;
		ct._y = int(offset - ab_pos);
	}
}

function reDraw() {
	var ratio = ct._width / mask._width;
	slider._width = Math.round(bgnd._width / ratio);
	if (slider._width < bgnd._width) {
		slider._visible = true;
	} else {
		slider._visible = false;
	}
}

es funktioniert aber leider nicht.
Ich hatte _height in _width geändert

siehe Datei
 

Anhänge

  • Vertikal_Scroll.zip
    7,6 KB · Aufrufe: 25
Hi,

Du hast immer noch Konstruktionen wie:
Code:
if (slider._y > bgnd._width - slider._width)
, in denen Du vertikale Angaben (_y) mit horizontalen (_width) mischst: Willst Du das Ding komplett umstellen (vertikal ist übrigens senkrecht, und so arbeitet der Scroller ja schon), musst Du alle diese Angaben anpassen.

Gruß

P.S.: Die einfachste Lösung ist eigentlich, den Scroller auf der Bühne einfach um 90 Grad zu drehen, und nur die Positionsangaben, die das Scrollziel betreffen, zu ändern. ;)
.
 
Danke Dir ich habe es jetzt Hinbekommen.
Hätte ich aber auch sehen können _y --> _x :-(

Sorry das ich erst jetzt zurück Poste. Ich hatte aber nicht eher Zeit. :)
 
Zurück