我有一个问题,我创建了一个新的孩子,一个圆圈,但我不知道我怎么能给它一个ID,所以我可以随时访问它,即使我移动它,问题是我的功能new_sond创建超过1个对象,所以我想给它们在函数中的ID,例如对于第2个“2”的1对象“1”等等,我不知道怎么做,我试图搜索但是没有找到任何东西,跟踪(名称)不会有用,因为我创建了更多具有相同名称的对象...
这是创建对象的代码:
function new_sond(event:MouseEvent):void
{
if (i<9)
{
i++;
id[i]=i;
var btn:Sprite = new Sprite();
btn.graphics.beginFill(0x0066FF, 1);
btn.graphics.drawCircle(400, 300, 25);
btn.graphics.endFill();
var textField = new TextField();
textField.mouseEnabled=false;
textField.text = i;
textField.width = 10;
textField.height = 17;
textField.x = 395; // center it horizontally
textField.y = 292; // center it vertically
cx[i]=textField.x;
cy[i]=textField.y;
btn.addChild(textField);
this.addChild(btn);
}
}
这是移动对象的代码:
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownH);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpH);
function mouseDownH(evt:MouseEvent):void {
var object = evt.target;
object.startDrag();
}
function mouseUpH(evt:MouseEvent):void {
var obj = evt.target;
obj.stopDrag();
}
问题是如何为每个创建的对象提供ID,以便即使我移动对象也可以检查它。 非常感谢!!!!
答案 0 :(得分:2)
您可以在Sprite class上设置name
属性。此属性继承自DIsplayObject class。以下是文档中的属性摘要。
该属性是一个String,您可以在DisplayObject中的setter / getter实现中设置或检索它:
public function get name():String
public function set name(value:String):void
此属性是ActionScript 3.0的一部分,在从AIR 1.0,Flash Player 9,Flash Lite 4开始的运行时版本中可用(这意味着它也可以在更高版本中使用)。
虽然可以抛出IllegalOperationError
。如果您尝试通过Flash创作工具在放置在时间轴上的对象上设置属性,则会抛出此内容。
以下是DisplayObject#name
属性文档中给出的示例。该示例创建了两个Sprite对象,并在单击它们时跟踪它们的名称。
import flash.display.Sprite;
import flash.events.MouseEvent;
var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFF0000);
circle1.graphics.drawCircle(40, 40, 40);
circle1.name = "circle1";
addChild(circle1);
circle1.addEventListener(MouseEvent.CLICK, traceName);
var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x0000FF);
circle2.graphics.drawCircle(140, 40, 40);
circle2.name = "circle2";
addChild(circle2);
circle2.addEventListener(MouseEvent.CLICK, traceName);
function traceName(event:MouseEvent):void {
trace(event.target.name);
}
如果这对您不起作用,您可以随时创建自己的类,该类是Sprite的子类,并添加您自己的属性以跟踪“id”字段,无论您寻求什么目的。
答案 1 :(得分:0)
或者你可以把你的对象放在一个数组中,并依赖它们的数组位置作为Id。
答案 2 :(得分:0)
我只是偶然发现了这个问题并认为有必要指出AS3还有一个用于为对象生成唯一名称的内置实用程序