Ik ben een flash schietspelletje aan het maken waarbij er steeds een monster movieclip voorbijkomt. De speler moet op deze monsters schieten. De monsters laat ik via actionscript random tweenen met LMCtween. Als de speler op deze monsters klikt (schiet) moeten ze verdwijnen, daarvoor gebruik ik unloadMovie().
Het probleem is dat ik de moviesclips dupliceer met duplicateMovieClip() en dat elk monster dus ik een eigen instance name heeft. Daardoor kan ik niet 1 functie maken voor alle monsters, ze hebben immers allemaal een andere naam. Om dit op te lossen heb ik de de functie in de loop gezet en maak ik dus voor elk gedupliceerde movieclip een functie. Niet netjes en het werkt ook niet
De code maakt het misschien iets duidelijker (php code gebruikt voor hightlight):
De code staat op een aparte action laag. Volgens mij is het probleem dat als ik op een monster klik er alweer een nieuwe monster is en dat de variabele i dus is opgehoogt. Vreemde is dat de functie wel altijd werkt en dat stats.score_txt.text altijd word opgehoogd. Ik heb al geprobeerd om een button te maken met daarin een movieclip, door die movieclip te dupliceren hoopte ik maar 1 functie nodig te hebben. Werkt alleen niet
Ik hoop dat ik een beetje duidelijk ben geweest en dat ieman de oplossing weet
De vraag is dus hoe laat ik die monsters verdwijnen als ik er op klik.
FLA FILE
Het probleem is dat ik de moviesclips dupliceer met duplicateMovieClip() en dat elk monster dus ik een eigen instance name heeft. Daardoor kan ik niet 1 functie maken voor alle monsters, ze hebben immers allemaal een andere naam. Om dit op te lossen heb ik de de functie in de loop gezet en maak ik dus voor elk gedupliceerde movieclip een functie. Niet netjes en het werkt ook niet
De code maakt het misschien iets duidelijker (php code gebruikt voor hightlight):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| // i word steeds opgehoogd zodat elke MC een eigen naam heeft. i = 0; function createEnemy() { // genereren van eindlocatie monster tween randomSide = Math.round(Math.random()*3+0); switch (Number(randomSide)) { case Number(0) : x = Number(-150); y = Math.round(Math.random()*670+0); break; case Number(1) : x = Number(820); y = Math.round(Math.random()*670+0); break; case Number(2) : x = Math.round(Math.random()*820+0); y = Number(-150); break; case Number(3) : x = Math.round(Math.random()*820+0); y = Number(670); break; } // monster dupliceren _root.en_mc.duplicateMovieClip("en_mc"+i,_root.getNextHighestDepth()); // functie per monster, dit werkt dus niet! eval("this.en_mc"+i).en_btn.onPress = function() { eval("en_mc"+i).unloadMovie(); stats.score_txt.text = Number(stats.score_txt.text)+1; }; // tweenen met LMCtween eval("en_mc"+i).tween(["_xscale", "_yscale", "_x", "_y"],[100, 100, x, y],3,customEasing); // i ophogen i++; } // interval functie waardoor het eigenlijk een loop word. ID = setInterval(createEnemy, 500); |
De code staat op een aparte action laag. Volgens mij is het probleem dat als ik op een monster klik er alweer een nieuwe monster is en dat de variabele i dus is opgehoogt. Vreemde is dat de functie wel altijd werkt en dat stats.score_txt.text altijd word opgehoogd. Ik heb al geprobeerd om een button te maken met daarin een movieclip, door die movieclip te dupliceren hoopte ik maar 1 functie nodig te hebben. Werkt alleen niet
Ik hoop dat ik een beetje duidelijk ben geweest en dat ieman de oplossing weet
FLA FILE