В одной папке лежат:
- fla-файл
- папка vk с классами для работы с API
- папка network
- as-файлы FirstLaunch.as, VKConnect.as
Во fla-файле в свойствах кадра указан
FirstLaunch.as
Вот его содержимое

Код AS3:
package
{
import flash.display.*;
import network.*;
import flash.system.*;
import flash.utils.*;
public class FirstLaunch extends MovieClip
{
private static var DOMAIN:String = "http://*****.ru/crossdomain.xml";
// ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ ОТЛАДКИ
public var DEBUG:Boolean = true;
public function FirstLaunch():void
{
if (DEBUG) trace("ШАГ №1. СОЕДИНЕНИЕ С СЕРВЕРОМ ИГРЫ *****.ru");
if (DEBUG) trace("FirstLaunch запущен");
Security.loadPolicyFile(DOMAIN);
if (DEBUG) trace("crossdomain.xml загружен");
var checkNet:CheckNetwork = new CheckNetwork(DEBUG);
var i:int = 10;
var statusIntervalID:* = setInterval(function()
{
var isConnect:Boolean = checkNet.getStatus();
if (i > 0)
{
if (!isConnect)
{
if (DEBUG) trace("Попытка #"+i);
i++;
} else
{
clearInterval(statusIntervalID);
if (DEBUG) trace("Соединение установлено.");
if (DEBUG) trace("ШАГ №2. ПОЛУЧЕНИЕ ДАННЫХ ВКОНТАКТЕ");
var vkConnect:VKConnect = new VKConnect();
var isVKConnected:Boolean = vkConnect.getVKConnected();
var vkConnectTimeoutID:int = setTimeout(function()
{
trace(isVKConnected);
},5000);
}
} else
{
clearInterval(statusIntervalID);
if (DEBUG) trace("Количество попыток иссякло");
}
},1000);
}
}
}
В папке network лежит файл
CheckNetwork.as, который проверяет соединение с сервером:

Код AS3:
package network
{
import flash.net.*;
import flash.events.*;
import flash.errors.*;
import flash.display.*;
public class CheckNetwork extends Sprite
{
private static var random:int = Math.round(Math.random() * 10000);
private static var DOMAIN:String = "http://*****.ru/AS3_connect.php?launch="+random;
public var isConnected:Boolean = false;
public var isDebug = false;
public function CheckNetwork(isDebug:Boolean = false)
{
this.isDebug = isDebug;
if (this.isDebug) trace("Соединяюсь с '" + DOMAIN + "'...");
var urlLoader:URLLoader = new URLLoader();
var urlRequest:URLRequest = new URLRequest(DOMAIN);
urlLoader.addEventListener(Event.COMPLETE, completeListener);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorListener);
urlLoader.load(urlRequest);
}
private function completeListener(e:Event):void
{
if (this.isDebug) trace("Соединился. Получаю данные...");
var requestString:String = e.target.data;
if (this.isDebug) trace("requestString: "+requestString);
if (requestString)
{
var jsonObj:Object = new Object();
jsonObj = JSON.parse(requestString);
var CONNECTION:String = jsonObj.response;
if (CONNECTION == "CONNECTION_DONE")
{
isConnected = true;
if (this.isDebug) trace("CONNECTION: " + CONNECTION);
}
} else
{
if (this.isDebug) trace("Нет данных в requestString");
}
}
private function ioErrorListener(e:Event)
{
if (this.isDebug) trace(DOMAIN + ": ОШИБКА СОЕДИНЕНИЯ");
}
public function getStatus():Boolean
{
return isConnected;
}
}
}
Суть такая: соединяется с сервером. Если соединение есть CheckNetwork возвращает true. Как только он вернет true в ход вступает VKConnect.as:

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import vk.APIConnection;
import vk.events.*;
public class VKConnect extends Sprite
{
public var isVK:Boolean = false;
public function VKConnect() {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function fetchUserInfo(data: Object): void {
// Example of fetching info from API request
for (var key: String in data[0]) {
trace(key + "=" + data[0][key] + "\n");
}
}
private function onApiRequestFail(data: Object): void {
// Example of fetching fail from API request
trace("VKAPI-ошибка: "+data.error_msg+"\n");
}
private function init(e: Event = null): void {
if (e) {
removeEventListener(e.type, init);
}
var flashVars: Object = stage.loaderInfo.parameters as Object;
trace(flashVars);
if (!flashVars.api_id)
{
flashVars['api_id'] = *****;
flashVars['viewer_id'] = *****;
flashVars['sid'] = "*****";
flashVars['secret'] = "*****";
}
var VK: APIConnection = new APIConnection(flashVars);
VK.api('getProfiles', { uids: flashVars['viewer_id'] }, fetchUserInfo, onApiRequestFail);
VK.addEventListener('onConnectionInit', function(): void{
trace("Соединение с ВКонтакте установлено");
isVK = true;
});
}
public function getVKConnected()
{
return isVK;
}
}
}
И вот тут у меня возникает вопрос. В FirstLaunch.as есть строки:

Код AS3:
var vkConnect:VKConnect = new VKConnect();
var isVKConnected:Boolean = vkConnect.getVKConnected();
var vkConnectTimeoutID:int = setTimeout(function()
{
trace(isVKConnected);
},5000);
В трейсе пишет false даже через 5 секунд. Как будет лучше вообще проверить, есть ли соединение с ВК или нет? И нужно ли оно вообще? Ну, по идее, нужно. Мне нужен будет viewer_id для получения информации по игроку...
Добавлено через 20 минут
Вопрос еще один. Как в Profeccional присвоить кадрам разные классы...