Нет большой разницы между mxml и as. Когда вы пишете Xyz.mxml:
<s:Group>
<fx:Scrip>
//something happens here, for example some other button click or whatever
</fx:Script>
//code
<comp:Abc />
</s:Group>
... вы просто указываете класс Xyz, производный от Group. Mxml - это просто язык разметки, который облегчает создание интерфейсов. Во время компиляции mxml файлы преобразуются в чистый AS, поэтому в mxml вы ничего не можете сделать (в больших масштабах), чего не можете сделать в AS и наоборот.
Свойство ID в mxml аналогично имени экземпляра в AS, т. Е. Оно будет преобразовано в общедоступное свойство в вашем запросе.
Ответ на ваш вопрос.
Вы можете написать публичную функцию в Abc и вызвать ее в Xyz.
Abc.mxml:
<s:Group>
<fx:Script>
<![CDATA[
public function doSomething():void
{
someId.enabled = false;
}
]]>
</fx:Script>
<s:Button id="someId"/>
</s:Group>
Xyz.mxml:
<s:Group>
<fx:Script>
<![CDATA[
private function somethingHappened():void
{
abcComponent.doSomething();
}
]]>
</fx:Script>
//code
<comp:Abc id="abcComponent"/>
</s:Group>
В функции somethingHappened
вы можете напрямую обращаться к кнопке abcComponent.someId
, но я настоятельно рекомендую этого не делать, поскольку она нарушает инкапсуляцию и делает ваши классы более связными (и т. Д.).