[ milos 2 @ 07.08.2010. 14:55 ] @
ja sam dobio zadatak od skole da napravim ista u flash-u sto moze da koristi vise korisnika u lokalu ali da se kace na server napravljen u javi. preporuceno mi je da je najjednostavnije napraviti chat aplikaciju. da li neko moze da mi pomogne oko pravljenja te aplikacije?
[ StarCraft @ 08.08.2010. 21:05 ] @
uf ja se time nisam nikad bavio. Ako ne dobiješ odgovor ni sutra onda je google tvoj prijatelj ;)
[ milos 2 @ 09.08.2010. 20:33 ] @
hvala :)
ali sta da trazim na google-u?
sta da kucam?
[ gonzos @ 09.08.2010. 20:35 ] @
Ovdje ti je kljucna stvar server.
Jel ti radis server ili si mislio na neko gotovo rjesenje.
Znaci pronadji rjesenje za server, sam chat je prilicno jednostavna aplikacija.

Imas open source server: Red5
[ milos 2 @ 10.08.2010. 12:15 ] @
Citat:
Ovdje ti je kljucna stvar server.
Jel ti radis server ili si mislio na neko gotovo rjesenje.
Znaci pronadji rjesenje za server, sam chat je prilicno jednostavna aplikacija.

Imas open source server: Red5


imacu gotov server

samo nemam pojma kako da napravim chat u flash-u, ako mozete samo da mi date neke smernice
[ gonzos @ 10.08.2010. 22:22 ] @
Pretpostavljam da ces koristiti SocetConnection.
Dakle, potrebno je da se Useri ( 2 chat aplikacije sa razlicitih racunara) konektuju na socket.
Nakon sto je socket otvoren, on ce cekati poruke i prosljedivati ih odredjenim klijentima.
E, sada, ne znam kako si to zamislio, ali da vjerovatno ces birati da imas public room ili private room.

dakle, mnogo toga treba biti definisano na samom serveru-poput forme poslanih i primljenih poruka.

Sto se tice flasha, kako rekoh trebas SocetConnect klasu.

kreiras novu konekciju.

Code:
var _socket=new Socket();


nakon toga pokusas se konektovati

Code:
_socket.connect(localhost:IP,80:port);


Zatim dodas listener kako bi utvrdio da li je konekcija uspostavljena:

Code:
_socket.addEventListener(Event.CONNECT,onConnect);


private function onConnect(evt):void
        {

            
            if (_socket.connected);
            {
                try
                {
                    
                    _socket.writeUTFBytes("Wellcome to my own chat program");//jedna od metoda
                    _socket.flush(  );
                }
                catch (error)
                {
                    trace("error");
                }
            }
            

        }



metodom flush() saljes poruke, socket to procita i vrati nazad (u ovom slucaju) string poruku:"On air"

Code:
_socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData );

private function onSocketData(event:ProgressEvent):void
        {
            trace("in progress...");
            if (_socket.bytesAvailable > 0)
            {
                
                var msg = _socket.readUTFBytes(_socket.bytesAvailable);
                
                trace(msg)//"On air"
            }

        }


Naravno u svojoj aplikaciji imat ces 2 TextField polja, jedno input, za pisanje poruka, drugo dynamic za pregled,
i pretpostavljam da ces trebati listener na ENTER koji ce poslati poruku:

Code:
_socket.writeUTFBytes(myInputTextField.text);


[Ovu poruku je menjao gonzos dana 11.08.2010. u 10:30 GMT+1]
[ milos 2 @ 11.08.2010. 09:15 ] @
e hvala ti mnogo
[ milos 2 @ 13.08.2010. 09:37 ] @
imam problem, kod koda
Code:

_socket.connect(localhost:IP,8080:port);


ovo mi daje u description
Code:

')' or ',' expected


sta da radim?
[ gonzos @ 13.08.2010. 13:01 ] @
Pa nadam se da nisi doslovno ovako napisao.

treba:
Code:
_socket.connect("localhost",8080)//ako je server lokal, ako je remote onda pises ip servera

[ StarCraft @ 13.08.2010. 21:15 ] @
Ti si verovatno direktno prepisao opis funkcije (description). Sve iza dve-tacke oznacava vrstu tj. klasu promenljive koja se trazi.

primer opisa:
predajNekiString( mojString:String );
predajNekiBroj( mojBroj:Number );

A ti u stvari treba da napises:
predajNekiString( "moj tekst" );
predajNekiBroj( 45 );
[ milos 2 @ 13.08.2010. 22:22 ] @
hvala, tacno, prepisao sam bukvalno, jer u sustini ne znam kako izgledaju kodovi u flash-u, znam nesto, ali ocigledno ne dovoljno.

kada sam stavio localhost pod navodnike stavio je da je sve u redu, i onda stavio problem kod

Code:
 private function onConnect(evt):void 
i

Code:
 private function onSocketData(event:ProgressEvent):void 


gledao sam na google-u, ali nisam nasao resenje za problem, sutra cu pogledati po knjigama sta nije u redu
[ milos 2 @ 16.08.2010. 09:52 ] @
na youtube-u sam nasao snimak gde jedan covek pravi chat u flash-u, i objasnjava, razumeo sam, ali ne shvatam gde gresim, jer mi kaze da je kod u redu, ali kada idem na test movie dobijem samo belu povrsinu kao da nisam u kodu iskucao sve, i koordinate i velicinu, evo koda, pa ako neko moze da mi pomogne:

Code:

package
{
    import com.alienos.sgs.as3.client.*;
    import flash.events.*;
    import flash.display.*;
    import flash.text.*;
    import flash.ui.*;
    import flash.utils.ByteArray;
    
    public class Main extends Sprite
    {
        private var fieldFormat:TextFormat = new TextFormat('Ariel', 12, 0x444444, true );
        private var nameField:TextField = new TextField();
        private var chatField:TextField = new TextField();
        private var messageField:TextField = new TextField();
        
        private var sgsClient:SimpleClient = null;
        private var chatChannel:ClientChannel = null;
        
        public function Main():void
        {
            if (stage) init();
            else addEventListener (Event.ADDED_TO_STAGE, init);
        }
    
        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            createGUI;
        }
        
        private function createGUI():void
        {
            var title:TextField = new TextField();
            title.defaultTextFormat = new TextFormat('Ariel', 20, 0x444444, true);
            title.text = 'Simple PDS Chat Client';
            title.autoSize = TextFieldAutoSize.LEFT;
            title.x = title.y = 5;
            addChild(title);
            nameField.x = chatField.x = messageField.x = 5
            nameField.y = 35;
            chatField.y = 60;
            messageField.y = 365;
            nameField.defaultTextFormat = chatField.defaultTextFormat = messageField.defaultTextFormat = fieldFormat;
            nameField.type = messageField.type = TextFieldType.INPUT;
            nameField.border = messageField.border = chatField.border = true;
            nameField.borderColor = chatField.borderColor = messageField.borderColor = 0x444444;
            nameField.width = chatField.width = messageField.width = 300;
            nameField.height = messageField.height = 20;
            chatField.height = 300;
            nameField.background = chatField.background = messageField.background = true;
            chatField.selectable = false;
            nameField.text = 'Name';
            messageField.text = 'Message';
            addChild(nameField);
            addChild(messageField);
            addChild(chatField);
            messageField.addEventListener(KeyboardEvent.KEY_UP, messageKey);
        }
        
        private function messageKey(evt:KeyboardEvent):void
        {
            if (evt.keyCode == Keyboard.ENTER)
            {
                if (sgsClient != null)
                {
                    sendMessage();
                }else 
                {
                    sgsClient = new SimpleClient('localhost', 1139);
                    sgsClient.Login(nameField.text, "Password");
                    sgsClient.addEventListener(SgsEvent.CHANNEL_JOIN, channelJoin);
                } 
                
            }
        }
        
        private function sendMessage():void
        {
            var buf:ByteArray = new ByteArray();
            buf.writeUTFBytes(nameField.text  +  ': ' + messageField.text);
            sgsClient.channelSend(chatChannel, buf);
        }
        
        private function channelJoin(evt:SgsEvent):void
        {
            
            chatChannel = new ClientChannel(evt.channel.name, evd.channel.rewId);
            sgsClient.addEventListener(sgsEvent.CHANNEL_MESSAGE, channelMessage);
            sendMessage()
        }
        
        private function channelMessage(evt:sgsEvent):void
        {
            
            addMessage(evt.channelMassage.readUTFBytes(evt.channelMassage.bytesAvaiable));
        }
        
        private function addMessage (msg:String):void
        {
            chatField.appendText(msg + "\n");
            chatField.scrollV = chatField.maxScrollV;
        }
    }
}



[ gonzos @ 16.08.2010. 20:21 ] @
Na brzinu:
Code:
 createGUI;

to
Code:
createGUI();
[ milos 2 @ 17.08.2010. 09:28 ] @
hvala za ovo, ali ima jos gresaka koje ne mogu da odgonetnem zbog cega su:

Code:


description: 1037: Packages cannot be nested.
source: {
tu gresku daje u 2. redu



[Ovu poruku je menjao milos 2 dana 17.08.2010. u 11:05 GMT+1]