Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.10.2006, 11:41
twenty вне форума Посмотреть профиль Отправить личное сообщение для twenty Найти все сообщения от twenty
  № 1  
Ответить с цитированием
twenty
 
Аватар для twenty

Регистрация: Oct 2006
Сообщений: 39
По умолчанию Переделать код под 6-й плеер

Взял код из сообщения http://www.flasher.ru/forum/showpost...64&postcount=9

Работает корректно почему-то только начиная с 7-о плеера. Как переделать под 6-й?

Код:
function rc4_akey_init(akey)
{
    var n = akey.length, i = n, j, s = Array(), tmp;

    for ( ; i < 0x100; i++) akey[i] = akey[i % n];
    for (i--; i >= 0x100; i--) akey[i & 0xff] ^= akey[i];

    for (i = 0; i < 0x100; i++) s[i] = i;

    j = 0;
    for (i = 0; i < 0x100; i++) {
        j = (j + s[i] + akey[i]) & 0xff;

        tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
    }

    return s;
}

function rc4_get_gamma(akey, len)
{
    var s = rc4_akey_init(akey), i, j, k, tmp, gamma = Array();
    i = j = 0;
    for (k = 0; k < len; k++) {
        i = (i + 1) & 0xff;
        j = (j + s[i]) & 0xff;

        tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;

        gamma[k] = (s[i] + s[j]) & 0xff;
    }

    return gamma;
}

function rc4_encrypt(akey, text)
{
    text = utf8_encode(text);
    return base64_encode(
        xor_bytes(
            rc4_get_gamma(utf8_encode(akey), text.length),
            text
        )
    );
}

function rc4_decrypt(akey, text)
{
    text = base64_decode(text);
    return utf8_decode(
        xor_bytes(
            rc4_get_gamma(utf8_encode(akey), text.length),
            text
        )
    );
}

function xor_bytes(al, bl)
{
    var n = al.length, cl = Array();

    while (n-- > 0) {
        cl[n] = al[n] ^ bl[n];
    }

    return cl;
}

function base64_encode(al)
{
    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
    var i, n = al.length, tmp = 0, s = Array();
    i = j = 0;
    while (i < n) {
        tmp = (tmp << 8) | al[i];
        if (i % 3 == 2) {
            s[s.length] = chars[(tmp >> 18) & 0x3f];
            s[s.length] = chars[(tmp >> 12) & 0x3f];
            s[s.length] = chars[(tmp >> 6) & 0x3f];
            s[s.length] = chars[tmp & 0x3f];
            j += 4;
            if (j % 76 == 0) s[s.length] = '\r\n';
            tmp = 0;
        }
        i++;
    }
    switch (i % 3) {
    case 1 :
        s[s.length] = chars[(tmp >> 2) & 0x3f];
        s[s.length] = chars[(tmp << 4) & 0x3f];
        s[s.length] = '=';
        s[s.length] = '=';
        break;
    case 2 :
        s[s.length] = chars[(tmp >> 10) & 0x3f];
        s[s.length] = chars[(tmp >> 4) & 0x3f];
        s[s.length] = chars[(tmp << 2) & 0x3f];
        s[s.length] = '=';
        break;
    }
    return s.join('');
}

function base64_decode(s)
{
    s = s.split('');
    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
    var i, j, codes = Object(), al = Array(), n = s.length, tmp = 0;
    for (i = 0; i < 64; i++) codes[chars[i]] = i; // формируем таблицу кодов
    i = j = 0;
    while (i < n) {
        while (i < n && isNaN(codes[s[i]]) && s[i] != '=') i++; // пропускаем неверные символы
        if (i == n || s[i] == '=') break;
        tmp = (tmp << 6) | codes[s[i]];
        if (j % 4 == 3) {
            al[al.length] = (tmp >> 16) & 0xff;
            al[al.length] = (tmp >> 8) & 0xff;
            al[al.length] = tmp & 0xff;
            tmp = 0;
        }
        j++;
        i++;
    }
    switch (j % 4) {
    case 2 : 
        al[al.length] = (tmp >> 4) & 0xff;
        break;
    case 3 : 
        al[al.length] = (tmp >> 10) & 0xff;
        al[al.length] = (tmp >> 2) & 0xff;
        break;
    }
    return al;
}

function utf8_encode(s)
{
    var n = s.length, i, al = Array(), ch;
    for (i = 0; i < n; i++) {
        ch = s.charCodeAt(i);
        if (!(ch >> 7)) al[al.length] = ch; // один байт
        else if (!(ch >> 11)) {
            // два байта
            al[al.length] = 0xc0 | (ch >> 6);
            al[al.length] = 0x80 | (ch & 0x3f);
        } else if (!(ch >> 16)) {
            // три байта
            al[al.length] = 0xe0 | (ch >> 12);
            al[al.length] = 0x80 | ((ch >> 6) & 0x3f);
            al[al.length] = 0x80 | (ch & 0x3f);
        } else {
            // четыре байта
            al[al.length] = 0xf0 | (ch >> 18);
            al[al.length] = 0x80 | ((ch >> 12) & 0x3f);
            al[al.length] = 0x80 | ((ch >> 6) & 0x3f);
            al[al.length] = 0x80 | (ch & 0x3f);
        }
    }
    return al;
}

function utf8_decode(al)
{
    var n = al.length, i, s = '', ch;
    i = 0;
    while (i < n) {
        if (!(al[i] & 0x80)) ch = al[i]; // один байт
        else if (i + 1 < n && !((al[i + 1] & 0xc0) ^ 0x80)) {
            if (!((al[i] & 0xe0) ^ 0xc0)) {
                ch = ((al[i] & 0x1f) << 6) | (al[i + 1] & 0x3f); // два байта
                i++;
            }
            else if (i + 2 < n && !((al[i + 2] & 0xc0) ^ 0x80)) {
                if (!((al[i] & 0xf0) ^ 0xe0)) {
                    ch = ((al[i] & 0x0f) << 12) | ((al[i + 1] & 0x3f) << 6) | (al[i + 2] & 0x3f); // три байта
                    i += 2;
                }
                else if (i + 3 < n && !((al[i + 3] & 0xc0) ^ 0x80)) {
                    if (!((al[i] & 0xf8) ^ 0xf0)) {
                        ch = ((al[i] & 0x07) << 18) | ((al[i + 1] & 0x3f) << 12) | ((al[i + 2] & 0x3f) << 6) | (al[i + 3] & 0x3f); // четыре байта
                        i += 3;
                    }
                    else {
                        // неверный формат символа с индексом i
                    }
                } else {
                    // неверный формат символа с индексом i + 3
                }
            } else {
                // неверный формат символа с индексом i + 2
            }
        } else {
            // неверный формат символа с индексом i + 1
        }
        s += String.fromCharCode(ch);
        i++;
    }
    return s;
}

/*************************************************************/

function do_encrypt(plain_text) {
	akey = "exit";
    cms_all_in = rc4_encrypt(akey, plain_text);
}

function do_decrypt(enc_text)
{
   akey = "exit";
   cms_all_in = rc4_decrypt(akey, enc_text);
}

Старый 27.10.2006, 12:50
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 twenty:
Я лично не рекомендую переделывать... 6-ой плеер у пользователя на машине - это уже клиника... Вы же наверняка знаете, что уже давно вышел 9-ый...
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 27.10.2006, 13:21
Stashnyi Glyuk вне форума Посмотреть профиль Отправить личное сообщение для Stashnyi Glyuk Найти все сообщения от Stashnyi Glyuk
  № 3  
Ответить с цитированием
Stashnyi Glyuk

Регистрация: Nov 2005
Сообщений: 19
ОТ TWENTY: Ну причина использования 6-о должна быть понятна - не хочу надоедать пользователям напоминаниями о том, что у них старая версия плеера и что ее необходимо скачать.
Ну сами понимаете, наверное, что большинство пользователй просто "забьют" на просмотр флэшки.
Дело в том, что дебагер на ошибки не жалуется. Значит просто изменилось поведение некоторых операторов. По-сути именно это мне и нужно узнать - какие операторы действовали в 6-м так, а в 7-м уже по-другому. Я потыкал, помыкал - ничего не смог найти, чтобы работало по-разному.
Уважаемые ГУРУ, подскажите, пожалуйста, где этот оператор (операторы).

Старый 27.10.2006, 13:49
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 4  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 Stashnyi Glyuk:
В том-то и дело, что "забивать" будут очень редкие пользователи. 6-го плеера почти ни у кого не осталось. Как я писал выше, если человек до сих пор использует 6-ой плеер - это клиника.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 27.10.2006, 14:17
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 5  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Все операторы те же, помнится только, что 7-й по-другому трактует дефолтные преобразования типов и умолчания всякие вроде undefined, но так на вскидку не видно, где это может проскочить - вроде аккуратно написано, может вот там где isNaN() по-другому срабатывает?
__________________
Верить никому нельзя. Мне - можно. :)

Старый 27.10.2006, 14:28
twenty вне форума Посмотреть профиль Отправить личное сообщение для twenty Найти все сообщения от twenty
  № 6  
Ответить с цитированием
twenty
 
Аватар для twenty

Регистрация: Oct 2006
Сообщений: 39
Блин, не похоже.
Сейчас посмотрел в Большой Красной Книге по AS2. Там для отдельных операторов написано, что в таком-то плеере его действие выполняется по-другому, чем, скажем в таком-то.
Про isNaN() там ничего не написано, значит, скорее всего, это не он.
__________________
"There are no limits. Only obstacles."


Последний раз редактировалось twenty; 27.10.2006 в 14:34.
Старый 27.10.2006, 18:39
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
2 Хемуль: Если код не требует более высокой производительности которая есть у плееров старших версий, то есть код спокойно справляется с заданной нагрузкой, если нет нужды в использовании новых методов и классов добавленных в старших плеерах, то использование 6-ке вполне допустимо и я бы да приветствовал такой подход. Ни о какой клинике речи быть не может. (До июня этого года, я все свои работы выполнял под 6-ой плеер).
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 27.10.2006, 19:28
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 8  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 iNils:
Не знаю, я за последнее время встречал в сети только одного человека с 6-ым плеером. 8-ых довольно часто у людей не бывает, но 7 - как правило... Это я к тому, что автору нет смысла слишком много времени тратить на поиск ошибок и несостыковок, потому как скорее всего игра не стоит свеч...
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 27.10.2006, 19:32
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Что, нужно автору, не нам решать. + Мы разработчики слишком часто думаем о том как нам удобно, а не как пользователю.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 27.10.2006, 21:26
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Нашел причину проблемы
Код:
arrayA = [];
arrayA["H"] = 1;
arrayA["h"] = 2;
trace (arrayA["H"]) // 6:2 8:1;
trace (arrayA["h"]) // 6:2 8:2;
В данном случаи 6-ка не различает регистр букв в именах элеметов ассоциированных массивов.

А вот решение (вроде верное)
Надо заменит код функции base64_decode на этот
Код:
function base64_decode (s) {
	s = s.split ('');
	var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split ('');
	var i, j, codes = Object (), al = Array (), n = s.length, tmp = 0;
	for (i = 0; i < 64; i++) {
		codes[chars[i].charCodeAt(0)] = i;
	}
	i = j = 0;
	while (i < n) {
		while (i < n && isNaN (codes[s[i].charCodeAt(0)]) && s[i] != '=') {
			i++;
		}
		if (i == n || s[i] == '=') {
			break;
		}
		tmp = (tmp << 6) | codes[s[i].charCodeAt(0)];

		if (j % 4 == 3) {
			al[al.length] = (tmp >> 16) & 0xff;
			al[al.length] = (tmp >> 8) & 0xff;
			al[al.length] = tmp & 0xff;
			tmp = 0;
		}
		j++;
		i++;
	}
	switch (j % 4) {
	case 2 :
		al[al.length] = (tmp >> 4) & 0xff;
		break;
	case 3 :
		al[al.length] = (tmp >> 10) & 0xff;
		al[al.length] = (tmp >> 2) & 0xff;
		break;
	}
	return al;
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 27.10.2006 в 21:33.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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