0
有沒有一種方法可以直接從屬性/組件參數窗口將對象引用傳遞給組件?使用[Inspectible]標籤只允許我輸入字符串,而不是實際的對象引用。從屬性窗口向組件添加對象引用
例如,我有一個名爲「旋鈕」的自定義組件,它應該在其打開的舞臺上存放對門的引用。我知道這可以用「knob.door = someDoor;」的代碼很容易地完成。但是由於場景中有很多對象,我寧願我可以通過屬性窗口直觀地進行操作。
有沒有一種方法可以直接從屬性/組件參數窗口將對象引用傳遞給組件?使用[Inspectible]標籤只允許我輸入字符串,而不是實際的對象引用。從屬性窗口向組件添加對象引用
例如,我有一個名爲「旋鈕」的自定義組件,它應該在其打開的舞臺上存放對門的引用。我知道這可以用「knob.door = someDoor;」的代碼很容易地完成。但是由於場景中有很多對象,我寧願我可以通過屬性窗口直觀地進行操作。
我不認爲你可以這樣做。你最好的選擇是傳入一個字符串標識符(如果你的剪輯深度嵌套,可能是一個完整的點分離路徑),然後在你的自定義組件中實現代碼以按名稱查找該項目。
我有哪些相對勾畫出自身水平和垂直前身組件的自定義組件,所以我這樣做:
protected var horizontalPredecessor:String = "";
[Inspectable(name = "HorizontalPredecessor", type = String, defaultValue="")]
public function set HorizontalPredecessor($value:String):void
{
horizontalPredecessor = $value;
drawNow();
}
override protected function draw():void
{
if (parent)
{
if (horizontalPredecessor != "")
{
var hp:DisplayObject = parent.getChildByName(horizontalPredecessor);
if (hp)
{
x = hp.y + hp.height + horizontalSpacing;
}
}
}
}
...因爲所有這些組件共享相同的父它是由易。
另外,如果只有一扇門,你可以把一個單身,並給它一個靜態引用,就像這樣:
public class Door
{
private static var _singleton:Door;
public static function get Singleton():Door
{
if(!_door) _door = new Door();
return _door;
}
}
那麼你的手柄可以直接參考Door.Singleton
和你沒有擔心傳遞任何東西。或者,您可以在Door類中有一個門陣列的靜態數組,併爲您的句柄指定一個索引號以將其鏈接到特定的門。
謝謝!我完全忘了_getChildByName_方法。這樣我可以只插入實例名稱,因爲它們都應該是唯一的,所以不應該有問題。 –