Хочу узнать ваше мнение по поводу пакетов и классов.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение Derial »

sanych_dv писал(а): http://books.tr200.ru/v.php?id=277635
Читал я ее.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение Alazaur »

А не могли бы вы показать на самом простом примере как связать два класса(например чтобы один зависел от другого или еще что-то) чтобы они работали "сообща"
Ок) Я не буду рассматривать сейчас практическую пользу, ибо где вам нужен отдельный класс, а где хватит массива или переменных вы будете решать сами, в зависимости нужд да и просто личных предпочтений и стиля. Например имеем основной класс программы Main и создадим еще класс героя Hero.
Класс Main:

Код: Выделить всё

package {    import flash.display.MovieClip;    import flash.display.Sprite;        public class Main extends Sprite     {        private var hero:Hero;                public function Main():void         {            hero = new Hero(100, 5, new MovieClip());            trace(hero.life);            hero.lifeMin(10);            trace(hero.life);        }    }}
В классе Main объявили переменную hero которая является экземпляром класса Hero (или можно еще по другому сказать имеет тип Hero). Затем в конструкторе класса ее определили, передав в конструктор данные.
Далее создаем класс Hero:

Код: Выделить всё

package {    import flash.display.MovieClip;        public class Hero    {        public var userdata:MovieClip;        public var life:int;        public var speed:int;                public function Hero(_life:int = null, _speed:Number = null, _userdata:MovieClip = null):void        {            this.life = _life;            this.speed = _speed;            this.userdata = _userdata;        }                public function lifeMin(num:int = 0):void {            this.life -= num;        }    }    }
Как видим определяя переменную hero мы передали в конструктор данные 100, 5 и новый экземпляр MovieClip. Чем сходу определили 3 свойства у нового экземпляра, то есть у нашего героя hero - life (жизнь), speed (скорость) и userdata (некий MovieClip, который в последствии можем использовать для графического вывода на экран нашего героя). И теперь метод trace(hero.life) нам выведет на экран число 100. Обычно правда в ООП не принято делать свойства класса публичными, а писать интерфейс (во всяком случае в C++ по которому я и познавал ООП свойства класса публичными не делают)), но на сколько я знаю за мой небольшой опыт работы с флешем, в ActionScript функции прожорливые, поэтому делаю свойства публичными и обращаюсь к ним напрямую, но это может и не верный подход, по этому поводу вам лучше посоветоваться с более опытными флешерами.
И для завершения картины добавил в класс Hero метод lifeMin() который уменьшает жизнь life на переданное в метод число. И видим что в классе Main вызываем этот метод со значением 10. А далее снова trace(hero.life) который уже выведет 90.
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение Derial »

Спасибо вам огромное:)
Теперь только классы ;)
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение sanych_dv »

Пара мыслей:

В новом классе очень желательно писать его наследование:

Код: Выделить всё

 public class Hero extends MovieClip 
В обычной практике все же свойства лучше делать приватными, а получать (устанавливать) значения через геттеры / сеттеры.

Ключевое слово this излишне, функция уже определена внутри класса. Имеет смысл использовать его в качестве ссылки на глобальный объект, если функция определена вне классов и объектов. Или в классе, если, к примеру, необходимо установить переменную из пары "ключ-значение".
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение Derial »

sanych_dv писал(а):Пара мыслей:

Код: Выделить всё

 public class Hero extends MovieClip 
А класс именно от MovieClip наследовать или лучше от Sprite
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение sanych_dv »

Sprite - тот же MovieClip, но без возможности работать с таймлайном. Собственно, MovieClip частично наследуется от Sprite и является более "тюнингованным". )

Ищите в свойствах и методах базового класса, который вы будете расширять, те, которые вам будут необходимы.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение Alazaur »

Derial, ага вот sanych_dv опытный флешер, плохого не посоветует. Я пока еще всех тонкостей не знаю ;)
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Re: Хочу узнать ваше мнение по поводу пакетов и классов.

Сообщение Derial »

И вот еще такой вопрос по поводу графики: как лучше сделать в Flash IDE или программно прописывать каждое событие(например в IDE мы создадим кнопку и на кадре который "активируется" при наведении на кнопку поменяем цвет кнопки(коддинг совершенно не нужен) или сделать все тоже только прописав каждое действие в программе(нужен коддинг)?
Ответить