FLASH MX - Wasser effekt? Mausposition!

MsvP

Gesperrt
Na ihr, hab mal ne frage.

Und zwar.... ich habe einen fluss in flash gemalt. und einen Movie Clip, der so ringe darstellt, wie sie entstehen wenn man wasser berührt.

Jetzt möchte ich gerne, dass egal an welcher stelle ich den fluss anklicke die movie sequenz mit den ringen an der stelle abgespielt wird.

Dafür muss ich sicher irgendwie die Mauspostion abfragen, allerdings kommt erstens erschwerend dazu, dass es nur am Fluss passieren darf, nicht aber um den fluss herum. und zweitens wird der fluss nach hinten hin schmaler, sprich, die Movie Sequenz mit den ringen muss kleiner werden!

Also ich habe schon ideen, wie es gehen könnte, nur kenne ich mich leider nur mit php programierung und weniger mit actionscript aus, so dass ich mit den objektorientierten programieren nicht soviel erfahrung habe. Aber wird sicher irgendwas mit x und y koordinaten sein!

Danke für eure hilfe
Euer Msv P!!
 
Ok , so zwischen stand. habe jetzt schon selber hin bekommen das die Wasserringe entstehen und das dies auch nur auf dem Fluss passiert. Jetzt fehlt mir nur noch die größen Änderung. ALso der fluss ist unten schmal und oben schmal und in der mitte breit.

Ich denke ich muss wieder mauskoordinaten abgleichen, je nachdem ob die maus weiter oben ist oder unten. Und dann die Größe des Mc's verändern. Weiß aber nicht genau wie.

Übrigens ich habe das bis jetzt so gemacht. Habe aus dem fluss ne Schaltfläche gemahct mit folgenden Aktionscript:

on (press)
{
_root.ringe.gotoAndPlay(1);
setProperty(ringe, _x, _root._xmouse);
setProperty(ringe, _y, _root._ymouse);
;
}


wobei RINGE die Movie sequenz mit der wasseranimation ist!


Übrigens hier ist mal die swf datei, damit ihr versteht wie ich das meine:
http://www.geocities.com/hdlwerbung/erde.html

Gre@tz euer Msv P!!!
 
Zuletzt bearbeitet:
in flash ist die obere linke ecke mit y=0 und x=o der anfang,
von da aus nimmt nach unten hin y zu, und nach rechts nimmt x zu,
soweit ich weiss,
also kann man sagen:

Code:
if ( _ymouse < 50) {
setProperty("instanzname", _yscale, 10);
setProperty("instanzname", _xscale, 10);
}

instanzname = instanzname von der jeweiligen ringe-instanz
10 = grösse [jeweils breite und höhe]
[ps: achte auf das grössenverhältnis, wenn es origibel 100p breit und 50p hoch ist, als 2zu1, dann sollten auch die verkleinerten sachen ein verhältnis 2zu1 haben]

den code musst du in deinen code vom der schaltfläche reinbringen, einfach die ganze schleife reinkopieren,
wenn if nicht erfüllt ist, übergeht er was dahinter in klammern steht und deine ringeinstanz behält ihre normale grösse
 
Zuletzt bearbeitet von einem Moderator:
Hi ihrs,

also zunächst solltet ihr evtl. darauf achten, dass ja bei der Perspektive die Skalierung nicht nur bei _ymouse > "Wert" abnehmen müsste, sondern auch bei _ymouse < "Wert" abnehmen müsste, wobei "Wert" dann eben dem _ymouse-Wert des Äquators entspricht.
Logisch soweit, oder?

Und machbar wäre das doch dann insgesamt mit:
PHP:
on (press) {
aequator = 150
ringx = _xmouse;
ringy = _ymouse;
ringe._x = _ringx; 
ringe._y = _ringy;
faktor = Math.abs(aequator - ringy)
if (ringy < aequator || ringy > aequator) {
 ringe._xscale = faktor; 
 ringe._yscale = faktor;
}
ringe.gotoAndPlay(1); 
}
Für aequator kannst du natürlich den jeweiligen Wert einsetzen.
Ist vielleicht auch ein wenig schlecht gewählt mit der Skalierungsfaktorberechnung, aber versuch' einfach mal irgendwie damit dein Glück. :)

hth,
Geist
 
Zuletzt bearbeitet:
höt sich alles etwas unständlich an, aber du wirst es besser wissen =)
 
So danke erstma für eure hilfe.

Klappt auch eigentlich schon ganz gut. Nur das mit dem equator läuft irgendwie falsch rum. Anststatt unten und oben kllien zu sien udn in der mitte groß, macht er außen die ringe groß udn innen klein, hab shcon sätmliche zahlen ausprobiert aber 230 passt bei mir am besten, so das außen die aktionen identisch sind und inen das gegenteil, aber leider is es halt falsch rum. Kleienre werte verschieben nur alles. So dass es mal unten riesig ist und nach oben hin kleiner

Ich hoffe ihr könnt mir nochmal helfen.
Hier mein Script wies nun ausschaut:

on (press) {
aequator = 230;
ringx = _xmouse;
ringy = _ymouse;
ringe._x = _ringx;
ringe._y = _ringy;
faktor = Math.abs(aequator-ringy);
}
on (press) {
if (ringy < aequator || ringy > aequator) {
ringe._xscale = faktor;
ringe._yscale = faktor;
}
_root.ringe.gotoAndPlay(1);
setProperty(ringe, _x, _root._xmouse);
setProperty(ringe, _y, _root._ymouse);
}
 
Hi hi nochmal,

also wegen dem Äquator:
Brauchst doch nur an der Stelle, an der der Fluss am dicksten ist, einfach mal mitm Cursor in Flash drübergehen und die y-Koordinate des Mauszeigers anschauen und einsetzen. :)

Und zum Script nochmal:
Logisch, dass die Ringe falschrum ihre Größe ändern, sorry. :(
Versuch's einfach nochmal so hier, ist zwar mehr geraten als bewiesen, aber könnte klappen. :)
PHP:
on (press) { 
aequator = 230; 
ringx = _xmouse; 
ringy = _ymouse; 
ringe._x = ringx; 
ringe._y = ringy; 
faktor = Math.abs(100 - Math.abs(aequator-ringy));
if (ringy < aequator || ringy > aequator) { 
 ringe._xscale = faktor; 
 ringe._yscale = faktor; 
} 
_root.ringe.gotoAndPlay(1);
}
Ansonsten versuch's mal noch mit der Zeile

faktor = 1/(Math.abs(aequator-ringy));

statt der

faktor = Math.abs(100 - Math.abs(aequator-ringy));

hth,
Geist - ab morgen dann wohl erstmal im Urlaub :)
 
Hey super! Das hat klasse geklappt, wers ergebnis sehen will habs nochma hochgeladen.

(nur als info kommen nochn paar anies mehr dazu)

So bis denne! Und Big ThX nochma! Hat mir sehr geholfen!


---> Msv P!!!

Viel Spaß im Urlaub!
 
1. Kann ich bei dem Erde Ding irgendwie nichtws von kleiner werden erkennen...
Noch nen Tipp für dich:
Mach aus dem Fluss ne Maske, dann gehen die Ringe net über den Rand raus.
 

Neue Beiträge

Zurück