Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-11-2005, 18:05   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
vor'm mauszeiger zurückweichen?

'n abend allerseits...
jetzt hab ich also mal ein kleines problem: ich hab auf meiner page eine illustrierte blume (vekotrisiert). jetzt möcht ich den kopf, also die blüte so programmieren, dass, sobald man mit dem mauszeiger in deren nähe kommt diese etwas zurückweicht und dann wieder leicht zurückwippt. stellt euch 'ne träge, etwas ruckartige bewegung vor, wie eine blume, die von schwachem wind hin und her getragen wird.
sie darf aber nicht zu weit zurückweichen, da auf eben dieser blüte die gesamte navigation liegt...

zudem hat diese wunderschöne blume noch sowas wie 'n "bauch", dem ich einen zahmen "atmen-effekt" verpassen möchte. ich will dieser blume LEBEN einhauchen!

bin in sachen action-scripting 'n anfänger und hoffe nun doch schwer, irgendwer hier kann mir so schnell wie möglich helfen.
bittebittebitte
ibes ist offline   Mit Zitat antworten
Alt 06-11-2005, 10:13   #2 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!

"hitTest" habe ich eingebaut, um konflikte bei rollover der blume mit onpress mit den blüten zu vermeiden;

PHP-Code:
stop();
wertbelly 0.1;
wertalles 0.05;
MC_blume.MC_belly.onEnterFrame = function() {
    
this._xscale this._yscale += wertbelly;
    
this._xscale>=105 wertbelly=-0.1 0;
    
this._xscale<=95 wertbelly=0.1 0;
};
MC_alles.onEnterFrame = function() {
    
this._rotation += wertalles;
    
this._rotation>=wertalles=-0.1 0;
    
this._rotation<=-wertalles=0.1 0;
};
this.onEnterFrame = function() {
    if (
MC_alles.MC_blume.hitTest(_xmouse_ymousefalse)) {
        
MC_alles.MC_blume.onEnterFrame = function() {
            
this._xscale>=90 this._xscale -= 0.2 0;
            
this._yscale>=90 this._yscale -= 0.2 0;
        };
    } else {
        
MC_alles.MC_blume.onEnterFrame = function() {
            
this._xscale<=100 this._xscale += 0.2 0;
            
this._yscale<=100 this._yscale += 0.2 0;
        };
    }
};
for (
i=1i<=8i++) {
    
_root.MC_alles.MC_blume["MC_"+i].onPress = function() {
        
trace(this);
    };

Angehängte Dateien
Dateityp: rar flower_link.rar (4,7 KB, 28x aufgerufen)
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 06-11-2005, 10:38   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
wauwau! dankedanke!
werd mich gleich mal dahintersetzen und des ding anpassen (versuchen)...
meld mich bestimmt noch(einige)mal(e)

supi, danke nochmals!
ibes ist offline   Mit Zitat antworten
Alt 06-11-2005, 10:51   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
oke, also...
wie krieg ich jetzt noch hin, dass die blume vor der maus zurückwippt (ausweicht). sozusagen leicht "angeschubst" wird?
ibes ist offline   Mit Zitat antworten
Alt 06-11-2005, 14:47   #5 (permalink)
Neuer User
 
Benutzerbild von michaelklaehn
 
Registriert seit: Feb 2003
Beiträge: 262
tipp

hi. ich hab zwar jetzt keine Zeit, dir den CODE zu schreiben, aber hier ein paar tipps.

verschiedene bewegungen würde ich grundsätzlich in verschiedenen
functionen lagern, wo du sie nach bedarf einsetzen kannst. also das
atmen der blume sollte ein anderes script sein als das zurückweichen.

erstens hast du dann einen besseren überblick und zweitens kannst
du das zurückweichen dann auf andere objekte übertragen, ohne daß
diese dann z.B. atmen usw.

das zurückweichen an sich habe ich noch nicht programmiert, obwohl
ich viel solche sachen mache. ich würde dir folgende herangehensweise
empfehlen:

erstens: der abstand zwischen maus und object muss berechnet werden.
es bietet sich an deine blume in zwei mcs zu haben. "blume_aussen" und darin "blume_innen" (blume_innen liegt in blume_aussen). der vorteil ist, das das koordinatensystem von blume_aussen sich nicht ändert und der abstand von maus zum mc immer unter den selben bedingungen berechnet wird. den abstand berechnest du mit hilfe des pythaguras (richtig geschrieben?) und zwar ausgehend vom nullpunkt von blume_aussen. diese werte überträgst du dann auf blume_innen, die ja im koordinatensystem von blume_aussen liegt.

beispiel (im onEnterFrame):
Xabstand=abstand von xmaus zu 0/0-blume_aussen
Yabstand=abstand von ymaus zu 0/0-blume_aussen
blume_innen._x=(-1/10)*Xabstand
blume_innen._y=(-1/10)*Yabstand

und benutze nicht _root._xmouse, sondern blume_aussen._xmouse

ich hoffe, ich hab dir ein paar anstöße gegeben.
falls nicht, fragen

micha

p.s. den pythaguras brauchst du um z.b. einschränkungen zu machen:
wenn(pythaguras<100){anfangen zu atmen}

Geändert von michaelklaehn (06-11-2005 um 14:50 Uhr)
michaelklaehn ist offline   Mit Zitat antworten
Alt 06-11-2005, 15:58   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
he! schreib mal endlich den CoOoDE...!

ne, s**eiss...
deine ansätze entsprechen doch schon sehr meinen vorstellungen. ich wollt das atmen und das "wippen" eh trennen, sind zwei teilbereiche der blume, der bauch atmet, der kopf wippt.
das mit dem pythagoras (so schreibt man's ) klingt ja mal spannend, wird ja was werden. das muss ich zuerstmal in ruhe nachvollziehen.

...
supergeil! vielen dank, dass ihr euch die zeit nehmt... des nenn ich mal 'n forum.
werd dies alles jetzt erstmal verdauen (müssen). muss eh noch vorgängig meine blume vektorisieren...

ich komm dann wieder...

falls zwischenzeitlich jemand noch mehr denkanstösse und solche sachen hat, nur raus damit!

dankedankedankeundsoweiter
ibes ist offline   Mit Zitat antworten
Alt 06-11-2005, 21:08   #7 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Hab mal ein Script, also besser gesagt einen Ansatz für ein Script um die Bewegung zu steuern.

Hier wird zuerst ein Kreis-MC erstellt. Ich hab das nur eingefügt, damit der code leicht ausprobiert werden kann. Normalerweise muss der MC nicht übers script erstellt werden, sondern du nimmst deine Blume die schon auf der Bühne ist.

PHP-Code:
/*
    Scene initialisieren.... (normal wird der Vorhandene MC verwendet)
*/
        //Zeichnet einen Kreis
        
MovieClip.prototype.drawCircle = function(x:Numbery:Numberr:Number){
            var 
TAN_PI8 Math.tan(Math.PI/8);
            var 
SIN_PI4 Math.sin(Math.PI/4);
            
this.moveTo(x+ry);
            
this.curveTo(r+xTAN_PI8*r+ySIN_PI4*r+xSIN_PI4*r+y);
            
this.curveTo(TAN_PI8*r+xr+yxr+y);
            
this.curveTo(-TAN_PI8*r+xr+y, -SIN_PI4*r+xSIN_PI4*r+y);
            
this.curveTo(-r+xTAN_PI8*r+y, -r+xy);
            
this.curveTo(-r+x, -TAN_PI8*r+y, -SIN_PI4*r+x, -SIN_PI4*r+y);
            
this.curveTo(-TAN_PI8*r+x, -r+yx, -r+y);
            
this.curveTo(TAN_PI8*r+x, -r+ySIN_PI4*r+x, -SIN_PI4*r+y);
            
this.curveTo(r+x, -TAN_PI8*r+yr+xy);
        }
        
        
//Versuchsobjekt erstellen:
        
mc this.createEmptyMovieClip("mc"1);
        
        
mc.lineStyle(00x000000); //blauen Kreis zeichnen
        
mc.beginFill(0x8080E0,100);
        
mc.drawCircle(0010);
        
mc.endFill();
        
        
//Positionieren
        
mc._x Stage.width/2;
        
mc._y Stage.height/2;

/*
    Ab hier wirds interessant!
*/

//Init
x0 mc._x;
y0 mc._y;

wf 20//Exponentialfaktor
50//max. Radius

//Animation
this.onEnterFrame = function(){
    
dx x0 this._xmouse//Abstand zur Maus
    
dy y0 this._ymouse;
    
da Math.sqrt(dx*dx+dy*dy); //Pythagoras ;)
    
if(da!=0){
        
//MC positionieren
        
var Math.pow(2, -da/wf);
        
mc._x x0 dx/da*r*w;
        
mc._y y0 dy/da*r*w;
    }

Über dx/da*r bzw. dy/da*r wird der abstand normalisiert. (der abstand ist immer r, aber der winkel ist der selbe wie der winkel von der maus...)
über ...*w wird die "Auslenkung" angepasst. diese verhält sich exponentiell (--> Math.pow) also über "r" passt du den maximalen Abstand an, über "wf" stellst du ein wie "häftig" oder apprupt die blume ausweicht. (je höher dieser wert desto weicher ist die bewegung...

Das script einfach in den ersten Frame einer blanken .fla kopieren und ausprobieren... und etwas damit rumspielen!
Ich werd auch noch ein bisschen was machen um das "dynamischer" aussehen zu lassen
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 06-11-2005, 21:20   #8 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Etwas dynamik dazu:
PHP-Code:
//Init
x0 mc._x;
y0 mc._y;
mc.tx mc._x;
mc.ty mc._y;
mc.vx mc.vy 0;


wf 20//Exponentialfaktor
30//max. Radius
kf 0.03//Federstärke
af 0.95//Luftreigungs faktor
//Animation
this.onEnterFrame = function(){
    
dx mc.tx this._xmouse//Abstand zur Maus
    
dy mc.ty this._ymouse;
    
da Math.sqrt(dx*dx+dy*dy); //Pythagoras ;)
    
if(da!=0){
        
//MC positionieren
        
var Math.pow(2, -da/wf);
        
mc.tx x0 dx/da*r*w;
        
mc.ty y0 dy/da*r*w;
    }
    
//Dynamik:
    
mc.vx += (mc.tx mc._x)*kf;
    
mc.vy += (mc.ty mc._y)*kf;
    
mc.vx *= af;
    
mc.vy *= af;
    
mc._x += mc.vx;
    
mc._y += mc.vy;

Angehängte Dateien
Dateityp: zip blume.zip (8,4 KB, 27x aufgerufen)
__________________
Some Flash Worx

Geändert von Alphanimal (06-11-2005 um 21:27 Uhr)
Alphanimal ist offline   Mit Zitat antworten
Alt 07-11-2005, 07:43   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
...
ibes ist offline   Mit Zitat antworten
Alt 07-11-2005, 07:43   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
*schluck*
ibes ist offline   Mit Zitat antworten
Alt 07-11-2005, 07:45   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
ich seh schon...
mit eurer hilfe wird das was!
ibes ist offline   Mit Zitat antworten
Alt 07-11-2005, 07:49   #12 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
@ibes: solltest vielleicht mal hier anhängen, was du schon hast, wird ja nicht jeder für dich was neu machen wollen, sondern auf deinem vorhandenen aufsetzen.
__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 07-11-2005, 08:17   #13 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 8
schon klar, schon klar... keine angst.
aber lass mir 'n bisschen zeit, ja? ich werd bestimmt meine resultate hier publizieren, wenn ich dann mal welche hab.

wie gesagt, ich muss mich erst hineinarbeiten und das dauert bei mir halt noch 'n stückchen...

...gut ding will weile haben...
...steter tropfen höhlt den stein...
...mit babyschrittchen zum erfolg...

ibes 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 11:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele