3D-преобразования на загруженных SWF-файлах не работают - PullRequest
2 голосов
/ 12 декабря 2011

Вот сценарий:

Наша творческая группа создает SWF-анимацию в инструменте разработки Flash CS5, который мы (инженеры) загружаем во время выполнения в проект, созданный с помощью Flex SDK.Анимации, в которых не используется «инструмент 3D-вращения», работают нормально.

Анимации, в которых используется инструмент «3D-вращение», дают следующее поведение:

  • мувиклипы, к которым применены 3D-анимации с использованиеминструмент трехмерного вращения отображается в верхнем левом углу сцены, как будто у них вообще нет преобразования (т. е. как если бы их Matrix3D игнорировался, а их матрица была идентична)
  • мувиклипы с нормальным 2Dанимация анимации должным образом
  • альфа-свойства и другие неаффинные свойства; корректная анимация анимации

Как трехмерная, так и не трехмерная анимация прекрасно воспроизводятся, когда они загружаются на вкладке браузера или в автономном флеш-плеере.3D нарушается только при загрузке в наш код, сгенерированный SWF.

Так что кажется, что для мувиклипов с 3D-преобразованиями, применяемыми в среде разработки CS5, эти преобразования не применяются / не соблюдаются, когда SWF-файл загружается нашимкод SWF.

Это мой первый набег в 3D, поэтому я не уверен, что может быть причиной этого, но вот что я проверял / проверял / пробовал, но все безрезультатно:

  • Я убедился, что ActionScript 3 и Flash Player 10 / 10.1 выбраны в среде разработки.
  • Я пробовал загружать анимации в SWF-файлы кода, созданные с использованием Flex 4.1, 4.5 и 4.6, вFlash Player версий 10.0, 10.1, 10.2 и 11
  • Я применил Matrix3D к контейнерам, которые загружают анимации SWF, как идентификационные, так и повернутые.Я вижу, что повернутые контейнеры работают с 3D в перспективе, поэтому я знаю, что мой код SWF поддерживает 3D.

Я надеюсь, что есть какой-то простой трюк, некоторые настройки, которые я пропускаю.Спасибо за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 21 декабря 2011

Я столкнулся с вашей проблемой, потому что у меня была точно такая же проблема ... И после долгих раздумий решение (для меня) сводилось к следующему:

Если в какой-то момент вы строго набираете swf CHILD в классе или ссылаетесь на любую из его переменных, используя точечный синтаксис от PARENT, он ломается. Даже если это просто сообщение трассировки.

Я должен был заменить это:

var stoneVideo:StoneVideo = loader.content as StoneVideo;
stoneVideo.stoneText = model.stoneText;

С этим:

loader.content["stoneText"] = model.stoneText;

И все заработало нормально. Надеюсь, это поможет!

0 голосов
/ 31 декабря 2011

Я не могу опубликовать код, но оказывается, что это была слишком осторожная тонкость в нашем коде загрузчика, которая никогда не поймала нас раньше:

У нас есть собственный класс, который загружает все изображения для нас (включая несколько встроенных утилит и общих функций). После завершения загрузки этот код взял файл loader.content, добавил его в качестве дочернего элемента к себе и - вот кикер - очистил ненужный загрузчик с помощью close () и unloadAndStop ().

Полагаю, было бы рационально очистить загрузчик таким способом, и он всегда работал до сих пор (со статическими изображениями, статическими SWF-файлами и анимацией SWF-файлов), но это вызывало вышеуказанную проблему при загрузке 3D-SWF-файлов (и это приводит к Это также вызвало нечетные URL не найдены ошибки при загрузке видео SWFs.

Отключение слишком осторожной очистки загрузчика решило мою проблему.

0 голосов
/ 18 декабря 2011

Это может происходить в вашем Flex-коде, например останавливать анимацию или не запускать ее. Можете ли вы опубликовать код, который вы используете для загрузки SWF-файлов?

Это может быть и состояние гонки. Возможно, вам придется подождать, пока SWF-файлы будут загружены (например, добавлены события ToStage и т. П.), Прежде чем их использовать.

...