//Высота каждой былинки в траве grassheight=35; //Среднее расстояние между каждой травинкой grassspacing=5; //Максимальное колебание каждой травинки maxsway=20; //Количество травинок по оси х xplots=30; //Количество травинок по оси y yplots=20; //Ветер имеет положение по х и трава притягивается к этой координате windxpos=0; //Скорость ветра слева и справа windspeed=0; //Дает траве эффект изогнутости. Трава отклоняется на 1/4 от направления сверху grasscontrol=grassheight/4; //Массив, содержащий информацию для каждой травинки grasscoords=[]; //Здесь цикл по полю - рисуется каждая травинка for (xpos=0; xpos<xplots; xpos++) { for (ypos=0; ypos<yplots; ypos++) { //координата х, координата y, колебание и цвет grasscoords.push([xpos*grassspacing+Math.random()*grassspacing,ypos*grassspacing+Math.random()*grassspacing,0,Math.round(Math.random()*128)*65536+Math.round(Math.random()*76+146)*256]); } } //запуск в каждом кадре onEnterFrame=function(){ //Очищем всю траву так чтобы ее можно было перерисовать с другим колебанием this.clear(); //Изменяем скорость ветра windspeed=Math.max(-50,Math.min(50,windspeed+Math.random()*40-20)); //Двигаем позицию травинок. Они перерисовываются в соответствии с позицией ветра (windxpos)
windxpos+=windspeed; //Если позиция ветра сдвинулась далеко влево - скорость его меняем на обратную
if(windxpos<-100){ windxpos=-100; windspeed*=-1; } //Если положение ветра сдвинулась далеко вправо - скорость его меняем на обратную else if(windxpos>grassspacing*xplots+100){ windxpos=grassspacing*xplots+100; windspeed*=-1; } //Рассмотрим перерисовку каждой травинки for(coord=0;coord<grasscoords.length;coord++){ //Установим стиль линии. 0 означает использование ширины волоса и grasscoords[coord][3] это цвет this.lineStyle(0, grasscoords[coord][3], 100, false, "normal", "none", "none", 1); //Настроим качание в соответствии с текущим колебанием травы и положением ветра
grasscoords[coord][2]=Math.max(-maxsway,Math.min(maxsway,grasscoords[coord][2]+Math.max(-maxsway,Math.min(maxsway,(windxpos-grasscoords[coord][0])/100))))+(Math.random()*3-1.5); //Подвинемся к основанию травинки
this.moveTo(grasscoords[coord][0],grasscoords[coord][1]); //Нарисуем изогнутую линию - дугу к новой верхушке травинки this.curveTo(grasscoords[coord][0],grasscoords[coord][1]-grasscontrol,grasscoords[coord][0]+grasscoords[coord][2],grasscoords[coord][1]-grassheight+Math.abs(grasscoords[coord][2]/2)); }
} |