Коммиты шли сплошным потоком. .fla помечались как бинарники, и если менялись, то только целиком. Работа кипела, ничто не предвещало беды. Пока в один прекрасный момент не
перестали выделяться явно имеющиеся на stage символы.
Одним тихим утром это было замечено. Никто не мог понять, как с этим справиться и, главное, как это вообще могло произойти. После нескольких часов автор битого коммита был найден и смотивирован отыскать истинную причину ошибки.
После долгой копки в .xfl и иерархии DOM оказалось, что изменился ровно один параметр ровно в одном, но, к сожалению, очень часто встречающемся символе. К счастью, попытка найти решение в FlashIDE не возымела успеха, равно как и попытка повторить ошибку. Быстро был составлен скрипт и на сервер полетел огроменный коммит с кучей исправленных и перепакованных бинарников.
Смеркалось.
А вопрос собственно о параметрах детей символов, представленных в xfl-формате. Ошибка произошла при следующем коммите:
Код AS3:
<DOMSymbolItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ns.adobe.com/xfl/2008/" name="SymbolA" itemID="4eead774-000005c4" lastModified="1363844520">
<timeline>
<DOMTimeline name="SymbolA">
<layers>
<DOMLayer name="Layer 1" color="#4FFF4F" current="true" isSelected="true">
<frames>
<DOMFrame index="0" keyMode="9728">
<elements>
-- <DOMSymbolInstance libraryItemName="SymbolB" selected="true" symbolType="graphic" loop="loop">
++ <DOMSymbolInstance libraryItemName="SymbolB" locked="true" symbolType="graphic" loop="loop">
<matrix>
<Matrix ty="-186"/>
</matrix>
<transformationPoint>
<Point x="339" y="189"/>
</transformationPoint>
</DOMSymbolInstance>
</elements>
</DOMFrame>
</frames>
</DOMLayer>
</layers>
</DOMTimeline>
</timeline>
</DOMSymbolItem>
Как можно видеть из XML выше - есть некий символ `SymbolA`, в котором лежит единственный `SymbolB`. При пользовании .fla из FlashPro - символ присутствует на сцене, но не выделяется (и не даёт себя изменить). При пользовании сгенерённой .swc - так же присутствует и позволяет проводить манипуляции с собой.
Но что значат эти два параметра DomSymbolInstance: `selected` и `locked`? И как получилось, что первый заменился вторым при манипуляциях исключительно во FlashIDE?