Actionscript 3 在actionscript 3中动态创建对象?
我是AS3的新手,我一直在尝试制作一个侧滚射击游戏。我取得了一些进步,但我的子弹本身就碰上了墙。我一直在使用的代码是: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
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(圆圈)代码>?为什么要采用数组的最后一个索引使事情复杂化?但是数组/向量的概念很好。请不要忘记接受答案。而且,当你有更高的声誉时,投票选出一个或多个答案。