我有一个as3的问题。如何从数组中删除精灵
var object:Object;
var objectArray:Array;
var objectSprite:Sprite;
for(...) {
objectArray.push(object);
}
for(...) {
objectSprite.graphics.drawCircle(objectArray.x, objectArray.y,objectArray.radius);
addChild(objectSprite);
}
if(3 > 2) {
objectArray.splice(object, 1);
// how can i remove screen the object sprite and object from array
}
答案 0 :(得分:0)
查看手册中的 Array.splice 用法。 x,y
其中objectArray.splice( xyz, 1);
是从开始的条目数。为什么要放xyz
而不是数字?
在您的第二个for循环中,您可以在制作drawCircle代码之前尝试object
,以便每个都是新的并且具有唯一名称。也许这会解决你的“他们都被删除”的问题。要删除,您可以执行以下操作:objectSprite = new Sprite;
如何制作你的For-Loop的例子......
removeChild( container.getChildByName(someName4) );
至于删除尝试下面的东西..
var container : Sprite = new Sprite; //one container for ALL objects
addChild( container); // add to stage
for ( j = 0; j < 10; j++)
{
objectSprite = new Sprite; //make a new unique one
objectSprite.name = "myName" + String( j );
objectSprite.graphics.drawCircle(objectArray.x, objectArray.y,objectArray.radius);
container.addChild(objectSprite); //add into container
trace ("new objectSprite - Name is : " + objectSprite.name);
}
PS:代码在Flash中未经过测试,但可以让您了解如何进行此操作。如果你遇到错误,请停止 - 思考 - 修复它们。
我对这句话感到困惑:
if(3 > 2)
{
//# Check name to be sure you are removing right one...
//# yourNum is order you added (1st= 0, 2nd= 1, 3rd= 2, etc)
trace ( "Object to remove is : " + objectArray[ yourNum ].name );
//# How can i remove from screen (stage??) the object sprite
//# yourName example is : "someName4"
container.removeChild( container.getChildByName("yourName") );
//# And remove object from array?
objectArray.splice( yourNum, 1);
}
。
数组只是“项目组”的概念,所以这个列表如何具有 x , y 甚至 radius ?等等,别告诉我。不知怎的,它对你有用,所以我会停在那里..