Avatar billede Six Nybegynder
24. maj 2005 - 11:36 Der er 35 kommentarer og
1 løsning

Matematik spm. til flash.

Hej eksperter.

Jeg er ikke just skarp til matematik. Men står og skal bruge en formel til at flytte et movieklip.

Jeg har disse oplysninger


_xmouse = mvc._x (forstås: Når _xmouse er XX skal mvc._x være XX.mvc)

0 = -950
275 = -475
550 = 0

Jeg håber virkelig på noget hjælp da jeg er matematisk tungnem ;D

PS: Håber jeg har gjort det klart hvad jeg vil, ellers spørg.
Avatar billede kragekjaer Praktikant
24. maj 2005 - 11:43 #1
Lav det med en setInterval:

_root.mvc._x=_root._xmouse;
Avatar billede docks Nybegynder
24. maj 2005 - 11:43 #2
ikke forstået -.-
Avatar billede Six Nybegynder
24. maj 2005 - 11:48 #3
hmm - skal måske også nævnes at jeg er ny i flash ;D

Det er vel procentregning vi skal ud i ? ;D
Avatar billede barklund Nybegynder
24. maj 2005 - 11:49 #4
Jeg forstår overhovedet ikke, hvad du ønsker skal ske. Hvad betyder de tre nederste tal-relationer? Er det relationer mellem hvor musen er og hvor movieclippet skal være?
Avatar billede Six Nybegynder
24. maj 2005 - 11:50 #5
jeg prøver at forklare helt præcist

Jeg skal lave et skydespil - til det formål har jeg lavet en by som er 1500px bred Jeg vil så have byen til at bevæge sig i den modsatte retning af musen, så man får følelsen af at man "scroller" i byen.

Det vil sige, er musen på x-aksen 275 - så skal byen på x-aksen være -475

og igen Mus x-akse 550 - by x-akse = 0


Bedre ?
Avatar billede pyroman Nybegynder
24. maj 2005 - 11:55 #6
Dette burde virke så:

function onEnterFrame(){
  if(_xmouse >= 0 && _xmouse <= 550){
    mvc._x = 950*_xmouse/550 - 950;
  }
}
Avatar billede barklund Nybegynder
24. maj 2005 - 11:55 #7
Ah, og skal den snappe frem og tilbage, eller flyde lidt efter musen?

En version med snap:

function onMouseMove() {
    by._x = _xmouse/550 * -950;
    updateAfterEvent();
}

Prop den ind i en frame, hvor din by ligger som et movieclip med instance-navn by, og se hvad der sker! :)

--
Morten Barklund
Avatar billede barklund Nybegynder
24. maj 2005 - 11:56 #8
Oh ja, omvendt :)

function onMouseMove() {
    by._x = (550-_xmouse)/550 * -950;
    updateAfterEvent();
}
Avatar billede Six Nybegynder
24. maj 2005 - 11:56 #9
det jeg savner er formlen der kan give disse resultater
Avatar billede Six Nybegynder
24. maj 2005 - 11:57 #10
Undskyld fik ikke opdateret min browser ordenligt så havde ikke set jeres forslag
jeg tester lige. :D
Avatar billede Six Nybegynder
24. maj 2005 - 12:04 #11
Det skal ikke være mouseover - det skal være on enterframe :D
Avatar billede barklund Nybegynder
24. maj 2005 - 12:57 #12
mouseover? Der står onMouseMove - altså hver gang musen bevæger sig :)
Avatar billede Six Nybegynder
24. maj 2005 - 13:10 #13
Pyroman og barklund - hvis i smider svar vil jeg tildele jer point. - Jeg har følgende løsning og det fungerer præcist som jeg har beskrevet jeg vil have det. Tak fordi i forstod mig ;D

Jeg var ved at blive presset :D

function onMouseMove() {
    if (_xmouse>=0 && _xmouse<=550) {
        by._x = _xmouse/550*-950;
        updateAfterEvent();
    }
}
Avatar billede Six Nybegynder
24. maj 2005 - 13:12 #14
barklund ja undskyld - jeg har været lidt stresset over det hele og fik ikke nærlæst jeres indlæg ordenligt før jeg fik det til at virke - det skulle bare virke her og nu hehe. Til tider er man lige en tand for hurtig.

Jeg takker mange gange for jeres hjælp, det var helt perfekt :D
Avatar billede barklund Nybegynder
24. maj 2005 - 13:36 #15
Finfin, ingen problemer :)
Avatar billede Six Nybegynder
24. maj 2005 - 13:39 #16
er nu stødt ind i yderligere et problem. Jeg har en baggrund til my by - som skal køre "langsomere" en byen lad os kalde dem by og bybg.

jeg skal have den til at køre så de kører forskudt af hinanden hvis i forstår, sådan så baggrunden holder sig nærmere midten af skærmen end by gør. jeg har prøvet følgende uden held

        if (_root._xmouse<=xcenter) {
            by2._x = (_xmouse/550*-900);
        } else {
            by2._x = (_xmouse/550*-1000);
        }
Avatar billede Six Nybegynder
24. maj 2005 - 13:40 #17
Altså hele scriptet ser nu ud som følger:

function onMouseMove() {
    xcenter = 275;
    if (_xmouse>=0 && _xmouse<=550) {
        by._x = _xmouse/550*-950;
        if (_root._xmouse<=xcenter) {
            by2._x = (_xmouse/550*-900);
        } else {
            by2._x = (_xmouse/550*-1000);
        }
        updateAfterEvent();
    }
}
Avatar billede barklund Nybegynder
24. maj 2005 - 13:46 #18
Det er vel bare:

function onMouseMove() {
    if (_xmouse>=0 && _xmouse<=550) {
        by._x = _xmouse/550*-950;
        by2._x = _xmouse/550*-200; // bevæger sig fra -200 - 0
        updateAfterEvent();
    }
}
Avatar billede Six Nybegynder
24. maj 2005 - 14:51 #19
nej :D desværre.

Her bliver by2._x så lig med by._x når _xmouse er 0 (i dit eksempel) - det der skal ske er at by2 skal bevæge sige mindre til begge sider af centrum af scenen. svært at forklare.

jeg kan ilustrere med www.fjappe.dk/xtest.sfw - kig her på den grønne bold i forhold til den blå. den blå er by den grønne er by2.

Det er den effect jeg gerne vil have ;D
Avatar billede Six Nybegynder
24. maj 2005 - 14:52 #20
www.fjappe.dk/xtest.swf <- selvfølgelig ;D
Avatar billede barklund Nybegynder
24. maj 2005 - 15:21 #21
Så start med at rykke grafikken inden i by2 ind på midten - 100 pixels før centrum.
Avatar billede Six Nybegynder
24. maj 2005 - 15:48 #22
det forstår jeg ikke - skal jeg sætte registreringspunktet til at være i centrum og så rykke grafikken ind så der fra grafikkens kant er 100 px ind til reg. punktet ?
Avatar billede barklund Nybegynder
24. maj 2005 - 16:18 #23
Altså, hvis du inden i movieclippet flytter grafikken 200 pixels til højre, så vil den bevæge sig fra 0 til 200 pixels, flytter du den 500 pixels til højre, så vil den bevæge sig fra 300 til 500 pixels - det er da ligetil?

Men dit eksempel ovenover ser da ganske rigtigt ud - er det ikke det du vil opnå?
Avatar billede Six Nybegynder
24. maj 2005 - 16:39 #24
jo det er præcist det jeg vil opnå :D

Men det har jeg kodet

Blå bold:
onClipEvent (enterFrame) {
    if ((_root._xmouse<=500) && (_root._xmouse>=50)) {
        this.k._x = _xmouse-((_xmouse*2)-50);
    }
    _root.x_var = Math.ceil(_root._xmouse);
    _root.x_var2 = Math.ceil(_root._xmouse-((_xmouse*2)));
}


Grøn Bold:
onClipEvent (enterFrame) {
    if ((_root._xmouse<=500) && (_root._xmouse >=50)) {
        this.k2._x = _xmouse-((_xmouse*1.50)-25);
    }
}
Avatar billede Six Nybegynder
24. maj 2005 - 16:44 #25
Jeg tror lige jeg vil prøve at uploade .fla filen - hvis du gider tage et kig på den kunne det være rart.

den ligger på www.fjappe.dk/bytesten.fla
Avatar billede barklund Nybegynder
24. maj 2005 - 16:48 #26
Men kan du ikke bare flytte grafikken inden i by2 til venstre (må det være) - så flytter by2 sig i forhold til et andet punkt? Prøv dig frem, jeg kan ikke helt se problemet i det :)

Men du kan også godt scripte det, men ingen grund til at gøre ting unødigt tekniske...
Avatar billede Six Nybegynder
24. maj 2005 - 17:59 #27
jeg har nu testet med at flytte grafikken - det giver ikke samme effekt. Jeg kan ikke få det til at blive ordenligt :(

Altså når nu musen rammer xcenter som er 275 - scenens midte. Så skal de to movieclips ligge 100% oven på hinanden. kører musen så over xcenter så _xmouse er mere en 275 så skal movieclippet flyttes mindre end by og er xmouse mindre end 275 så skal det flyttes igen mindre end by.

hmm jeg kan ikke forklare det..:(
Avatar billede pyroman Nybegynder
24. maj 2005 - 18:04 #28
jamen - er det ikke sådan at det allerede er på: http://www.fjappe.dk/xtest.swf ??
- Den grønne bevæger sig kun halvt så langt som den blå...
Avatar billede Six Nybegynder
24. maj 2005 - 18:23 #29
Jo det er det - men hvis jeg overfører denne metode til min bytest så vil min by ikke komme helt ind på scenen - da den kun bliver rykket det antal pixels modsat som musen er på - kan i følge mig ? ;D
Avatar billede Six Nybegynder
24. maj 2005 - 19:10 #30
Jeg giver op. Pyroman lig lige svar så vi kan få lukket tråden.


Tak for jeres interesse og hjælp :D
Avatar billede barklund Nybegynder
24. maj 2005 - 19:12 #31
Jeg kan virkelig ikke se, hvorfor det er et problem - men så prøv at scripte dig ud af det:

function onMouseMove() {
    if (_xmouse>=0 && _xmouse<=550) {
        by._x = _xmouse/550*-950;
        by2._x = -450 - 950*(_xmouse-275)/550*;
        updateAfterEvent();
    }
}
Avatar billede Six Nybegynder
24. maj 2005 - 19:36 #32
Jo barklund - det du har givet mig der, er jo ikke noget problem. Nu flytter de to elementer sig bare forskudt af hinanden.

Mit problem er at når min by._x er 0 så skal by2._x være 30 og er min by._x = -950 så skal by2._x være -980

Kan du følge mig ?
Avatar billede barklund Nybegynder
24. maj 2005 - 20:05 #33
Det vidste jeg jo ikke :)

function onMouseMove() {
    if (_xmouse>=0 && _xmouse<=550) {
        by._x = _xmouse/550*-950;
        by2._x = 30 - (980+30)*(_xmouse-275)/550*;
        updateAfterEvent();
    }
}

Deromkring :)

--
Morten Barklund
Avatar billede Six Nybegynder
24. maj 2005 - 20:08 #34
hmm det giver mig en fejl. Er det med vilje du har
by2._x = 30 - (980+30)*(_xmouse-275)/550*; <- * efter 550 ?
Avatar billede Six Nybegynder
24. maj 2005 - 20:09 #35
hvis jeg fjerner stjernen er det samme problem som før, bare med en større forskydelse. Og nej - jeg ved godt jeg ikke er den bedste til at forklare mine problemer hehe ;D
Avatar billede Six Nybegynder
24. maj 2005 - 20:54 #36
Jeg har fået det til at virke nogenlunde.

Men det kræver at jeg bytter rundt på tingene.

function onMouseMove() {
    if (_xmouse>=0 && _xmouse<=550) {
        by._x = ((30-(980+30)*(_xmouse-25))/550);
        by2._x = _xmouse/550*-950;
        updateAfterEvent();
    }
}

Men så kommer den effekt jeg gerne vil have, dog med mangler. Men jeg vil slutte af for nu - kl er 03 der hvor jeg befinder mig pt. ;D

Kan i hygge jer og tak for hjælpen. Godnat
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