MovieClip против Sprite в ActionScript 3.0 - PullRequest
5 голосов
/ 29 марта 2012

Что еще можно сделать, если я расширю MainClass с помощью MovieClip, а не Sprite. Я знаю, что MovieClip расширяет Sprite, и для него определена временная шкала. но все же, как он будет использоваться для меня MovieClip?

package  {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.display.MovieClip;
    import flash.text.TextFieldType;

    public class MainClass extends Sprite{      
        public function MainClass() {   

            var m:Module=new Module("Admin","John");

            var tf:TextField=new TextField();
            tf.text=m.info;
            tf.border=true;
            tf.type=TextFieldType.INPUT;

            var myFormat:TextFormat = new TextFormat();
            myFormat.size = 3;
            tf.defaultTextFormat=myFormat;

            addChild(tf);   
            this.width=500;
            this.height=300;
            this.x=0;
            this.y=10;
        }
    }       
}


class Module{
        private var m_mName:String;
        private var m_owner:String;

        public function Module(mName:String,owner:String):void{
            m_mName=mName;
            m_owner=owner;
        }
        public function get info():String{
            return owner+' is owner of '+mName;
        }
        public function get mName():String{
            return m_mName;
        }
        public function get owner():String{
            return m_owner;
        }       
    }

Еще один маленький вопрос, как использовать Timeline, если я заменю Sprite на MovieClip?

1 Ответ

16 голосов
/ 29 марта 2012

Цитирование из книги AS3 :

До появления ActionScript 3.0 класс MovieClip использовался в качестве универсального графического контейнера (во многом аналогично классу Actionite 3.0s Sprite). Начиная с ActionScript 3.0, MovieClip используется только для управления экземплярами символов мувиклипа, созданными в инструменте разработки Flash. Поскольку ActionScript 3.0 не предоставляет способ создания элементов временной шкалы, таких как кадры и анимация, нет необходимости создавать новые пустые фрагменты ролика во время выполнения в ActionScript 3.0. Вместо этого вся программно созданная графика должна быть экземплярами соответствующего базового класса отображения (Bitmap, Shape, Sprite, TextField и т. Д.).

MovieClip - это динамический класс, который сохраняет обратную совместимость с AS2. Это означает, что если, хотя и не рекомендуется, добавить свойство в MovieClip, вы можете просто сказать myMC.myCustomProperty = "someValue", тогда как для Sprite это приведет к ошибке.

По этой причине они также говорят, что использование спрайтов более эффективно с точки зрения производительности. Вы можете найти обсуждение этого вопроса в этом сообщении на форуме Adobe .

...