Avatar billede jakwag Nybegynder
02. september 2003 - 11:51 Der er 15 kommentarer og
1 løsning

Forklaring af _level

Hej eksperter!

Jeg har indtil idag haft den ide at levels og depths ikke direkte havde noget med hindanden at gøre. Men det er vist ikke rigtigt alligevel.

Prøv denne kode:

this.createEmptyMovieClip("test_mc",1);
test_mc.lineStyle(1,0x000000);
test_mc.beginFill(0xaaaa77);
test_mc.lineTo(0,100);
test_mc.lineTo(100,100);
test_mc.lineTo(100,0);
test_mc.lineTo(0,0);
test_mc.swapDepths(_level0);
test_mc.onRelease = function(){
    _level0._alpha = 50;
    trace(this);
}

Den tracer: _level0.test_mc
men den skifter osse samtidig alpha, som om at den er level 0.

Jeg er godt klar over at det er fordi jeg skifter depth, men hvordan hænger depths og levels sammen?!?

- og hvorfor tracer den ikke _level0, hvis det er det den er?


: ) Jakob
Avatar billede nikolajdu Nybegynder
02. september 2003 - 12:06 #1
Du sætter jo movieclippets depth til level0 og level0 alpha til 50 bagefter - Jeg kan ikke se dit forklaringsproblem? :))
Avatar billede mat Nybegynder
02. september 2003 - 12:14 #2
prøv engang at trace din dybde før og efter swapDepths, der sker ikke noget, du forsøger at swappe movieclippet med dets parent - det tror jeg sgisme ikke man kan :)
Avatar billede jakwag Nybegynder
02. september 2003 - 12:32 #3
hehehe

Nej, i har ret... Sikke noget rod jeg har gang i! :D

Men hvad hvis jeg gerne vil loade en ny film ind oven på min firkant, og så få firkanten og den nye film til at bytte plads.

Dette er ihvetfald forkert:

this.createEmptyMovieClip("test_mc",1);
test_mc.lineStyle(1,0x000000);
test_mc.beginFill(0xaaaa77);
test_mc.lineTo(0,100);
test_mc.lineTo(100,100);
test_mc.lineTo(100,0);
test_mc.lineTo(0,0);
loadMovieNum("movietest.swf",3);
this.onEnterFrame = function(){
    if(_level3.getBytesLoaded()==_level3.getBytesTotal())
        _level3.swapDepths(_level0);
        delete this.onEnterFrame;
}

Hvad ville måden at gør det på være?
Avatar billede mat Nybegynder
02. september 2003 - 12:40 #4
this.onEnterFrame = function(){
    if(_level3.getBytesLoaded()==_level3.getBytesTotal())
        _level3.swapDepths(_level0);
        //delete this.onEnterFrame;
}
Avatar billede mat Nybegynder
02. september 2003 - 12:41 #5
nu står de så og skifter konstant, men man kan altså godt swappe levels
Avatar billede jakwag Nybegynder
02. september 2003 - 12:51 #6
Ja, men er det ikke forkert at gøre det på denne måde?
Avatar billede mat Nybegynder
02. september 2003 - 13:02 #7
forkert i hvilken sammenhæng? har du lyst til at swappe levels kan du gøre det. Et level må repræsentere et movieclip (en swf) og de har så ligesom alle andre movieclips deres interne stacking, her er parent bare playeren (i guess?)

Men det er lidt underligt at hvis man loader en fil ind i level1 og swapper med level0 og tracer deres dybde bliver det:

level0 dybde -16384
level1 dybde -16383
level0 dybde -16384
level1 dybde -16383
´
<script>
on (release) {
    _level1.swapDepths(_level0);
    trace("level1 dybde " + _level1.getDepth());
    trace("level0 dybde " + _level0.getDepth());
}
</script>



Så den stacking-order ændres åbenbart ikke, men de bytter fint plads?
Avatar billede jakwag Nybegynder
02. september 2003 - 13:13 #8
Ja, ligesom hvis man skriver:

this.onEnterFrame = function(){
    if(_level3.getBytesLoaded()==_level3.getBytesTotal())
        _level3.swapDepths(_level0);
        trace(_level3)
}

tracer _level3 og _level0 på skift...

Det er sikkert godt nok det jeg har lavet, jeg syntes bare at det opføre sig lidt mærkligt.

Kom med et svar.
Avatar billede mat Nybegynder
02. september 2003 - 13:54 #9
svar
Avatar billede nikolajdu Nybegynder
02. september 2003 - 13:56 #10
Siden hvornår er flashpayeren begyndt at understøtte <script> tagget??

;-)
Avatar billede jakwag Nybegynder
02. september 2003 - 13:58 #11
nikolajdu > haha. Det var osse min tanke...
Avatar billede mat Nybegynder
02. september 2003 - 13:59 #12
men hov jeg ævler vist osse, mit fine script tracer jo fint den dybde de ligger i, de swappes jo....level1 bliver level0 osv de bytter fint plads i stacking - fy for pokker for noget vrøvl :/

nikolaj > hehe :)
Avatar billede jakwag Nybegynder
02. september 2003 - 14:05 #13
Ja, men bytter de ikke også level?
Hvis du skal referere til _level3 efter at de har byttet plads skal du nu skrive f.eks:

trace(_level0._totalframes)

Skal de osse bytte level?
Avatar billede jakwag Nybegynder
02. september 2003 - 14:06 #14
det var vist egentlig det der undrede mig fra start... : )
Avatar billede mat Nybegynder
02. september 2003 - 18:44 #15
Jo det har du ret i, de bytter levels og skal efter et swap referes til med deres nye level.

tese:

levels repræsenterer blot movieclips (de forskellige swf´er der loades ind, det har vi etableret). Hver _root timeline i disse tildeles her op til _leveln. Disse levels stacking-order er ikke stort anderledes end alle andre movieclips men target er fremfor et instancenavn en level-reference, det er tilsyneladende den eneste forskel (og så lige det at man skal holde øje med cross level referencer, hvis man begynder at swappe på dem)....eller?

mvh mat
Avatar billede jakwag Nybegynder
02. september 2003 - 18:47 #16
Jo, det lyder rigtigt.

Min løsning var nu simpel nok.
_level0.swapDepth(0);

så kommer den jo til at ligge ovenpå det jeg loadede.

Nogle gange er løsningen meget mere simpel hvis man lige holder en lille pause.

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