Quadrate tauschen

zirag

Erfahrenes Mitglied
Hi,

ich bin gerade auf eine schöne Seite gestoßen.

Und nun kam mir die Frage auf, wie kann man sowas realisieren.

Ich will nur wissen, wie man die "Quadrat-Tausch" Funktion realisieren kann.

Ich hab mich damit gerade schon beschäftigt, aber meine Lösungen waren eher nicht so vorteilhaft, weil so der Code ziemlich lang werden würde.

Wie würdet ihr sowas lösen?

PS: ich meine nicht das tweenen sondern wie man eine Funktion für alle Quadrate nutzen kann.


Hier die Site: http://www.benji.hu/assive/

Danke schonmal.

mfg ZiRaG
 
Hi,

ist nicht besonders kompliziert, obwohl Du (zumal beim Sortieren) einiges beachten musst.

Im Anhang findest Du ein exemplarisches Beispiel.

Beachte, dass Du - wenn Du die Boxen mit wirklichen Inhalten ausstatten willst - zum Anordnen der Boxen (hauptsächlich die Funktion "reArrange" im MC "blocks") nicht die tatsächliche Breite, sondern die Breite des jeweiligen Hintergrunds als Maßstab verwenden musst.

Gruß
.
 

Anhänge

hmm... wenn ich in die Boxen Inhalte einfügen würde, würde ich dort u.U. einen MC positionieren, der schon von vorneherein seine endgültige Größe besitzt (die Box als solche wird ja erst beim Wechsel in die Mitte vergrößert), aber zunächst unsichtbar oder transparent ist. Je nach Umsetzung musst Du dann in der Funktion "reArrange" die Maße des Hintergrunds (bgnd) der jeweiligen Box verwenden, um die Boxen anzuordnen, da sonst die Breite des (unsichtbaren) Content-Clips mit berücksichtigt wird.

Du hast dieses Problem nicht, wenn Du a) die Inhalte erst nach dem Vergrößern auf die Boxen setzt und vor dem Verkleinern wieder entfernst, b) die Inhalte mitskalierst oder c) sie nicht in der Box selbst, sondern ausserhalb des Clips "blocks" auf eine andere Ebene setzt.

Gruß
.
 
Ah okay vielen Dank :)

komme erst jetzt dazu die FLA zu studieren ;) hab mir vorhin nur schnell die SWF angesehen.

Damit werde ich aber nun weiter kommen.


mfg

edit: Das ist mir ein bisschen zu viel.
Hast dir sicher viel Mühe gegeben
Aber wenn es nicht so viel arbeit macht: Kann man das vielleicht noch ein bisschen einfacher lösen

Also die Bewegungen wollte ich mit den Laco Tweens lösen.
am besten wäre es wenn der komplette Code nur auf der Hauptzeitleiste wäre und die Blocks schon auf der Bühne ... vielleicht auch erstmal nur mit 3 Blocks.

Ich will deinen Code ja nicht kopieren, sondern selber verstehen wie das geht und es dann selber machen ;)


Falls du keine Lust oder keine Zeit hast für ne vereinfachte Version auch nicht schlimm, denn muss ich mich da so durch kämpfen ^^

Danke

mfg ZiRaG
 
Zuletzt bearbeitet:
Hi,

mein Code lässt sich meiner Meinung nach nicht spürbar vereinfachen - sicher könnte man das gesamte Script auf die Hauptzeitleiste verlegen, was den Code aber eher verkomplizieren (bzw. zumindest unübersichtlicher machen) würde.

Prinzipiell kannst Du auch externe Tween-Klassen bzw. Prototypes verwenden, aber diese Anpassung würde das eigentliche Prinzip ebenfalls nicht vereinfachen.

Wenn Du nicht dynamisch arbeiten willst, kannst Du natürlich Tweenings verwenden, aber dann müsstest Du jeden möglichen Übergang modellieren, was alleine wegen der Umsortierung der Boxen schier Wahnsinn wäre.

Gruß
.
 
Naja gut, ich werd mich da mal reinwurschteln ^^
und mal selber losprobieren

Vielen Dank für die Mühe
mfg
 
Hallo,

ich hatte nun mal Zeit ein bisschen zu experimentieren.
Bin nun soweit, dass ich 3 MCs auf die Bühne attache und wenn ich den linken anklicke, dann wechselt der mit dem mittleren. Wenn das fertig ist, kann ich auf den mittleren klicken, um die beiden wieder zu tauschen.

Wie bekomme ich es nun hin, dass ich wieder auf den linken klicken kann um die beiden erneut zu tauschen, also dass ich immer auf den linken klicken muss um den linken mit dem mittleren zu tauschen

anbei mal mein bisherigen Code ( die Bewegungen hab ich mit den Laco Tweens gelöst )

PHP:
#include "lmc_tween.as"
var anz = 3;
var mcs = new Array();


for (i=0; i<anz; i++) {
	mcs[i] = this.attachMovie("mc", "mc"+i, i);
	mcs[i]._x = i*200;
	mcs[i]._y = 100;
	mcs[i].id = i;
	mcs[i].onPress = function() {
		if(this.id == 0){
			akty = mcs[0]._y
			this.tween("_y",this._y-this._height*2,.3,"easeInCirc",0)
			this.tween("_x",mcs[1]._x,.3,"easeInCirc",.3);
			this.tween("_y",akty,.3,"easeInCirc",.6);

			
			mcs[1].tween("_y",this._y+this._height*2,.3,"easeInCirc",0)
			mcs[1].tween("_x",mcs[0]._x,.3,"easeInCirc",.3);
			mcs[1].tween("_y",akty,.3,"easeInCirc",.6);
		}
		else if(this.id == 2){
			
		};
	};
};
 
Zurück