Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как проверить объекты вокруг объекта (http://www.flasher.ru/forum/showthread.php?t=192790)

Dip52 19.01.2013 19:48

Цитата:

Сообщение от etc (Сообщение 1116658)
Нет, вы не поняли вопроса. Зачем в исходном коде вы повторяете доступ к i-ому элементу массива целых 8 раз?

Массив содержит список (8) объектов, которые находятся вокруг бомбы.

etc 19.01.2013 19:50

Цитата:

Сообщение от Dip52 (Сообщение 1116659)
Массив содержит список (8) объектов, которые находятся вокруг бомбы.

Нет, вы все равно не поняли моего вопроса. Ну и ладно.

КорДум 19.01.2013 20:02

Ну если ответа получить не удалось, то скажу я: закэшируйте элемент массива в переменной, чтобы 8 раз до него не ломиться, а только один.

Dip52 19.01.2013 20:11

Цитата:

Сообщение от КорДум (Сообщение 1116661)
Ну если ответа получить не удалось, то скажу я: закэшируйте элемент массива в переменной, чтобы 8 раз до него не ломиться, а только один.

Если вы к вопросу etc.

var object:Object = arrayForObjects[i];

Вы это имеете в виду?

КорДум 19.01.2013 21:09

Sprite только или какой там у вас общий класс или интерфейс.

Dip52 19.01.2013 21:28

Цитата:

Сообщение от КорДум (Сообщение 1116669)
Sprite только или какой там у вас общий класс или интерфейс.

Значит теперь я правильно понял.

Вопрос: а какая разницу между обращением? То есть: я могу обращаться к массиву, а могу через Sprite.

iflamberg 19.01.2013 21:35

обращение к массиву медленнее.

КорДум 19.01.2013 21:49

Ну представьте, вы сначала ищите в разных скоупах массив, как бы раскручивая спираль, затем ищете элемент с нужным индексом. И так 8 раз.
Или сразу натыкаетесь в локальном скоупе на ссылку на объект, причем сразу же откастованную. Имеете прирост к скорости и автокомплит.

alatar 19.01.2013 23:01

Цитата:

Сообщение от Dip52 (Сообщение 1116673)
Вопрос: а какая разницу между обращением? То есть: я могу обращаться к массиву, а могу через Sprite.

Аналогия. У вас в соседней комнате в ящике стола в коробочке лежит блокнот в котором есть необходимые вам данные. И вы вместо того что бы положить перед собой блокнот, каждый раз ходите в соседнюю комнату, открываете ящик стола, достаете коробочку, достаете блокнот, ищете нужную запись и возвращаетесь обратно.

Dip52 20.01.2013 00:20

Цитата:

Сообщение от alatar (Сообщение 1116685)
Аналогия. У вас в соседней комнате в ящике стола в коробочке лежит блокнот в котором есть необходимые вам данные. И вы вместо того что бы положить перед собой блокнот, каждый раз ходите в соседнюю комнату, открываете ящик стола, достаете коробочку, достаете блокнот, ищете нужную запись и возвращаетесь обратно.

А теперь представьте, что у меня вместо объекта (допустим квадрата) там находится определенное число.
По вашей логике я должен сделать так: преобразовать элемент в число (например Number).
Потом мне нужно изменить это число.

Код AS3:

var array:Array = [1,2,3];
for(var i:Number = 0; i < array.length; i++)
{
  var myNumber:Number = array[i];
  myNumber += 1;
}
trace(1,2,3);

Как быть в таком случае?
Просто у меня в массиве каждый элемент это массив: объект, жив ли он, можно ли ему двигаться, перезарядка (время).
Когда я пытаюсь изменить время перезарядки таким образом, как вы советуете, то ничего не происходит.

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

Сообщение от AleXXX (Сообщение 1116645)
Как я понял, объекты находятся в сетке некоторой размерностью X*Y элементов, в данном случае 3*3. Следовательно, он имеет координату в этой сетке P(col,row).

Соседями считаются : P1(col-1,row) -левый, P2(col+1,row) - правый, P3(col,row-1) -верхний, P4(col,row+1)-нижний.....ну и диагональные соседи аналогично.

Достаточно проверить, входит ли "сосед" в пределы сетки, т.е. координаты "соседа" P2(col2,row2) удовлетворяют условиям:
1) X>=col2>0,
2) Y>=row2>0

Не совсем понимаю, как это можно написать в виде кода.


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

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