Страница 1 из 1

Проблема с APIConnection

Добавлено: 29 авг 2012, 13:54
prinum
Добрый день! Подскажите, может кто-то с таким сталкивался:

у меня в основном кадре, подключен класс где собственно основной код, там я вызываю

Код: Выделить всё

VK = new APIConnection(flashVars);
, перехожу в другой кадр

Код: Выделить всё

MovieClip(parent).gotoAndStop(3); 
там пользователь выполняет свои действия, нажимает вернуться и попадает опять на тот же кадр, вызывается опять конструктор и в месте

Код: Выделить всё

VK = new APIConnection(flashVars) 
выпадает с ошибкой

"Can't connect from App. The connection name is already being used by another SWF."

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

Re: Проблема с APIConnection

Добавлено: 29 авг 2012, 13:58
sanych_dv
Подскажу: завязывайте писать код в кадрах.

Re: Проблема с APIConnection

Добавлено: 29 авг 2012, 14:59
prinum
Так в кадрах кода нет, он весь в классах привязанных к кадрам.

Re: Проблема с APIConnection

Добавлено: 29 авг 2012, 16:09
prinum
Такая же ошибка возникает если просто сделать так:

VK = new APIConnection(flashVars);
VK_2 = new APIConnection(flashVars);

Re: Проблема с APIConnection

Добавлено: 29 авг 2012, 22:58
sanych_dv
Не надо привязывать код к кадрам. У вас в идеале должна быть девственно чистая сцена и один класс, подключенный к проекту. Все остальные классы при необходимости подключаются через основной класс проекта и вы должны работать исключительно с библиотечными символами. Навигация по проекту в стиле "gotoAndStop() и что-то там сделать путем вызова кода из этого фрейма" должна быть забыта вместе с AS2.

Re: Проблема с APIConnection

Добавлено: 29 авг 2012, 23:09
sanych_dv
В вашем же случае можно только создать "костыль" в виде флага, который будет отслеживать повторный вызов кода.

Re: Проблема с APIConnection

Добавлено: 30 авг 2012, 08:12
prinum
Решил проблему, через отдельный класс, который инициализируемый один раз в прелоадере:

Код: Выделить всё

     package {        import vk.APIConnection;        import vk.events.*;                 public class GlobalVK {             public static var VK:APIConnection;                        public static function VK_connect_init(f_vars:Object):void{                VK = new APIConnection(f_vars);            }            }      } 
в прелоадере вызываю

Код: Выделить всё

 GlobalVar.VK_connect_init(flashVars); 
в основном классе

Код: Выделить всё

 private var VK:APIConnection = GlobalVar.VK; 
и дальше как обычно уже обращаюсь к этой обертке.