Долго смотрели, пускали по шагам в дебаггере, где ошибка понять не можем.. Такой код:

Код AS3:
public class DataReceiving {
private const ginza_ip = "нужный айпи";
private var client = new Socket();
private var client2 = new Socket();
private var char_inf = new ByteArray();
private var player_array:Array = new Array();
private var inventory:Array = new Array();
private var OnPlInv:Array = new Array();
public function DataReceiving() {
client2.addEventListener(Event.CONNECT, connectListener2);
client2.addEventListener(Event.CLOSE, closeListener2);
client2.connect(ginza_ip, 1024);
client.addEventListener(Event.CONNECT, connectListener);
client.addEventListener(Event.CLOSE, closeListener);
client.addEventListener(ProgressEvent.SOCKET_DATA, socketDataListener);
client.connect(ginza_ip, 5000);
}
public function parseArr(arr:ByteArray) {
player_array.push(arr.readByte());
trace(player_array[player_array.length-1]);
player_array.push(arr.readByte());
trace(player_array[player_array.length-1]);
for (var i=0; i<9; i++) {
player_array.push(arr.readShort());
trace(player_array[player_array.length-1]);
}
var clothes:ByteArray = new ByteArray();
for (var j=20;j<arr.length;j++) { clothes[j-20]=arr[j]; }
if (clothes.length != 0) parseItem(clothes);
}
private function parseItem(arr2:ByteArray) {
var cust_invent:Array = new Array();
cust_invent.push(arr2.readShort());
cust_invent.push(arr2.readShort());
cust_invent.push(arr2.readByte());
cust_invent.push(arr2.readShort());
cust_invent.push(arr2.readShort());
cust_invent.push(arr2.readShort());
for (var i=0;i<6;i++) {
trace(cust_invent[i]);
}
cust_invent.push(arr2.readUTFBytes(cust_invent[cust_invent.length-1]*2-1));
trace(cust_invent[cust_invent.length-1]);
for (var i=0;i<22;i++) {
cust_invent.push(arr2.readShort());
trace(cust_invent[cust_invent.length-1]);
}
if (cust_invent[2]==0) { inventory.push(cust_invent); trace ("PlayerInvent - "+inventory[inventory.length-1]);}
if (cust_invent[2]==1) {
if (cust_invent[3]==1) { OnPlInv.push(cust_invent); trace ("OnPlayerInvent - "+OnPlInv[OnPlInv.length-1]); }
else {
var new_arr:Array = cust_invent;
cust_invent[3]=cust_invent[3]-1;
cust_invent[2]=0;
inventory.push(cust_invent);
new_arr[3]=1;
OnPlInv.push(new_arr);
trace ("OnPlayerInvent - "+OnPlInv[OnPlInv.length-1]);
}
}
var arr3:ByteArray = new ByteArray();
arr3.length = 0;
for (var j=arr2.position;j<arr2.length;j++) arr3[j-arr2.position]=arr2[j];
trace("length3 = "+arr3.length);
if (arr3.length > 0) parseItem(arr3);
}
public function getPlayerArr():Array{
return player_array;
}
public function getPlayerInv():Array{
trace("getPlayerInv inventory length:"+inventory.length);
return inventory;
}
public function getOnPlayerInv():Array{
trace("getOnPlayerInv inventory length:"+OnPlInv.length);
return OnPlInv;
}
private function socketDataListener (e:ProgressEvent):void {
trace ("New socket data arrived.");
client.readBytes(char_inf, 0, 0);
parseArr(char_inf);
trace("Player_array.length = "+player_array.length);
trace("Invent_arr.length = "+inventory.length);
trace("On PLayerArr.length = "+OnPlInv.length);
}
private function connectListener2 (e:Event):void {
trace("Connected2! Waiting for data...");
}
private function connectListener (e:Event):void {
trace("Connected! Waiting for data...");
client.writeByte(0x20);
var pass = "lohness1";
var nick = "Ginza9";
var arr = new ByteArray();
var arr2 = new ByteArray();
arr2.writeUTFBytes(pass);
arr.writeUTFBytes(nick);
client.writeShort(arr.length);
client.writeBytes(arr);
client.writeShort(arr2.length);
client.writeBytes(arr2);
}
private function closeListener (e:Event):void {
trace("Close socket");
}
private function closeListener2 (e:Event):void {
trace("Close socket2");
}
}
}
проблема с массивами player_array, inventory, OnPlInv.
в ходе обработки массива байт (фуекции parseArr и parseItem) все хорошо, и в эти массивы добавляются данные. затем, в функциях getPlayerArr(), getPlayerInv() и getOnPlayerInv() эти массивы каким то образом обнуляются.. почему - совершенно непонятно.. Есть идеи?
Заранее спасибо за помощь =)