Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Приемная администрации портала _ Снежинки

Автор: Soteric 22.12.2009, 8:41

В IE8 снежинки загружают процессор на все 100.

Автор: Destruction 22.12.2009, 8:43

В прошлом (или позапрошлом?..) году тоже самое говорили..

Вообще, начать наверное стоит с того, что это все-таки проблема Internet Explorer..

PS: Написал свой алгоритм падения снежинок. Сейчас буду прикручивать.

Автор: Destruction 22.12.2009, 9:18

Проблема кажется решена.

Мало того, что решена, так еще и снега стало в четыре раза больше..

Попутно исправлена проблема с тем, что в обозревателях с "быстрым" JavaScript - снежинки летали так, что становилось страшно - убить с такой скоростью можно и снежинкой..

Тестируйте smile.gif

PS: Убрана поддержка MSIE6.

Автор: Soteric 22.12.2009, 9:30

Проблема осталась. Добавилась другая. При загрузке страницы IE8 загружает только шапку, выдает следующую ошибку:

"Сведения об ошибке на веб-странице

Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
штамп времени: Tue, 22 Dec 2009 06:26:30 UTC


Сообщение: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
Строка: 0
Символ: 0
Код: 0
URI-код: https://forum.uokit.com/index.php?act=post&do=reply_post&f=98&t=19113"

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

Автор: Destruction 22.12.2009, 9:43

Одна из самых жутких ошибок, которую только можно придумать.. Исправлено.

Так же исправлена проблема с тем, что появлялась лишняя прокрутка страницы.

Кол-во снежинок уменьшил до 15. Если все плохо - можно в настройках форума установить любое значение или же просто отключить мод.

Теперь нравится снег ? smile.gif

Вот в таких скриптах очень хорошо раскрывается производительность интернет-обозревателя... У меня в Google Chrome никаких тормозов нет даже при 150 снежинках..

PS: Заглянул на IBR... Мод был выложен на НГ 06-07, т.е. получается три года назад обсуждали как все плохо.

Автор: Soteric 22.12.2009, 12:04

На IE8 загрузка ~60%, на Opera 10.10 ~40% (при прокрутке страницы скачет до 100%). Проблема с KB927917 на IE8 осталась, ответить в теме по-прежнему не удается.

Автор: Jose Cuervo 22.12.2009, 12:46

Мозилла.
Снежинки радуют.)
Спасибо, Скууби)

Автор: Warstone 22.12.2009, 13:05

JS машина у ИЕ на порядок (реально в 10 раз. +- 10-20%) медленней чем мозилловская. Так что - все возможно. Щас код посмотрю - может можно чего придумать.

Автор: Beyonder 22.12.2009, 16:40

Скрипт в целом и так довольно эффективный. Но увы, тормозит.

Лучший вариант решения - не добавлять вообще обьекты снежинок и не двигать их по экрану. Сделать 20 контейнеров размером с весь экран. Каждый контейнер - 1 снежинка. Снежинку рисовать путём background и background-position. Правда не уверен можно-ли сделать чтобы нажатия на дивы мышкой они игнорировали пропуская под себя.
Фишка в том, что при каждом движении снежинки - брузер перерендеривает почти всю страницу проверяя на какие элементы теперь эта снежинка может повлиять. Если-же просто сдвигать background-position - cкорость рендеринга ОЧЕНЬ ускорится т.к. будет перерисовываться только 1 див, на остальные ему плевать.
Плюс, нету смысла дивы удалять. Когда снежинка доходит до низу - создавать её в том-же диве но сверху.

Автор: Warstone 22.12.2009, 17:02

Да, с дивами тут зря сделали, согласен. Еще можно с таймаутами поиграться. Там вроде глупость при создании стнежинок.

Автор: Beyonder 22.12.2009, 17:12

Да таймауты это конечно плохо, но тормозов они особых тут не дают, т.к. включаются довольно редко. Самая тормознутая часть - движение снежинок по экрану.

Автор: Destruction 22.12.2009, 19:36

>>Проблема с KB927917 на IE8 осталась

Еще немного исправил. Несколько раз проверил - проблемы нету. Тестируйте.

>>Скрипт в целом и так довольно эффективный
Спасибо, старался. Однако если приглядываться к конкретным снежинкам, то видно, что траектория далеко не идеальна:
- Изначально все снежинки падают вертикально.
- Временами получаются рывки при смене угла падения.
Посоветуешь как исправить формулу, не написав туда какой-нибудь хитрый алгоритм с синусойдой (именно от него я отказался) ?

>>Лучший вариант решения - не добавлять вообще обьекты снежинок и не двигать их по экрану. Сделать 20 контейнеров размером с весь экран. Каждый контейнер - 1 снежинка. Снежинку рисовать путём background и background-position.
Верно мыслишь.

>>с дивами тут зря сделали
Вообще-то они тут без DIV'ов летают.

>>Еще можно с таймаутами поиграться
Можно, да не просто поиграться, а сделать вообще айс.. Думаю 10-15 fps должно быть достаточно, что даст понижение нагрузки в 2-3 раза.

>>Там вроде глупость при создании стнежинок.
Самую малость. Когда снежинка улетела за край экрана, я вместо того, чтобы поставить её на место - удаляю и рисую с нуля, ибо так код короче.
В любом случае - проблема не в этом.

>>Да таймауты это конечно плохо
Это где это у меня плохие таймауты?

>>Самая тормознутая часть - движение снежинок по экрану
Истинно так!

Автор: Warstone 22.12.2009, 21:34

Вот вам еще один код с ЕГи, где пасусь переодически...

Исходный код
<script LANGUAGE="JavaScript1.2">
//<!-- Begin
var no = 15; // количество рисунков
var speed = 30; // скорость движения;
var clientPC = navigator.userAgent.toLowerCase();
var is_ie_old = (clientPC.indexOf("msie") != -1&&clientPC.indexOf("opera") == -1&&clientPC.indexOf("msie 7.") == -1);
if (is_ie_old)
{
var snowflake = "/conference/images/sneg1.gif"; //адрес рисунка
}
else
{
var snowflake = "/conference/images/sneg1.png"; //адрес рисунка
}

var dx, xp, yp;
var am, stx, sty;
var i;
var doc_width;
var doc_height;
var deadin;
deadin=0;
window.onresize= message;
doc_width = document.body.offsetWidth;
this.documentHeight = (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
doc_height=this.documentHeight;


function message() {
doc_width = document.body.offsetWidth;
this.documentHeight = (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
doc_height=this.documentHeight;

}

function message2() {

dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
for (i = 0; i < no; ++ i) {
dx[i] = 0;
xp[i] = Math.random()*(doc_width-80);
yp[i] = Math.random()*doc_height;
am[i] = Math.random()*20;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
}





}
function message3(i) {
yp[i]=doc_height+50;
deadin=deadin+1;
document.getElementById('plt').innerHTML='<font color=\"#FF0000\">Поймано снежинок :' + deadin+ '&nbsp;&nbsp; &nbsp;</font> ';
}

for (i = 0; i < no; ++ i) {
document.write("<div id=\"dot"+ i +"\"style='position:absolute;left:-25px;top:-25px;' onclick='message3("+ i +")' ");

document.write("><img src=\"");
document.write(snowflake + "\" border=\"0\"></div>");
}

function snow() {


for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width - am[i]-50);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
}
dx[i] += stx[i];
document.getElementById("dot"+i).style.top = yp[i] + "px";
document.getElementById("dot"+i).style.left = (xp[i] + am[i]*Math.sin(dx[i])) + "px";
}
setTimeout("snow()", speed);
}

setTimeout("message()", 1000);
setTimeout("message2()", 1100);
setTimeout("snow()", 1200);

// End -->

</script>

Автор: Destruction 22.12.2009, 21:47

Нам чужого кода не нужно.

Мы свой код напишем, благо не дураки - умеем писать код.

Автор: Soteric 23.12.2009, 9:09

Честно говоря не почувствовал изменений, но после серии обновлений страницы смог все-таки ответить в тему. Сломали форум, злодеи smile.gif Вызывайте теперь МЧС, пусть снег чистят biggrin.gif

Автор: Александр Needle™ 23.12.2009, 11:53

Через IE Maxthron и K-Melon не заходит , выдает ошибку сижу только через Fox

Автор: Warstone 23.12.2009, 14:05

А вы заметили что вдруг стало мало <вырезано анти-матом>ских вопросов? Может не надо ничего менять?

Автор: Destruction 23.12.2009, 21:42

Полагаю все-таки надо.

Поставлю для IE, чтобы снежинки включались не по domready, а по onload.. Решит проблему.

Автор: Destruction 24.12.2009, 17:51

Извиняюсь за задержку.

Проблему с Internet Explorer в очередной раз решил.. Вообще сложно решать проблему, которой у тебя нету..

Далее буду работать над снижением FPS, что понизит нагрузку.

Автор: Александр Needle™ 24.12.2009, 18:51

Все нормально работает в IE , Maxthrone , K-meleon и Foxe

Автор: Soteric 25.12.2009, 8:33

Ошибка на IE8 пропала. Загрузка CPU 50%, при скроллинге скачет до 100%. На опере 25%. В принципе стало терпимо.

Автор: Juzzver 25.12.2009, 19:29

IE: CPU 01-08
Opera: CPU 01-05
FFox: CPU 03-06

Автор: vanea 26.12.2009, 17:34

Да ну, бред, инагда CPU прыгаит да 100%, асобина кагда болише сылок с уософта. Скока ети снишки та будут?

Автор: wap 26.12.2009, 18:10

Цитата(vanea @ 26.12.2009, 16:34) *

Да ну, бред, инагда CPU прыгаит да 100%, асобина кагда болише сылок с уософта. Скока ети снишки та будут?
Возьми и сам выключи, если они тебе не нравятся:
https://forum.uokit.com/index.php?act=UserCP&CODE=04

Автор: Александр Needle™ 26.12.2009, 19:42

вап зе бест!

Автор: Deadly 26.12.2009, 19:47

Цитата(vanea @ 26.12.2009, 19:34) *
Да ну, бр И д

Радоватся же нада! Новый год, и как ни как!... tongue.gif
Цитата(Александр Needle™ @ 26.12.2009, 21:42) *
Вап зи и бист

А и я ? rolleyes.gif

Автор: Juzzver 27.12.2009, 14:16

Аист

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)