Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Адаптация кода к другой версии. (http://www.flasher.ru/forum/showthread.php?t=112781)

Dizz 07.06.2008 17:03

Адаптация кода к другой версии.
 
И дело пожалуй даже не в as1 или as2. Как я понимаю дело в разнице их интерпретации в flash 6 и 8.

Сама суть такова. Попался исходник с удачным эффектом. При настройках под плейер 6 всё работает отлично, а под 8 - нет.

Как правильно интерпретировать код? Есть какие-то специальные таблицы или разработанные рекомендации?

Если нужен сам код то вот он:
Код:

onClipEvent (load) {
        num = 25;
        i = 1;
        while (num>=i) {
                star.duplicateMovieClip("star"+i, i+1889);
                mc = this["star"+i];
                mc.rX = (random(5)+4)/1000;
                mc.rY = (random(5)+4)/1000;
                mc._x = random(300)-150;
                mc._y = random(150)-75;
                i++;
        }
        star._visible = 0;
}
onClipEvent (enterFrame) {
        i = 1;
        while (num>=i) {
                if ((mc._x == 0) || (mc._y == 0)) {
                        mc._x = random(100)+50;
                        mc._y = random(50)+25;
                } else {
                        mc = this["star"+i];
                        mc.xAcc = mc.xAcc+((10-mc._x)*mc.rX);
                        mc.yAcc = mc.yAcc+((10-mc._y)*mc.rY);
                        mc._x = mc._x+mc.xAcc;
                        mc._y = mc._y+mc.yAcc;
                }
                i++;
        }

Как видите, совсем короткий, но я не могу понять в чём проблема.

Спасибо за помощь!

Alex_beginner 07.06.2008 17:29

Вот сделайте так функцию создания клипов:
Код:

while (num>=i) {
                star.duplicateMovieClip("star"+i, i+1889);
                mc = this["star"+i];
                mc.rX = (random(5)+4)/1000;
                mc.rY = (random(5)+4)/1000;
                mc.xAcc = 0;    //**********Обратите внимание на вот это****************
                mc.yAcc = 0;   
                mc._x = random(300)-150;
                mc._y = random(150)-75;
                i++;
        }


chingachgoog 07.06.2008 17:30

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

Dizz 07.06.2008 20:43

Цитата:

Сообщение от Alex_beginner (Сообщение 744356)
**********Обратите внимание на вот это************

Просто как всё гениальное. Я догадался им что-то в загрузке присвоить, но вставил ДО цикла. Эхе-хе...

СПАСИБО!!!

Dizz 09.06.2008 15:09

А как же всё-таки общие подходы к адаптации?
И почему верхний вариант работал в 6 и не стал в 8?

chingachgoog 16.06.2008 17:32

Цитата:

Сообщение от Dizz (Сообщение 744657)
А как же всё-таки общие подходы к адаптации?
И почему верхний вариант работал в 6 и не стал в 8?

В 6-ке undefined.toString() будет равно пустой строке, т.е. ""
(переменная mc.xAcc не объявлена, потому в строковом виде равна "").

В 7-ке и выше undefined.toString() будет равно строке "undefined"
(переменная mc.xAcc не объявлена, потому в строковом виде равна "undefined").

AVM динамически приводит типы данных, поэтому ""+1=1,
а вот "undefined"+1, будет NaN, вместо, казалось бы очевидного, "undefined1" (такой результат даст выражение "undefined"+"1")


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

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