Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-02-2006, 13:11   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 45
Question Benutzerinteraktion unterbinden

Hey, ich habe gerade aufmerksam den "Abbrechbare Animation"-Thread gelesen, da ich ein sehr ähnliches Problem habe. Leider hab ich es dennoch nicht lösen können.

Also, ich habe eine simple "Diashow", Vor- und Zurück-Button. Beim Durchzappen blendet das jeweils angezeigte Bild aus, dann das jeweils nächste ein.
Leider ist der Code ziemlich lang und unschlank, Anfänger halt Ein Auszug daraus:

Code:
if (_root.foliennummer == 3) {
		if (_root.folien.inhalt02._alpha>=0) {
			_root.folien.inhalt02._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt04._alpha>=0) {
			_root.folien.inhalt04._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt02._alpha<=0) {
			if (_root.folien.inhalt03._alpha<=100) {
				_root.folien.inhalt03._alpha += _root.blendspeed;
			}
		}
	}
Das Problem ist wieder, dass bei wildem Herumgeklicke die Alphablends natürlich nicht fertig ausgeführt werden.
Ich müsste also irgendwie verhindern, dass während des Blendens die Benutzereingabe verhindert wird, die Buttons also inaktiv sind.
Wenn ich einen unsichtbaren mc drüberlege (s. quick and dirty thread "Abbrechbare Animation") verhindert das bei mir nicht die Anwählbarkeit der Buttons - leider.
paradosis ist offline   Mit Zitat antworten
Alt 07-02-2006, 13:16   #2 (permalink)
<>
 
Registriert seit: Jun 2001
Ort: Hamburg
Beiträge: 412
Dann mach die Buttons doch inaktiv.
Code:
    btn_Test.enabled = false;
Oder leg einen Button drüber:
Code:
    btn_block._visible = true, btn_block._alpha = 0; btn_block.useHandCursor = false; // Damit die Maus nicht zur Hand wird
flayoo ist offline   Mit Zitat antworten
Alt 07-02-2006, 13:21   #3 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.272
Zitat:
Wenn ich einen unsichtbaren mc drüberlege (s. quick and dirty thread "Abbrechbare Animation") verhindert das bei mir nicht die Anwählbarkeit der Buttons - leider.
Du musst dem MovieClip auch ein MouseEvent zuweisen.

Code:
invisibleClip.onPress = function(){};
invisibleClip.useHandCursor = false;
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 07-02-2006, 13:47   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 45
Smile Grazie mille

Vielen Dank ihr beiden!
Bei nur zwei buttons ist die .enabled-Variante super geeignet und funzt wunderbar!
Wäre da nur noch der fürchterlich unschlanke Anfängercode.(120 Zeilen für Ein- und Ausblenden

Wie würdet Ihr sowas lösen? Leider hab ichs noch nicht so mit "Variablen an Funktionen Übergeben" weswegen ich alles per copy und paste gelöst habe.
Dieses dauernde "if (x._alpha <= 100)-Prozedere macht den Code aber wirklich unübersichtlich.

Ich habe 6 Bilder(_root.bild01 bis _root.bild06) und möchte beim durchzappen das jeweils aktuelle Bild ausblenden und dann, sobald sein _alpha <= 0 ist, das neue Bild eiblenden. Ich habe echt Probleme mit der Schreibweise.
Habt Ihr da auch noch nen goldigen Tip?

mfg
Basti
paradosis ist offline   Mit Zitat antworten
Alt 07-02-2006, 14:05   #5 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Wenn du ein bisschen mehr Code hast, kann vielleicht auch ich dir helfen!
(Nur wenn du willst )
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 07-02-2006, 14:58   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 45
so soll es sein - ich habe euch gewarnt :)

kurze Erklärung:
"_root.folien" ist der mc der alle Folien beinhaltet
"_root.folien.inhalt01(bis06)" sind die Folien
"_root.folien.folie_vor" & "_root.folien.folie_zurück" sind die Buttons um von der einen zur anderen Folie zu navigieren
"_root.foliennummer" ist die aktuell angezeigte Folie

Leider ist diese Variante sehr performance-intensiv.
Beim Folienblenden gibts auf meinen P4 2,6 ne CPU Auslastung von 85% und das Blenden ist nicht flüssig.
Soviel zu den Nachteilen des Codes. Hier ist der betreffende Auszug aus dem Verbrechen:

Code:
_root.blendspeed = 5;
/////////////// Buttons //////////////////
//////////// Folie vor ///////////////////
_root.folien.folie_vor.onRollOver = function() {
	_root.folien.folie_vor.gotoAndPlay(2);
};
_root.folien.folie_vor.onRollOut = function() {
	_root.folien.folie_vor.gotoAndPlay(11);
};
_root.folien.folie_vor.onPress = function() {
	if (_root.foliennummer<=5) {
		_root.foliennummer += 1;
	}
};
//////////// Folie zurück ////////////////
_root.folien.folie_zurück.onRollOver = function() {
	_root.folien.folie_zurück.gotoAndPlay(2);
};
_root.folien.folie_zurück.onRollOut = function() {
	_root.folien.folie_zurück.gotoAndPlay(11);
};
_root.folien.folie_zurück.onPress = function() {
	if (_root.foliennummer>=2) {
		_root.foliennummer -= 1;
	}	
};
////////////////////////////////////////////

//////////////////// Folienblenden ///////
_root.onEnterFrame = function(){
      
	if (_root.foliennummer == 1) {
		if (_root.folien.inhalt01._alpha<=99) {
			_root.folien.folie_zurück.enabled = false;
			_root.folien.folie_vor.enabled = false;
		} else {
			_root.folien.folie_zurück.enabled = true;
			_root.folien.folie_vor.enabled = true;
		}
		if (_root.folien.inhalt02._alpha>=0) {
			_root.folien.inhalt02._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt02._alpha<=0) {
			if (_root.folien.inhalt01._alpha<=100) {
				_root.folien.inhalt01._alpha += _root.blendspeed;
			}
		}
		_root.folien.folie_vor._alpha = 100;
		_root.folien.folie_zurück._alpha = 0;
	}
	if (_root.foliennummer == 2) {
		if (_root.folien.inhalt02._alpha<=99) {
			_root.folien.folie_zurück.enabled = false;
			_root.folien.folie_vor.enabled = false;
		} else {
			_root.folien.folie_zurück.enabled = true;
			_root.folien.folie_vor.enabled = true;
		}
		_root.folien.folie_zurück._alpha = 100;
		if (_root.folien.inhalt01._alpha>=0) {
			_root.folien.inhalt01._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt03._alpha>=0) {
			_root.folien.inhalt03._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt01._alpha<=0) {
			if (_root.folien.inhalt02._alpha<=100) {
				_root.folien.inhalt02._alpha += _root.blendspeed;
			}
		}
	}
	if (_root.foliennummer == 3) {
		if (_root.folien.inhalt03._alpha<=99) {
			_root.folien.folie_zurück.enabled = false;
			_root.folien.folie_vor.enabled = false;
		} else {
			_root.folien.folie_zurück.enabled = true;
			_root.folien.folie_vor.enabled = true;
		}
		if (_root.folien.inhalt02._alpha>=0) {
			_root.folien.inhalt02._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt04._alpha>=0) {
			_root.folien.inhalt04._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt02._alpha<=0) {
			if (_root.folien.inhalt03._alpha<=100) {
				_root.folien.inhalt03._alpha += _root.blendspeed;
			}
		}
	}
	if (_root.foliennummer == 4) {
		if (_root.folien.inhalt04._alpha<=99) {
			_root.folien.folie_zurück.enabled = false;
			_root.folien.folie_vor.enabled = false;
		} else {
			_root.folien.folie_zurück.enabled = true;
			_root.folien.folie_vor.enabled = true;
		}
		if (_root.folien.inhalt03._alpha>=0) {
			_root.folien.inhalt03._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt05._alpha>=0) {
			_root.folien.inhalt05._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt03._alpha<=0) {
			if (_root.folien.inhalt04._alpha<=100) {
				_root.folien.inhalt04._alpha += _root.blendspeed;
			}
		}
	}
	if (_root.foliennummer == 5) {
		if (_root.folien.inhalt05._alpha<=99) {
			_root.folien.folie_zurück.enabled = false;
			_root.folien.folie_vor.enabled = false;
		} else {
			_root.folien.folie_zurück.enabled = true;
			_root.folien.folie_vor.enabled = true;
		}
		if (_root.folien.inhalt04._alpha>=0) {
			_root.folien.inhalt04._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt06._alpha>=0) {
			_root.folien.inhalt06._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt04._alpha<=0) {
			if (_root.folien.inhalt05._alpha<=100) {
				_root.folien.inhalt05._alpha += _root.blendspeed;
			}
		}
		_root.folien.folie_vor._alpha = 100;
	}
	if (_root.foliennummer == 6) {
		_root.folien.folie_vor.enabled = false;
		if (_root.folien.inhalt06._alpha<=99) {
			_root.folien.folie_zurück.enabled = false;
			_root.folien.folie_vor.enabled = false;
		} else {
			_root.folien.folie_zurück.enabled = true;
			_root.folien.folie_vor.enabled = true;
		}
		if (_root.folien.inhalt05._alpha>=0) {
			_root.folien.inhalt05._alpha -= _root.blendspeed;
		}
		if (_root.folien.inhalt05._alpha<=0) {
			if (_root.folien.inhalt06._alpha<=100) {
				_root.folien.inhalt06._alpha += _root.blendspeed;
			}
		}
		_root.folien.folie_vor._alpha = 0;
	}
};
paradosis ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele