Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: помогитес АС
Flash Zone Forum > Macromedia Flash > ActionScript
Eyronz
Создал врага который как-то реагирует на героя.
нужно сделать несколько таких штук, но описавть
их вагоном кода не охота каждого, да и не рационально.
Может как-то использовать масив, хотя не думаючсто подходящий вариант.
Rohan
Ну вот мы и подошли к ООП =) Создай отдельный класс для врага, все враги будут экземплярами этого класса, если все равно не хочешь чтобы каждый экземпляр копировал себе какой-то метод - сделай его статическим:

Код
class Enemy extends MovieClip {
    
    static private function react(caller:Enemy):Void {
        ///действия над caller-ом
    }

    public function Enemy() {
        super();
    }

    ////...........................................

    public function someMethod():Void {
        react(this);
    }
}
MustLive
Цитата
Создал врага который как-то реагирует на героя.
нужно сделать несколько таких штук, но описавть
их вагоном кода не охота каждого, да и не рационально.

Eyronz

Вот в этом случае и нужно использовать ООП. Как тебе справедливо уже предложил Rohan - и написал эскиз класса, который должен направить тебя в нужном направлении (для подобных реальных случаев, как например объекты игры, те же различные враги, также можешь помимо ОПП, использовать и Design Patterns).

Если будут какие-то вопросы по этому поводу, то почитай инфу по ООП, по флешу и по ООП во флеше. Игры, особенно компексные, это как раз пример, где общепринято использование ООП.
Eyronz
Спасибо ребята. Попоробую мутить из предложеного Rohanом.
Может знаете конкретные места по ООП? Может на форуме или в рассылке?
Сейчас моя проблема в том, что я не знаю значения отдельных "слов".
В функцию могу подставить то что надо, но значение "слов" не понимаю,
и не могу знать где еще можно применять их. Особенно когда чё-то новое.
думаю как-то не без вашей помощи разберусь.
Спасибо.
Eyronz
Еще вопрос. имеем несколько мувиков с названиями. Один из них находится напремер в 4 кадре(стоит).
Как определить какой именно, т.е. вывести имя экземпляра.
С помощью циклов пока не получалось.
MustLive
Eyronz

В данном случае, при использовании иерархии классов (класс Противник, который имеет ряд подклассов - с экземплярами которых главный герой и сражается), при создании динамически - в идеале - мувикам присваиваются имена. Или если вручную, на стадии дизайна (из лайбрари берутся мувики и создаются экземпляры), то им тогда тоже, вручную, присваиваются имена.

И вот по имени и идентифицируй - кто сейчас перед тобой (что за противник).

Можешь к примеру в (главном) классе Противник разработать метод - getName, который унаследуют подклассы, и который будет возвращать текущее имя объекта класса (у класса Бандит потомка класса Противник имя будет "Бандит1" и т.д.).

Ну а в простом случае, когда лишнего не нужно (да и вышеупомянутый вариант может этот же функционал и выполнять), используй свойство _name.

Ну а метод getName (как реализация в общем случае) будет возвращать this._name.
Rohan
Цитата(Eyronz @ 27.09.2006 - 15:10) *
Еще вопрос. имеем несколько мувиков с названиями. Один из них находится напремер в 4 кадре(стоит).
Как определить какой именно, т.е. вывести имя экземпляра.
С помощью циклов пока не получалось.


ну, че-нить из этой серии:
Код
class MotherFucker extends MovieClip {
    static private var unitList:Array = [];
    
    static public function getUnitsByFrame(frame:Number):Array {
        var list:Array = [];
        for(var i:Number=0; i<unitList.length; i++){
            if(MotherFucker(unitList[i])._currentframe==frame)
                list.push(unitList[i]);
        }
        return list;
    }
    
    public function MotherFucker() {
        super();
        unitList.push(this);
    }
}

использовать потом типа
Код
var listOfEnemies:Array = MotherFucker.getUnitsByFrame(4);

надеюсь, это надо было? А то ведь не совсем ясно...
Eyronz
Вообщето я делаю меню инвентаря, и здесь именно нужно знать какой слот(мувик) находится в н-кадре,
т.е. какой предмет он содержит.
А в классах пока мелко плаваю. Не имею хорошей документации. Да время надо на изучение.
Ваши ответы тоже немало помогли, Спасибо.
Русская версия IP.Board © 2001-2009 IPS, Inc.