Flex загружает SWF как Sprite. Как мне вместо этого загрузить его как мувиклип? - PullRequest
2 голосов
/ 25 мая 2009

У меня проблема с преобразованием SWFLoader.content в экземпляр MovieClip при выполнении ( превосходного руководства TheFlashCanon ) по созданию связи SWF с Flex. Загруженный SWF-файл скомпилирован с использованием Flash CS3 (с использованием ActionScript 3).

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

Ошибка типа: ошибка # 1034: приведение типа не удалось: не удалось преобразовать maix :: main_maix @ 49f94ec1 to flash.display.MovieClip. в test1 / onLoadMinigameComplete () [/ Пользователи / chiyin / Документы / Flex строитель 3 / SimpleGirlfriend / SRC / Main.as: 68]

, где maix :: main_maix @ 49f94ec1 - это экземпляр моего фильма.

Что я делаю не так? В противном случае загруженный SWF-файл воспроизводится нормально и не обозначается как AVM1Movie.

Обновление: выяснилось, что SWF-файл импортируется как спрайт, а не как видеоклип. Как заставить SWFLoader загружать SWF как мувиклип вместо объекта Sprite?

Ответы [ 2 ]

0 голосов
/ 01 июня 2009

Не знаю, одинаково ли это для динамически загружаемых SWF Но если вы делаете видеоклип в среде Flash Authoring, и он имеет только один кадр. Затем вы встраиваете это в приложение Flex. Он будет вставлен как спрайт вместо мувиклипа.

0 голосов
/ 25 мая 2009

main_maix выглядит как класс документа загружаемого SWF-файла. В этом случае main_maix должен расширять MovieClip вместо Sprite:

public class main_maix extends MovieClip 

Кроме того, вы всегда можете разыгрывать классы объект, чтобы иметь к нему свободный доступ (но это не очень хорошая практика). Вы можете просто «привести его как main_maix»:

/**
 * Loader finished loading
 * 
 * @param Event Complete event
 * @return void
 */
private function onLoadMinigameComplete(event:Event):void 
{
    // -- either will allow "free access" to methods of main_maix
    var maixAsObject:Object = Object(loader.content);
    var maixAsMaix:main_maix = main_maix(loader.content);
}
...