Основное использование MovieClip в FlashDevelop - PullRequest
2 голосов
/ 06 апреля 2011

Я только начал практическое изучение ActionScript 3 с помощью FlashDevelop.

Теперь мне удалось создать подкласс спрайта, загрузить графику из библиотеки и управлять ею на сцене.,Следующим шагом будет то же самое с MovieClip, но это не так просто.

По сути, я хочу простой подкласс MovieClip, который использует SWF, который я создал и экспортировал в Flash CS5 (что-нибудь еще, что может их создать?), а затем добавить его в мою библиотеку в FlashDevelop.

В моем классе 'Main' я хочу что-то вроде этого:

package 
{
    import flash.display.MovieClip;
    import flash.events.Event;

    public class Main extends Sprite 
    {
        private var myClip:MovieClip;

        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);

            myClip = new MyMovieClip();
            addChild(myMovieClip);          
        }
    }
}

Итак, длямой подкласс, я смотрел на что-то вроде этого:

package  
{
    import flash.display.MovieClip;

    [Embed(source = '../lib/MyButton.swf', mimeType = 'application/octet-stream')]
    public class MyMovieClip extends MovieClip
    {
        public function MyMovieClip() 
        {
      // Empty
        }
    }
}

Но это не сработало.Затем я попытался:

package  
{
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip
    {
        [Embed(source = '../lib/MyButton.swf', mimeType = 'application/octet-stream')]
        private var MyMovieLivClass:Class;
        private var myClip:MovieClip;

        public function MyMovieClip() 
        {
            myClip = new MyMovieLivClass() as MovieClip;    
            addChild(myClip);           
        }
    }
}

Но это говорит о том, что ребенок нулевой, и я не уверен, что в любом случае я должен создать «новый» мувиклип внутри субклассированного мувиклипа.

Какой шаг я здесь пропускаю?

1 Ответ

2 голосов
/ 06 апреля 2011

В последнем примере вы правильно использовали Embed (вы не можете добавить его к объявлению класса). Если myClip равно нулю, это означает, что приведение as MovieClip завершилось неудачно, а MyButton.swf дает другой тип. Если MyButton.swf имеет только один кадр, это будет Sprite, а не MovieClip.

РЕДАКТИРОВАТЬ: Я хотел бы заметить это раньше. Ваш клип встроен как ByteArrayAsset с mimeType необработанных байтов. Удалите mimeType из Embed, и компилятор сделает его MovieClipAsset, то есть MovieClip.

...