30. maj 2004 - 11:24Der er
11 kommentarer og 1 løsning
Slette fra Array (2)
Jeg har en kode der sletter ting fra mit array efterhånden som de bliver brugt i filen. Nu er mit problem at den alligevel bruger de samme ting flere gange selvom det ikke er i Array.
Min kode er:
var tegningArray = new Array("ambulance_mc", "ananas_mc", "ettal_mc");
Når jeg tracer mit array kan jeg se at det er rigtigt men min randomtegning bliver alligevel den samme nogen gange, selvom tegningen er væk fra mit Array.
Du bruger random(tegningArray.length) 3 forskellige steder. Det giver (nogle gange) forskellige værdier 3 steder, og resulterer i at du får slettet den forkerte værdi i dit array.
Start med at lave en fælles randomvariabel og referer til den når du har behov for det.
mitRandomTal = random(tegningArray.length);
...en anden og mere straightforward måde at opnå det samme på:
var tegningArray = new Array("ambulance_mc", "ananas_mc", "ettal_mc"); tegningArray.sort(function(){return random(3)-1;});
I stedet for at skrive næsten det samme 3 gange i træk (eller flere hvis det bliver nødvendigt?) sætter vi det dynamisk ind, så det genererer sig selv. Kig på hvordan x'et går igen der hvor værdierne ændrer sig.
Jeg har lige et lille tillægsspørgsmål. Jeg har en variabel (r) i de movieclips der ligger i tegningArray'et. Jeg vil så gerne have at r bliver lig med noget når man klikker på movieclippet. Hvordan gøres det smartest efter man har brugt dit script?
for(x=1;x<4;x++) { eval("tegning_holder" + x + "_mc").attachMovie(tegningArray[x - 1],"randomtegning" + x,100 + x); eval("tegning_holder" + x + "_mc") = "noget"; // Eller: nogetArray[x - 1], hvis du vil sætte noget fra et array }
Det virker ikke rigtigt. Jeg har måske ikke formuleret det rigtigt. I den første frame af de movieclips der bliver attach'et har jeg skrevet: _parent.onRelease =function(){
r="a"; } men kan man ikke trække r fra root istedet?
Jeg vil lave en "if (randomBogstav=r)". randomBogstav har jeg fra et andet array. Det er derfor vigtigt at det først er når man klikker på movieclippet. Jeg har fået det til at virke hvis jeg smider alt koden ind i de forskellige movieclips der er i tegningarray'et, men jeg vil gerne have koden ud i roden fordi det bliver et stort array og derfor meget kode der skal laves til hver.
Du kan gøre det på forskellige måder alt efter hvornår du vil eksekvere din if-statement. Hvis det ikke skal gå ultrahurtigt, kan du assigne indholdet af dit array til en variabel inde i mc'et. Lidt ligesom ovenfor:
tror bedst jeg kan gennemskue den sidste løsning. Mit script inde i movieclippet ser således ud: xv = _parent._x; yv = _parent._y; _parent.onMouseDown = function() { r = "a"; this.startDrag(); if (this.hitTest(_root.bogstav_mc)) { this._x = Number(xv); this._y = Number(yv); if (r == _root.randomBogstav) { rigtigt="ja" this._x = 100; this._y = 100; this.stopDrag(); } } else { this._x = Number(xv); this._y = Number(yv); } };
stop();
Det er så det jeg gerne vil have ud i roden så jeg kan nøjes med min 'rigtigt="a"' i movieclippet. Jeg kan heller ikke få drag til at virker ordentligt. Hvis man ikke rammer hittesten vil jeg gerne have den til at falde tilbage, og det gør den også men den ikke opdager hittesten længere.
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.