Volledige versie bekijken : Mx2004> Array probleem
nahkranoth
%Europe/Berlin %557 %2005, 14:22
Ik ben bezig met een spel en daarin een level editor.
Nu wil ik dat je ook dingen kan deleten nadat je ze hebt gemaakt maar bij het maken schrijft hij het object in een array om te gebruiken bij hittest.
Maar bij het deleten wil ik hem ook uit de array deleten maar daar gaat iets fout..
Hij kan hem wel deleten maar als ik zegmaar het 5de object weghaal uit de array dan haalt hij de 6de en 7de etc ook weg. terwijl als ik 3 objecten heb en ik haal de 2de weg dan laat hij de 3de gewoon staan.
Wie kan me helpen.. de objecten worden steen-0,steen-1 etc genoemd
this.onEnterFrame = function() {
trace(_root.objecten)
if (this.hitTest(_root.delbtn)) {
naame = String(this);
naam = naame.split("-");
nummer = naam[1];
nummera = Number(nummer);
_root.objecten.splice(nummera-1,nummera-1);
this.removeMovieClip();
}
};
The_One
%Europe/Berlin %999 %2005, 00:58
hoi,
In mijn help staat dit:
splice(startIndex:Number, [deleteCount:Number], [value:Object]) : Array
Adds elements to and removes elements from an array. This method modifies the array without making a copy.
Availability: ActionScript 1.0; Flash Player 5
Parameters
startIndex:Number - An integer that specifies the index of the element in the array where the insertion or deletion begins. You can specify a negative integer to specify a position relative to the end of the array (for example, -1 is the last element of the array).
deleteCount:Number [optional] - An integer that specifies the number of elements to be deleted. This number includes the element specified in the startIndex parameter. If no value is specified for the deleteCount parameter, the method deletes all of the values from the startIndex element to the last element in the array. If the value is 0, no elements are deleted.
value:Object [optional] - Specifies the values to insert into the array at the insertion point specified in the startIndex parameter.
:O = : O zonder spatie :)
Dus probeer dit eens:
this.onEnterFrame = function() {
trace(_root.objecten)
if (this.hitTest(_root.delbtn)) {
naame = String(this);
naam = naame.split("-");
nummer = naam[1];
nummera = Number(nummer);
_root.objecten.splice(nummera-1,1);
this.removeMovieClip();
}
};
SaphuA
%Europe/Berlin %302 %2005, 08:16
Hehe.. goed opletten dus ;)
Er is een verschil tussen 'splice', en 'slice'
nahkranoth
%Europe/Berlin %354 %2005, 09:30
Het werkte al wel beter maar nog niet optimaal...
maar toen heb ik er
_root.objecten.splice(nummera-1,0); van gemaakt en nu lijkt hij het te doen..
Alleen als ik de array trace krijg ik zegmaar (object1,,,,,,object6,object7)
Is het een probleem dat hij die comma's gewoon laat staan?
<edit>hmm.. het werkt nog steeds niet... </edit>
nahkranoth
%Europe/Berlin %536 %2005, 13:51
ik heb hem aangepast en op een andere manier gedaan.. en nu werkt hij perfect
in iedergeval bedankt! en voor een sneak preview ;) tjek: http://joey.jong-ontwerpers.nl/spacezjip.swf
The_One
%Europe/Berlin %562 %2005, 14:29
Kan je je oplossing hiero posten?:)
Dan leren andere mensen er ook weer van :)
nahkranoth
%Europe/Berlin %584 %2005, 15:02
Ik had eerst als je een nieuw object maakte dat hij zijn eigen naam in een array erbij schreef zodat ik later doormiddel van een for loop kon tjekken of de ufo een object aanraakte.. dit werkte opzich goed tot ik ook een optie wou invoegen om de objecten weer weg te halen. Het lukte me niet om zichzelf weer uit de array te verweideren.
Toen heb ik het op een andere manier aangepakt.. ik heb de array weggegooid en ervoor gezorgt dat hij gewoon de naam met een cijfer erachter checkde met een hittest.
dus inplaats van
for (i=0;i<amount;i++){
if this.hitTest(objecten[i])){
}
}
is het
for (i=0;i<amount;i++){
object = _root["object"+i]
if object.hitTest(schip)){
}
}
uiteindelijk lijkt het spel er ook iets sneller op te zijn geworden.. maar het enige nadeel aan deze methode vergeleken met de array methoden is dat als jij een object weer weghaalt hij wel blijft zoeken naar een hittest met dat object
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.