|
|
|||||
Регистрация: Sep 2014
Сообщений: 7
|
Работа с массивами из объектов
Здраствуйте. Я делаю свою програмку для отображения колебаний 100 шариков.
До этого я сделал модель из 3 шариков. Там все нормально, можно и вручную прописать. А вот со 100 придется использовать массивы. С созданием шариков и добавлением возможности их перемещения мышкой я уже разобрался: import flash.events.Event; import flash.events.MouseEvent; function createBalls():void { var ball = new Array(); for (var i = 1; i <= 10; i++) { ball[i - 1] = new Array(); for (var j = 1; j <= 10; j++) { var balls:ball_mc = new ball_mc(); balls.x = 500 + j * 50; balls.y = 200 + i * 50; ball[i - 1] [j - 1] = balls; addChild(ball[i - 1] [j - 1]); balls.addEventListener(MouseEvent.MOUSE_DOWN, click1); balls.addEventListener(MouseEvent.MOUSE_UP, click2); } } }; createBalls(); function click1(e:MouseEvent):void { e.target.startDrag(); }; function click2(e:MouseEvent):void { e.target.stopDrag(); }; А вот как задавать характер движения шариков? С обычными объектами можно справиться просто: ball.x=......... . А вот с массивом так не выходит. Если писать ball[i][j].x=...... , то он ругается. Пишет "Обращение несуществующего свойства ball" т.е. я так понял, что при присвоении какого-то объекта элементу массива, его свойства(.x; .y и другие) в массиве не отображаются. Прошу вашей помощи. Вариант с 3 шариками: То, что есть со 100: Последний раз редактировалось KoNnOr_F14; 30.09.2014 в 22:02. |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Почему не получается перемещать? У вас balls указывает 10-й элемент массива и чего вы хотите?
|
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
А Вам обязательно двухмерный массив?
|
|
|||||
Регистрация: Sep 2014
Сообщений: 7
|
Мне нужно управлять не только 10-ым элементом, а и каждым отдельным
Добавлено через 1 минуту А двумерный массив потому, что шарики находятся в квадрате Добавлено через 3 минуты Добавил в шапку флешки с 3 шариками и то, что есть со 100 |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
|
|
|||||
Регистрация: Sep 2014
Сообщений: 7
|
исправил
|
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
А Вам что нужно?) Конкретнее только объясните..
|
|
|||||
Регистрация: Sep 2014
Сообщений: 7
|
мне нужно как-то управлять каждым шариком, т.е. менять его координаты.
С обычными объектами я уже говорил - все просто. А вот с массивом не получается. Если писать ball[i][j].x=...... , то он ругается. Пишет "Обращение несуществующего свойства ball" т.е. я так понял, что при присвоении какого-то объекта элементу массива, его свойства(.x; .y и другие) в массиве не отображаются. |
|
|||||
.
|
Присоединяюсь к вопросу. А зачем вам двумерный массив? Давайте сделаем, например, n-мерный, по количеству шариков. Ведь это же круто!
У вас каждый шарик и так имеет двумерные координаты x и y. Нет нужды заморачиваться с двумерным массивом. Суть здесь только о том, чтобы не "потерять" шарики, поэтому подойдет любое хранилище — массив или хеш. Массив предпочтительнее. Вы же связи между этим и соседними шариками, наряду весом шарика и с мощностями пружин храните в самих шариках? С другой стороны, я советую глянуть в сторону физических движков, типа Box2D или Nape. Это чтобы не изобретать велосипед со своей физикой. Добавлено через 7 минут Цитата:
Если немного про графы почитать, то вообще необходимость в двумерном массиве отпадет. Найти любой шарик из окружения выбранного можно путем перебора связей [этот шарик] -> [связанный с ним шарик 1], [этот шарик] -> [связанный с ним шарик 2] и т.д. Причем, после поиска связанного шарика, можно уже обновлять для него найденные новые координаты. Со шлейфом так быстро не скажу, но можно в самом шарике хранить координаты нескольких его последних позиций. Ну и чтобы всех по разу обходить нужно решить задачку коммивояжера на графах. Последний раз редактировалось dimarik; 30.09.2014 в 22:17. |
|
|||||
Регистрация: Sep 2014
Сообщений: 7
|
Цитата:
Цитата:
Готовые движки не подойдут, так как основной задачей для меня является создание собственной модели колебаний. |
Часовой пояс GMT +4, время: 23:20. |
|
« Предыдущая тема | Следующая тема » |
|
|