Показать сообщение отдельно
Старый 29.05.2013, 18:26
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 1  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
По умолчанию Странные параметры DOMSymbolInstance

Коммиты шли сплошным потоком. .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?
__________________
Дебаггер не предлагать