Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.05.2016, 17:22
Azrael вне форума Посмотреть профиль Отправить личное сообщение для Azrael Найти все сообщения от Azrael
  № 1  
Ответить с цитированием
Azrael
 
Аватар для Azrael

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

Старый 09.05.2016, 17:59
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 2  
Ответить с цитированием
neonoviiwolf

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

Старый 09.05.2016, 17:59
mihael_p вне форума Посмотреть профиль Отправить личное сообщение для mihael_p Посетить домашнюю страницу mihael_p Найти все сообщения от mihael_p
  № 3  
Ответить с цитированием
mihael_p

Регистрация: Jul 2011
Сообщений: 249
Отправить сообщение для mihael_p с помощью Skype™
Эх... обработать бы этот тэгами AS3 и без перевода на великий и могучий Русский язык))

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

Старый 09.05.2016, 18:03
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 4  
Ответить с цитированием
neonoviiwolf

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

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

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

Старый 09.05.2016, 20:39
mihael_p вне форума Посмотреть профиль Отправить личное сообщение для mihael_p Посетить домашнюю страницу mihael_p Найти все сообщения от mihael_p
  № 5  
Ответить с цитированием
mihael_p

Регистрация: Jul 2011
Сообщений: 249
Отправить сообщение для mihael_p с помощью Skype™
Вот! Нашел! Когда то давным давно я делал, что то похожее и у меня было так:

Код 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;
	}
}
__________________
Не стыдно спросить, стыдно не знать !

Старый 09.05.2016, 21:03
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

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

Добавлено через 8 минут
Цитата:
Все что касается этой ссылки на main мне не понятно, вплоть до типа переменной ОС. То есть не могу перевести в код.
Код AS3:
public class Cell extends Sprite 
//...далее конструктор
public function Cell (os:Main = null) {
__________________
Reality.getBounds(this);

Старый 10.05.2016, 17:26
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 7  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
через свойство root
Опечатка?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 10.05.2016, 18:00
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 8  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
Сообщение от GBee Посмотреть сообщение
Опечатка?
Код AS3:
(root as Main)
?
__________________
Я заклинаю вас действовать иначе.

Старый 11.05.2016, 00:00
Azrael вне форума Посмотреть профиль Отправить личное сообщение для Azrael Найти все сообщения от Azrael
  № 9  
Ответить с цитированием
Azrael
 
Аватар для Azrael

Регистрация: Sep 2015
Сообщений: 69
Благодарю neonoviiwolf, mihael_p и Wolsh, стало намного понятнее!

Старый 06.06.2016, 22:40
Azrael вне форума Посмотреть профиль Отправить личное сообщение для Azrael Найти все сообщения от Azrael
  № 10  
Ответить с цитированием
Azrael
 
Аватар для Azrael

Регистрация: Sep 2015
Сообщений: 69
Цитата:
Сообщение от neonoviiwolf Посмотреть сообщение
даже ещё проще, взять один квадрат, кодом разместить его копии в нужном положении и назначить слушателя событий сцены, дальше по клику узнаём(e.target) на какой квадрат нажали.
А если я использовал код выложенный mihael_p, как мне узнать номер элемента в массиве?

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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