for (i=0; i<husarray.length; i++) { var husby = attachMovie("byikon", "by"+i, this.getNextHighestDepth(), {_x:bykoordinatx[i], _y:bykoordinaty[i]}); husby.duharklikket = i; husby.onRelease = function() { trace(”Du trykkede på by nummer :”+this.duharklikket); } }
for (i=0; i<7; i++) { if (_root["by"+i].ejerskab == true) { _root["by"+i].gotoAndStop(2); } }
På min scene oprettes en række huse. På hver af disse huse kan brugeren klikke vha. onRelease-funktionen, der så fortæller, hvilken by der er blevet klikket på. Jeg har i initialiseringen oprettet en række objekter, også kaldet ”by”, der har en række private-variabler tilknyttet – bl.a. en, der hedder ”ejerskab”.
Alt virker fint – lige bortset fra sidste kodelinie: _root["by"+i].gotoAndStop(2); Vælger jeg variabel-listen under afviklingen, kan jeg se at f.eks. movieclippet ”by0” og ”by1” eksisterer (_level0.by0). Problemet er blot, at jeg ikke kan referere til det. I tilfældet her vil jeg gerne gå til frame 2 i movieclippet, der ligger i root, men intet sker.
Kan nogen forklare mig hvorfor?
Herudover, kan nogen forklare mig, hvad der sker i attachMovie-linien? Hvorfor skal den sættes lig variablen husby for at husene kan identificeres individuelt?
for (i=0; i<7; i++) { var by=_root["by"+i] if (by.ejerskab) { by.gotoAndStop(2); } }
Synes godt om
Slettet bruger
11. oktober 2005 - 16:30#3
Hmm - desværre.
For lige at vende tilbage til min oprindelige tekst, har jeg prøvet at hardcode følgende linie nedenunder for-løkken:
_root.by0.gotoAndPlay(2); Den virker ikke.
MEN: hvis jeg udskifter øverste del til følgende:
for (i=0;i<husarray.length;i++) { var husby = attachMovie("byikon", "by"+i, this.getNextHighestDepth(), {_x:bykoordinatx[i], _y:bykoordinaty[i]}); if (_root["by"+i].ejerskab) { husby.gotoAndStop(2); }...
...så kan jeg godt gå til frame 2, blot ved at referere til til "husby" istedet for f.eks. "by0". Det løser dog imidlertid ikke problemet helt - for på et tidspunkt ønsker jeg at køre en slags "refresh-screen" funktion, der viser en række byer (læs: går til frame 2 i MC'et). Jeg har 7 byer, navngivet by0, by1 etc. - og vi er enige om, at disse navne er instance-navnene, genereret oppe i attachMovie-linien, ikke sandt? Men i nævnte kode refereres til variablen "husby", og det er bl.a. det jeg ikke forstår. For når først jeg er ude af for-løkken, hvordan kan jeg så referere til "husby" igen?
Synes godt om
Slettet bruger
11. oktober 2005 - 20:57#4
Årsagen er fundet! Mine instances må ikke hedde det samme som min klasse-objekter.
Nå, men der er stadig nogle point, der skal uddeles – jeg kan stadig ikke greje, hvorfor var husby = attachMovie("byikon", "by"+i ...osv ser ud som den gør.
Altså: En instance, kaldet f.eks. ”by0” oprettes ud fra library-elementet ”byikon”. Men hvorfor sættes sætningen lig ”var husby”? Jeg var nødt til at gøre det, for på løkke-vis at kunne holde styr på, hvilken by jeg klikkede på - men hvorfor? Og samtidig, husby.duharklikket ? Det ligner jo nærmest en objekt-variabel – men jeg har jo ikke defineret nogen klassestruktur ved navn ”husby”...?
var husby:MovieClip = attachMovie("byikon", "by"+i, this.getNextHighestDepth(), {_x:bykoordinatx[i], _y:bykoordinaty[i]});
Skulle det nok ha været, det er pænere....
Synes godt om
Ny brugerNybegynder
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.