Volledige versie bekijken : Elke Seconde een nieuwe MovieClip
tweetixz
%Europe/Berlin %552 %2009, 14:16
Hey,
Ik ben bezig met een Spelletje.
Aleen nu zit ik ergens mee vast.
Ik wil dat om de zoveel tijd er een movieclip wordt aangemaakt.
Nu heb ik dit:
var SmokeSpeed:Number = 5;
//
sStart = 0;
sGo = 3;
this.onEnterFrame = function() {
MakeSmoke();
};
function MakeSmoke():Void {
if (sStart<sGo) {
sStart++;
} else {
sStart = 0;
this.createEmptyMovieClip('Rook_Smoke', 0);
Rook_Smoke.attachMovie('Rook', 'Rook', 0);
Rook_Smoke._x = 275;
Rook_Smoke._y = 200;
}
_root.onEnterFrame = function() {
Rook_Smoke._x -= SmokeSpeed
};
}
Maar nu wilt hij niks maken.
Of laten bewegen.
Ik heb het ook hiermee geprobeerd:
var SmokeSpeed:Number = 5;
this.onEnterFrame = function() {
MakeSmoke();
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke', 0);
Rook_Smoke.attachMovie('Rook', 'Rook', 0);
Rook_Smoke._x = 275;
Rook_Smoke._y = 200;
_root.onEnterFrame = function() {
Rook_Smoke._x -= SmokeSpeed;
};
}
Maar dan gaat hij de hele tijd van 275 naar 265 en dan naar 275 en dan zo verder.
Weet iemand hoe ik dat kan doen zodat hij niet die hele tijd dat doet maar 275, 265, 255, 245, 235, 225, 215, etc.?
DJdieter
%Europe/Berlin %562 %2009, 14:30
hallo,
'k denk dat ik zie wat je fout doet
je maakt nl. telkens een movieclip aan met dezelfde naam (Rook_Smoke);
dus dan doet het script dit:
Rook_Smoke op 275 _x
Rook_Smoke 5 omhoog
Rook_Smoke op 275 _x
Rook_Smoke 5 omhoog
dus springt je mc heen en weer
dit kan je vermijden door er een index aan toe te voegen aan de naam van je MovieClip
je script word dan zoiets :
var SmokeSpeed:Number = 5;
var i = 1;
this.onEnterFrame = function() {
MakeSmoke();
i++;
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke'+i, i);
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
Rook_Smoke[i].attachMovie('Rook', 'Rook', 0);
Rook_Smoke[i]._x = 275;
Rook_Smoke[i]._y = 200;
_root.onEnterFrame = function() {
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
for (j=0; j<=i; j++) {
Rook_Smoke[j]._x -= SmokeSpeed;
}
};
}
'k hoop dat ik duidelijk was en dat het nu werkt :-)
grtz djdieter
Jan
%Europe/Berlin %652 %2009, 16:40
Je overschrijft de onEnterFrame functie elke keer. :S
Je kan maar 1 onEnterFrame per movieclip (_root of this daar is ook een movieclip) hebben.
Koppel die andere onEnterFrame desnoods aan een lege movieclip.
En zoals instance names en depths moeten uniek zijn voor elke movieclip instance!
Groeten;
Jan
DJdieter
%Europe/Berlin %678 %2009, 17:17
@adnez:
je bedoelt zoiets:
var SmokeSpeed:Number = 5;
var i = 1;
this.onEnterFrame = function() {
MakeSmoke();
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
for (j=0; j<=i; j++) {
Rook_Smoke[j]._x -= SmokeSpeed;
}
i++;
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke'+i, i);
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
Rook_Smoke[i].attachMovie('Rook', 'Rook', 0);
Rook_Smoke[i]._x = 275;
Rook_Smoke[i]._y = 200;
}
voor mij leek dit eigenlijk ook veel logischer
maar 'k was enkel naar die attachMovie aan't kijken
grtz Djdieter
tweetixz
%Europe/Berlin %884 %2009, 22:13
@adnez:
je bedoelt zoiets:
var SmokeSpeed:Number = 5;
var i = 1;
this.onEnterFrame = function() {
MakeSmoke();
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
for (j=0; j<=i; j++) {
Rook_Smoke[j]._x -= SmokeSpeed;
}
i++;
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke'+i, i);
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
Rook_Smoke[i].attachMovie('Rook', 'Rook', 0);
Rook_Smoke[i]._x = 275;
Rook_Smoke[i]._y = 200;
}
voor mij leek dit eigenlijk ook veel logischer
maar 'k was enkel naar die attachMovie aan't kijken
grtz Djdieter
Ze willen het allbei niet bij me doen.
Ik zie geen enkel movieclip.
tweetixz
%Europe/Berlin %905 %2009, 22:43
Ze willen het allbei niet bij me doen.
Ik zie geen enkel movieclip.
@adnez:
je bedoelt zoiets:
var SmokeSpeed:Number = 5;
var i = 1;
this.onEnterFrame = function() {
MakeSmoke();
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
for (j=0; j<=i; j++) {
Rook_Smoke[j]._x -= SmokeSpeed;
}
i++;
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke'+i, i);
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
Rook_Smoke[i].attachMovie('Rook', 'Rook', 0);
Rook_Smoke[i]._x = 275;
Rook_Smoke[i]._y = 200;
}
voor mij leek dit eigenlijk ook veel logischer
maar 'k was enkel naar die attachMovie aan't kijken
grtz Djdieter
Ze willen het allbei niet bij me doen.
Ik zie geen enkel movieclip.
Ik heb jouw as aangepast bijv: var i=1 dat kan niet het is of
var i:Number = 1
pf i=1
En nu heb ik ervan:
var SmokeSpeed:Number = 5;
var Speed:Number = 10;
i = 1;
sStart = 0;
sGo = 2;
this.onEnterFrame = function() {
if (Key.isDown(Key.UP)) {
player._y -= 10;
}
if (Key.isDown(Key.DOWN)) {
player._y += 10;
}
MakeSmoke();
for (j=0; j<=i; j++) {
_root['Rook'+j]._x -= SmokeSpeed;
}
i++;
};
function MakeSmoke():Void {
if (sStart<sGo) {
sStart++;
} else {
sStart = 0;
player.getNextHighestDepth();
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
attachMovie('Rook', 'Rook'+i, i);
_root['Rook'+i]._x = 275;
_root['Rook'+i]._y = player._y;
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
}
}
Jan
%Europe/Berlin %907 %2009, 22:46
Gebruik eens de trace() aub...
var SmokeSpeed:Number = 5;
var i = 1;
this.onEnterFrame = function() {
MakeSmoke();
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
for (j=0; j<=i; j++) {
trace(Rook_Smoke[j]);
Rook_Smoke[j]._x -= SmokeSpeed;
trace(i);
}
i++;
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke'+i, i);
trace(Rook_Smoke[i]);
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
Rook_Smoke[i].attachMovie('Rook', 'Rook', 0);
Rook_Smoke[i]._x = 275;
Rook_Smoke[i]._y = 200;
}
En zoals ik eerder al zei:
instance names en depths moeten uniek zijn voor elke movieclip instance!
Eerlijk gezegd klopt er haast niks in heel je script. Misschien is het nuttig om de basisprincipes van actionscript te leren voordat je een game maakt.
Hier vind je een hele reeks tutorials:
http://www.flashfocus.nl/forum/showthread.php?t=6338
Groeten;
Jan
tweetixz
%Europe/Berlin %818 %2009, 20:38
Gebruik eens de trace() aub...
var SmokeSpeed:Number = 5;
var i = 1;
this.onEnterFrame = function() {
MakeSmoke();
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
for (j=0; j<=i; j++) {
trace(Rook_Smoke[j]);
Rook_Smoke[j]._x -= SmokeSpeed;
trace(i);
}
i++;
};
function MakeSmoke():Void {
this.createEmptyMovieClip('Rook_Smoke'+i, i);
trace(Rook_Smoke[i]);
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
Rook_Smoke[i].attachMovie('Rook', 'Rook', 0);
Rook_Smoke[i]._x = 275;
Rook_Smoke[i]._y = 200;
}
En zoals ik eerder al zei:
Eerlijk gezegd klopt er haast niks in heel je script. Misschien is het nuttig om de basisprincipes van actionscript te leren voordat je een game maakt.
Hier vind je een hele reeks tutorials:
http://www.flashfocus.nl/forum/showthread.php?t=6338
Groeten;
Jan
Dat hoeft niet meer ik heb nu:
var SmokeSpeed:Number = 5;
var Speed:Number = 10;
i = 1;
sStart = 0;
sGo = 2;
this.onEnterFrame = function() {
if (Key.isDown(Key.UP)) {
player._y -= 10;
}
if (Key.isDown(Key.DOWN)) {
player._y += 10;
}
MakeSmoke();
for (j=0; j<=i; j++) {
_root['Rook'+j]._x -= SmokeSpeed;
}
i++;
};
function MakeSmoke():Void {
if (sStart<sGo) {
sStart++;
} else {
sStart = 0;
player.getNextHighestDepth();
// op dezelfde depth zetten is nooit een goed ID dus depth= i
//nu dus krijg je Rook_Smoke1 , Rook_Smoke2, Rook_Smoke3, ...
attachMovie('Rook', 'Rook'+i, i);
_root['Rook'+i]._x = 275;
_root['Rook'+i]._y = player._y;
// hier moet je dan een for-lus gebruiken om ze allemaal te verplaatsen
}
}
En nu heb ik nog een vraag.
Ik heb nu ook dat ze de rook dingen verwijderen.
Nu heb ik daarvoro dit:
stop();
u = i;
this.onEnterFrame = function() {
_root['Rook'+u].removeMovieClip();
u--
};
Dit werkt goed.
Maar is het mogelijk om ze allemaal tegelijk weg te krijgen?
Zo ja hoe?
Jan
%Europe/Berlin %867 %2009, 21:49
Maar is het mogelijk om ze allemaal tegelijk weg te krijgen?
Zo ja hoe?
Ja, gebruik een for loop en overloop ze allemaal en doe removeMovieClip en op het einde van de for loop zijn ze allemaal weg.
Groeten;
Jan
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.