vergrößern...Ausgangsposition

Happy_Gabba

Mitglied
Hallo!!!

Ich weiß wie man bei nem normalen twennen etwas grösser macht während sich etwas über den Bildschirm bewegt...aber wie mache ich das in AS wenn ich zum Beispiel nen Ball habe der in frame1 halb so klein ist wie in frame30 und wenn er dann wieder in frame1 ist sollte er seine Ausgangs größe wieder haben...bei mir wird da aber der ball immer größer...kann mir jemand en kleines script dazu schreiben? Ach so der film soll in ner schleife laufen und ich benutze FlashMX....

D.... im vorraus

Happy
 
Wie willst du denn AS mit Frames verbinden?

Entweder du codest wenn möglich auf einem Frame oder Objekt, oder du kannst gleich tweenen, dann hast du mehrere Frames verwendet. ;)

Script wäre jedenfalls bspw.:
PHP:
mc.onEnterFrame = function() {
	this._xscale++;
	this._yscale = this._xscale;
}
hth,
Geist
 
Danke..aber soweit bin ich auch...bei deinem script wird der Ball größer und größer....das er nicht platzt ist alles (kleiner scherz).
Er sollte dabei aber auch von links nach rechts laufen und wenn er am ende des Bildschirms angekommen ist sollte er an seiner Ausgangsposition wieder so sein wie er auch angefangen hat. also klein und das soll sich immer wiederholen....achso hab eben nur meine Tween beschrieben...interesse liegt aber im AS also ohne frame...
wäre lieb wenn de da auch ne lösung für hast

D... im vorraus
Happy
 
Wenn du soweit auch schon warst, woran hapert's denn dann beim Schritt nach hier? :)
PHP:
mc.onEnterFrame = function() {
    this._xscale++;
    this._yscale = this._xscale;
    this._x++;
    if (this._x == 500) {
        this._x = 200;
        this._xscale = 100;
        this._yscale = 100;
    }
}
Geist, der schon drauf wartet bis Skyla wieder mit 'ner prototype-Funktion auftaucht :)
 
jo skyla wo bleibste :eek:)
Also den Rest deines scripts hab ich nicht gerafft...egal wie meine veränderungen waren....dat Auto hat nur eine Richtgeschwindigkeit...
und mein Problem dat et in ner schleife abläuft wurde nicht behoben...Ok vieleicht haste mich ja nicht verstanden oder ich habe mich nicht verständlich ausgedrückt....also der Ball ist am linken Rand er ist so groß wien Tischtennisball....jetzt kommts der Ball wandert zur rechten Seite und wird dabei größer (Tennisball) und wenn er aus dem rechten Bild läuft soll er wieder an der linken anfangen mit der größe eines Tischtennisballs....kannste nicht Anmerkungen in dein script schreiben so das ich sie verstehe....

d.... im vorraus
 
Ui und wenn ihr schon dabei seit...wo lerne ich AS richtig...und deutsch sollte es schon sein..also wenn jemand en gutes Referenz Buch oder sowas empfehlen kann dann her damit :eek:)
im Vorraus wie immer D....
Happy
 
Also wir hatten die Diskussion schonmal, ob onClipEvent(enterFrame) so in der Art etwas wie eine Schleife ist - sogar mit Voting durchgeführt :) - und es ist angeblich :p keine Schleife direkt, erfüllt aber dennoch eine Funktion wie eine Schleife, da es halt bei jedem ablaufenden Frame neu ausgelöst wird.

Warum dann also noch eine Extra-Schleife? :)
PHP:
mc.onEnterFrame = function() { // enterFrame-Event ins Leben rufen
    this._xscale++; 
    this._yscale = this._xscale; // x- und y-Skalierung vornehmen
    this._x++; // Objekt horizontal bewegen
    if (this._x == 500) { // wenn Objekt bei Markierung x=500 ist
        this._x = 200; // Objekt wieder zurücksetzen zu x=200
        this._xscale = 100; 
        this._yscale = 100; // x- und y-Skalierung zurücksetzen
    }
}
Einleuchtend, oder? :)
Den Wert für die if-Abfrage und die anschließende Rücksetzung
kannst du ja deinem Film anpassen.
Ich weiß ja nicht, wie breit er ist und bei welcher x-Koordinate dein Objekt starten soll, das musst du schon selbst vornehmen.

Geist,
dessen y-Taste langsam den Geist aufgibt :(
 
hola..
also als buchtipp für AS kann ich nur das AS-referenzhandbuch von macromedia empfehlen.. hab das zwar nur für flash 5, aber den restlichen MX-kram kann man über die hilfe funktion im programm selbst beziehen..

*sancho*
 
@schattenjäger: :)

Auch auf die gefahr hin, dass ich wieder geprügelt werde...here we go (bei prototypen werd ich schwach...) !


Man nehme: einen ball aus der bibliothek und gibt ihm den bezeichner 'clip'. setzt ihn links NEBEN die Bühne und gibt seiner y-koordinate den wert 200.

in das erste BILD (Frame) kommt folgender Code:


PHP:
MovieClip.prototype.startposition = function () { 
this._x=0;
this._y=200;
this._xscale=50;
this._yscale=50;
}

MovieClip.prototype.mover=function(){
	this.onEnterFrame=function(){
	if (this._x> 550){
		this.startposition();
	} else {this._x+=8;
		    this._xscale+=4;
		    this._yscale+=4;
	}
	}
}
clip.mover();


zur Erklärung: wir haben dem Objekt MovieClip zwei neue Methoden geschenkt. Was sind Methoden?

MovieClip.stop() ist eine Methode der Klasse MovieClip. Wieso Klasse? Wenn ihr einen MC aus der Bibliothek auf die Bühne stellt, ist es eine Instanz. Eine Instanz der Klasse MovieClip. Das heisst: Jede Instanz kann das was seine Klasse kann. Wenn die Klasse was neues lernt, können es ihre Instanzen automatisch auch.

Bsp: die Klasse MovieClip kann stopen: stop() .Dies ist eine sog. eingebaute Methode. Das heisst: das MovieClip Klasse kann etwas: anhalten. Diese Methode befindet sich bereits im Prototyp vom Objekt MovieClip. Die Flash-Entwickler haben sie bereits dort reingeschrieben. Der Prototype von einem Objekt ist wie ein Container, wo alle Fähigkeiten (=methoden, zB stop) gesammelt werden. Stop () wird oft gebraucht. Deshalb ist es schon drin. Die Methode von links nach rechts scrollen und dabei grösser werden wird weniger oft gebraucht. Deshalb müssen wir sie selber in den Prototyp von MovieClip hineinschreiben. Und genau das habe ich oben gemacht.

Meine erste Methode heisst startposition. Wenn ich diese Methode auf eine Instanz eines MC anwende
PHP:
MC.startposition()
springt der MC auf die in der Methode gewählten Koordinaten (0/200) und nimmt die mit x/yscale eingestellte Grösse an. In unserem Fall die Position, die der Ball wieder einnehmen soll, wenn er den Screen rechts verlassen hat. Diese Methode kann ich nun auf beliebig viele mc's anwenden. Hier beginnt übrigens objekt orientiertes programmieren.

Die zweite Methode bringt einen mc dazu nach rechts zu scrollen und grösser zu werden. Wenn der Ball einen bestimmten Punkt auf der x-achse (550-breite der bühne) erreicht hat, wird die methode startposition aufgerufen. und das ganze beginnt von vorne.

'this' spielt eine wichtige rolle, weil: wenn wir unsere methode erstellen, wissen wir ja noch nicht, auf welchen mc sie angewendet werden soll. deshalb spielt this einen platzhalter und steht für den mc, auf den die methode gerade angewendet wird. in casu clip.

this kann aber auch eine referenz auf eine zeitleiste sein. zb bei this.onEnterFrame:die zeitleiste des mc clip: das ist wichtig, weil die zeitleiste von _root sollte man nicht mit einem onEnterFrame belegen.

Ich denke, dass wer diese dinge verstanden hat, auch ein bisschen verstehen kann, wie flash funktioniert und aufgebaut ist.

hope it helps
skyla

:-(
 
PHP:
MovieClip.prototype.startposition = function () { 
    this._x=0;
    this._y=200;
    this._xscale=50;
    this._yscale=50;
}

MovieClip.prototype.mover=function(){
    this.onEnterFrame=function(){
    if (this._x> 550){
        this.startposition();
    } else {this._x+=8;
            this._xscale+=4;
            this._yscale+=4;
    }
    }
}
_root.attachMovie("clip","clip1", 1);
clip1.startposition();
clip1.mover();
Und das wär' die Variante ohne die böseböse Arbeit, den MC aus der Bibliothek auf die Bühne ziehen zu müssen. :)
(obwohl - verlinken ist genau so blöd :rolleyes: )

Geist
 

Neue Beiträge

Zurück