Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как передать ссылку на main? (http://www.flasher.ru/forum/showthread.php?t=212826)

Azrael 09.05.2016 17:22

Как передать ссылку на 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 мне не понятно, вплоть до типа переменной ОС. То есть не могу перевести в код.
Пишу игру по типу "Морской бой", изначальный вопрос был в том как нарисовать поле клеток и определять по какой был сделан выстрел.

neonoviiwolf 09.05.2016 17:59

какие-то извращения. Проще всего сделать спрайт расчерченный и назначить на него слушателя. Дальше при нажатии просто получаем координаты и смотрим соответствие на поле (чисто математически получить длину/ширину спрайта и поделить на участки)

mihael_p 09.05.2016 17:59

Эх... обработать бы этот тэгами AS3 и без перевода на великий и могучий Русский язык))

И зачем передавать ссылку на Main его ребенку? Дети не должны знать о своих родителях

neonoviiwolf 09.05.2016 18:03

даже ещё проще, взять один квадрат, кодом разместить его копии в нужном положении и назначить слушателя событий сцены, дальше по клику узнаём(e.target) на какой квадрат нажали.

Добавлено через 1 минуту
Цитата:

Сообщение от mihael_p (Сообщение 1193913)
Эх... обработать бы этот тэгами AS3 и без перевода на великий и могучий Русский язык))

И зачем передавать ссылку на Main его ребенку? Дети не должны знать о своих родителях

наверно очередная книжка "для чайников" и чайник её и писал

mihael_p 09.05.2016 20:39

Вот! Нашел! Когда то давным давно я делал, что то похожее и у меня было так:

Код AS3:

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;
        }
}


Wolsh 09.05.2016 21:03

Псевдокод написан не в синтаксисе AS3. Человек, который его писал, наверняка и не знаком с технологией флэш и языком AS3. Иначе он бы знал, что все дисплейные объекты итак имеют ссылку на мейн, которая всегда доступна через свойство root (ну, не всегда, а когда дисплейный объект находится в Списке Отображения. Но, я так понимаю, клетки наследующие Спрайт создавались именно для того чтобы отображаться). Кроме того, из псевдокода видно, что автор собирается помещать логику всей игры в каждую отдельную клеточку, а через мейн лазить в гости к соседям. Я бы удалил это руководство с диска, не забыв зажать Shift.

Добавлено через 8 минут
Цитата:

Все что касается этой ссылки на main мне не понятно, вплоть до типа переменной ОС. То есть не могу перевести в код.
Код AS3:

public class Cell extends Sprite 
//...далее конструктор
public function Cell (os:Main = null) {


GBee 10.05.2016 17:26

Цитата:

через свойство root
Опечатка?

Bletraut 10.05.2016 18:00

Цитата:

Сообщение от GBee (Сообщение 1193933)
Опечатка?

Код AS3:

(root as Main)

?

Azrael 11.05.2016 00:00

Благодарю neonoviiwolf, mihael_p и Wolsh, стало намного понятнее!

Azrael 06.06.2016 22:40

Цитата:

Сообщение от neonoviiwolf (Сообщение 1193914)
даже ещё проще, взять один квадрат, кодом разместить его копии в нужном положении и назначить слушателя событий сцены, дальше по клику узнаём(e.target) на какой квадрат нажали.

А если я использовал код выложенный mihael_p, как мне узнать номер элемента в массиве?


Часовой пояс GMT +4, время: 23:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.