PDA

Просмотр полной версии : кнопка статуса


AndrX
08.04.2009, 08:03
Здравствуйте. я хотел написать просто кнопку, которая бы отражала включен ли сервер или нет. при проверке в самой Flash cs3 никаких проблем нет, все работает как положено, но в браузере отражает статус до первого коннекта к серверу, потом даже если я выключаю его, то он все равно остается как он-лайн. я не понимаю почему не срабатывает событие по отключению сервера...
сервер написал в студии на скорую руку.
вот код:
import flash.display.Graphics;
import flash.net.*;
import flash.events.*;

var flVar:Object;
flVar = stage.loaderInfo.parameters;
var host:String = "192.168.1.115";//flVar.server;//"192.168.0.2";
var port:int = 9999;

var onlineCol:uint = 0x75F766;
var offlineCol:uint = 0xE42323;

var child:Shape = new Shape();;
movik.addChild(child);
colorize(offlineCol);

function colorize(color:uint)
{
child.graphics.beginFill(color);
//child.graphics.lineStyle(borderSize, borderColor);
child.graphics.drawRect(0, 0, 50, 20);
child.graphics.endFill();
}
txt.text = "Offline";

var socket:Socket = new Socket(this.host, this.port);
connect();

/*var tik:Timer = new Timer(10000,100);
tik.addEventListener("timer", timerHandler);
tik.start();
*/
addEventListener (Event.ENTER_FRAME, enterFrame);

function enterFrame (event:Event):void {
var timer:Date = new Date();
if(((timer.minutes % 1) == 0)&&(((0*60+timer.seconds)%10)==0))
connect();
//trace("yo");
}

/*function timerHandler(event:TimerEvent):void
{
connect();
//trace("yo");
}*/

function connect()
{
//this.socket = new Socket(this.host, this.port);
this.socket.addEventListener(Event.CONNECT, socketConnect);
this.socket.addEventListener(Event.CLOSE, socketClose);
this.socket.addEventListener(IOErrorEvent.IO_ERROR, socketError);
this.socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError);


try {
this.socket.connect(this.host, this.port);
}
catch (e:Error) {
trace("Error on connect: " + e);


}

function socketError(event:IOErrorEvent):void
{
colorize(offlineCol);
txt.text = "Offline";
}
function socketClose(event:Event):void
{
colorize(offlineCol);
txt.text = "Offline";
}
function securityError(event:SecurityErrorEvent):void
{
colorize(offlineCol);
txt.text = "Offline";
}
function socketConnect(event:Event):void
{
colorize(onlineCol);
txt.text = "Online";
socket.close();
}

кто знает, как можно исправить??
я пытался через таймер проверять статус сервера через определенное время, но результат такой же.
хотелось бы использовать таймер, так как он удобнее