Каково значение не численных значений в определении края XFL?
XFL - это новый несжатый исходный файл ADOBE FLASH (CS5), он состоит из определений XML, большинство из них ясны, но, к сожалению, важно странное.
Если посмотреть на различные существующие источники, я могу увидеть определения EDGE формы, например:
<Edge strokeStyle="1" edges="!0 0S4|180 0"/>
<Edge strokeStyle="1" edges="!2720 2720S6|0 2720!0 2720|0 0!0 0/2720 2720"/>
<Edge fillStyle1="1" edges="!3532 1539.5S2[#BD9.4D #577.3C 2952.5 1756.5!2952.5 1756.5[#AF6.DA #4C6.1D 3584 1119!3584 1119|3532 1539.5"/>
Выполняя некоторые тесты, я могу сказать, что:
! == move to position
| == draw line from the position to the new position
/ == probably same like |
[ == draw curve
( == probably same like [
Но что означает значения, такие как S4 или # BD9.4D?
Пока еще не доказано, что значения # могут быть как-то закодированы очень маленькими числами. Я не знаю, что может быть S4.
Ответы
Ответ 1
!(x,y)
moveTo
/(x,y)+
lineTo
|(x,y)+
lineTo
[(x1 y1 ex ey)+
curveTo (квадратичный)
](x1 y1 ex ey)+
curveTo (квадратичный)
((pBCPx pBCPy)? ; x1 y1 x2 y2 ex ey (({Q,q,P,p})? x y)+
curveTo (кубический запуск)
)(nBCPx nBCPy)? ;
curveTo (кубический конец)
Sn
выбор (n = битмаска, 1: fillStyle0, 2: fillStyle1, 4: ход)
#aaaaaa.bb
- это фиксированная точка с 32-разрядным номером
Ответ 2
Hm... Я ошибся с предположением до # значений!
Я декомпилировал полученную форму и могу сказать, что значение value # BD9.4D должно быть глупым шестнадцатеричным кодированием числа 3033.77. Я хотел бы знать, почему Adobe использует что-то подобное в коде, которое должно быть понятным для человека?
EDIT:
вышесказанное неверно, правильный результат для # BD9.4D - 3033.30078125
>> (to integer! #{000BD94D}) / 256
== 3033.30078125
Также обратите внимание, что числа, подобные # 19F.2, являются двоичными # {00019F20}
В соответствии со значениями S4 они могут быть просто дополнительной информацией для редактора FLASH, потому что когда я их вручную удаляю, я могу загрузить источник, и форма такая же.