![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2005
Адрес: Минск
Сообщений: 389
|
Добрый вечер, коллеги. Есть к вам один вопрос.
Представьте, что у меня есть рабочее поле 1280x720. Мне надо заполнить его квадратами 50x50 пикселей по диагонали от сверху-слева до снизу справа так, чтобы между квадратами была граница в 1 пиксель. Придуманный мной алгоритм далеко не идеален как мне кажется, и выполняет задачу только наполовину. Помогите усовершенствовать его или может у кого есть более простое решение. Буду благодарен любой помощи. Вот мой код: var i:Number = 0; var j:Number = 0; // var coefX:Number = 51;// смещение по оси X var coefY:Number = 51;// смещение по оси Y var rowCoef:Number = 1;// число пикселей-квадратов по диагонали var x0:Number = 0;// начальная координата Х var y0:Number = 0;// начальная координата Y var maxX:Number = 0;// максимальная координата по оси Х var maxY:Number = 0;// максимальная координата по оси Y var cordXArr:Array = Array();// массив с координатами Х var cordYArr:Array = Array();// массив с координатами Y // function randColor() { if (random(2) == 0) { randomCol = 0x19398A; } else { randomCol = 0x005DAA; } return randomCol; } // function newRect(coordX, coordY) { d = createEmptyMovieClip("z" + j, this.getNextHighestDepth()); d.beginFill(randColor(),100); d.moveTo(0,0); d.lineTo(50,0); d.lineTo(50,50); d.lineTo(0,50); d.lineTo(0,0); d.endFill(); d._x = coordX; d._y = coordY; j++; } while (cordXArr.length < 390) { if (maxX < 1300) { maxX = x0 + coefX * (rowCoef - 1); } else { maxX = 1300; } if (maxY < 750) { maxY = y0 + coefY * (rowCoef - 1); maxY0 = 0; } else { maxY = 750; maxY0 += coefY; } while (maxX >= 0) { cordXArr.push(maxX); maxX -= coefX; } while (maxY0 <= maxY) { cordYArr.push(maxY0); maxY0 += coefY; } rowCoef++; } // this.onEnterFrame = function() { if (i < cordXArr.length) { newRect(cordXArr[i],cordYArr[i]); i++; } else { delete this.onEnterFrame; } }; Буду благодарен любым советам. |
|
|||||
|
Регистрация: Mar 2006
Адрес: Odessa
Сообщений: 157
|
Как-то так:
var i:Number = 0; // var stepX:Number = 51;// смещение по оси X var stepY:Number = 51;// смещение по оси Y var lastTopX: Number = 0; var lastTopY: Number = 0; var cordXArr:Array = Array();// массив с координатами Х var cordYArr:Array = Array();// массив с координатами Y // function randColor() { if (random(2) == 0) { randomCol = 0x19398A; } else { randomCol = 0x005DAA; } return randomCol; } // function newRect(coordX, coordY) { d = createEmptyMovieClip("z" + j, this.getNextHighestDepth()); d.beginFill(randColor(),100); d.moveTo(0,0); d.lineTo(50,0); d.lineTo(50,50); d.lineTo(0,50); d.lineTo(0,0); d.endFill(); d._x = coordX; d._y = coordY; j++; } cordXArr.push(0); cordYArr.push(0); while (cordXArr.length < 390) { calcNextCoords(); } function calcNextCoords() { var cx = cordXArr[cordXArr.length - 1]; var cy = cordYArr[cordYArr.length - 1]; var nx = cx - stepX; var ny = cy + stepY; if (nx >= 0 && ny < 720) { cordXArr.push(nx); cordYArr.push(ny); return; } nx = lastTopX + stepX; ny = lastTopY; if (nx > 1280) { nx = lastTopX; ny += stepY; } lastTopX = nx; lastTopY = ny; cordXArr.push(nx); cordYArr.push(ny); } // this.onEnterFrame = function() { if (i < cordXArr.length) { newRect(cordXArr[i],cordYArr[i]); i++; } else { delete this.onEnterFrame; } };
__________________
Не всех война убила - многих покалечила |
|
|||||
|
Регистрация: Sep 2005
Адрес: Минск
Сообщений: 389
|
Вот блин, нет слов, чтобы высказать благодарность. Спасиб - сам уже бьюсь 3-й час над этой задачей ))))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:17. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|