Avatar billede alexander_j Nybegynder
03. april 2002 - 16:42 Der er 7 kommentarer og
1 løsning

curveto

Hej jeg har lavet en lille kode med følgende AS:

_root.createEmptyMovieClip( "curve", 1 );
with ( _root.curve )    {
lineStyle( 1, 0x000000, 100 );
moveTo( 0, 200 );
curveTo( _root._xmouse, _root._ymouse, 550, 200 );
}

Det var min mening at kurven så skulle følge musemarkøren, men det sker ikke! Det der sker er at kurvens 'tangenter' peger mod musemarkøren!

Er der en skarp matematiker der kan skitsere hvordan jeg får kurven til at følge musemarkøren???

Vh. Alexander
Avatar billede hoejrup Nybegynder
03. april 2002 - 17:10 #1
Avatar billede hoejrup Nybegynder
03. april 2002 - 17:15 #2
Avatar billede gotcha Nybegynder
03. april 2002 - 17:49 #3
hoejrup >> Eksemplerne har jo ikke noget at gøre med curveTo

Det er pga. den måde curveTo-metoden er konstrueret på. Hvis du vil have den til at følge nogle bestemte punkter, bliver du nødt til at anvende bezier-kurver. Robert Penner har gjort dette, og du kan finde yderligere oplysninger på http://www.were-here.com/forums/showthread.php?s=0f929625f9e10e8dfa984b9bb1c3173e&threadid=124264 . Ellers kan du prøve at vedhæfte følgende til en frame:

MovieClip.prototype.curveToThru = function (px, py, ax, ay) {
    var cx = 2*px - .5*(this._xpen + ax);
    var cy = 2*py - .5*(this._ypen + ay);
    this.curveTo (cx, cy, ax, ay);
}

this.onEnterFrame = function () {
    this.clear();
    this.lineStyle(0);
    this.curveToThru(550, 200, _xmouse, _ymouse);
}

To punkter er i dette tilfælde ens hele tiden. Hvis du ikke ønsker dette, kan du altid tilføje en listener på onMouseMove og ændre de to punkter.

Mvh Morten
Avatar billede alexander_j Nybegynder
03. april 2002 - 18:25 #4
hoejrup >> Det har ikke meget med 'curveTo' at gøre ;(

gotcha >> Jeg formulerede mig nok ikke helt præcist nok! I dit eksempel er det endepunktet af en kurve der følger musen, men det jeg mente var at toppunktet skal følge musen :)
Jeg kigger lige lidt nærmere på dit link lidt senere - måske ligge løsningen der (?)

Vh. Alexander
Avatar billede gotcha Nybegynder
03. april 2002 - 22:03 #5
Så vedhæft følgende til en frame:

MovieClip.prototype.drawCurve3Pts = function (x1, y1, x2, y2, x3, y3) {
    var cx = 2*x2 - .5*(x1 + x3);
    var cy = 2*y2 - .5*(y1 + y3);
    this.moveTo (x1, y1);
    this.curveTo (cx, cy, x3, y3);
}
this.onEnterFrame = function () {
    this.clear();
    this.lineStyle(0);
    this.drawCurve3Pts (100, 100, _xmouse, _ymouse, 400, 400);
}

Du kan så ændre på (x1,y1) og (x3,y3) for at styre hhv. start - og endepunktet.

Mvh Morten
Avatar billede alexander_j Nybegynder
03. april 2002 - 23:23 #6
Perfekt - Det var lige det jeg ledte efter!

Tak, tak og 1000 tak for hjælpen ;)

Vh. Alexander
Avatar billede pixelpaw Nybegynder
04. april 2002 - 02:53 #7
istedet for onEnterFrame burde du nok bruge onMouseMove, det kræver ikke nær så meget processor kraft
Avatar billede gotcha Nybegynder
04. april 2002 - 18:20 #8
Tja, det er jo rigtigt nok. Brug følgende:

Mouse.addListener();

MovieClip.prototype.drawCurve3Pts = function (x1, y1, x2, y2, x3, y3) {
    var cx = 2*x2 - .5*(x1 + x3);
    var cy = 2*y2 - .5*(y1 + y3);
    this.moveTo (x1, y1);
    this.curveTo (cx, cy, x3, y3);
}

this.onMouseMove = function () {
    this.clear();
    this.lineStyle(0);
    this.drawCurve3Pts (100, 100, _xmouse, _ymouse, 400, 400);
}

:)
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