PDA

Просмотр полной версии : Странные параметры DOMSymbolInstance


BuKT
29.05.2013, 18:26
Коммиты шли сплошным потоком. .fla помечались как бинарники, и если менялись, то только целиком. Работа кипела, ничто не предвещало беды. Пока в один прекрасный момент не перестали выделяться явно имеющиеся на stage символы.

Одним тихим утром это было замечено. Никто не мог понять, как с этим справиться и, главное, как это вообще могло произойти. После нескольких часов автор битого коммита был найден и смотивирован отыскать истинную причину ошибки.

После долгой копки в .xfl и иерархии DOM оказалось, что изменился ровно один параметр ровно в одном, но, к сожалению, очень часто встречающемся символе. К счастью, попытка найти решение в FlashIDE не возымела успеха, равно как и попытка повторить ошибку. Быстро был составлен скрипт и на сервер полетел огроменный коммит с кучей исправленных и перепакованных бинарников.

Смеркалось.

_________

А вопрос собственно о параметрах детей символов, представленных в xfl-формате. Ошибка произошла при следующем коммите:
<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?

BuKT
04.02.2015, 02:36
А ведь скоро два года, как наткнулся на сабжевый баг. Ну не суть.

Оказывается, это действительно можно сделать неосторожной манипуляцией во flashIDE.
Не пытайтесь повторить дома! Как сделать обратно, не разворачиваясь в .xfl - я не знаю:
https://pbs.twimg.com/media/B89CZLMIUAE7Jzl.png

in4core
04.02.2015, 03:52
Чувак вообще странно, что кто то работает с .xfl . Очень странно, так как таких тем не возникает, до этого просто не доходят. Все делают другими средставами.
Конкретно задача какая? ( изначальная )

BuKT
04.02.2015, 04:15
"Чувак", никто и не планировал работать с .xfl. Ошибка возникла из-за работы во flashIDE. Чинится она только из .xfl.

Изначальная задача описана в первом посте.

PainKiller
04.02.2015, 12:09
Действительно воспроизвел это все во Flash CC, все так и есть, визуально, средствами IDE, это можно исправить только откатив действие в журнале, больше способа я не нашел и не нагуглил. Спасибо, из серии хозяйке на заметку.

nubideus
04.02.2015, 12:36
Как сделать обратнов контекстном меню пунктом ниже "Разблокировать все" поди что то делает.
может надо правый клик по пустой области -> упорядочить -> разблокировать все?

у меня просто flash pro нету, попробовать не могу

нагуглил
To lock or unlock a group or symbol, select the group or symbol, and then select Modify > Arrange > Lock. Select Modify > Arrange > Unlock All to unlock all locked groups and symbols.https://helpx.adobe.com/flash/using/selecting-objects.html правда все равно ничего не понятно. может быть не надо никуда кликать, а в заголовке окна пункт Изменить

PainKiller
04.02.2015, 16:30
Да разблокировать работает, сейчас проверил)), меня просто в инструкции эти строчки смутили select the group or symbol - выбрать и разблокировать если выбрать символ не получается? Тогда это не баг. Просто особенность про которую почти никто не знает.