Почему swf ломается при смене экспортной версии с Flash 6 на 7? - PullRequest
0 голосов
/ 19 ноября 2010

Мне нужно внести небольшую модификацию в существующую библиотеку Flash (Fusion Charts Free), написанную на AS1 с Flash 6 в качестве версии для публикации. В моем изменении используется ExternalInterface, для которого требуется Flash 8, поэтому я открыл «Параметры публикации» и изменил версию на 8. Других изменений не было.

Теперь SWF-файл загружается, но в процессе его работы возникает ошибка. Если я изменю версию публикации на 6, она снова заработает. Изменение его на 7 ломает его. Мои вопросы:

  1. Есть ли полный список изменений между Flash 6 и 7, которые влияют на существующий код AS1?

  2. Есть ли способ получить реальный вывод отладочной информации от SWF, чтобы определить, что произошло? Огорчает, что, похоже, нет никаких журналов или консолей вообще. Я видел несколько решений, которые включают использование ExternalInterface для входа в Firebug или что-то подобное, но, очевидно, это не полезно для меня, учитывая, что вся моя проблема сосредоточена вокруг экспорта во Flash 8.

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Завершив этот проект, я поделюсь своим опытом. Практически все несовместимости делятся на три категории, описанные в этой очень полезной статье :

  1. Имена переменных в Flash 7 чувствительны к регистру, поэтому xPos и ​​xpos теперь являются отдельными переменными и не могут использоваться взаимозаменяемо. В любом случае, вы никогда бы этого не сделали, если бы писали хороший код, но если вы пытаетесь портировать какой-то сторонний код, как я, то это проблема № 1, за которой нужно следить.

  2. Неопределенные значения переменных изменены. Во Flash 6 числа были инициализированы нулем, а строки были пустыми. Во Flash 7 число равно NaN, а строка не определена.

  3. Строковые логические эквиваленты различны. Во Flash 6 пустые строки или строки, отличные от «1», оцениваются как ложные. В Flash 7 строка с любым содержимым оценивается как true; только пустые строки оцениваются как ложные.

0 голосов
/ 20 ноября 2010

externalInterface, вероятно, не является причиной ошибок .. Я проверил себя, чтобы убедиться ... (с flash8 + AS1).

1) возможно, вы случайно выбрали вместо этого AS2 .. 2) ошибка покакомпиляции?или во время бега?3) ошибка происходит при запуске из приложения?или как самостоятельный?(когда он автономен, ExternalInterface может вызвать исключение, потому что нет «внешнего интерфейса». 4) В чем ошибка?5) попробуйте поставить блок try на часть ExternalInterface, если ошибка не возникает во время компиляции. 6) если ошибка возникла во время работы, то у вас есть отладчик ... просто нажмите Ctrl + Shift + Enter

...