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

标签 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);
  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; 
}

否则,您将只有一个 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();

关于actionscript-3 - 在 actionscript 3 中动态创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656496/

相关文章:

apache-flex - Flex 中的 UI 组件生命周期

actionscript-3 - 共享对象位置

c++ - 将 Actionscript 移植到 C++ 中 - 是否有人创建了关于此类主题的任何说明?

apache-flex - 创建对对象的弱引用

javascript - actionscript p2p - 聊天如何创建多个连接并向所有/任何连接发送消息

actionscript-3 - 在 ActionScript 3 中获取服务器安全时间戳

flash - 使用 ActionScript 3 将鼠标事件监听器添加到位图

java - 可以让内网用户通过浏览器截取当前页面吗?

flash - AS3 - 如何从基于文本的文件导入变量?

flash - 如何从所有关键帧调整闪光对象