Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:21 Der er 33 kommentarer og
1 løsning

Lave om i lagreækkefølgen med action script

Hej Eksperter
Jeg har i min flash film ca. 20 små billeder, der hver især skal "zoomes ind" og derefter zoomes ud igen - på en ad gangen.

Mit problem er, at de billeder, der ligger "over" de andre i lag rækkefølgen skygger for de nederste.

Kan man ikke i starten af hver "zoom frame" angive, at nu skal dette lag lægge sig øverst...?
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:25 #1
ok. det gik vist lidt stærkt. Der skal stå

"Jeg har i min flash film ca. 20 små billeder, der hver især skal "zoomes ind på" og derefter zoomes ud fra igen - en billede gangen."
Avatar billede rohaje Nybegynder
06. oktober 2004 - 12:32 #2
nej,, men du kan flytte movieClips i depth
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:34 #3
O. jeg skallave alle mine "zooms" om til enkelte movieclips. Det er ikke noget problem

Men hvad mener du med "depth"?
Avatar billede rohaje Nybegynder
06. oktober 2004 - 12:38 #4
Det lyde som om du har en tidslinie med en masse motion tween,,?
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:41 #5
Jeps. Det har jeg
Avatar billede rohaje Nybegynder
06. oktober 2004 - 12:43 #6
ok,, du kan gøre det hele med script istedet,( det bedste) eller flytte rundt på tween'sne i layersne manuelt ( nok det næmmeste) eller lave movieclips hvor tween'ingen ligger inde i movieClippets tidslinie med lidt script( en mellem løsning)
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:45 #7
ok. Hvordan laver jeg "den bedste" løsning? (Uden at vide hvordan jeg laver de to andre løsninger!)
Avatar billede rohaje Nybegynder
06. oktober 2004 - 12:47 #8
er det jpg'er du har importeret?
så kan du lave movie clip'sne med script og  loade jpg'erne ind i dem ( hvilken flash version bruger du ?)
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:49 #9
Det er png'er
Flash MX
Avatar billede rohaje Nybegynder
06. oktober 2004 - 12:51 #10
ok så laver vi dem manuelt,,
lav et movie clip med et billed i hver,, giv movie clip,sne et instance navn hver,, f.eks clip0 , clip1 , clip2 ,, iden rækkefølge de skal zoom'e
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 12:57 #11
ok, det har jeg gjort. SKal de alle ligge i samme lag?
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:00 #12
det er lige meget 2 sec. så kommer der lidt kode
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 13:03 #13
ok.

De der 19 billeder ligger spredt rundt om på en 800x600 stor flade. Når man zoomer ind på et billede skal det læge sig i midten så det fylder hele skærmen.

De forskellige zooms er altså ikke helt ens fra billede til billede.

Bare så du ikke sidder og laver noget der måske ikke kan bruges. :-/
Jeg kan evt. sende dig et billede så du kan se hvordan det hænger sammen
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:11 #14
nå ok,, dette er så bare princippet:

prøv det lige aligevel,, så du kan se hvor dan det virker

// action til frame 1 ( eneste frame ellers også en stop(); )

n = 0;
ant = 4;
speed = 5;
normScale = 50;
maxScale = 100;
function startZoom() {
    if (n<=ant) {
        this[oldClip].swapDepths(oldDepth);
        oldDepth = this["clip"+n].getDepth();
        this["clip"+n].swapDepths(200);
        this["clip"+n].scale = maxScale;
        this["clip"+n].onEnterFrame = zoom;
        oldClip = "clip"+n;
        n++;
    }
}
function zoom() {
    this._xscale += (this.scale-this._xscale)/speed;
    this._yscale = this._xscale;
    if (Math.round(this._xscale) == this.scale) {
        this._xscale = this.scale;
        if (this.scale != normScale) {
            this.scale = normScale;
        } else {
            startZoom();
            this.onEnterFrame = false;
        }
    }
}
function preload() {
    if (_root.getBytesLoaded() == _root.getBytesTotal()) {
        startZoom();
        onEnterFrame = false;
    }
}
onEnterFrame = preload();
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:14 #15
vi retter det til så det nok skal komme til at virke som du vil ha det
,,

du skal sætte ant = 19
normScale= udgangs scale ( når de er små,, scaler movie clipsne til denne scale manuelt)
maxScale=100 ( hvis billderne er 800*600 )
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:16 #16
De skal altså zoome og samtidig flytte sig ind på midten af skærmen, der efter zoome ud og flytte sig tilbage til deres oprindelige udgangspunkt ?

, ligger billederne i 0,0 i movie clip'ne eller har du centreret dem (-400,-300) ?
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 13:20 #17
jeg har lagt arrangeret billederne på skærmen og derefter markedet dem enkeltvis og lavet dem til movieclips. Så ligger de vel centreret i de enkelte clips
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:26 #18
ok,, så er der den her:

n = 0;
ant = 4;
speed = 5;
normScale = 10;
maxScale = 100;
function startZoom() {
    if (n<=ant) {
        this[oldClip].swapDepths(oldDepth);
        oldDepth = this["clip"+n].getDepth();
        this["clip"+n].oldx=this["clip"+n]._x;
        this["clip"+n].oldy=this["clip"+n]._y;
        this["clip"+n].x=400;
        this["clip"+n].y=300;
        this["clip"+n].swapDepths(200);
        this["clip"+n].scale = maxScale;
        this["clip"+n].onEnterFrame = zoom;
        oldClip = "clip"+n;
        n++;
    }
}
function zoom() {
    this._xscale += (this.scale-this._xscale)/speed;
    this._x += (this.x-this._x)/speed;
    this._y += (this.y-this._y)/speed;
    this._yscale = this._xscale;
    if (Math.round(this._xscale) == this.scale) {
        this._xscale = this.scale;
        if (this.scale != normScale) {
            this.scale = normScale;
            this._x=this.x;
            this._y=this.y;
            this.x=this.oldx;
            this.y=this.oldy;
           
        } else {
            startZoom();
            this.onEnterFrame = false;
        }
    }
}
function preload() {
    if (_root.getBytesLoaded() == _root.getBytesTotal()) {
        startZoom();
        onEnterFrame = false;
    }
}
onEnterFrame = preload();
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 13:28 #19
ok. jeg har lagt den her kode ind i frame 1 i sit eget action lag.

Alle billederne har jeg lagt i samme lag. Dem har jeg kaldt clip01, 02 osv., men der sker ikek rigtigt noget. Hvad gør jeg galt?
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:28 #20
billederne inde i movie clipet skal være i 100% ,, det der skal scaleres er selve movie clippet,, det er nok omvendt, nu , da du sikkert har scaleret billederne før du lavede dem til movie clips ?

Hvis det er tilfældet må du lige dobbelt-klikke på dem og derefter klikke på billedet og sætte det til 100% brug  der efter align værktøjet til at centrere billedet
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:29 #21
I denne version skal movie clippet være scaleret til 10 %
normScale = 10;
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:36 #22
undskyld nu ser jeg det clip01 clip02,, jeg troede du havde clip0 clip1  osv skal jeg rette koden eller retter du instance navnene
Avatar billede rohaje Nybegynder
06. oktober 2004 - 13:40 #23
nå,, jeg bliver nød til at løbe,, men her er en fla du kan kigge på, det kan være det hjælper

http://www.rohaje.dk/eksperten/scaler.fla

mvh

Robert
Avatar billede fusentasten Nybegynder
06. oktober 2004 - 13:41 #24
jeg retter det lige...
Avatar billede rohaje Nybegynder
06. oktober 2004 - 19:19 #25
fik du det til at virke?
Avatar billede fusentasten Nybegynder
07. oktober 2004 - 11:00 #26
Undskyld. Har ikke lige været ved min computer...

Jeg fik det til at virke!

Mangler bare en lille ting: Kan man få den til at loope?
Avatar billede rohaje Nybegynder
07. oktober 2004 - 11:13 #27
ja en lille ændring af startZoom funktionen

function startZoom() {
    this[oldClip].swapDepths(oldDepth);
    oldDepth = this["clip"+n].getDepth();
    this["clip"+n].oldx = this["clip"+n]._x;
    this["clip"+n].oldy = this["clip"+n]._y;
    this["clip"+n].x = 400;
    this["clip"+n].y = 300;
    this["clip"+n].swapDepths(200);
    this["clip"+n].scale = maxScale;
    this["clip"+n].onEnterFrame = zoom;
    oldClip = "clip"+n;
    n++;
    if (n>ant) {
        n = 0;
    }
}
Avatar billede rohaje Nybegynder
07. oktober 2004 - 11:16 #28
Du skal bare spørge hvis der er noget du gerne vil have afklaret med scriptet,,
glad for at du fik det til at virke :)
Avatar billede fusentasten Nybegynder
07. oktober 2004 - 11:38 #29
Mit script ser nu sådan ud:
n = 0;
ant = 19;
speed = 5;
normScale = 25;
maxScale = 100;

function startZoom() {
    this[oldClip].swapDepths(oldDepth);
    oldDepth = this["clip"+n].getDepth();
    this["clip"+n].oldx = this["clip"+n]._x;
    this["clip"+n].oldy = this["clip"+n]._y;
    this["clip"+n].x = 400;
    this["clip"+n].y = 300;
    this["clip"+n].swapDepths(200);
    this["clip"+n].scale = maxScale;
    this["clip"+n].onEnterFrame = zoom;
    oldClip = "clip"+n;
    n++;
    if (n>ant) {
        n = 0;
    }
}

function zoom() {
    this._xscale += (this.scale-this._xscale)/speed;
    this._x += (this.x-this._x)/speed;
    this._y += (this.y-this._y)/speed;
    this._yscale = this._xscale;
    if (Math.round(this._xscale) == this.scale) {
        this._xscale = this.scale;
        if (this.scale != normScale) {
            this.scale = normScale;
            this._x = this.x;
            this._y = this.y;
            this.x = this.oldx;
            this.y = this.oldy;
        } else {
            startZoom();
            this.onEnterFrame = false;
        }
    }
}
function preload() {
    if (_root.getBytesLoaded() == _root.getBytesTotal()) {
        startZoom();
        onEnterFrame = false;
    }
}
onEnterFrame = preload();

Men det looper altså ikke :-(
Avatar billede rohaje Nybegynder
07. oktober 2004 - 11:55 #30
ant = 18;
p.g.a at første clip hedder clip0
Avatar billede fusentasten Nybegynder
07. oktober 2004 - 12:03 #31
Bingo :-)
Giver du et svar, så du kan få dine velfortjente points?
Avatar billede rohaje Nybegynder
07. oktober 2004 - 13:42 #32
Det gør jeg, godt det virker og godt du valgte den "bedste" -løsning,, flash bliver først rigtig sjov- når man begynder at scripte ;)
Avatar billede fusentasten Nybegynder
07. oktober 2004 - 14:36 #33
Tja, det var mig der valgte, men det var nu dig der udførte det, vil jeg nu sige. Mange tak for hjælpen :-)

Gid jeg kunne finde ud af det der AS
Avatar billede fusentasten Nybegynder
18. oktober 2004 - 22:41 #34
Hej rohaje

Så lige at jeg ikke havde markeret dit navn da jeg accepterede dit svar. Sorry. Du får dine points med det samme...

Nå men nu får jeg så spørgsmålet om jeg kan få min flashfil til at starte med at stå stille (det kan jeg godt) og dernæst blive startet med space tastet (det kan jeg også) men så vi de også have filmen til at standse igen med spacetasten. Men det kan jeg ikke lige få den til. Den begynder bare endnu en zoom handling, så to tegninger kommer frem hver gang.

Jeg skal naturligvis nok oprette et nyt spørgsmål til dig hvis du kan hjælpe mig.

mvh Bo
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