PDA

Просмотр полной версии : проблема с поименовкой двухмерного массива объектов - кнопок (как в Winmine :)) )


Корнхолио
12.06.2002, 04:09
проблема с поименовкой двухмерного массива объектов - кнопок (как в 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
Спасибо, люди. стану умным -- авось тоже помагу. ))