Actionscript 3 在actionscript 3中动态创建对象?

Actionscript 3 在actionscript 3中动态创建对象?,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我是AS3的新手,我一直在尝试制作一个侧滚射击游戏。我取得了一些进步,但我的子弹本身就碰上了墙。我一直在使用的代码是: var circle:Sprite = new Sprite(); function shoot() { circle.graphics.beginFill(0xFF794B); circle.graphics.drawCircle(0, 00, 7.5); circle.graphics.endFill(); addChild(circle); circ

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

问题是它一次只能在屏幕上显示一个项目符号。如何更改此选项,以便创建项目符号,以便可以无限量地使用这些项目符号?

在方法内创建对象

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; 
}
否则,您将只有一个
变量。这一次,每次调用该方法时都会创建一个新的圆

但是,您可能希望以某种方式存储所有圆圈,以便以后删除它们

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) {
    removeChild(circle);
}
allCircles.clear();

您需要存储一个
Sprite
s数组,而不仅仅是其中一个。首先声明
数组

var circles:Array = new 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]);
}
然后更改shot函数以创建一个新函数,然后将其推入
数组中

var circles:Array = new 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]);
}

但是,如果不通过
阶段
的孩子访问这些圈,他就无法与这些圈进行互动。原始问题中没有提到删除它们:)但你是对的。@user2034148那么请接受我的回答。如果你不知道怎么做,请阅读我更喜欢向量优先于数组。还有,为什么不
addChild(圆圈)?为什么要采用数组的最后一个索引使事情复杂化?但是数组/向量的概念很好。请不要忘记接受答案。而且,当你有更高的声誉时,投票选出一个或多个答案。