我是AS3的新手,我一直试图制作一个侧面滚动射击游戏。我取得了一些进展但是我已经在子弹上打了一堵墙。我一直在使用的代码是:
var circle:Sprite = new Sprite();
function shoot() {
circle.graphics.beginFill(0xFF794B);
circle.graphics.drawCircle(0, 00, 7.5);
circle.graphics.endFill();
addChild(circle);
circle.x = ship_mc.x;
circle.y = ship_mc.y + 43;
}
这个问题是它一次只允许屏幕上有一颗子弹。如何改变这一点,以便创建子弹,以便我可以拥有无限量的子弹?
答案 0 :(得分:2)
在方法
中创建对象function shoot() {
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFF794B);
circle.graphics.drawCircle(0, 00, 7.5);
circle.graphics.endFill();
addChild(circle);
circle.x = ship_mc.x;
circle.y = ship_mc.y + 43;
}
否则,您只有一个circle
变量。这次,每次调用方法时都会创建一个新圆圈。
但是,您可能希望以某种方式存储所有圈子,以便以后删除它们。
var allCircles: Vector.<Sprite> = new Vector.<Sprite>();
function shoot() {
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFF794B);
circle.graphics.drawCircle(0, 00, 7.5);
circle.graphics.endFill();
addChild(circle);
circle.x = ship_mc.x;
circle.y = ship_mc.y + 43;
allCircles.push(circle);
}
然后,稍后您可以遍历所有圈子:
for each (var circle: Sprite in allCircles) {
// do something with this circle
}
清除所有圈子:
for each (var circle: Sprite in allCircles) {
removeChild(circle);
}
allCircles.clear();
答案 1 :(得分:0)
您希望存储Sprite
的数组,而不仅仅是其中之一。首先,您声明Array
:
var circles:Array = new Array();
然后你改变你的拍摄功能来制作一个新功能,然后将其推入Array
:
function shoot() {
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFF794B);
circle.graphics.drawCircle(0, 00, 7.5);
circle.graphics.endFill();
circle.x = ship_mc.x;
circle.y = ship_mc.y + 43;
circles.push(circle);
addChild(circles[circles.length-1]);
}