Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   as2 внутри as3 глючит, работает частично. Как бороться? (http://www.flasher.ru/forum/showthread.php?t=150438)

cv' 11.02.2011 20:33

as2 внутри as3 глючит, работает частично. Как бороться?
 
Доброго вам, уважаемые flash-самураи!
Есть вот задачка написать универсальную листалку на as3, которая могла бы воспроизводить и as2 и as3 флешки. LocalConnection прекрасно работает, они дружат но вот незадача:

Первая запущенная swf - работает 100% правильно, вторая - через раз, третья - работает из рук вон плохо, глючит, реагирует частично и в целом ведет себя непристойно. Причем не зависимо от контента и порядка запуска. Почему так может происходить? Механизм такой:
Сначала они все грузятся в URLLoader, затем Loader.loadBytes(URLLoader.data) - для открытия, и Loader.unloadAndStop() для закрытия.

Пробовал с помощью LocalConnection внутрь флешки с as2 контентом из листалки посылать команду отчистить все (перейти на пустой кадр), но это не помогает. Есть ли какое-то решение?

Код AS3:

private function deselectPage(index:Number)
{
        var page:Object = pages[index];
        page.loader.unloadAndStop();
}
 
private function selectPage(index:Number)
{
        var page:Object = pages[index];
        page.loader.loadBytes(page.urlLoader.data)
}


Psycho Tiger 11.02.2011 20:40

А LC-то закрываете?
А почему грузятся байты, а не сразу Loader#load?

А, кстати. Вы надеюсь в дочерний аппдомен грузите? Скорее всего конфликт какой.

cv' 11.02.2011 20:54

Цитата:

Сообщение от Psycho Tiger (Сообщение 972649)
А LC-то закрываете?

Опа... А надо? =) А где его закрывать? В скаченном swf? Но в любом случае, ситуация с глюками есть и с использованием LC и без него.
Цитата:

Сообщение от Psycho Tiger (Сообщение 972649)
А почему грузятся байты, а не сразу Loader#load?

Потому что нужно чтобы "страницы" болтались в кэше и можно было их повторно запускать и закрывать, но при этом они не грузили оперативку и процессор своим контентом.
Цитата:

Сообщение от Psycho Tiger (Сообщение 972649)
А, кстати. Вы надеюсь в дочерний аппдомен грузите? Скорее всего конфликт какой.

Пока все вообще происходит с локалхоста на локалхост. И потом, первый скаченный файл всегда работает отлично.

Psycho Tiger 11.02.2011 21:03

Вы путаете ApplicationDomain и DNS. )

cv' 11.02.2011 21:09

Цитата:

Сообщение от Psycho Tiger (Сообщение 972654)
Вы путаете ApplicationDomain и DNS. )

хм... *ушел читать документацию*

mikhailk 11.02.2011 22:18

Делал как-то контейнер на AS3, который грузит в себя несколько произвольных флешек AS2. Большая головная боль. Решение нашлось в использовании специализированного загрузчика флешек на AS2 - ForcibleLoader. Поищите тут по этому слову, тут было.

Да, и грузить обязательно в разные домены.

cv' 14.02.2011 15:53

Цитата:

Сообщение от mikhailk (Сообщение 972667)
Делал как-то контейнер на AS3, который грузит в себя несколько произвольных флешек AS2. Большая головная боль. Решение нашлось в использовании специализированного загрузчика флешек на AS2 - ForcibleLoader. Поищите тут по этому слову, тут было.

Нашел ForcibleLoader тут. Но честно говоря не понял как он работает. Я сделал все как в примре, а скрипт внутри swf вообще не работал. Флешка воспринималась как мультик.

Цитата:

Сообщение от mikhailk (Сообщение 972667)
Да, и грузить обязательно в разные домены.

Качаю в разные домены так:
Код AS3:

var context:LoaderContext = new LoaderContext()
context.applicationDomain = new ApplicationDomain()
private_loader.loadBytes(urlLoader.data,context);

Но это ничего не меняет.

Судя по всему проблема не в скачивании (потому что сначала все работает нормально, а глючит со временем), а в ‘выгружании’, выключении. Как правильно выгружать? Может внутри as2 можно это сделать?

Frankie Wilde 18.02.2011 18:45

Почему настолько принципиально использовать AS2?

cv' 18.02.2011 18:50

Использовать AS2 принципиально потому, что уже на сегодняшний день существует много AS2 контента, который нужно раместить в AS3 контейнере.

Вопрос все еще открыт, глюки никуда не делись. Но я заметил одну интересную вещь, если добавить в as2 развороты трейсы, то в одном и том же месте будут разные результаты:
В первом загруженном файле трейс такой:
Код AS3:

_root.AVM1_container.instance39.mc0.mc5.mc6.mc8.mc_image0.mc12 .mc13

Однако во второй раз, в том же месте трейс выглядит вот так:
Код AS3:

_level0.instance1.instance3.instance5.instance10370.instance10369.instance10371.AVM1_container.instance39.mc0.mc5.mc6.mc8.mc_image0.mc12 .mc13

То есть трейсятся все родительские клипы, включая клипы, созданные в AVM2. И именно в этот момент начинаются глюки. Например, в такой клип не хочет загружается картинка... Просто MovieClipLoader не срабатывает и ничего не делает.
Почему так может происходить?
И кстати, счетчик, который добрался до 10370 номера, учитывает клипы созданные внутри AVM1.

Gaen 18.02.2011 19:28

Прочитал ForcibleLoader, умилился с паранойи автора:
Код AS3:

var loader:Loader = Loader(addChild(new Loader()));

Меня очень радует, что флэш стал позволять такие фокусы. Когда Andre Michelle реализовал генерацию звука через побайтную сборку swf, это был шок.

Psycho Tiger 18.02.2011 21:21

Цитата:

Меня очень радует, что флэш стал позволять такие фокусы.
Речь про код выше? А в чем там фокус? Код отвратительный, да и только.

Gaen 18.02.2011 22:31

Речь про низкоуровневую манипуляцию с данными. Про то, что можно в рантайме собрать swf по байтам и скормить его Loader'у. Про то, что можно загрузить чужую картинку, получить ее сырое представление, и опять же скормить лоадеру, чтобы обойти ограничения на использование контента с чужого домена.

Psycho Tiger 18.02.2011 22:37

Последнее это баг, если что )
Но мысль понял.

Vilya21 24.02.2011 14:46

А можно ли загружать проект созданные на as3 в проект на as2?

etc 24.02.2011 19:22

Цитата:

Сообщение от Vilya21 (Сообщение 975809)
А можно ли загружать проект созданные на as3 в проект на as2?

Нельзя.


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

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