Avatar billede davidchristensen Praktikant
04. januar 2002 - 15:40 Der er 43 kommentarer og
3 løsninger

Placere movieclip etc. Vol. 2.

Hey :)

Jeg er ved at lave min egen hjemmeside og på den er der kun 4 knapper. Underknapperne er der en lille \"indikator-klods\" som bevæger sig hen under den knap man lige har trykket på og der åbnes et nyt dokument i et frameset.

Problemet er denher \"indikator-klods\". Jeg har regnet ud at jeg skal animere i alt 24 variationer af denher klods der bevæger sig fra knap til knap - alt efter hvilken n´knap den skal gå til i forhold til dens udgangspunkt. Nu er min lille flashfilm blevet totalt rodet og lortet dur\' ikke..

Men jeg har en idé..

SPØRGSMÅLET:

Jeg kunne godt tænke mig et script, som, når man trykker på en knap, vil det bede \"indikator-klodsen\" (som er et movieklip) om at flytte sig til et bestemt punkt på skærmen (relativ til flashfilmens dimensioner) uanset dens udgangspunkt. På denne måde behøver jeg ikke at bekymre mig om selv at animere animere det hele selv..

Hvordan gør man?

David
-

PS. Lidt kode som måske vil hjælpe..

onClipEvent(load) {
                                            antal_frames = 10;  // hvor mange frames skal animationen bruge ?

                                            target_x = 400;
                                            target_y = 300;
                                            start_x = _x;
                                            start_y = _y;
                                            step_x = (target_x -  start_x)/antal_frames;
                                            step_y = (target_y -  start_y)/antal_frames;
                                           
                                            target_scale = 100;
                                            start_scale = 10;
                                            step_scale = (target_scale -  start_scale)/antal_frames;
                                            _xscale = start_scale;
                                            _yscale = start_scale;

                                            }
                                            onClipEvent(enterFrame) {

                                            if (target_scale > _xscale) {

                                            _xscale += step_scale;
                                            _yscale += step_scale;
                                            _x += step_x;
                                            _y += step_y;

                                            } else {

                                            _xscale = target_scale;
                                            _yscale = target_scale;
                                            _x =  target_x;
                                            _y =  target_y;

                                            }
                      }

Lingoman vil nok kunne nikke genkendende til det.. ;) Ref.: http://www.eksperten.dk/spm/137338
Avatar billede davidchristensen Praktikant
04. januar 2002 - 15:44 #1
Altså.. Jeg kunne godt tænke mig at denne funktion ligger i en knap, så det er knappen der beder movieklippet om at bevæge sig og ikke movieklippet selv når bliver afspillet..

Skrig, hvis det ikke giver nogen mening. :)

David
Avatar billede lingoman Nybegynder
04. januar 2002 - 15:59 #2
skal movieclippet altid bevæge sig hen til den knap der bliver klikket på ?
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:01 #3
Jep.
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:02 #4
Du kan se hvad det er for en \"indikatorklods\" jeg taler om her: http://www.dlcd.dk/hp/forside.htm

PS. det er ikke alle der virker helt..
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:02 #5
Kan du ikke bare sætte de tre knapper ind i et mc.

Så lave et en hitTest på mc\'et hvor de tre knapper er, og når hitTest==True så sætte indikatoerens _x være = musens _x
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:02 #6
..Og pænt goddag og godt nytår, Geo :)
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:02 #7
gør som jeg sagde
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:03 #8
læg din e-mail så sender jeg et eksempel
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:04 #9
beskeden 04/01 2002 16:02:53  blev sendt ved et uheld, jeg kom til udføre ved en fejl
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:04 #10
post@dlcd.dk
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:06 #11
Men egentlig kunne jeg allermest tænke mig en løsning som jeg bad om, hvor scriptet ligger i selv knappen og beder movieklippet om at udføre en kommando, da det sikkert vil være nemmere at tilføje en ny knap senere hen.. :)
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:07 #12
..Ihvertfald vil min hjerne bere kunne forstå en sådan løsning..
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:08 #13
sendt
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:12 #14
Det er nemt at tilføje en ny knap. Du sætter bare en ny knap i mc\'et med knapper og så kører det
Avatar billede lingoman Nybegynder
04. januar 2002 - 16:12 #15
Nej, hvor er jeg misundelig på hvad man kan præstere som grafikker :)
Dine animationer virker for det meste. Har jeg forstået dig ret hvis jeg antager at du vil reproducere samme funktionalitet, blot via actionScript fra knapperne i stedet ? Så har jeg en løsning som nemt kan implementeres.

Lad mig lige tjekke dit link igen så jeg kan se om vi kan undgå at skulle lave knapperne om til mc\'er...
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:14 #16
Håber det var noget i den stil du var ude efter
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 16:16 #17
Lingo hvis du finder ud af det. Vil du ikke sende løsningen til mig - please
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:17 #18
Du har helt ret Geo.. Det er samme funktion som jeg har lavet her, som jeg gerne vil have til at fungere via actionscripting.

Og, tak.. :) You have seen nothing yet ;)

David
Avatar billede davidchristensen Praktikant
04. januar 2002 - 16:20 #19
Anders, jeg har set dit eksempel, men der følger \"klodsen\" jo musen - det er ikke helt det jeg er ude efter.. :)

Ellers, tak. *S*
Avatar billede lingoman Nybegynder
04. januar 2002 - 17:51 #20
////////////////////////////////  action til din indikator MC ///////////////////
onClipEvent(load) {
        antal_frames = 10;  // hvor mange frames skal animationen bruge ?
        _root.slider = this;  // opret en reference til dette clip
        target_x = _x;  // sæt start værdier
        step_x = 0;
}

function setTarget_x(new_destination) {
    diff_x = target_x - this._x;
    if (diff_x != 0) {
            // sæt ny destination
            target_x = new_destination;
            step_x = (target_x - this._x)/antal_frames;
    }
}

function move2Target() {
    if (target_x != this._x) {
            //find ud af hvor tæt vi er på målet
            diff_x = target_x - this._x;
            if ((Math.abs(diff_x) <= (Math.abs(step_x)) {
                        new_x = target_x ;
            } else {
                        new_x = this._x + step_x;
            }

    this._x = new_x;
    }
}

onClipEvent(enterFrame) {
                move2Target();
}

////////////////////////////////  slut af action til din indikator MC ///////////////////

Vi kan nok ikke undgå at dine knapper skal pakkes ind som mc\'er hvis vi skal have fleksibilitet i antal knapper og film størrelse, men actionerne er til gengæld ens for alle knapper

1) tilføj denne linje i din (press) eller (release) action på  knappen

on (release) {
    _root.slider.setTarget_x( this._x);  //send ny destination til indikator mc
}

2) pak knapperne ind som movieClips og placer dem på stage

Så skulle den gerne være på plads, men jeg har ikke testet det da jeg ikke har Flash på denne maskine

mvh geo
Avatar billede davidchristensen Praktikant
04. januar 2002 - 18:07 #21
Oh, det er kryptisk! Men har jeg forstået det rigtigt, at det eneste jeg egentlig skal ændre på æh..  igenting? Fantastisk, det ser jeg lige.. (Har jeg ikke ret i at det eneste jeg egentlig kan rette i er antal frames (som jeg i forvejen har sat til 10?) Næ, jeg skal sætte startværdien ser jeg nu. Og så skrive destinationsværdien i knappen.. Undskyld, jeg tænker lige højt.. :)

Geo, hvis nu jeg gerne vil have at bevægelsen skal ease-ud?

David.
Avatar billede davidchristensen Praktikant
04. januar 2002 - 18:26 #22
Øv, jeg kan ik få det til at virke..
Avatar billede davidchristensen Praktikant
04. januar 2002 - 18:36 #23
Target_x er vist både startværdi og targetværdi? Med startværdi, mener du så den værdi den starter med helt fra begyndelsen, hvor man kommer ind på hjemmesiden? (I dette tilfælde under knappen \"forside\")
Avatar billede lingoman Nybegynder
04. januar 2002 - 18:43 #24
Du tænker for meget ;)
Du behøver kun at erstatte actionen på din indikator mc med actionen for oven
Easing laver vi senere når vi har fået dette til at virke og jeg har adgang til flash

Knapperne pakkes hver for sig som et mc når du har tilføjet

on (release) {
                            _root.slider.setTarget_x( this._x);  //send ny destination til indikator mc
                        }
på knapperne

Spisetid..
Avatar billede davidchristensen Praktikant
04. januar 2002 - 19:39 #25
Nu har jeg gjort som du siger jeg skal gøre. Lavet fire knapper og har givet dem følgende action:

on (release) {
                            _root.slider.setTarget_x( this._x = 284,4);  //send ny destination til indikator mc
                        }
-hvor 284,4 er en individuel værdi på hver knap. Derefter har jeg pakket knapperne ind i hver deres eget MC

Så har jeg lavet et MC og kaldt det for \"slider\" og har sat den action på du har lavet.

Der sker ingen al verdens ting - jo, to af knapperne rykker sig en lille my fra hinanden, de andre gør ikke. Indikatoren står bare og glor.

??

David
-
Avatar billede lingoman Nybegynder
04. januar 2002 - 19:42 #26
Nej, nej, nej...

Skriv kommandoerne precis som jeg skrev. Ingen redigering!!

on (release) {
        _root.slider.setTarget_x( this._x);  //send ny destination til indikator mc
}

Avatar billede davidchristensen Praktikant
04. januar 2002 - 19:48 #27
Orv, undskyld.. Men det virker nu stadigvæk ikke.. :)
Avatar billede lingoman Nybegynder
04. januar 2002 - 19:51 #28
Send mig din fla så kigger jeg på den når jeg er hjemme senere i nat
geo@lingoman.dk

PS. Jeg har også et spørgsmål vedr. design men mon vi får vrøvl hvis jeg opretter det her i Flash katagorien ?
Avatar billede davidchristensen Praktikant
04. januar 2002 - 19:54 #29
Er sendt, og tak Geo :)

Hvis det er noget du tror jeg kan svare på, så spørg da bare her. Hvad drejer det sig om?
Avatar billede www.faktaomvold.org Nybegynder
04. januar 2002 - 20:02 #30
Geo vil du ikke please sende det rigtige til:

anderskjaer@hotmail.com
Avatar billede lingoman Nybegynder
04. januar 2002 - 20:10 #31
Har oprettet mit design spørgsmål her http://www.eksperten.dk/spm/154235
Avatar billede lingoman Nybegynder
04. januar 2002 - 20:12 #32
www.faktaomvold.org  >> jo jeg sender også en demo til dig.
david78>> er det ok at jeg sender din redigerede fil til www.faktaomvold.org  eller skal jeg oprette en anden demo fil ?
Avatar billede davidchristensen Praktikant
04. januar 2002 - 21:12 #33
Ja ja, det er helt ok. :)
Avatar billede davidchristensen Praktikant
05. januar 2002 - 14:50 #34
Hallo? Er her nogen idag? :)
Avatar billede lingoman Nybegynder
07. januar 2002 - 00:40 #35
Nej, jeg er her ikke ;)

Ok, nu har jeg redigeret filen og det virker. Så var der noget ekstra med easing du kunne tænke dig. Hvilken slags ?

mvh geo
Avatar billede lingoman Nybegynder
07. januar 2002 - 00:49 #36
You\'ve got mail...

har korrigeret en fejl i min kode

onClipEvent (load) {
    antal_frames = 10;
    // hvor mange frames skal animationen bruge ?
    _root.slider = this;
    // opret en reference til dette clip
    target_x = _x;
    // sæt start værdier
    step_x = 0;
    function setTarget_x (new_destination) {
        diff_x = new_destination-target_x; //DENNE LINJE VAR FØR FORKERT
        if (diff_x != 0) {
            // sæt ny destination
            target_x = new_destination;
            step_x = (target_x-this._x)/antal_frames;
        }
    }
    function move2Target () {
        if (target_x != this._x) {
            // find ud af hvor tæt vi er på målet
            diff_x = target_x-this._x;
            if (Math.abs(diff_x)<=Math.abs(step_x)) {
                new_x = target_x;
            } else {
                new_x = this._x+step_x;
            }
            this._x = new_x;
        }
    }
}
onClipEvent (enterFrame) {
    move2Target();
}

mvh geo
Avatar billede barklund Nybegynder
07. januar 2002 - 12:17 #37
Skal der være easing, tror jeg nok, at det følgende vil skabe den ønskede effekt:

onClipEvent (load) {
    _root.slider = this;
    // opret en reference til dette clip
    target_x = _x;
    // sæt start værdier
    function setTarget_x (new_destination) {
        diff_x = new_destination-target_x; //DENNE LINJE VAR FØR FORKERT
        if (diff_x != 0) {
            // sæt ny destination
            target_x = new_destination;
    }
    function move2Target () {
        if (target_x != this._x) {
            // find ud af hvor tæt vi er på målet
            diff_x = target_x-this._x;
            if (Math.abs(diff_x)<=1) {
                new_x = target_x;
            } else {
                new_x = this._x+diff_x*0.4;
            }
            this._x = new_x;
        }
    }
}
onClipEvent (enterFrame) {
    move2Target();
}

Jeg har fjernet styringen med antal frames, som animationen forløber over... I stedet gør den blot det, at den flytter slideren 40% af afstanden hen til målet... Egentlig vil dette fortsætte i det uendelige, men jeg har sat en stopper ved en afstand på 1 pixel, som snapper til slutpositionen...

Kører den for langsomt eller hurtigt, kan du henholdsvis hæve og sænke koefficienten \"0.4\"... Kører den for længe og for kort kan du hæve eller sænke snapværdien \"1\".

Håber det kan bruges...

/Barklund
Avatar billede davidchristensen Praktikant
07. januar 2002 - 14:30 #38
Hej. Den virker fint, Geo! Tak.

Easing-out værdi 100 havde jeg i tankerne.. Barklund, det er givetvis meget meget smart den omskrivning du har lavet, men jeg må indrømme at nu begynder min hjerne at gøre ondt.. ;) Jeg er stor tilhænger af at tingene generelt bør være til at forstå sådan med rimelig lethed.. Din omskrivning gør det kæmpe-kompliceret. Alle de ord jeg trods alt kan forholde mig til med min lille Actionscript-forståelse (såsom frame/sek. og easing parameter osv.) er helt væk.. Jeg er fuldstændig lost..

Jeg har før set en easingparameter i et tidligere spørgsmål jeg har stillet.. Jeg kan bare slet ikke regne ud hvor den skal puttes ind henne i dette script.. (Men skal det ikke ligge omkring step_x parameteren? (Gætter..))

Igen, tak.. Tak tak tak.. :)

David
-
Avatar billede barklund Nybegynder
07. januar 2002 - 14:40 #39
Jeg kender ikke Flash\'s interne brug af easing-parametren - altså hvordan tallet fra -100 til 1000 omsættes til easing... Skal det forstås 100 %, så prøv at implementer det ovenstående og eksperimenter med \"easing-værdien\", 0.4, samt snap-værdien, 1.

Jeg kan godt prøve at implementere det 100% som flash selv bruger easing, men det er lidt tungt... Er det påkrævet?

/Barklund
Avatar billede davidchristensen Praktikant
07. januar 2002 - 14:58 #40
Æhm, tungt? Mener du at det vil få filen til at blive afviklet langsommere?

Flash har en easing parameter der løber fra -100 til 100. Jeg må indrømme at jeg ikke er helt klar over hvad disse tal egentlig dækker over..

Grunden til at jeg kunne tænke mig at få er forståelig easingparameter er egentlig lidt for min egen forståelses skyld. Jeg er i fuld sving med at forsøge på at lærer Actionscripting her, og det  gør det altså lettere for mig at kunne referer til nogle simple værdier der er til at begribe. :)

Måske, Geo véd hvad easingparameteren egentlig dækker over.. ?

David
-
Avatar billede barklund Nybegynder
07. januar 2002 - 15:05 #41
jamen det er skam lige ud af landevejen...

vi kan omdefinere scriptet lidt, så det ser således ud:

onClipEvent (load) {
    _root.slider = this;
    target_x = _x;
    snap_value = 1;
    easing = 0.4;
    function setTarget_x (new_destination) {
        diff_x = new_destination-target_x;
        if (diff_x != 0)
            target_x = new_destination;
    }
  function move2Target () {
        if (target_x != this._x) {
            diff_x = target_x-this._x;
            if (Math.abs(diff_x)<=snap_value) {
                new_x = target_x;
            } else {
                new_x = this._x+diff_x*easing;
            }
            this._x = new_x;
        }
    }
}
onClipEvent (enterFrame) {
    move2Target();
}


I dette eksempel (samme resultat som før), kan easing- og snap_value-værdierne sættes øverst...

Deres betydning er enkel. Når slideren skal flytte sig, beregnes afstanden fra det nuværende punkt hen til slutpunktet. Er denne afstand mindre end snap_value, hopper slideren til slutværdien og stopper. Er afstanden større en snap_value, bevæger slideren sig en brøkdel af afstanden til slutværdien svarende til easing. Altså hvis easing er 0, så står slideren hele tiden stille. Hvis easing er 1, så flytter slideren sig til slutværdien øjeblikkeligt. Så simpelt er det... Jeg gættede så ud i luften på, at easing = 0.4 ville give et pænt resultat...
Avatar billede davidchristensen Praktikant
07. januar 2002 - 15:10 #42
Det er jo genialt, Barklund.. Det må være tungt at bærer rundt på en sådan en stor hjerne.. :) Eller du har den måske i et 500 l. akvarium ved siden af? ;)

Det virker helt som det skal. Jeg forstår det bare ikke helt, og det ville jeg så gerne..

David
-
Avatar billede davidchristensen Praktikant
07. januar 2002 - 15:11 #43
Der er lidt point til jer allesammen her for en god ordens skyld. :)
Avatar billede davidchristensen Praktikant
07. januar 2002 - 15:16 #44
Hov. Der er da gået noget galt.. Jeg havde egentlig tildelt Barklund og Lingoman 20 point hver, og så www.faktaomvold.dk 5 point for at være med.

Nu har barklund kun fået eet..?? (Undskyld, det er altså ikke for at være ubehøvlet..)

Kan man ikke give flere point ud end dem man har udlodet til at starte med?..

D
-
Avatar billede davidchristensen Praktikant
07. januar 2002 - 15:22 #45
Så, Barklund. Nu skal du bare lige trykke her: http://www.eksperten.dk/spm/155449 og smide et svar. :)

David
-
Avatar billede barklund Nybegynder
07. januar 2002 - 15:37 #46
Takker også her for de mange point! :o)
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

IT-JOB

Scan Global Logistics

PMO Project Manager

Capgemini Danmark A/S

AI/Data Engineer

Politiets Efterretningstjeneste

Forretningsanalytiker til PET's IT-afdeling

Capgemini Danmark A/S

AI Data Architect