Volledige versie bekijken : meerdere hittests
peres
%Europe/Berlin %497 %2005, 12:57
Hey flashers,
Ik heb een code op een MC voor hittest:
onClipEvent (enterFrame) {
if (this.hitTest(_root.MC1)) {
if(!hit){
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
}
} else {
hit = false;
}
}
nou is "MC1" de obstakel. alleen ik heb meerdere obstakels("MC2","MC3" etc) . Hoe kan ik deze hierin verwerken? of moet ik de hele code copieren en nog een keer neerzetten?
Dauntless
%Europe/Berlin %499 %2005, 12:59
onClipEvent (enterFrame) {
for(var i = 0; i<10; i++){
if (this.hitTest(_root["MC"+i])) {
if(!hit){
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
}
} else {
hit = false;
}
}
}
peres
%Europe/Berlin %517 %2005, 13:24
waar staat de ["MC"+i] eigenlijk voor? want hij doet nog niet :(
kan het ook zoiets als: [MC1+MC2+MC3] ?
Dauntless
%Europe/Berlin %521 %2005, 13:30
Sorry, stond een foutje in :). (IS verbeterd).
En: http://flashfocus.nl/forum/showthread.php?t=1701
Flasher
%Europe/Berlin %521 %2005, 13:31
Deze code zet je op het frame (mijnMc is de instancenaam van je movieclip)
var aantalMCs:Number = 10;
var hit:Boolean = false;
mijnMc.onEnterFrame = function() {
var oldHit:Boolean = hit
hit = false;
for(var i = 0; i<aantalMCs; i++){
if (this.hitTest(_root["MC"+i]) && !hit) {
hit = true; /*als hij een van de mcs raakt is hit true en stopt hij met de loop*/
break;
}
}
if(!oldHit && hit) { //als de hit eerst false was en nu true..
_root.hp.text = Number(_root.hp.text)-20; //gaat er 20 van af
}
}
peres
%Europe/Berlin %531 %2005, 13:45
maar als ik het goed begrijp is het nou MC + (getal). deze namen (MC1, MC2, etc) gebruik ik nog in mijn testfla. maar in mijn spelletje heb ik hele andere namen. om zo maar een paar te noemen:
_root.vijanden.mineMC
_root.vijanden2.sharkMC
_root.vijanden3.boxMC
dan werkt die code niet toch? hoe kan ik deze mc's toch in de AS proppen?
Dauntless
%Europe/Berlin %532 %2005, 13:47
var movieClips = new Array();//hier zet je al je movieclips in
var hit:Boolean = false;
mijnMc.onEnterFrame = function() {
var oldHit:Boolean = hit
hit = false;
for(var i = 0; i<movieClips.length; i++){
if (this.hitTest(movieClips[i]) && !hit) {
hit = true; /*als hij een van de mcs raakt is hit true en stopt hij met de loop*/
break;
}
}
if(!oldHit && hit) { //als de hit eerst false was en nu true..
_root.hp.text = Number(_root.hp.text)-20; //gaat er 20 van af
}
}
peres
%Europe/Berlin %537 %2005, 13:53
var movieClips = new Array();//hier zet je al je movieclips in
hoe moet ik hier m'n movieclips in zetten? :I sorry als ik domme vragen stel
ik heb dit al geprobeerd, maar zonder succes...
var movieClips = new Array(_root.vijanden.mineMC, _root.vijanden2.sharkMC, _root.vijanden3.boxMC);
peres
%Europe/Berlin %583 %2005, 14:59
zou het niet misschien met een else if kunnen in de eerste AS?
ik heb d'r wel iets over gelezen maar ik kom er niet uit.
onClipEvent (enterFrame) {
if (this.hitTest(_root._root.vijanden.mineMC)) {
if(!hit){
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
if (_root.hp.text == 0) {
_root.MC5.gotoAndPlay(4);
}
}
} else if (this.hitTest_root.vijanden2.sharkMC)) {
if(!hit){
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
if (_root.hp.text == 0) {
_root.MC5.gotoAndPlay(4);
}
}
} else {
hit = false;
}
}
alleen hier klopt iets echt niet :( weet iemand het probleem? of zit ik er helemaal naast en moet ik dit niet zo gebruiken?
peres
%Europe/Berlin %615 %2005, 15:46
ah sorry de AS code van jullie werkt wel, ik had blijkbaar iets fout gedaan. in mijn testfla heb ik nu deze code:
var movieClips = new Array(_root.MC3.MC4, _root.MCMC);
var hit:Boolean = false;
MC2.onEnterFrame = function() {
var oldHit:Boolean = hit
hit = false;
for(var i = 0; i<movieClips.length; i++){
if (this.hitTest(movieClips[i]) && !hit) {
_root.hp.text = Number(_root.hp.text)-20;
hit = true;
}
}
if(!oldHit && hit) {
_root.hp.text = Number(_root.hp.text)-20;
}
}
alleen nou krijg ik een probleem wat ik bij de oude code niet had; als ik op de obstakels blijf staan, gaat er telkens elke seconde zovaak -20 van de _root.hp.text af. hoe kan ik dit in dit script tegen gaan. dus dat de er maar 1x -20 vanaf gaat als ik bots?
Dauntless
%Europe/Berlin %617 %2005, 15:49
5de regeltje weghalen.
peres
%Europe/Berlin %620 %2005, 15:53
maar als ik dan "bots" met één van de MC's, gaat er in één keer -40 vanaf. en daarna lijkt de functie niet eens meer te werken. dan kan ik botsen wat ik wil, hij doet niks meer. er gaat niks meer vanaf :(
peres
%Europe/Berlin %648 %2005, 16:34
misschien is het duidelijker als ik mijn testfla post. hier is ie:
FLA (http://members.chello.nl/r.stultiens/hitpoint4.fla)
Dauntless
%Europe/Berlin %692 %2005, 17:36
var movieClips = new Array(_root.MC3.MC4, _root.MCMC);
var hit:Boolean = false;
MC2.onEnterFrame = function() {
var oldHit:Boolean = hit
hit = false;
for(var i = 0; i<movieClips.length; i++){
if (this.hitTest(movieClips[i]) && !hit){
hit = true;
}
}
if(!oldHit && hit) {
_root.hp.text = Number(_root.hp.text)-20;
}
}
peres
%Europe/Berlin %781 %2005, 19:44
hij werkt perfect! :D echt heel erg bedankt :)
Dauntless
%Europe/Berlin %947 %2005, 23:43
Graag gedaan :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.