Avatar billede 4b4 Nybegynder
23. juli 2004 - 17:30 Der er 8 kommentarer og
2 løsninger

Blød movement

Jeg har lavet et lille movement script .. som virker perfekt.. eneste bug er at med det samme med slipper diverse movieclips, stopper den flydende bevægelse helt, og ikke der hvor man har sluppet det.

Her er min lille kode:

function followMouse(mc,physics0,physics1){
        mc.onMouseDown = function(){
                if(this.hitTest(_root._xmouse,_root._ymouse,true)){
                        _root.topdepth = _root.topdepth + 1;
                        mc.swapDepths(_root.topdepth);
                        // trace("Clicked a box!");
                        // trace ("New topdepth depth is now " + _root.topDepth);
                        // trace("MC depth is "+mc.getDepth());
                        mc.onEnterFrame = function(){
                                if(mc.getDepth()==_root.topDepth){
                                        xspeed = ((_root._xmouse-mc._x)*physics0)+(xspeed*physics1);
                                        yspeed = ((_root._ymouse-mc._y)*physics0)+(yspeed*physics1);
                                        mc._x += xspeed;
                                        mc._y += yspeed;
                                }
                        }
                }
        }
        mc.onMouseUp = function (){
                delete mc.onEnterFrame;
        }
}

followMouse(clip0,0.15,0.4);
followMouse(clip1,0.15,0.4);
...
Avatar billede 4b4 Nybegynder
23. juli 2004 - 17:30 #1
jeg har lavet = en ven har lavet, og så har jeg bygget videre på..
Avatar billede barklund Nybegynder
24. juli 2004 - 01:28 #2
Fjern din mc.onMouseUp - soim netop fortæller, at din onEnterFrame skal slettes. Jeg ved ikke hvorfor den er der, men den har ikke andet formål, end at stoppe bevægelsen!

(altså linjerne:
        mc.onMouseUp = function (){
                delete mc.onEnterFrame;
        }
skal slettes)

--
Morten Barklund
Avatar billede 4b4 Nybegynder
24. juli 2004 - 17:03 #3
Hvis de slettes så bliver movieclippet ved med at være sticked til mousen
Avatar billede barklund Nybegynder
24. juli 2004 - 20:50 #4
function followMouse(mc,physics0,physics1){
        mc.onPress = function(){
                if(this.hitTest(_root._xmouse,_root._ymouse,true)){
                        mc.pressed = true;
                        _root.topdepth = _root.topdepth + 1;
                        mc.swapDepths(_root.topdepth);
                        // trace("Clicked a box!");
                        // trace ("New topdepth depth is now " + _root.topDepth);
                        // trace("MC depth is "+mc.getDepth());
                        mc.onEnterFrame = function(){
                                if(mc.getDepth()==_root.topDepth){
                                        xspeed = ((_root._xmouse-mc._x)*physics0)+(xspeed*physics1);
                                        yspeed = ((_root._ymouse-mc._y)*physics0)+(yspeed*physics1);
                                        mc._x += xspeed;
                                        mc._y += yspeed;
                                }
                        }
                }
        }
        mc.onMouseUp = function (){
              if (!mc.pressed) return;
              var x = _xmmouse, y = _ymouse;
              mc.onEnterFrame = function(){
                    xspeed = ((x-mc._x)*physics0)+(xspeed*physics1);
                    yspeed = ((y-mc._y)*physics0)+(yspeed*physics1);
                    mc._x += xspeed;
                    mc._y += yspeed;
                    if (Math.max(xspeed, yspeed) < 0.2) {
                        mc.pressed = false;
                        mc._y = x;
                        mc._y = y;
                        delete mc.onEnterFrame;
                    }
              }
        }
}

Noget i den stil ;)

--
Morten Barklund
Avatar billede barklund Nybegynder
24. juli 2004 - 20:54 #5
Eller lidt modificeret og nu rent faktisk også testet ;)

function followMouse(mc,physics0,physics1){
        mc.onPress = function(){
                if(this.hitTest(_root._xmouse,_root._ymouse,true)){
                        mc.pressed = true;
                        _root.topdepth = _root.topdepth + 1;
                        mc.swapDepths(_root.topdepth);
                        mc.onEnterFrame = function(){
                                if(mc.getDepth()==_root.topDepth){
                                        xspeed = ((_root._xmouse-mc._x)*physics0)+(xspeed*physics1);
                                        yspeed = ((_root._ymouse-mc._y)*physics0)+(yspeed*physics1);
                                        mc._x += xspeed;
                                        mc._y += yspeed;
                                }
                        }
                }
        }
        mc.onMouseUp = function (){
              if (!mc.pressed) return;
              var x = _xmouse, y = _ymouse;
              mc.onEnterFrame = function(){
                    xspeed = ((x-mc._x)*physics0)+(xspeed*physics1);
                    yspeed = ((y-mc._y)*physics0)+(yspeed*physics1);
                    mc._x += xspeed;
                    mc._y += yspeed;
                    if (Math.max(Math.max(Math.abs(x-mc._x),Math.abs(y-mc._y)),Math.max(Math.abs(xspeed), Math.abs(yspeed))) < 0.2) {
                        mc.pressed = false;
                        mc._y = x;
                        mc._y = y;
                        delete mc.onEnterFrame;
                    }
              }
        }
}
followMouse(clip1,0.2,0.8)

--
Morten Barklund
Avatar billede 4b4 Nybegynder
25. juli 2004 - 14:51 #6
morten: den ser nu lidt sjov ud.. prøv at lave flere objecter .. el. se her: www.4b4.dk/flash.fla .. bevæger man en.. og trækker så i en anden, følger alle sammen med.. og ikke bare den man hiver i ..
Avatar billede barklund Nybegynder
25. juli 2004 - 16:22 #7
Okay okay, nu endnu mere testet :)

function followMouse(mc, physics0, physics1) {
    mc.onPress = function() {
        if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
            mc.pressed = true;
            mc.swapDepths(++_root.topdepth);
            mc.onEnterFrame = function() {
                if (this.getDepth() == _root.topDepth) {
                    this.xspeed = ((_root._xmouse - this._x) * physics0) + (this.xspeed * physics1);
                    this.yspeed = ((_root._ymouse - this._y) * physics0) + (this.yspeed * physics1);
                    this._x += this.xspeed;
                    this._y += this.yspeed;
                }
            };
        }
    };
    mc.onMouseUp = function() {
        if (!mc.pressed) {
            return;
        }
        mc.pressed = false;
        mc.x = _xmouse;
        mc.y = _ymouse;
        mc.onEnterFrame = function() {
            this.xspeed = ((this.x - this._x) * physics0) + (this.xspeed * physics1);
            this.yspeed = ((this.y - this._y) * physics0) + (this.yspeed * physics1);
            this._x += this.xspeed;
            this._y += this.yspeed;
            if (Math.max(Math.max(Math.abs(this.x - this._x), Math.abs(this.y - this._y)), Math.max(Math.abs(this.xspeed), Math.abs(this.yspeed))) < 0.2) {
                this._y = this.x;
                this._y = this.y;
                delete this.onEnterFrame;
            }
        };
    };
}
followMouse(clip1, 0.2, 0.8);
followMouse(clip2, 0.2, 0.8);

--
Morten Barklund
Avatar billede barklund Nybegynder
25. juli 2004 - 16:33 #8
Aij, nu blev det et svar - håber det er ok anyways, men det var nu ikke meningen :)
Avatar billede 4b4 Nybegynder
26. juli 2004 - 00:11 #9
Det er så iorden. godt arbejde :)
Avatar billede barklund Nybegynder
26. juli 2004 - 10:08 #10
Jo tak :)
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