Форум 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)
-   -   неработает onEnterFrame в определенном месте (http://www.flasher.ru/forum/showthread.php?t=141869)

KirAmp 07.07.2010 00:23

неработает onEnterFrame в определенном месте
 
Здравствуйте, почему-то не работает onEnterFrame в нужном месте:
Код AS1/AS2:

function full() // проблем с этой функцией не наблюдается, но выложил ее т.к.она используется перед функцией с ошибкой
{
        ifFull = 1;
        if (fin == 0)
        {
                for (i = 0; i <= 4; i++)
                {
                        this['bt' + i.toString()]._alpha = 100;
                }
        }
        onEnterFrame = function ()
        {
                if (bt0._y < Stage.height - bt0._height + 15)
                {
                        for (i = 0; i <= 4; i++)
                        {
                                this['bt' + i.toString()]._y += 15;
                        }
                }
                else
                {
                        resizeFunction();
                        delete onEnterFrame;
                }
        };
}
 
 
bt0.onPress = function()
{
        full();
        contents._alpha = 0;
        contents.loadMovie('gallery.swf');
        contents.onEnterFrame = function()
        {
                trace('qwe');
                //Дальнейшее описание функции писать необязательно, т.к. не работает трайсеровка
        };
};

Коллеги, подскажите пожалуйста что это может быть и как это решить.

СПАСИБО

Добавлено через 4 минуты
Так же хочу спросить, про замену бесконечного цикла onEnterFrame, на что-то с моим конкретным диапазоном обновления (и разумеется жрущим куда меньше памяти)

mooncar 07.07.2010 00:36

У вас в contents загружается новый контент, который "убивает" все содержимое, в том числе все переменные и функции, ему принадлежащие.
То есть на момент загрузки gallery.swf функция обработчика contents.onEnterFrame уже удалена, ее просто нет.

Решения 2:

1) используйте класс MovieClipLoader, назначите обработчик onEnterFrame после загрузки, которую можно отследить с помощью обработчика события onLoadInit.
Должны получится такие строки:
Код AS1/AS2:

.
.
.
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = function(target:MovieClip)
{
    target.onEnterFrame = myFunction;
};
loader.addListener(listener);
loader.loadClip('gallery.swf', contents);
.
.
//Вытащите из обработчика onPress
function myFunction ()
{
  trace(this); //выведет что-то вроде _level0.contents
}

2) Либо используйте контейнер в контейнере - в контейнер нижнего уровня грузите содержимое, а на контейнер верхнего уровня вешайте обработчик его onEnterFrame .

KirAmp 07.07.2010 00:39

mooncar
Огромное спасибо! Не подумал что при загрузке контента, заменяется содержимое


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

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