help with attachMovie
need a little help with attaching movie clip
working on a little game where you plant bombs when pressing spacebar
here is the code
Code:
if (Key.isDown(Key.SPACE)) {
i++;
var newname = "bomb"+i;
attachMovie("bomb", "bomb"+i, this.getNextHighestDepth());
_root[newname]._y = _root.hero._y;
_root[newname]._x = _root.hero._x;
_root[newname].onEnterFrame = function() {
this works fine just one problem, the newly attached movieclip now follows the character movieclip... how can i stop this, but still have the bomb place in the characters position?
also is there away i can make it attack a limited amount of bombs
please help
thank you
The one that smiles when things go wrong, Has thought of someone to blame it on
Removed all codes from clips, placed code below in first frame main timeline
Removed variable from textfield and gave it an instance name of 'txt'.
Removed 'add bomb' button, added code for space bar.
Make sure when you test it, that you disable keyboard shortcuts.
Code:
var bomb = 5;
var armed = false;
var bombs = [];
var mc = null;
var keyListener = new Object();
hero.power = 4;
txt.text = bomb;
function makeBomb() {
if (bomb > 0) {
bomb -= 1;
txt.text = bomb;
mc = attachMovie("bomb", "bomb" + this.getNextHighestDepth(), this.getNextHighestDepth());
mc._y = hero._y;
mc._x = hero._x;
mc.damage = false;
bombs.push(mc);
} else if (bomb <= 0) {
trace("out of bombs");
}
}
keyListener.onKeyDown = function() {
if (Key.isDown(Key.SPACE) && armed == false) {
armed = true;
makeBomb();
}
};
keyListener.onKeyUp = function() {
if (Key.getCode() == Key.SPACE) {
armed = false;
}
};
function doUpDate() {
if (Key.isDown(Key.LEFT)) {
hero._x -= hero.power;
} else if (Key.isDown(Key.RIGHT)) {
hero._x += hero.power;
} else if (Key.isDown(Key.UP)) {
hero._y -= hero.power;
} else if (Key.isDown(Key.DOWN)) {
hero._y += hero.power;
}
for (var i in bombs) {
mc = bombs[i];
if (mc._currentframe == mc._totalframes) {
mc = bombs.splice(i, 1);
removeMovieClip(mc);
break;
} else if (mc._currentframe >= 14 && mc.damage == false) {
if (hero.hitTest(mc._x, mc._y, true)) {
mc.damage = true;
trace("hit");
}
}
}
}
Key.addListener(keyListener);
hero.onEnterFrame = doUpDate;
HTH
thanks a million, works just how i wanted it.. cheers!!!
The one that smiles when things go wrong, Has thought of someone to blame it on
Using distance instead of hit test...
Code:
function doUpDate() {
if (Key.isDown(Key.LEFT)) {
hero._x -= hero.power;
} else if (Key.isDown(Key.RIGHT)) {
hero._x += hero.power;
} else if (Key.isDown(Key.UP)) {
hero._y -= hero.power;
} else if (Key.isDown(Key.DOWN)) {
hero._y += hero.power;
}
for (var i in bombs) {
mc = bombs[i];
if (mc._currentframe == mc._totalframes) {
mc = bombs.splice(i, 1);
removeMovieClip(mc);
break;
} else if (mc._currentframe >= 14 && mc.damage == false) {
if (getMDistance(hero, mc)< 60) {
mc.damage = true;
trace("hit");
}
}
}
}
function getMDistance(p1, p2):Number {
return Math.abs(p1._x - p2._x) + Math.abs(p1._y - p2._y);
}
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Click Here to Expand Forum to Full Width