[英]Adding ID to a new created object as3
我有一個問題,我創建了一個新孩子,一個圓圈,但是我不知道如何給它提供一個ID,因此即使我移動它,我也可以隨時訪問它,問題是我的函數new_sond創建了多個對象,所以我想在功能中為它們提供ID,例如對於1對象“ 1”為第二個“ 2”,依此類推,我不知道該怎么做,我嘗試搜索但沒有找到任何東西,由於我創建了更多具有相同名稱的對象,因此trace(name)不會有用。
這是創建對象的代碼:
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,以便即使移動對象也可以對其進行檢查。 非常感謝你 !!!!
您可以在Sprite類上設置name
屬性。 此屬性繼承自DIsplayObject類 。 這是文檔中屬性的摘要。
該屬性是一個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”字段,無論您追求什么目的。
或者,您可以將對象放置在數組中,並依靠它們的位置作為ID。
我只是偶然發現了這個問題,並認為有必要指出AS3還有一個內置實用程序,用於為對象生成唯一名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.