LINUX.ORG.RU

На лоре появился снег


0

0

Простите за пиар, просто делать было нечего, а белкам не принято заниматься темже что и коты.

// ==UserScript==
// @name           snow
// @namespace      http://www.linux.org.ru/
// @description    !=53 =0 ;>@5!
// @include        http://www.linux.org.ru/*
// ==/UserScript==

function Sneg(args){
  this.count = args.count || 100;
  this.time = args.time || 100;
  this.weigth = args.weigth || 1;
  this.resist = args.resist || 2;
  this.maxForce = args.force || 0.5;
  //погода, содержит силу и направление ветра
  this.weather = {
    force: this.maxForce,
    //угол направления
    dest: Math.random()*Math.PI*2,
    getForces: function(){
      return {
        x: Math.cos(this.dest) * this.force,
        y: Math.sin(this.dest) * this.force
      };
    }
  };

  this.getDims = function(){
    if(!this.dims){
      this.dims = {
        x: window.innerWidth / 2.0,
        y: window.innerHeight / 2.0
      };
    }
    return this.dims;
  }

  var Snejinka = function(parent){

    this.reset = function(){
      this.speed = {x:Math.random(),y:Math.random()} ;
      var d = parent.getDims();
      this.point =  {
        x: Math.random()*d.x*2 - d.x,
        y: Math.random()*d.y*2 - d.y
      };
    }

    this.move = function(p){
      var d = parent.getDims();
      this.node.style.top = d.y - p.y;
      this.node.style.left = d.x + p.x;
    }

    this.repaint = function(){

      var p = this.point;
      var w = parent.weather.getForces();
      var v = this.speed;

      v.x = v.x + ( w.x * this.resist );
      p.x = p.x + v.x ;

      v.y = v.y + (w.y * this.resist);
      p.y = p.y + v.y - this.weigth / this.resist;

      this.move(this.point);
      var d = parent.getDims();

      if((v.y > 0 && (d.y - p.y) <= 0) || (v.y < 0 && (d.y + p.y) <= 0)){
        p.y = -p.y;
      }
      if((v.x > 0 && (d.x - p.x) <= 0) || (v.x < 0 && (d.x + p.x) <= 0)){
        p.x = -p.x;
      }

    }

    //параметры
    //вес
    this.weigth = Math.random()*parent.weigth;
    //парусность (воздушное сопротивление 8) )
    this.resist = Math.random()*parent.resist;
    // скорость
    this.reset();
    this.node = document.createElement("div");
    this.node.appendChild(document.createTextNode("*"));
    this.node.style.position = "fixed";
    this.node.style.color = "#ffffff";

    document.body.appendChild(this.node);

    this.move(this.point);

  }

  this.snows = new Array();//массив снежинок, каждая имеет две координаты
  //инициализация
  for(var i = 0; i < this.count; i++){
    this.snows[i] = new Snejinka(this);
  }

  this._repaint = function(){
    for(var i = 0; i < this.count; i++){
      this.snows[i].repaint();
    }
  }

  var refresh = function(_this){
    //TODO изменение ветра
    var w = _this.weather;
    w.force +=((w.force > _this.maxForce)?-1:1)*(Math.random()*w.force);
    w.dest += Math.PI/2 - Math.random()*Math.PI/4;
    if(w.dest > Math.PI*2){
      w.dest -= Math.PI*2;
    }
    _this._repaint();
  }

  this.run = function(){
    setInterval(refresh, this.time, this);
  }
}

function init(){
  var sneg = new Sneg({
    count:250
  });
  sneg.run();
}

init();
ps. какбы сделать снежинки не выделяемыми?

>>> Просмотр (1024x768, 286 Kb)

★★☆

Проверено: JB ()
Ответ на: комментарий от PolarFox

Это еще оптимизированный скрипт. *(

wfrr ★★☆
() автор топика

> белкам не принято заниматься темже что и коты.

но вы таки не смогли избежать соблазна? :) Подсказка - sudo apt-get install xsnow && xsnow

П.С.:
- что случилось с часами?
- Gimp/FF - Krita/Konqueror?

П.П.С. ух-ты снег от xsnow теперь оседает на панели - видно я давно его не смотрел

lester ★★★★
()
Ответ на: комментарий от lester

>- что случилось с часами?

както менял шрифт с тех пор их плющит

>- Gimp/FF - Krita/Konqueror?


Я не фанатик тулкитов.

>Подсказка - sudo apt-get install xsnow && xsnow


Неспортивно

wfrr ★★☆
() автор топика
Ответ на: комментарий от lester

> П.П.С. ух-ты снег от xsnow теперь оседает на панели - видно я давно его не смотре

П.П.П.С. - и на окнах тоже оседает, а еще и олени, елки, ветер( окно было на весь экран - не видел когда писал предыдущий пост ), наверное стоит поздравить себя с выходом из анабиоза :)

lester ★★★★
()
Ответ на: комментарий от lester

Снег в этом xsnow какой-то кислотный... он напрочь разъедает иконки в моем третьем KDE...

shaplov ★★★
()
Ответ на: комментарий от lester

>П.П.П.С. - и на окнах тоже оседает, а еще и олени, елки, ветер( окно было на весь экран - не видел когда писал предыдущий пост ), наверное стоит поздравить себя с выходом из анабиоза :)

Это всё было еще год назад - как раз тогда под НГ я xsnow ставил :)

anonymous
()

Простите меня дурака, но это не c++. Возникает резонный вопрос: на чем написан скрипт?

З.Ы. Еще раз простите.

funny_zombie
()

> На лоре появились тормоза

fxd

Igron ★★★★★
()

В Опере не фурычит.

anonymous
()
Ответ на: комментарий от funny_zombie

>Простите меня дурака, но это не c++. Возникает резонный вопрос: на чем написан скрипт?

ты чего? не выспался? этж JavaScript.

mono ★★★★★
()

> Sneg > weigth > Snejinka

Вам нужно срочно посетить аглицкого логопеда ;)

А так - прикольно.

theos ★★★
()
Ответ на: комментарий от mono

>ты чего? не выспался? этж JavaScript.

Ща только ложусь спать ) Аааа! Точно! Я с яваскриптом имею дело редко и мало((

funny_zombie
()
Ответ на: комментарий от lester

а ещё в компизе и в кде4 есть гламурный снег.

sid350 ★★★★★
()
Ответ на: комментарий от theos

> Sneg > weigth > Snejinka

Что за быдлокодерские приемчики?

http://lurkmore.ru/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%...

>Ещё одна пагубная привычка быдлокодеров — давать функциям, переменным и тому подобным вещам русские имена на транслите (или кодировать кириллицей непосредственно).

Tux-oid
()
Ответ на: комментарий от Tux-oid

Спешиал фор йу есть Преведо Ориентированный Язык.

wfrr ★★☆
() автор топика
Ответ на: комментарий от Tux-oid

> Что за быдлокодерские приемчики?

не надо меня так смешить - я только поел :))))

lester ★★★★
()

Как пускать-то?

anonymous
()

Я чего-то не понял, а как этот скрипт использовать? Куда его вставлять и пр. Короче, нужно howto для чайников.

Тоже хочу снежинки на лоре! :)

anonymous
()

Чего люди только не придумают, лишь бы compiz-snow-plugin не использовать. Часы повергли в ужас.

mutronix ★★★★
()
Ответ на: комментарий от mutronix

>Чего люди только не придумают, лишь бы compiz-snow-plugin не использовать.

у меня в opensuse 11 с гномом не включается, галочку ставишь, а она тут же снимается...

MiH
()
Ответ на: комментарий от skiminok1986

Ну когда уже автор соизволит написать нам хоть какое-то howto? Скоро и желание пропадёт.

anonymous
()
Ответ на: комментарий от anonymous

> Я чего-то не понял, а как этот скрипт использовать? Куда его вставлять и пр. Короче, нужно howto для чайников.

Под Opera - вероятно - в их UserJS, под Mozilla-based браузерами - использовать Greasemonkey ( https://addons.mozilla.org/en-US/firefox/addon/748 ). :)

Tools -> Greasemonkey -> New User Script...

В поле ввода "Includes (One per line)" пишем:

http://www.linux.org.ru/*

Затем - выбрав редактор, которым мы хотели бы отредактировать скрипт (например, /usr/bin/gedit ) - вставляем заместо имеющегося текста приведенный текст. Обновляем LOR. :)

Ruth ★★
()

> ps. какбы сделать снежинки не выделяемыми?

Хм, показалось довольно любопытным, так как не сталкивался с необходимостью подобного ранее,
в итоге нарыл вот такую вот страничку:
http://stackoverflow.com/questions/69430/is-there-a-way-to-make-text-unselectab
le-on-an-html-page

Попробовал подправить - для Firefox 3.1b2 все сработало на отлично, снежинки теперь невыделяемы.

$ diff -c snow snow.new 
*** snow	2008-12-29 19:08:06.000000000 +0300
--- snow.new	2008-12-29 19:15:43.000000000 +0300
***************
*** 86,91 ****
--- 86,98 ----
      this.node.appendChild(document.createTextNode("*"));
      this.node.style.position = "fixed";
      this.node.style.color = "#ffffff";
+     if( typeof(this.node.onselectstart) != "undefined" )
+         this.node.onselectstart=function() { return false; }
+     else if( typeof(this.node.style.MozUserSelect) != "undefined" )
+         this.node.style.MozUserSelect="none";
+     else
+         this.node.onmousedown=function() { return false; }
+     this.node.style.cursor="default";
  
      document.body.appendChild(this.node);

Ruth ★★
()

Белка лови СИМПУ!!!)))))

Sphinx ★★☆☆
()
Ответ на: комментарий от anonymous

> Ну и жрёт же проц, просто писец :(

Вот это да. Целиком сжирает ядро даже если открыта только одна вкладка. O_o Зато снег выполнен очень приятно, как визуально, так и технически (например, смена направления - отличная идея). И не отвлекает от работы с сайтом, чем страдает большинство подобных скриптов.

Ruth ★★
()

Круто, но панелька и часы... X_X

cruxish ★★★★
()
Ответ на: комментарий от MiH

В моей убунте надо было сначала xsnow поставить - после этого галка перестала сниматься.

anonymous
()
Ответ на: комментарий от anonymous

Я на работе был, да тут и за меня все описали.

wfrr ★★☆
() автор топика
Ответ на: комментарий от Ruth

Почитал погуглил, хватает однйо строки:

this.node.style.MozUserFocus = "none"; // это на попробовать
this.node.style.MozUserSelect = "none"; // убирает выделение,

но опера как всегда выделилась, для нее я ничего простого не нашел 8)

wfrr ★★☆
() автор топика
Ответ на: комментарий от lester

> П.П.С. ух-ты снег от xsnow теперь оседает на панели - видно я давно его не смотре

>П.П.П.С. - и на окнах тоже оседает, а еще и олени, елки, ветер( окно было на весь экран - не видел когда писал предыдущий пост ), наверное стоит поздравить себя с выходом из анабиоза :)

А под венду есть? :)

FiXer ★★☆☆☆
()

> Sneg, Snejinka

О да, убей себя, быдлокодер.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.