我有多个具有相同效果的变量,并且不需要再次写入5次。
如何将所有这些变量合并为一个?
我们说我有block0,block1,block3
我希望他们都能做同样的事情,这样我就不需要多次写它了?
例如:
if hittest wall
{
block0.x -= 5;
block1.x -= 5;
block2.x -= 5;
}
我想要的是什么:
if hittest wall
{
blocksack.x -= 5;
}
答案 0 :(得分:1)
看起来这些都是DisplayObject
s。
要对DisplayObject
进行分组,请将其添加到DisplayObjectContainer
:
var blockContainer:Sprite = new Sprite();
blockContainer.addChild(block0);
blockContainer.addChild(block1);
blockContainer.addChild(block2);
addChild(blockContainer);
现在你可以通过移动容器来移动所有容器:
blockContainer.x -= 5;
您的代码还有另一个问题。看起来您在末尾使用带有数字的变量名来区分它们。这是一个不好的做法。
拥有所有这些变量是您的实际问题。
它们应该从头开始分组。由于您显然是手工放置块,因此一个简单的解决方案就是使用容器。
将所有块放在空容器中,而不给它们实例名称。
然后使用DisplayObjectContainer
的方法,即numChildren
和getChildAt()
将其所有子项放入数组中。然后,您可以迭代数组以根据需要对其所有元素应用某些操作,但同样,为了更改.x
属性,只需移动容器即可。
答案 1 :(得分:0)
您可以编写一个单独的函数,而不是为每个对象执行移动。例如
private function moveAllBlocks(dist:Number):void {
block0.x -= dist;
block1.x -= dist;
block2.x -= dist;
}
然后你可以通过调用
从任何地方调用该函数moveAllBlocks(5);