Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   проблема с поименовкой двухмерного массива объектов - кнопок (как в Winmine :)) ) (http://www.flasher.ru/forum/showthread.php?t=32987)

Корнхолио 12.06.2002 04:09

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

DeliMIter 12.06.2002 21:37

Код:

// constructor
function ArrayD2(X, Y) {
 this.Dim(X, Y);
}

ArrayD2.prototype.Validate = function(X, Y) {
 return ((X >= 0)and(X < this._xlimit)and(Y >= 0)and(Y < this._ylimit));
}

ArrayD2.prototype.setValue = function(X, Y, Value) {
 if this.Validate(X, Y) this[X][Y] = Value;
}

ArrayD2.prototype.getValue = function(X, Y) {
 return (this.Validate(X, Y)? this[X][Y]: undefined);
}

ArrayD2.prototype.Dim(X, Y) {
 if ((X > 0) and (Y > 0) and (X != this._xlimit)) {
  if (X > this._xlimit + 1) {
  for (var i = this._xlimit + 1; i < X; i++) this[i] = new Array();
  else
  for (var i = this._xlimit; i >= X; i--) delete this[i];
 }
 this._xlimit = X - 1;
 this._ylimit = Y - 1;
}


Egoritch 12.06.2002 21:47

Да, DeliMIter, успокоил паренька.......
я когда сапёра делал я просто дублировал таким образом:

sizeX=20;
sizeY=10;
for (y=0;y<sizeY;y++)
for (x=0;x<sizeX;x++){
s=y*sizeX+x; // для каждого кубика - свой индекс
s1="kub_" + s;
kub.duplicateMovieClip(s1, 10+s);
s1=eval(s1);
s1._x=x*s1._width;
s1._y=y*s1._height;
}


вот так я продублировал сколько надо объектиков kub задав каждома свой индекс, для быстрой адресации

для обращения к объекту с координатами 3:5 ты пишешь
obj=eval("kub_" + (5*SizeX+3));

чтобы не творить не5нужных массивов

DeliMIter 12.06.2002 22:00

Хых, а я никого и не хотел успокоить :)))))))))

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

А насчет ненужных массивов - не согласен, массивы работают быстрее. Заметно быстрее. Посмотри, какой громоздкий код генерит Флэш на clip["name_" + xindex + "_" + yindex] против clip.name[xindex][yindex].

Корнхолио 14.06.2002 22:20

Спасибо, люди. стану умным -- авось тоже помагу. ))


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

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