Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash-арт (http://www.flasher.ru/forum/forumdisplay.php?f=29)
-   -   чистое программирование в моде =)) Mx (http://www.flasher.ru/forum/showthread.php?t=30418)

Junge 17.04.2002 23:31

чистое программирование в моде =)) Mx
 
Вложений: 1
маленькие часики =) , только код =)
кто сможет сделать меньше ? =) ( щас 265 байт )

первый кадр :
t = ((new Date()).getTime()/10000)%8640;
createEmptyMovieClip('s', 1);
with (s){
_x=50;
_y=50;
lineStyle(0);
curveTo(0,-50,0,-50);
_rotation = t*60;
}
createEmptyMovieClip('m', 2);
with (m){
_x=50;
_y=50;
lineStyle(0);
curveTo(0,-50,0,-50);
_rotation = t;
}
createEmptyMovieClip('h', 3);
with (h){
_x=50;
_y=50;
lineStyle(0);
curveTo(0,-50,0,-50);
_rotation = t/12;
}
второй :

gotoAndPlay(1);

Junge 17.04.2002 23:45

Вложений: 1
упс , не тот зип

Junge 17.04.2002 23:50

время по гринвичу =) для уменьшения размера =)

Dolbyzerr 18.04.2002 00:12

Вложений: 1
262 байта (только код)...
три буквы исправил :)

Dolbyzerr 18.04.2002 01:32

Вложений: 1
248 байт!!! чистым кодом! :) :) :)

Nox Noctis 18.04.2002 01:51

объясните мне как вы байты считаете, а ? :)

2Dolbyzerr
ты curve на line исправил, но зачем оставил лишние параметры ? :p
lineTo(0, -50, 0, -50 ); ? :D


и потом - а никто не хочет написать это одной функцией ? :D

в первом кадре:
Код:

t = ((new Date()).getTime()/10000)%8640;
function Q(a, b) {
        createEmptyMovieClip(a, String("msh").indexOf(a));
        with (this[a]) {
                _x = 50
                _y = 50
                lineStyle(0);
                lineTo(0, -50);
                _rotation = b;
        }
}
Q("s", t*60)
Q("m", t)
Q("h", t/12)

во втором:
gotoAndPlay(1);

сколько это в байтах ? ;)

Nox Noctis 18.04.2002 02:09

а лучше так:
Код:

this.onEnterFrame = function() {
        t = ((new Date()).getTime()/10000)%8640;
        t = [t*60, t, t/12]
        for (i=0; i<3; i++) {
                createEmptyMovieClip(a=String("smh").charAt(i), i);               
                with (this[a]) {
                        _x = 50;
                        _y = 50;
                        lineStyle(0);
                        lineTo(0, -50);
                        _rotation = t[i];
                }
        }
};

...кадр всего один :)

CyberMax 18.04.2002 02:16

А если так ?

Код:

        t = ((new Date()).getTime()/10000)%8640;
        createEmptyMovieClip('s', 1);
        setProperty('s', _x, 50);
        setProperty('s', _y, 50);
        with(s) {
                lineStyle(0);
        //        curveTo(0,-50,0,-50);
                lineTo(0,-50);

        }
        setProperty('s', _rotation, t*60);

        duplicateMovieClip('s', 'm', 2);

        setProperty('m', _rotation, t);

        duplicateMovieClip('s', 'h', 3);

        setProperty('h', _rotation, t/12);

PS BTW, а сколько этот код в SWF занимает, а то у меня тут MX скоропостижно скончался :( , пришлось вышеотквоченное в пятерке паблишить. ;)

Dolbyzerr 18.04.2002 02:21

Вложений: 1
гы :), это опять я, 244 байта!!! :)

Junge 18.04.2002 02:48

233 байта =))
createEmptyMovieClip('s', 1)
setProperty('s', _x, 50)
setProperty('s', _y, 50)
s.lineStyle(0)
s.lineTo(0, -50)
setProperty('s', _rotation, (((new Date()).getTime()/10000)%8640)*60)
duplicateMovieClip('s', 'm', 2)
setProperty('m', _rotation, (((new Date()).getTime()/10000)%8640))
duplicateMovieClip('s', 'h', 3)
setProperty('h', _rotation, (((new Date()).getTime()/10000)%8640)/12)

2к gotoAndPlay(1)

Nox Noctis 18.04.2002 03:26

ну, раз пошла такая пьянка...
 
...то так короче :)

createEmptyMovieClip('m', 1);
m._x = 50;
m._y = 50;
m.lineStyle(0);
m.lineTo(0, -50);
m._rotation = t=(((new Date()).getTime()/10000)%8640);
duplicateMovieClip("m", "s", 2);
s._rotation = t*60;
duplicateMovieClip("m", "h", 3);
h._rotation = t/12;

DeliMIter 18.04.2002 13:19

И тут пришел я.

И счас достанется всем :)))))) Нет, не подумайте, я не написал кода на 200 байт. Но я слегка проверил несколько вышеприведенных алгоритмов на быстродействие. Итак, посмотрим относительные характеристики.

Nox Noctis со своим хитом... 0.330 мс - лучший результат из уже приведенных

Junge (салют! :) )... 0.355 мс. Ай-ай-ай. Хотя по соотношению размер - производительность очень даже.

Dolbyzzer... 0.500 мс. Стыдно, товарищи! Ой, как стыдно!

И наконец!!! Вот оно!!!
Код:

createEmptyMovieClip('s', 1);
s._x = s._y = 50;
s.lineStyle(0);
s.lineTo(0, -50);
duplicateMovieClip('s', 'm', 2);
duplicateMovieClip('s', 'h', 3);
s._rotation = (h._rotation = (m._rotation = ((new Date()).getTime() / 10000) % 8640)/12)*720;

250 байт. Зато - 0.310 мс.

Ура, товарищи!!!

Nox Noctis 18.04.2002 14:16

Цитата:

Оригинал написал(а) DeliMIter
Зато - 0.310 мс.
как время оценивал ?

DeliMIter 18.04.2002 21:55

2Nox Noctis

Брал конкретный код, вставлял его в цикл на 1000 итераций, считал время выполнения цикла, потом брал среднее арифметическое за кадров где-то 50. Погрешность на цикл сравнительно невелика - не больше 5%. Можно повычитать из приведенных результатов по 0.015 мс (время выполнения пустого цикла на 1000 итераций около 15 мс), но соотношение останется приблизительно то же.

Nox Noctis 19.04.2002 16:53

2DeliMIter

понятно... обычный способ оценки временной сложности...

только с учетом привязки всех событий к фреймрейту (дабы не создавать торможение циклом при достаточно большом количестве итераций) -
мне больше нравится другой способ:

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

сначала прогнать это без тестируемого скрипта - потом то же самое с тестируемым скриптом в первом кадре,
смотрим разницу во времени, делим на количество проходов

sanitar 19.04.2002 18:48

Вложений: 1
233:) я пока лидирую.

Junge 19.04.2002 18:50

я ледирую ! :) у меня самые маленькие часы получились :)
никто не может сделать меньше ? ;)

sanitar 19.04.2002 18:59

ты к тому, что все твой исходник переделывают? ну тогда ты реально крут:)
ну тогда я лидирую в переделывании твоего исходника :D от него только имя осталось:)

Junge 19.04.2002 19:11

у меня тоже 233 раньше чем у тебя =)) , в зипе часы вне мувика , поправил бы , для порядка =) никто не может урезать размер ?
вся фишка в том что можно сделать 226 байт , но когда есть графика , а не чистый код , здесь в самом конце :) :)

sanitar 19.04.2002 19:25

блин точно. ну да ладно я выхожу из игры:) а те часики были клёвык, тред рос очень быстро. клёво было:)

DeliMIter 19.04.2002 19:45

2Nox Noctis

Я не знаю, есть ли сильные отличия моего метода от твоего по точности. Только у меня получается результат по 50000 проходов. Он гораздо среднее того, что получишь ты :)))) А торможение - побочный эффект. Тест есть тест.

Nox Noctis 19.04.2002 19:59

2DeliMiter

Пока несут сакэ
Мы будем пить то, что есть
....
Мы уже победили,
только это еще не так заметно
(БГ)

;)

Modest 19.04.2002 20:50

а на стороне сервера все эти дела не сделать???? (вопрос дурачка)

Junge 19.04.2002 22:12

Вложений: 1
отвлеклись мы от темы :) , вот 209 байт :p :p :p , но здесь есть графика , так что же получается , графика легче кода ?

Nox Noctis 19.04.2002 22:30

2Junge
поправь меня, если я ошибаюсь:

t = (((new Date()).getTime()/10000)%8640);
o.i=60, n.i=1, b.i=1/12;
o.onEnterFrame = b.onEnterFrame=n.onEnterFrame=function () {this._rotation = t*this.i;};


– это 158 байт :) :p

(это в твоем последнем примерчике на место скрипта поставить)

Junge 20.04.2002 00:10

ошибаешься =) 287 байт :D

Nox Noctis 20.04.2002 00:15

тогда я не понимаю, как вы ети байты считаете....

я взял этот скриптец, сохранил его в .txt'шник и посмотрел, сколько он занимает места...

как еще байты считать ? :)

CyberMax 20.04.2002 01:03

2Nox Noctis
 
Мы тут размер результирующего swf считаем.
Блин, кто бы мне сказал сколько мой вариант в SWF6Compressed занимает...

Nox Noctis 20.04.2002 13:18

ааа...
а я то думал вы за минимальный объем кода бьетесь...
тады извините, не врубился :)

2CyberMax

246 b

DeliMIter 20.04.2002 13:25

2Nox Noctis

Я, наверное, с утра плохо соображаю, но стишок я не понял. Или думаю, что не понял. Счас переведу...
Код:

function onEnterFrame() {
 if (!sake_is_here) {
  for (name in AvailableDrinks) {
  We.push(AvailableDrinks[name]);
  delete AvailableDrinks[name];
  }
 } else {
  We._win = true;
  updateAfterEvent();
 }
}

Поправь меня, если я где ошибся.

Хыхыхы...

miodesign 20.04.2002 16:10

:D :cool: ;) :p :D :D :D прикольно вы тут,......а мне влом там мудрить, так что я за вами понаблюдаю...смешно так,...из-за того, как вы тут спорите, гонитесь друг за другом.... . . . :D

DeliMIter 20.04.2002 20:27

Ребяты, лажа. Ваши все 233 байта и тэдэ - компрессованный свф. Такая обида.

CyberMax 20.04.2002 21:32

2DeliMIter
 
Дык в чем проблема-то ? Давайте мерянь некомпресованный.
Правда пользователям пофиг компресованый этот swf или нет.
Главное чтоб выглядело красиво и при этом грузилось быстро.

PS inline($fa/$eb/$fe) лучше ;)

DeliMIter 20.04.2002 21:53

Вложений: 1
2CyberMax

Посмотрю дома, что твой инлайн значит.
call far, что ли? Или это $ea? Твою систему :)))))

2All

Короче, поясняю новые правила. Убираем птичку Compress Movie в паблише, скачиваем фласм (Flash Assembler) и начинаем играть мышцой.

У меня 319 байт. Кто меньше?

Nox Noctis 21.04.2002 11:58

и чем тебе прессованный свф не нравится - не понимаю... :)
...но фласм - это извращение какое-то :)

Nox Noctis 21.04.2002 12:15

...и к тому же етот фласм для пятерки и муховый код не вскрывает

miodesign 21.04.2002 13:28

:p :p :p

CyberMax 22.04.2002 01:09

307 байт.
 
У меня 307 байт.
Кто меньше ?

CyberMax 22.04.2002 01:11

307 байт.
 
Вложений: 1
Вот черт !

CyberMax 22.04.2002 01:31

298 байт
 
Вложений: 1
Блин, поспешил !
Вот, в итоге 298 байт получилось.


Часовой пояс GMT +4, время: 15:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.