2013-06-02 3 views
1

Мне нужно загрузить внешний swf и использовать его как Movieclip в FlashDevelop, то есть мне нужно иметь возможность перейти к определенным ключевым кадрам, запустить и остановить его воспроизведение и т. Д. Простой рабочий образец код был бы чрезвычайно оценен, так как я не могу найти удовлетворительные учебные пособия через Google.AS3 Load swf As Movieclip

EDIT теперь у меня есть этот код

package 
{ 
import flash.net.*; 
import flash.display.*; 
import flash.events.*; 
import flash.utils.getQualifiedClassName; 

public class Main extends MovieClip 
{ 

    var animatedBox:MovieClip = new MovieClip(); 
    var ldr:Loader = new Loader(); 
    var frames:int = 0; 

    public function Main():void 
    { 
     if (stage) init(); 
     else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event = null):void 
    { 
     removeEventListener(Event.ADDED_TO_STAGE, init); 
     ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onload); 
     ldr.load(new URLRequest("../lib/test.swf")); 
    } 

    function onload(e:Event) 
    { 
     if (!e.target) 
     return; 

     if(e.target.content is MovieClip) 
     { 
      animatedBox = e.target.content as MovieClip; 

      animatedBox.gotoAndPlay("Start"); 
     } 
     else 
     { 
      trace(getQualifiedClassName(e.target.content)); 
     } 
    } 

} 

} 

После того как я пытаюсь запустить его я получаю [Fault] исключение, информация = TypeError: Error # 1009: Не удается получить доступ к свойству или методу ссылка на нулевой объект. Любые идеи?

+0

Что именно вам нужно? узнать как3 или узнать, как работать с FlashDevelop? – Cherniv

+0

Мне просто нужен код, чтобы добавить swf в проект FlashDevelop и использовать его как полезный MovieClip – user1938856

ответ

2
import flash.utils.getQualifiedClassName; 

var mc: MovieClip; 

var ldr: Loader = new Loader(); 
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad); 
ldr.load(new URLRequest("your.swf")); 


function onLoad(e:Event):void 
{ 
    if(!e.target) 
     return; 

    trace(getQualifiedClassName(e.target.content)); 
    /* if you get: flash.display::AVM1Movie 
     it means you are trying to load an AS1 or AS2 SWF 
     into AS3 SWF. They both need to be AS3 */ 

    mc = e.target.content as MovieClip; 
    mc.gotoAndPlay(2);  
    // or mc.gotoAndPlay('yourLabel'); 

} 
+0

Я изменил код, но получил ошибку. Пожалуйста, взгляните на отредактированный пост – user1938856

+0

Когда я набираю animatedBox = event.target.content, содержимое не появляется в поле автоматического предложения, например .target и .anything else. Я думаю, что это проблема, так как неудача здесь приведет к нулевой переменной animatedBox – user1938856

+0

Можете ли вы запустить swf в режиме отладки и сказать, какая строка дает вам эту ошибку? –

Смежные вопросы