Не забывайте, что поскольку Flex является открытым исходным кодом, вы можете отследить подобные вещи в коде.
Я нашел функцию с именем NameUtil.displayObjectToString
, которая, кажется, отвечает за создание печатаемого имени экземпляра Flex. Существует также NameUtil.createUniqueName
, который создает свойство name
.
Посмотрите на код, но в основном createUniqueName разбивает getQualifiedClassName
, чтобы получить только имя класса без деталей пакета. NameUtil имеет статический счетчик, который затем добавляется в конец этого имени. поэтому Button15
- это 15-й FlexSprite, созданный вашим приложением.
displayObjectToString
не слишком сложен, за исключением того, что он следует цепочке компонентов через родителей, соединяющих имена в "."
Следует отметить один комментарий в UIComponent.as:
.
/**
* ID of the component. This value becomes the instance name of the object
* and should not contain any white space or special characters. Each component
* throughout an application should have a unique id.
*
* <p>If your application is going to be tested by third party tools, give each component
* a meaningful id. Testing tools use ids to represent the control in their scripts and
* having a meaningful name can make scripts more readable. For example, set the
* value of a button to submit_button rather than b1 or button1.</p>
*/
public function get id():String
{
return _id;
}
Там написано: «Это значение становится именем экземпляра объекта», и, хотя это кажется правдой, я не могу узнать , где происходит присвоение идентификатора имени. Это может быть в коде AS3, который генерируется из MXML при преобразовании во время компиляции.