Toon posts:

[Flash/AS] mc bewegen onder bepaalde hoek

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende:
code:
1
2
3
4
5
onClipEvent (mouseUp) {
    newx = Math.round(_x-Math.cos(angle)*500);
    newy = Math.round(_y-Math.sin(angle)*500);
    pos = [newx, newy, _root.mball._x, _root.mball._y];
}
Dit zou de nieuwe positie moeten zetten in newx en newy (_x en _y zijn mc positie op document en angle is de hoek die al berekend is) alleen wat hij nou doet is niet helemaal goed, hij gaat niet echt de goeie kant op, wel een beetje maar klopt dus niet.

Het zit in het berekenen van die positie want als ik de newx en newy op bv de positie van de muis zet als ik klik dan werkt het wel, alleen stopt ie dus waar ik geklikt heb|:( maar hij moet gewoon doorgaan tot bv hiero 500px

Ik had al in [Wisk] berekenen van positie dmv hoek en lengte schuine kant gevraagd hoe ik de goeie positie moest berekenen maar het lukt dus niet goed.

Moet ik soms ipv "_x - ..." + gebruiken of hoe zit dat?

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 25-03 10:55

XangadiX

trepanatie is zóó kinderachtig

_x moet wel ergens op slaan, (het is immers een property van iets) dus je moet bijvoorbeeld this._x of myMovieClip._x nemen; of, omdat je het toch in een array duwt een variable met 'oldX' oid maken :)

Stoer; Marduq


Verwijderd

Topicstarter
_x en _y zijn toch gewoon de positie in px van de mc waar het instaat of ben ik nou gek :?
Het zit gewoon in een on clip event op de bal wat altijd het midden punt is.

[ Voor 31% gewijzigd door Verwijderd op 10-06-2005 12:42 . Reden: Extra zinnetje ]


  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 25-03 10:55

XangadiX

trepanatie is zóó kinderachtig

_x en _y kun je niet onafhankelijk gebruiken, dan is het altijd this._x en this._y

Stoer; Marduq


Verwijderd

Topicstarter
Het word er niet anders op met this._x en this._y
voor de leetars hebk alles hiero misschien dat dat helpt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
onClipEvent (load) {
    m = false;
    f = 0;
    speed = 0;
    pos = [400, 300, 400, 300];
    _root.mball._x = pos[2];
    _root.mball._y = pos[3];
    Mouse.hide();
}
onClipEvent (enterFrame) {
    _root.aa = speed;
    if (speed>0.25) {
        _root.marrow._visible = false;
    } else {
        _root.marrow._visible = true;
        speed = 0;
    }
    if (speed>0) {
        speed *= 0.955;
        _root.speed = speed;
        x = Math.abs(pos[2]-pos[0]);
        y = Math.abs(pos[3]-pos[1]);
        if (x>y) {
            xspeed = speed;
            yspeed = speed*(y/x);
        } else {
            yspeed = speed;
            xspeed = speed*(x/y);
        }
        with (_root.mball) {
            if (_x>(pos[0]+2.5) || _x<(pos[0]-2.5) || _y>(pos[1]+2.5) || _y<(pos[1]-2.5)) {
                if (_x>pos[0]) {
                    _x -=xspeed;
                } else {
                    _x += xspeed;
                }
                if (_y>pos[1]) {
                    _y -=yspeed;
                } else {
                    _y +=yspeed;
                }
            }
        }
    }
    with (_root.mspeedi) {
        if (m == "p") {
            nextFrame();
            if (_currentframe == "50") {
                m = "m";
            }
        } else if (m == "m") {
            prevFrame();
            if (_currentframe == "1") {
                m = "p";
            }
        }
    }
    with (_root.mmouse) {
        _x = _root._xmouse;
        _y = _root._ymouse;
    }
}
onClipEvent (mouseMove) {
    x = this._xmouse;
    y = this._ymouse*-1;
    angle = Math.atan(y/x)/(Math.PI/180);
    if (x<0) {
        angle += 180;
    }
    if (x>=0 && y<0) {
        angle += 360;
    }
    _root.marrow._rotation = angle*-1;
}
onClipEvent (mouseDown) {
    m = "p";
}
onClipEvent (mouseUp) {
    newx = Math.round(_root.mball._x-Math.cos(angle)*500);
    newy = Math.round(_root.mball._y-Math.sin(angle)*500);
    m = "";
    with (_root.mspeedi) {
        speed = _currentframe;
        gotoAndStop(1);
    }
    speed /= 4;
    pos = [newx, newy, _root.mball._x, _root.mball._y];
}

[ Voor 13% gewijzigd door Verwijderd op 14-06-2005 19:13 . Reden: Code update (werkt nogsteeds niet) ]


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Waar heb je die code staan?

als je de code toewijst aan het object dat moet bewegen dan is het this._x anders is het _root.jeInstanceDatMoetBewegen._x

_x opzichzelf stelt nikst voor.

Als je wilt weten wat iets doet of wat een variable is, gebruik dan bijv:

code:
1
trace(this._x);


zo kom je vanzelf er achter waar het misgaat en welke waarde er word toegewezen.

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 25-03 10:55

XangadiX

trepanatie is zóó kinderachtig

^^ met stom;

in jouw geval dus _root.mball._x

Stoer; Marduq


Verwijderd

Topicstarter
zirus schreef op zaterdag 11 juni 2005 @ 22:16:
Waar heb je die code staan?

als je de code toewijst aan het object dat moet bewegen dan is het this._x anders is het _root.jeInstanceDatMoetBewegen._x

_x opzichzelf stelt nikst voor.

Als je wilt weten wat iets doet of wat een variable is, gebruik dan bijv:

code:
1
trace(this._x);


zo kom je vanzelf er achter waar het misgaat en welke waarde er word toegewezen.
Dat stuk code zit op de bal, die dus beweegt. Dus dan zou dat goed moeten zijn of niet, want er klopt iets niet...:?

Verwijderd

Topicstarter
Ok ik hoorde net van iemand dat ik ipv graden radians moest gebruiken.
code:
1
2
3
x = _root._xmouse;
y = _root._ymouse*-1;
angle = Math.atan(y/x);
Alleen nu doet hij het nogsteeds niet goed, zit dat nu anders met math.cos/sin of kan je dat gewoon gebruiken?
code:
1
2
newx = this._x-(Math.sin(angle)*500);
newy = this._y-(Math.cos(angle)*500);

Verwijderd

Topicstarter
Ok ik heb em, beetje simpele oplossing gewoon anders gedaan maar het werkt wel goed
code:
1
2
3
4
onClipEvent (MouseUp) {
    newx = (_root._xmouse-_root.mball._x)*500;
    newy = (_root._ymouse-_root.mball._y)*500;
}
Pagina: 1