|
|
|||||
Регистрация: Sep 2015
Сообщений: 69
|
Как передать ссылку на main?
Посоветовали вот такой код (или псевдокод):
класс клетка расширенный спрайт публичные переменные целые X,Y,статус; переменные основа ОС; публичная функция клетка(основа ос=null)// конструктор класса вызывается всегда при создании обекта класса и получает ссылку на мейн, чтобы потом по этой ссылке обращаться к мейну и иметь доступ ко всем публичным переменным мейна включая другие клетки и что угодно { this.ОС=ос; } класс основа расширенный мувиклип публичные переменные массив клетки[10][10]; int i,j; for(i=0;i<10;i++) { for(j=0;j<10;j++) { клетки[i][j]=new клетка(this);//теперь каждая клетка хранить ссылку в себе на мейн } } function HIT(int x,int y) { если (клетки[x][y].статус==1) иначе..... } Все что касается этой ссылки на main мне не понятно, вплоть до типа переменной ОС. То есть не могу перевести в код. Пишу игру по типу "Морской бой", изначальный вопрос был в том как нарисовать поле клеток и определять по какой был сделан выстрел. |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
какие-то извращения. Проще всего сделать спрайт расчерченный и назначить на него слушателя. Дальше при нажатии просто получаем координаты и смотрим соответствие на поле (чисто математически получить длину/ширину спрайта и поделить на участки)
|
|
|||||
Эх... обработать бы этот тэгами AS3 и без перевода на великий и могучий Русский язык))
И зачем передавать ссылку на Main его ребенку? Дети не должны знать о своих родителях
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
даже ещё проще, взять один квадрат, кодом разместить его копии в нужном положении и назначить слушателя событий сцены, дальше по клику узнаём(e.target) на какой квадрат нажали.
Добавлено через 1 минуту наверно очередная книжка "для чайников" и чайник её и писал |
|
|||||
Вот! Нашел! Когда то давным давно я делал, что то похожее и у меня было так:
cells = new Vector.<Sprite>(); for (var i:int = 0; i < endH; i++) { cells[i] = new Vector.<Sprite>(); for (var j:int = 0; j < endV; j++) { cell = new Cell(); cell.x = i * cellSize; cell.y = j * cellSize; cell.addEventListener(MouseEvent.CLICK, setCell); addChild(cell); cells[i][j] = cell; } }
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Псевдокод написан не в синтаксисе AS3. Человек, который его писал, наверняка и не знаком с технологией флэш и языком AS3. Иначе он бы знал, что все дисплейные объекты итак имеют ссылку на мейн, которая всегда доступна через свойство root (ну, не всегда, а когда дисплейный объект находится в Списке Отображения. Но, я так понимаю, клетки наследующие Спрайт создавались именно для того чтобы отображаться). Кроме того, из псевдокода видно, что автор собирается помещать логику всей игры в каждую отдельную клеточку, а через мейн лазить в гости к соседям. Я бы удалил это руководство с диска, не забыв зажать Shift.
Добавлено через 8 минут Цитата:
__________________
Reality.getBounds(this); |
|
|||||
__________________
Я заклинаю вас действовать иначе. |
|
|||||
Регистрация: Sep 2015
Сообщений: 69
|
Благодарю neonoviiwolf, mihael_p и Wolsh, стало намного понятнее!
|
|
|||||
Регистрация: Sep 2015
Сообщений: 69
|
А если я использовал код выложенный mihael_p, как мне узнать номер элемента в массиве?
|
Часовой пояс GMT +4, время: 15:30. |
|
« Предыдущая тема | Следующая тема » |
|
|