3

我对 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; 
}

这样做的问题是它一次只允许在屏幕上显示一个子弹。如何更改此设置以便创建项目符号以便我可以拥有无​​限数量的项目符号?

4

2 回答 2

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();
于 2013-02-01T23:02:16.360 回答
0

您想存储一个Sprites 数组,而不仅仅是其中一个。首先你声明你的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]);
}
于 2013-02-01T23:03:26.697 回答