| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| + Zimt & Zucker Registriert seit: Mar 2006 Ort: hinterm Mond gleich links
Beiträge: 2.043
| [Stuff]Einmal global warming bitte...
hallo. Vorab muss ich bemerken, dass sich die Anwendungsbereiche dieses Stuff (ein Glück gibt's davon keine Einzahl) in Grenzen halten, aber vlt. braucht es trotzdem irgendjemand mal irgendwann. ...neulich blieb mein Opera Surfbrett an [dieser Seite] hängen. Und wie der das nun so erklärte, keimte in mir der Gedanke, dass man sowas - offensichtlich regelmäßiges - doch sicher auch mit code machen könnte. Gedacht - getan: Code: /*********************
ver. 0.8
**********************/
class Ocean {
var i, j:Number;
var targetMC:MovieClip;
function Ocean(MC:MovieClip, lineColor:Number, lineThickness:Number, fillColor:Number, rows:Number, min:Number, max:Number, wavelength:Number, timeShift:Number, yShift:Number, xShift:Number, moveAmplitude:Number, xSpeed:Number) {
targetMC = MC;
MC.a = 0;
MC.t = 0;
MC._x = -wavelength;
for (i=1; i<rows+1; i++) {
MC.createEmptyMovieClip("row"+i, i);
MC["row"+i].ID = i;
MC["row"+i].w = wavelength*(i/2);
MC["row"+i].k = 0;
MC["row"+i].speed = xSpeed*(i/2);
MC["row"+i]._x = (1-i)*xShift;
MC["row"+i]._y = (i-1)*yShift;
}
MC.isDamnedToDie = false;
MC.levelChange = 0;
MC.onEnterFrame = function():Void {
this.t += .1;
this.a += this.levelChange;
for (i=1; i<rows+1; i++) {
this["row"+i].clear();
this["row"+i].lineStyle(lineThickness, lineColor);
this["row"+i].beginFill(fillColor, 100);
this["row"+i].moveTo(0, this.a);
this["row"+i].k = this["row"+i].speed*this.t;
while (this["row"+i].k>=0) {
this["row"+i].k -= this["row"+i].w;
}
j = 0;
while ((j-3)*this["row"+i].w+2*this["row"+i]._x<Stage.width) {
this["row"+i].curveTo(j*this["row"+i].w+this["row"+i].w/3+this["row"+i].k, this.a-moveAmplitude*this["row"+i].ID/2*((Math.sin(Math.PI*(this.t-timeShift*this["row"+i].ID))+1)/2), j*this["row"+i].w+this["row"+i].w/2+this["row"+i].k, this.a-moveAmplitude*this["row"+i].ID/2*((Math.sin(Math.PI*(this.t-timeShift*this["row"+i].ID))+1)/2)-((max*(this["row"+i].ID/2)-min*(this["row"+i].ID/2))*((Math.sin(Math.PI*(this.t-timeShift*this["row"+i].ID))+1)/2)+min*(this["row"+i].ID/2)));
this["row"+i].curveTo(j*this["row"+i].w+this["row"+i].w*2/3+this["row"+i].k, this.a-moveAmplitude*this["row"+i].ID/2*((Math.sin(Math.PI*(this.t-timeShift*this["row"+i].ID))+1)/2), j*this["row"+i].w+this["row"+i].w+this["row"+i].k, this.a-moveAmplitude*this["row"+i].ID/2*((Math.sin(Math.PI*(this.t-timeShift*this["row"+i].ID))+1)/2));
j++;
}
this["row"+i].lineTo((j+1)*this["row"+i].w, this.a);
this["row"+i].lineTo((j+1)*this["row"+i].w, Stage.height+this["row"+i].w+this.a);
this["row"+i].lineTo(0, Stage.height+this["row"+i].w+this.a);
this["row"+i].lineTo(0, this.a);
this["row"+i].endFill();
}
};
}
function globalWarming(amount:Number, willDieAtTheEnd:Boolean) {
if (willDieAtTheEnd == true or willDieAtTheEnd == false) {
targetMC.isDamnedToDie = willDieAtTheEnd;
} else {
targetMC.isDamnedToDie = false;
}
if (amount>0) {
targetMC.levelChange = -amount;
} else {
trace("Sorry, we cannot reverse global warming.\nPlease ask greenpeace to stop it or ask if anybody wants some tea!");
}
}
function greenpeace() {
targetMC.levelChange = 0;
}
function teaForEveryone(amount:Number, willDieAtTheEnd:Boolean) {
if (willDieAtTheEnd == true or willDieAtTheEnd == false) {
targetMC.isDamnedToDie = willDieAtTheEnd;
} else {
targetMC.isDamnedToDie = false;
}
if (amount>0) {
targetMC.levelChange = amount;
} else {
trace("Sorry, but it's quite impossible to make less than 1 cup of tea for everyone.");
}
}
} Das ganze als Ocean.as abspeichern und flash um eine jungfräuliche .fla bemühen, sich in eben dieser befindend eine beliebige Form erstellen, deren Sichtbarkeit sich auf 0 beschränken sollte. [Jaaa! Flash besitzt _auch_ Zeichenwerkzeuge] Dieses unsichtbare Etwas mittels F8 in die Bibliothek prügeln und ihm einen - ebenfalls beliebigen - Instanznamen aufzwängen. Meinen süßen Fratz habe ich mal "dummy" genannt. die X-Position dieses MCs ist unerheblich, lediglich seine Y-Position wird sich auf den späteren Meeresspiegel auswirken. Nach beherzter Liebkosung der, mit "F9" beschrifteten, Taste wird uns ein vor Leere strotzendes Eingabefeld entgegen gewuchtet. (Die Markierung des 1. Frames vorrausgesetzt) dieses wollen wir sogleich mit diesem inhalt beglücken: Code: import Ocean; //Ocean(MC:MovieClip, lineColor:Number, lineThickness:Number, fillColor:Number, rows:Number, min:Number, max:Number, wavelength:Number, timeShift:Number, yShift:Number, xShift:Number, moveAmplitude:Number, xSpeed:Number) var blub:Ocean = new Ocean(_root.dummy, 0x001155, 2, 0x0011AA, 10, 5, 10, 40, .3, 10, 3, 10, 10); MC:MovieClip | der mc in dem der ganze Zirkus stattfinden soll lineColor:Number | welche Farbe soll die Grenzlinie enthalten lineThickness:Number | wie dick soll diese sein fillColor:Number | welche Farbe soll die zu erzeugende Wasserstelle haben !? rows:Number | wieviele "Reihen" wasser sind erwünscht? min:Number | die Höhe des kleinsten Wellenberges max:Number | und die des größten wavelength:Number | Länge von Berg zu Berg timeShift:Number | Zeitdauer, zwischen dem erreichen der Maxima zweier benachbarter Reihen yShift:Number | Verschiebung in y-Richtung zwischen den Punkten an denen die Maxima erreicht werde zwischen zwei benachbarten Reihen xShift:Number | yShift in x-Richtung moveAmplitude:Number | Bewegung der geamten Reihe in y-Richtung bis zum erreichen der Maxima (und anschließende Senkung) xSpeed:Number | Bewegung der gesamten Reihe in x-Richtung Hinweis: Alle Größen wirken sich auf jede Reihe unterschiedlich aus, um einen gewissen perspektivischen Effekt zu simulieren. Ach ja! wessen Wasser noch nicht bis zum Hals steht, kann dies durch die 3 mitgelieferten Methoden bewerkstelligen: globalWarming() und teaForEveryone() heben bzw. senken den Meeresspiegel um den 1. Parameter pro frame. der 2. Parameter ist noch nciht fertig eingebaut, er soll später dazu dienen, zu klären, was passiert, wenn der komplette Bildschirm gefüllt/geleert ist (da ganz oben steht "ver. 0.8", ist also noch nicht die finale petra ääh Beta, ist ergo auch noch nicht voll funktionstätig) greenpeace() stoppt jegliche Meeresspiegelbewegungen ohne dafür einen Parameter zu verlangen. Wer bei den curveTo's noch durchblick hat, bekommt nen virtuellen Keks. Ich schlage vor von den gegebenen Werten ausgehend Experimente zu betreiben. Eigentlich wollte ich die ganzen, auch in den unteren Methoden verwendung findenden, Variablen in der klasse lassen (wie i, j ...) aber aus einem mir unerklärlichen Grund waren sie dann immer undefined, egal was ich ihnen für Werte gab, naja, so funktionierts und wie sagt man soch so schön? "Never stop a running system!" in diesem Sinne: ich bin natürlich an schriftlich hier materialisierten Meinungen darüber interessiert. PS: spielt nicht zu sehr damit rum, sonst muss Mutti wieder wischen!
__________________ anbei Grüße vom milchreis: Viva la [Silb] [Von null auf Flash in einem Klick.] <<< klick |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |