PDA

Просмотр полной версии : Принцип взаимосвязи игровых классов.Наследование.


zCHESNOKz
21.10.2013, 22:51
http://cs616827.vk.me/v616827108/21b7/pcJag8wWMng.jpg

Проблема: Не знаю как нужно использовать наследование.
Запутался окончательно...

Вообщем попробую объяснить: есть класс LEVEL, это и есть сам уровень на котором размещаются все нужные элементы, во-первых:
- объекты с которыми будет взаимодействовать наш герой.
и
- сам герой (который в свою очередь будет взаимодействовать с объектами).
Тут все просто, да? Хорошо.
Вопрос тут вот в чем, как ссылаться на объекты из класса HERO ?
Через статические переменные в классе объектов ? Через ссылки на экземпляры классов в классе LEVEL ? Как? Если Уровней будет много, и в каждом будет много всяких объектов. Запутался окончательно.

Это же самое главное, без чего не написать приложение.. А я и этого не знаю.

Ребят, правда, не смейтесь, я не знаю где даже это вычитать, что бы разобраться.
Заранее спасибо!!

in4core
21.10.2013, 22:55
Сначала ответьте на вопрос, какие это объекты у класса Героя? Герой есть герой. Какие у него могут быть объекты? Рука-нога? О чем ерчь то

zCHESNOKz
21.10.2013, 23:01
В класе "герой" содержится клип, которым управляем. Как получить ссылку на объект размещенный в класе LEVEL , в класе HERO?

Wolsh
21.10.2013, 23:10
Прежде всего уберите логику из отдельных объектов в одно место. Не Герой решает, как взаимодействовать с объектами, а класс Логики Игры решает, как взаимодействовать объекту Герой с объектами Уровней.

Bugert
26.10.2013, 01:13
Задам вопрос в этой теме :) Извините, если что. Допустим, есть несколько объектов. Шарики, квадратики и т.п. Я создаю их экземпляры в классе Game. В классах данных объектов имеется событие enter_frame. Но при добавлении всего этого дела в Game и компиляции, всё начинает глючить. Шарики скачут по сцене и т.п. Т.е. дело видимо в том, что нужно как-то правильно передать ссылку главного stage в классы объектов. Я правильно понимаю? Как же это сделать?

Akopalipsis
26.10.2013, 01:25
Если бы класс игры нуждался в стейдже, то не чего бы не было видно как минимум.
Причина видимо в чем то другом. Код показывайте.

Bugert
26.10.2013, 01:57
Кода нет как такового, точнее там полная абракадабра и я всё уже поперепутал...в общем, я просто не понимаю принцип взаимодействия сцены, основного класса и разных созданных мной объектов. Если я просто создаю объекты и помещаю их в Main, то возникают ошибки или глючит. Приходится в классах прописывать параметры типа public function BodyOfObject (_stage: Stage): void И затем уже в данном классе операции производить через stage_ = _stage. Например,
if (y > stage_.height || y < 0)
{speedY = -speedY;}
А в Мейне писать в параметрах (stage).
В общем, я в край запутался со всем этим.

Akopalipsis
26.10.2013, 02:18
Возможно я не понял, но если Вы в класса обращаетесь к свойствам stage, таким как, ширина, высота,
то нужно дождаться, пока эти классы на неё будут добавлены. Но помните, что добавлять обьекты на сцену - нельзя! Вот так делать нельзя - stage.addChild(boll); Так же не забывайте о передачи размеров сцены в конструктор класса при его создании.
package
{
import flash.display.Sprite;
import flash.events.Event;

public class Boll extends Sprite
{
public function Boll()
{
if (stage)init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(event:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);

//и тут уже можно обращаться stage.stageWidth
}
}
}

Wolsh
26.10.2013, 11:14
if (y > stage_.height || y < 0)Вы уверены, что правильно используете stage.height и stage.stageHeight?

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