Avatar billede para7 Nybegynder
31. marts 2003 - 17:44 Der er 10 kommentarer og
2 løsninger

Easing på cursor

Jeg har en zoomnavigation (kan ses på avcnet.dk, forsiden) med en lup, der erstatter cursoren i et script. Særligt når man har startet filmen og fokuserer på den fra det øvige webindhold forstyrrer det lidt freden, luppen *springer* hen på der, hvor man placerer musen. Kan man ikke få den til at stille og roligt flyve hen på musepositionen? Mit script ligger på lup-movien og det hele kører i eet frame:

onClipEvent (load) {
    xsc = 50;
    ysc = 43;
    factor = 20;
    easing = 22;
    zoom = 1;
    _root.map.easing = easing;
    function scalmap(sc) {
        if (zoom) {
            _root.map.xp = -_root._xmouse*(sc-1);
            _root.map.yp = -_root._ymouse*(sc-1);
            zoom = 0;
        } else {
            _root.map.xp = 0;
            _root.map.yp = 0;
            zoom = 1;
        }
        _root.map.xsc = sc*100;
        _root.map.ysc = sc*100;
    }
    function scalthis(factor) {
        xsc = factor*50;
        ysc = factor*43;
    }
    function rx() {
        return _root._xmouse;
    }
    function ry() {
        return _root._ymouse;
    }
    function autoscala(e) {
        _xscale = _xscale+((xsc-_xscale)/e);
        _yscale = _yscale+((ysc-_yscale)/e);
    }
}
onClipEvent (mouseMove) {
    _x = _root._xmouse;
    _y = _root._ymouse;
    if (zoom) {
        _root.map.xp = -_root._xmouse*((_root.map.xsc-100)/(100*1));
        _root.map.yp = -_root._ymouse*((_root.map.ysc-100)/(100*1));
    }
    updateAfterEvent();
}
onClipEvent (mouseUp) {
        if (factor == 20) {
            scalmap(factor);
            scalthis(factor);
            factor = 1;
            _root.zoomet = 1;
        }
}
onClipEvent (enterFrame) {
    if (factor == 1 && Key.isDown(27)) {  // ESC - tasten: nr.27   
        scalmap(factor);
        scalthis(factor);
        factor = 20;
        _root.zoomet = 0;
    }
    autoscala(3);
}
Avatar billede mat Nybegynder
31. marts 2003 - 17:51 #1
easing til mus-position:

onClipEvent (enterFrame) {
    this._x += (_root._xmouse - this._x)/4;
    this._y += (_root._ymouse - this._y)/4;
}
Avatar billede para7 Nybegynder
31. marts 2003 - 22:39 #2
Tak til mat.
Det er jo alle pointenne værd, så opret lige et svar. Hvordan den form for matematik kan skabe en deacceleration kan jeg ikke forstå, men det virker jo perfekt. Kan man mon få det til at virke også hvis man ruller væk fra flashruden og ind igen?
Avatar billede mat Nybegynder
31. marts 2003 - 22:50 #3
Det var så lidt :)

"Kan man mon få det til at virke også hvis man ruller væk fra flashruden og ind igen?" - Jeg tror ikke helt at jeg forstår hvad du mener her?

mvh mat
Avatar billede mat Nybegynder
31. marts 2003 - 22:51 #4
120 point er osse lidt meget for et relativt nemt spørgsmål - bare giv mig 30 og tag resten selv :)
Avatar billede para7 Nybegynder
01. april 2003 - 09:40 #5
OK. Lille kode stor virkning. 30 for start-musse-easing og 30 in advance for at forsøge at få musseeasing på, når klippet kører: D.v.s. Jeg zoomer lidt rundt i Danmark i flashruden og så kommer jeg til at rulle væk fra flashruden. Når jeg så ruller ind igen *springer* luppen hen på cursoren og forstyrrer freden på siden.
Avatar billede mat Nybegynder
01. april 2003 - 11:49 #6
Du mener at cursoren forlader swf-filen helt for så senere at komme ind over denne igen?

Det vil altid være et problem - du kan omgå det ved at have en stor usynlig knap i baggrunden som styrer actions alt efter om den er blevet rollOver´et eller rollOut´et - den skal så selvfølgelig være lidt mindre en selve flashfilmen, for at kunne registrere rollOut.
Der vil dog stadig kunne opstå problemer hvis musen bliver bevæget hurtigt nok - jeg mener ikke at jeg er stødt på en universal løsning på dette problem med musen over/ikke over flashfilmen - men det kan være der er andre der har?

mvh mat
Avatar billede para7 Nybegynder
02. april 2003 - 09:50 #7
Mat >
Godt. Kan du så sige mig, hvordan jeg tester om musen er over områdeknappen. Jeg kunne forestille mig noget som:
if (mouse over omraadeKnap) {
  her kommer hele lup-movie-scriptet
}
Avatar billede para7 Nybegynder
02. april 2003 - 18:02 #8
Lige et ønske til en forbedring. Her er enterframe afdelingen med easingen på cursoren. Kan man ikke flette ind, at det skal ske on mouseMove, det ville være bedst:
onClipEvent (enterFrame) {
    this._x += (_root._xmouse - this._x)/4;
    this._y += (_root._ymouse - this._y)/4;
    if (factor == 1 && Key.isDown(27)) {    
        scalmap(factor);
        scalthis(factor);
        factor = 20;
        _root.zoomet = 0;
    }
    autoscala(3);
}
Avatar billede mat Nybegynder
02. april 2003 - 18:19 #9
onClipEvent (mouseMove) {
    this._x += (_root._xmouse - this._x)/4;
    this._y += (_root._ymouse - this._y)/4;
....yada yada yada

Men jeg vil næppe betegne det som en forbedring :)
Avatar billede para7 Nybegynder
02. april 2003 - 22:24 #10
Neeej. For der kommer slet ingen easing mere. Kan det ikke lade sig gøre, så lever vi med det. Hvordan indbygger vi "mus over områdeknap"?
Avatar billede mat Nybegynder
02. april 2003 - 23:06 #11
Ok, hvis du laver den der store usynlige knap i baggrunden.

Derefter tilføjer du i din (load) på movieclippet en linie der lyder:

doSo = 0;

Derefter pakker du alle de actions der kun må udføres når knappen har aktiveret en rollOver ind i en if sætning:

if (doSo) {
//kode kode kode
}

På den usynlige knap ligger du så følgende actions:

on (rollOver) {
_root.clip.doSo = 1;
}
on (rollOut) {
_root.clip.doSo = 0;
}

movieclippet skal så have instancenavn "clip".

Noget i den stil burde virke.

mvh mat
Avatar billede para7 Nybegynder
03. april 2003 - 10:47 #12
Det er higher learning. Jeg prøver.
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