Как я могу создать объекты с похожей / идентичной функциональностью, но разными свойствами? - PullRequest
0 голосов
/ 25 августа 2011

Новичок в AS3, долгое время программист. По сути, я создаю множество объектов, каждый из которых будет иметь одинаковую функциональность, хотя свойства будут различаться для каждого объекта, включая произведение искусства. Я верю, что все они будут видеоклипами, поскольку они будут интерактивными, и я верю, что они будут двигаться.

Мне интересно, как лучше всего создать эти объекты. Я предполагаю, что я создаю объектный класс с функциональностью и свойствами, я просто не уверен, как создать несколько копий с разными свойствами, если это имеет смысл.

Извините за мою плохую формулировку, я могу помочь уточнить, если это необходимо, и спасибо за вашу помощь заранее! :)

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Создать класс.

package {
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip {
    }
}

Добавьте свойства, которые могут отличаться.

package {
    import flash.display.DisplayObject;
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip {
        private var _borderColor : uint;
        private var _artWork : DisplayObject;
    }
}

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

package {
    import flash.display.DisplayObject;
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip {
        private var _borderColor : uint;
        private var _artWork : DisplayObject;

        // using constructor parameters

        public function MyMovieClip(borderColor : uint, artWork : DisplayObject) {
            _borderColor = borderColor;
            _artWork = artWork;
        }

        // using setter/getter

        public function set borderColor(borderColor : uint) : void {
            _borderColor = borderColor;
        }

        public function get borderColor() : uint {
            return _borderColor;
        }

        public function set artWork(artWork : DisplayObject) : void {
            _artWork = artWork;
        }
        public function get artWork() : DisplayObject {
            return _artWork;
        }

    }
}

Создайте экземпляры класса и настройте их, используя разные значения:

package  {
    import flash.display.Shape;
    import flash.display.Sprite;

    public class Main extends Sprite {
        public function Main() {
            var myMc1 : MyMovieClip = new MyMovieClip(0xFF0000, new Shape());
            var myMc2 : MyMovieClip = new MyMovieClip(0x0000FF, new Shape());
            var myMc3 : MyMovieClip = new MyMovieClip(0x00FF00, new Shape());

            myMc1.borderColor = 0xFF0000;
            myMc3.artWork = new Shape();
        }
    }
}
1 голос
/ 25 августа 2011

В AS3 класс Object помечен как динамический в его модификаторах, впоследствии вы можете динамически добавлять любые свойства, которые вам нравятся.Кроме того, аналогичным образом вы можете создать свой собственный класс и пометить его как динамический, а затем добавить к ним свойства на лету ... для того, чтобы правильно оценить, как использовать эти свойства, хотя это может не стоить усложнения, скорее, лучше сделать другойклассы для разных типов объектов.Если они разделяют некоторые базовые функции, то вы можете начать с создания базового класса и расширить его для каждого из ваших конкретных типов объектов.

Подробнее о динамическом ключевом слове здесь: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#dynamic

Однакокак я уже говорил выше, я думаю, что расширение, вероятно, является лучшим методом для достижения того, что вы пытаетесь сделать ... более того, я большой сторонник использования фреймворка Flex, чтобы упростить использование AS3, во всяком случае, подробнее об ООП с AS3 здесь: http://www.adobe.com/devnet/actionscript/articles/oop_as3.html

Дайте мне знать, если это поможет, или вы ищете что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...