[AS] button._visible=false geht nicht

Jörg Rißmann

Erfahrenes Mitglied
Hallo zusammen,
Code:
this.stop_btn.onRelease = function() {
	auto_play = false;
};
this.play_btn.onRelease = function() {
	auto_play = true;
};
if (auto_play == false) {
	this.stop_btn._visible = false;
	this.play_btn._visible = true;
}
if (auto_play == true) {
	this.stop_btn._visible = true;
	this.play_btn._visible = false;
}
Das auto_play kann ich damit erfolgreich steuern, funktioniert.
Allerdings ändern sich die Buttons nicht.

Ziel: Wenn auto_play an ist, soll der Stop-Button gezeigt werden. (standard)
Wenn es aus ist, also nachdem der Stop-Button gedrückt wurde, soll der Play-Button gezeigt werden.

Die Sichtbarkeit wird an keiner anderen Stelle im Skript angepackt.

Thanks for help
 
Ich frage mich wieso du auto_play benutzt. Man könnte das doch so machen:

PHP:
this.stop_btn.onRelease = function() {
	this.stop_btn._visible = false;
                _root.play_btn._visible = true;
};
this.play_btn.onRelease = function() {
this.play_btn._visible = false;	
_root.stop_btn._visible = true;
	
};
Müsste eigentlich gehen.
 
Nee, geht auch nicht. Gleicher Effekt.

Ich fange deswegen den auto_play Status ab, weil es auch einen vor und zurückbutton gibt.
Klickt man auf diese, wird das Autoplay auch abgeschalten und der Playbutton sollte sichtbar und der Stopbutton verschunden sein.
 
Sind sie.
Wie sollte ich sonst bei this.stop_btn.onRelease das autoplay abschalten können?
Schreibfehler sind auch keine drin.
if (auto_play == false) { <- das ist der Knackpunkt.
Wann fragt AS denn Status ab? Permanent? nach jedem Klick? einmalig?
 
ok wäre das der knackpunkt, müsste das von mir gepostete aber funktionieren.
Hm, also den Status fragt As nur einmalig in diesem Beispiel ab. Ich meine von der if Abfrage. Wenn du das aber in die Funktion von on Release einbaust wird das jedesmal beim klicken abgefragt.

Also so:
PHP:
this.stop_btn.onRelease = function() { 
auto_play = false;    
this.stop_btn._visible = false; 
                _root.play_btn._visible = true; 
}; 
this.play_btn.onRelease = function() { 
auto_play = true;
this.play_btn._visible = false;     
_root.stop_btn._visible = true; 
     
};

Bei deinen Vor und Rückwärtsknöpfen machst du dann ne abfage:
z.B.:
PHP:
this.vor_btn.onRelease = function() { 
if (auto_play == false){
mache etwas} 
};
Das muss normalerweise gehen, es könnte sein, dass die variable autoplay nicht angesprochen wird. also das mit flase und true gesetzt wird aber der Status nicht abgefragt wird, weil er die variable noch nicht hat. entweder mache die variable dann global, oder sage ihm genau wo die ist. _root.auto_play == false z.B. vorher macht du auf root: var auto_play = false; oder true wie auch immer.

Bis dann
 
Nur eins: Wenn es sich um MovieClip-Buttons handelt, verweist "this" schon auf den Button. Also:
PHP:
this.play_btn.onRelease = function() {
    auto_play = true;
    this._visible = false;
;)

Gruß
.
 
Macht leider absolut keinen Unterschied.
Hier mal das ganze Skript in obiger Form:
Code:
stop();
// Komponentenparameter
var loop;
var slide_speed;
var alpha_speed;
var xml_list;
var auto_play;
var auto_play_sec;
System.useCodepage = true;
// loadCont(url,Container,loader)
MovieClip.prototype.loadCont = function(pURL, pCont, pLoader) {
	_global.end = false;
	pCont._alpha = 0;
	pCont.loadMovie(pURL);
	pLoader._visible = true;
	rahmen_mc._visible = true;
	this.onEnterFrame = function() {
		var geladen = pCont.getBytesLoaded();
		var gesamt = pCont.getBytesTotal();
		var prozent = geladen/gesamt*100;
		pLoader._width = prozent*2;
		if (prozent == 100 && gesamt>10) {
			var breite = pCont._width;
			var hohe = pCont._height+head_mc._height;
			pLoader._visible = false;
			rahmen_mc._visible = false;
			body_mc.slideScale(breite, hohe, pCont, slide_speed, alpha_speed);
			delete this.onEnterFrame;
		}
	};
};
// 
// slideScale
// 
MovieClip.prototype.slideScale = function(pW, pH, pCont, pSteps, pSpeedAlpha) {
	_global.end = false;
	this.onEnterFrame = function() {
		var diffX = pW-this._width;
		var diffY = pH-this._height;
		this._width += diffX/pSteps;
		this._height += diffY/pSteps;
		setLayout();
		if (Math.round(this._height) == pH && Math.round(this._width) == pW) {
			this._width = pW;
			this._height = pH;
			setLayout();
			pCont._alpha += pSpeedAlpha;
			if (pCont._alpha>=100) {
				pCont._alpha = 100;
				_global.end = true;
				delete this.onEnterFrame;
			}
		}
	};
};
// 
// setLayout
// 
MovieClip.prototype.setLayout = function() {
	cont_mc._x = body_mc._x-body_mc._width/2;
	cont_mc._y = body_mc._y-body_mc._height/2+this.head_mc._height;
	// head_mc
	head_mc._width = body_mc._width;
	head_mc._y = body_mc._y-body_mc._height/2+head_mc._height/2;
	// rahmen_mc
	rahmen_mc._x = body_mc._x-rahmen_mc._width/2;
	rahmen_mc._y = body_mc._y;
	rahmen_mc._visible = false;
	// loader_mc
	loader_mc._x = body_mc._x-rahmen_mc._width/2;
	loader_mc._y = body_mc._y;
	loader_mc._width = 0;
	loader_mc._visible = true;
	// Buttons
	prev_btn._x = -body_mc._width/2+5;
	prev_btn._y = body_mc._height/2+prev_btn._height-3;
	stop_btn._x = prev_btn._x+stop_btn._width+8;
	stop_btn._y = body_mc._height/2+stop_btn._height-3;
	play_btn._x = prev_btn._x+play_btn._width+8;
	play_btn._y = body_mc._height/2+play_btn._height-3;
	next_btn._x = stop_btn._x+next_btn._width+2;
	next_btn._y = body_mc._height/2+next_btn._height-3;

	// info_txt
	info_txt._x = head_mc._x-head_mc._width/2+10;
	info_txt._y = head_mc._y-head_mc._height/2+next_btn._height-11;
};
// infoText
function infoText(pText) {
	info_txt.autoSize = true;
	info_txt.text = pText;
}
// autoPlayPublic
function autoPlayPublic(pTime) {
	function auto(pURL, pCont, pLoader) {
		if (auto_play == true && counter<dURL.length-1 && _global.end == true) {
			counter++;
			infoText(dText[counter]);
			loadCont(dURL[counter], pCont, pLoader);
		} else if (auto_play == true && counter == dURL.length-1 && _global.end == true) {
			counter = 0;
			infoText(dText[counter]);
			loadCont(dURL[counter], pCont, pLoader);
		}
	}
	if (auto_play && _global.end == true) {
		var autoPlaying = setInterval(auto, pTime, dURL[counter], cont_mc, loader_mc);
	}
}

// 
// 
// 
// Arrays
// 
var dURL = new Array();
var dText = new Array();
var daten = new XML();
// 
// Variablen
// 
var counter = 0;
_global.end = true;
// 
// XML auslesen
// 
daten.ignoreWhite = true;
daten.load(xml_list);
daten.onLoad = function(ok) {
	if (ok) {
		for (var i = 0; i<daten.firstChild.childNodes.length; i++) {
			dURL.push(daten.firstChild.childNodes[i].attributes.url);
			dText.push(daten.firstChild.childNodes[i].attributes.text);
		}
		infoText(dText[0]);
		loadCont(dURL[0], cont_mc, loader_mc);
	}
};
// body
body_mc._width = 300;
body_mc._height = 300;
// autoPlayPublic
autoPlayPublic(auto_play_sec*1000);
// setLayout()
setLayout();
// 
// Buttons
// 
this.next_btn.onRelease = function() {
	auto_play = false;
	if (counter<dURL.length-1 && _global.end == true && auto_play == false) {
		counter++;
		infoText(dText[counter]);
		loadCont(dURL[counter], cont_mc, loader_mc);
	} else if (counter == dURL.length-1 && _global.end == true && loop == true && auto_play == false) {
		counter = 0;
		infoText(dText[counter]);
		loadCont(dURL[counter], cont_mc, loader_mc);
	}
};
this.prev_btn.onRelease = function() {
	auto_play = false;
	if (counter>0 && _global.end == true && auto_play == false) {
		counter--;
		infoText(dText[counter]);
		loadCont(dURL[counter], cont_mc, loader_mc);
	}
};
this.stop_btn.onRelease = function() {
	auto_play = false;
};
this.play_btn.onRelease = function() {
	auto_play = true;
};
if (auto_play == false) {
	this.stop_btn._visible = false;
	this.play_btn._visible = true;
}
if (auto_play == true) {
	this.stop_btn._visible = true;
	this.play_btn._visible = false;
}
 
Hi,

poste lieber mal die Originaldatei - durch so ein langes Script arbeite ich mich jetzt bestimmt nicht "trocken" durch... ^^

Gruß
.
 

Neue Beiträge

Zurück