Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-12-2006, 10:46   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2001
Ort: Stuttgart
Beiträge: 29
Richtige Verwendung von Protypen

Hallo,

ich habe mir danke euch, also diesem Forum, gewisses Verständnis von prototypen angelesen und kann mit diesen auch soweit umgehen.

Das hat soweit geführt, dass ich an meinem jetztigen Projekt (komplette Flash Webpräsenz) viele Aktionen mit protypen bastle.

Ein Beispiel:
Beim Klick auf einen Button, soll der Inhalt des vorher gewählten Buttons aus der Stage fahren, dann removed werden und anschließen der neue Inhalt vorgeladen werden (sichtbar mit Statusanzeige) sowie nach Fertigladen in die Stage gefahren werden.

Für die reine Bewegung habe ich mir einen "Bewegungs-prototypen" gebaut:
Code:
// Prototype zum beschl. Bewegen eines MC in X- und Y-Richtung
MovieClip.prototype.move_xy = function(move_x:Number, move_y:Number, delay:Number) {
	this.new_x = this._x + move_x;
	this.new_y = this._y + move_y;
	
	this.onEnterFrame = function() {
		this.diffx = this.new_x - this._x;
		this.diffy = this.new_y - this._y;
		
		if (move_x != 0 || move_y != 0) {		
			if ( (this.diffx > 0.2 || this.diffx < -0.2) || (this.diffy > 0.2 || this.diffy < -0.2) ) { 
				this._x += this.diffx/delay;
				this._y += this.diffy/delay;
			} else {
				delete this.onEnterFrame;
                                // !!! Hier käme eigentlich die "nächste" Aktion !!!
			}
		} else {
			delete this.onEnterFrame;
		};
		
		updateAfterEvent();
	};
};
Jetzt die Frage bezüglich der richtigen Verwendung.
Mein Problem ist, dass die oben beschriebene Reihenfolge der Aktionen jeweils von der vorhergeneden Aktion abhängt. D.h. der neue Inhalt darf erst dann geladen werden, wenn der alte aus dem Bild gefahren ist. Und erst wenn der neue Inhalt fertig geladen ist, darf er ins Bild reinfahren.

In dem Code meines Bewegungsprototypen habe ich an der Stelle ein Kommentar gesetzt, an der die Bewegung abgeschlossen ist.
Hier müssten jetzt theoretisch die neuen Aktionen beginnen.

Wenn ich jedoch alles an diese Stelle setzt, kann ich den Prototypen ja nicht mehr auf andere MC anwenden sondern nur noch auf spezielle.
Ich will sagen, das ja gerade die Idee des prototypen die ist, dass er als art Schablone (Klasse) auf x-beliebige MovieClips angewendet werden soll.
D.H. an der Stelle meines Kommentares (im Script) sollen je nach dem verschiede Aktionen eingefügt werden.
Gibt es eine Möglichkeit, einer Rückgabe nach dem Motto "ich bin jetzt an der richtigen Position, mein onEnterFrame is fertig, fang mit dem nächsten an".

Wie programmiert ihr eure Seiten, bzw diese Funktionen. Ist es sinnvoll mit Prototypen zu arbeiten oder was benutzt man?

Danke im Voraus!

Oliver

Geändert von stamina (08-12-2006 um 10:55 Uhr)
stamina ist offline   Mit Zitat antworten
Alt 08-12-2006, 10:48   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Man könnte eine Funktion als Paremeter dem prototypen übergeben die er am ende der Bewegung aufruft.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 08-12-2006, 10:53   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2001
Ort: Stuttgart
Beiträge: 29
Vieln DAnk für die schnelle Antwort :-)

Aber erstens ist das die "professionelle Art der Programmierung" ???
Ich würde gerne mein Projekt so professionell wie möglich programmieren.
Denn meistens ist es dann übersichtlicher und noch später besser verständlich.

Zweitens hatte ich aber daran auch schon gedacht. Jedoch weiß ich nicht wie das genau geht: Hatte gedacht evtl so:
Code:
MovieClip.prototype.move_xy = function(move_x:Number, move_y:Number, delay:Number, remove:Boolean, aktion:Function) {
          //wie rufe ich aktion jetzt auf
         // was ist, wenn die neue aktion selber eine Funktion mit eigenen
         // Parametern ist?
};
Oder wie meinst du das?

Gruß
stamina ist offline   Mit Zitat antworten
Alt 08-12-2006, 11:00   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hey, wenn ich dir was sagen darf: Brich dir keinen ab mit eigenen prototypes oder was auch immer... es gibt einige supersuper Tween-Klassen/Utils/Frameworks etc., die das alles (besser) können... Da muss man das Rad wirklich nicht nochmal neu erfinden...

Anhaltspunkte:
Die Flash-eigene Tween-Klasse
Moses supposes / Fuse
Laco
http://hosted.zeh.com.br/mctween/index.html
http://www.fluid.com/experiments/tweenplayground/
...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 08-12-2006, 11:02   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Funktion wird wie ein normale Funktion aufgerufen, wenn du parameter für die Funktion brauchst kann man auch noch ein Array mit den Parametern als Parameter übergeben.

Wenn du sauber programmieren willst solltest du dier eine eigene Klasse anlegen und nicht alles in die Klasse Movieclip "müllen".
Schlieslich soll ja nicht jeder MovieClip diese Methoden haben.

Da du ja Flash 7 hast, würde ich dir empfehlen auf Klassen umzusteigen, damit kann man viel sauberer programmieren als mit dem prototyp Zeugs.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 08-12-2006, 12:07   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2001
Ort: Stuttgart
Beiträge: 29
Thumbs up Danke

Hallo sonar,

vielen Dank für deine Links.
Also ich hab jetzt mal ein bissle mit "http://hosted.zeh.com.br/mctween/index.html" gespielt *Freu*

Das ist genau das was ich gebraucht habe. Gibt dort super EventHandler wie z.B. "onTweenComplete".

Ich werde noch nach weiteren suchen, denn wie du ja sagtest "Da muss man das Rad wirklich nicht nochmal neu erfinden..."

Des weiteren werde ich mich mal in OOP mit Klassen einlesen.
Ich kenn es nur von C++. mal sehen obs in AS genauso funktioniert.

Gruß und Danke an Alle

Oliver
stamina ist offline   Mit Zitat antworten
Alt 08-12-2006, 12:11   #7 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Viel Spaß!
Mein persönlicher Favorit is ja derzeit das Fuse Kit von Moses & Co.:
http://www.mosessupposes.com/Fuse/index.html

Erfordert zwar einiges an Einarbeitung, aber es sind super Beispiele dabei...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar 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 03:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele