Avatar billede monefeldt Nybegynder
24. maj 2007 - 13:30 Der er 14 kommentarer og
1 løsning

undgå musen On Roll Over

hej, ved nogen herind i dette geniale forum, hvor man scripter følgende:

jeg har en prik, den prik må ikke røres af musen, så når musen nærmere sig flytter prikken sig der længere væk og tilbage igen ... og dette skal ske indenfor et begrænset område.

(jeg har lavet id'een med movieclips i en knap og det virker, men jeg vil hører om der findes en bedre måde at gøre dette på)
Avatar billede heeris Nybegynder
25. maj 2007 - 02:26 #1
Jeg vil forslå at du opretter en mouse listener og sætter en funktion op til at lytte på  bevægelse fra musen, det er ikke specielt ressourcekrævende. Her efter skal du fedte lidt med en eller flere if statement/s for at få din prik til at opføre sig rigtigt. Jeg forsøger at skrive noget AS der kan noget i den stil ud fra hvad du har beskrevet.

Hvis ingen andre når at svare dig inden kan vi jo tage dette som udgangspunkt. Skulle være færdigt i morgen. God Nat :)
Avatar billede heeris Nybegynder
25. maj 2007 - 11:14 #2
Sry jeg er lidt langsom, sidder også og roder med afsluttende eksamens projekt, jeg er lige på trapperne
Avatar billede monefeldt Nybegynder
25. maj 2007 - 11:52 #3
helt ok. Hvor læser du?
Avatar billede heeris Nybegynder
25. maj 2007 - 14:00 #4
Mediology på Aalborg uni i KBH, Bachelor semester :) Bliver fedt at blive DONE! Jeg er nødt til lige at høre lidt nærmere om problemet, for jeg er muligvis gået lidt i overkill mode her. Den prik, skal den bevæge sig i modsat retning af musen? skal den forsøge at komme tilbage til midten rundt om musen? Med andre ord hvordan er det helt præcist den skal opføre sig? Du skriver du har løst det på en anden måde, er det noget du kan offentliggøre?

Jeg er oppe på små 200 linjer AS nu, og det går udmærket men det driller lidt, ikke de store problem. Jeg har brugt geometri til at bestemme retningen for bevægelsen af prikken når musen nærmer sig, og en forfærdeligt masse if statements. det skal nok blive godt men jeg blev pludselig i tvivl om jeg har forstået dig korrekt. Jeg har det med at komplicere tingende lidt nogle gange :P
Avatar billede monefeldt Nybegynder
25. maj 2007 - 14:33 #5
ok.
Musen er et bestemt sted som udgangspunkt, det er også det punkt den fører tilbage til. Prikken OPTRÆDER som en "knap" eller noget man (brugeren) gerne vil undersøge. Idéen er så at når brugere vil undersøge denne prik, og musen nærmer sig, så flytter prikken sig (en rigtig drillepind :-)) Det gør at brugeren tænker, det var da godt nok underligt ... På scene er det en person, figur, som man skal trykke på- og han er den eneste som kan trykke på den knap. Min plan er at styrer brugeren så meget så mulig igennem sitet.
Det jeg lavede var at en animation, hvori prikken flytter sig, når musen ramme en hidden knap, og når den ruller ud igen så kører den tilbage til sit udgangspunkt. Meget simpelt. Det som jeg gerne ville have var at prikken flytter, måske, 50 pixels væk fra musen uanset hvorfra (oppe, nede, venstre eller hjøre) at musen "angriber" fra...
Håber det gir mening.
Avatar billede heeris Nybegynder
25. maj 2007 - 14:43 #6
Tak det gav meget mere mening, jeg kan trappe lidt ned på funktionaliteten så, vender tilbage snart. Håber ikke det er for irreterende, sidder lige og skrive rapport *SIGH*
Avatar billede monefeldt Nybegynder
25. maj 2007 - 14:47 #7
ok - det er bare super fedt at du har mod på at hjælpe. Det er vildt fedt.
Avatar billede heeris Nybegynder
26. maj 2007 - 14:45 #8
Ok jeg har lavet et eksempel. Se det på: http://www.densorteantilope.dk/heeris/eksperten/779952/Prik_der_flytter_sig_low_level_solution.html
Du kan downloade fla filen fra siden.
Jeg håber det var noget i den retning du søgte. Denne løsning gør brug af en Listener og  er designet til at kunne modificeres fra koden til at passe til hvad d nu skal bruge det til. det er muligt at bruge noget hit test i stedet, og der er sikker mange andre måder man kunne gøre det på, men dette var den jeg lige syntes var fedest.
Jeg gør opmærksom på at jeg bruger "det gamle" action script 2.0, jeg er ikke nok inde i 3.0. Håber ikke det giver komplikationer.

For god ordens skyld poster jeg lige koden og en opskrift på hvordan fla'en er bygget:

1. Opret et objekt på scenen, ca 20pixles i diameter
2. Konverter dette objekt til et symbol og giv det instancenavnet "prik"
3. paste følgende kode i første frame (der er kun en frame i denne film)

Koden:

/*
Denne kode gør brug af Pytagores' læresætning for at beregne afstanden mellem to koordinater
f.eks. P1(x1,y1) og P2(x2,y2). Beregningen formuleres som:
afstand^2 = (x2-x1)^2 + (y2-y1)^2, hvor forskellen mellem x'erne og y'erne betegnes som delta.
*/

/*
ATRIBUTTER.
*/

// Denne LoadVars indeholder parametre der vil beskrive et område omkring prik objektet.
var aura = new LoadVars();
// Her bestemmes den afstand auraen skal have omkring prikken
aura.Distance = 25;

// Disse to variabler beskriver det punkt hvor til prikken skal holde sig.
var centerX:Number = 200;
var centerY:Number = 200;

// Disse to variabler vil indeholde forskellen på x og y værdierne mellem musen og centeret.
var deltaX:Number = undefined;
var deltaY:Number = undefined;

// Denne variable vil indeholde afstanden mellem musen og centeret. Den hedder SQ til sidst
// fordi kvadratroden ikke beregnes (Se næste comment).
var distanceSQ:Number = undefined;

// Den tilladte afstand mellem musen og centeret bestemmes her. Den er sat i anden pga.
// pytagores der siger c^2 = a^2 + b^2. For at undgå at beregne kvadratroden holdes
// værdierne på begge sider af lighedsteget kvadreret. En sammenligning er stadig mulig.
var thresholdSQ:Number = Math.pow( 50, 2 );

// Her placeres prikken i centrum. Prikken er forankret i sit øverste venstre hjørne og derfor
// kompenseres der for at få prikkens centrum til at ligge lige over centreret.
prik._x = centerX - prik._width / 2;
prik._y = centerY - prik._height / 2;

/*
MOUSE LISTENER OG TILHØRENDE FUNCTIONER.
*/

// Opret nyt object til at lytte med.
var mouseObj = new Object();

// Tilføj din nye listener til det indbyggede Mouse object.
Mouse.addListener(mouseObj);

// Tilføj function der kaldes når musen bevæger sig.
mouseObj.onMouseMove = function()
{
    // Beregn forskellen i x or y værdierne mellem musen of centeret.
    deltaX = _xmouse - centerX;
    deltaY = _ymouse - centerY;
   
    // Afstanden beregenes som Pytagores forskriver.
    distanceSQ = Math.pow( deltaX, 2 ) + Math.pow( deltaY, 2 );
   
    // Hvis musen er uden for den tilladte afstand skal prikken placeres i centeret.
    if ( distanceSQ > thresholdSQ )
    {
        // Prikken flyttes til centeret
        prik._x = centerX - prik._width / 2;
        prik._y = centerY - prik._height / 2;
    }
    // Hvis musen er inde for den tilladte afstand skal prikken flytte sig væk fra musen.
    else
    {
        // Her beregenes og sætts auraen. Den beskrives som en boks med top, bund, vensre og højre.
        aura.Top = prik._y - aura.Distance;
        aura.Bottom = prik._y + prik._height + aura.Distance;
        aura.Left = prik._x - aura.Distance;
        aura.Right = prik._x + prik._width + aura.Distance;
       
        // Undersøg om musen er lige over eller lige under prikken.
        if ( _xmouse > aura.Left && _xmouse < aura.Right )
        {
            // Undersøg om musen berører øverste del af auraen.
            if ( _ymouse > aura.Top && _ymouse < prik._y )
            {
                // Translater prikken i modsat retning.
                prik._y = prik._y + prik._height;
            }
            // Undersøg om musen berører nederste del af auraen.
            else if ( _ymouse < aura.Bottom && _ymouse > prik._y + prik._height )
            {
                // Translater prikken i modsat retning.
                prik._y = prik._y - prik._height;
            }
        }
       
        // Undersøg om musen er på vensre eller højre side at prikken.
        if ( _ymouse > aura.Top && _ymouse < aura.Bottom )
        {
            // Undersøg om musen berører venstre del af auraen.
            if ( _xmouse > aura.Left && _xmouse < prik._x )
            {
                // Translater prikken i modsat retning.
                prik._x = prik._x + prik._width;
            }
            // Undersøg om musen berører højre del af auraen.
            else if ( _xmouse < aura.Right && _xmouse > prik._x + prik._width )
            {
                // Translater prikken i modsat retning.
                prik._x = prik._x - prik._width;
            }
        }
    }
};
Avatar billede monefeldt Nybegynder
26. maj 2007 - 15:37 #9
PRÆCIS ... du er simpelthen guldværd... 1000 tak er ikke nok, det er lige hvad jeg forestillede mig...
Avatar billede heeris Nybegynder
26. maj 2007 - 22:34 #10
Det glæder mig, jeg smider ydmygt et svar. Jeg abonnere på tråden hvis du har nogle tilstødende spørgsmål. God fornøjelse med projektet :)
Avatar billede heeris Nybegynder
04. juni 2007 - 00:39 #11
hallo??
Avatar billede monefeldt Nybegynder
04. juni 2007 - 09:13 #12
hey ... jeg har været fraværende ... men du kan se din fantastiske hjælp på følgende link: www.monefeldt.org
siden er ikke færdig endnu ...

Hvis du har gode forslag så sig endlig til.

Jeg overvejer at lave portfolio som små post-it sedler der popper op over hele siden. så det er vel noget loadmovie kodning
Avatar billede heeris Nybegynder
04. juni 2007 - 15:21 #13
Hehe det er en fed idé du har fået dig der.

NB! har du flere spørgsmål bør du oprette en ny tråd, denne her må betragtes som lukket.

Held og lykke med projektet.

PS. Go' idé med de post-its ;)
Avatar billede monefeldt Nybegynder
05. juni 2007 - 10:55 #14
Hej - jeg har brug hjælp. Jeg vil lave mit portfolio materiale som små post-it's der bouncer op når man klikker på dem. Har fundet en tutorial som virker lige efter det hef gerne vil have dem til. Men tidsliniens action er følgende script. Mit problem er at scriptet centrere billedet, men jeg vil gerne selv kunne bestemme hvor jeg vil have mit billede. Kan du gennemskue dette?


// Set initial variables
stageWidth=1000; // Can also use the Stage.width property
stageHeight=600; // Can also use the Stage.height property
wmodifier = 50; // her bestemmes, hvor stort billedet skal være
hmodifier = 50; // i udgangspunkt
/* .7 for decent9bounce effect */
bouncefactor = .7;
/* 6 for nice speed */
speedfactor = 9;
expand = function (id) {
    // colorSquare width
    this.destwidth = wmodifier;
    this.poswidth = id._width;
    this.velwidth = this.velwidth*bouncefactor+(this.destwidth-this.poswidth)/speedfactor;
    id._width += Math.round(this.velwidth);
    // colorSquare height
    this.destheight = hmodifier;
    this.posheight = id._height;
    this.velheight = this.velheight*bouncefactor+(this.destheight-this.posheight)/speedfactor;
    id._height += Math.round(this.velheight);
    // colorSquare x
    this.destx = (stageWidth-wmodifier)/2;
    this.posx = id._x;
    this.velx = this.velx*bouncefactor+(this.destx-this.posx)/speedfactor;
    id._x += Math.round(this.velx);
    // colorSquare y
    this.desty = (stageHeight-hmodifier)/2;
    this.posy = id._y;
    this.vely = this.vely*bouncefactor+(this.desty-this.posy)/speedfactor;
    id._y += Math.round(this.vely);
    // shadow properties
    shadow._width = (colorSquare._width+20);
    shadow._x = (colorSquare._x-10);
    shadow._height = (colorSquare._height+20);
    shadow._y = (colorSquare._y-10);
};
colorSquare.onEnterFrame = function() {
    expand(this);
};
Avatar billede heeris Nybegynder
05. juni 2007 - 11:03 #15
Hej igen,

Jeg vil super gerne hjælpe dig, men du er nødt til at oprette en ny tråd. Dit nye spørgsmål stemmer ikke overens med denne tråds overskrift, desuden er tråden lukket. Det skal være muligt for andre brugere at finde svaret på dette spørgsmål hvis de sidder med samme problem.

Jeg skal nok holde øje med nye tråde, held og lykke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester