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?
chat u flash-u u lokalu preko java servera
Zaključano
Zakačeno
uf ja se time nisam nikad bavio. Ako ne dobiješ odgovor ni sutra onda je google tvoj prijatelj ;)
Potpis
www.zeitgeistmovie.com - film koji mora svako da vidi! (free to download)
hvala :)
ali sta da trazim na google-u?
sta da kucam?
ali sta da trazim na google-u?
sta da kucam?
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
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
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
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
izmenjeno 1 put, poslednji put gonzos 11.08.2010. u 10:30
Izmene poruke
- gonzos11.08.2010. u 10:30zapis iz teksta poruke
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.
nakon toga pokusas se konektovati
Zatim dodas listener kako bi utvrdio da li je konekcija uspostavljena:
metodom flush() saljes poruke, socket to procita i vrati nazad (u ovom slucaju) string poruku:"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:
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();
var _socket=new Socket();
nakon toga pokusas se konektovati
Code:
_socket.connect(localhost:IP,80:port);
_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");
}
}
}
_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"
}
}
_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);
_socket.writeUTFBytes(myInputTextField.text);
e hvala ti mnogo
imam problem, kod koda
ovo mi daje u description
sta da radim?
Code:
_socket.connect(localhost:IP,8080:port);
_socket.connect(localhost:IP,8080:port);
ovo mi daje u description
Code:
')' or ',' expected
')' or ',' expected
sta da radim?
Pa nadam se da nisi doslovno ovako napisao.
treba:
treba:
Code:
_socket.connect("localhost",8080)//ako je server lokal, ako je remote onda pises ip servera
_socket.connect("localhost",8080)//ako je server lokal, ako je remote onda pises ip servera
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 );
primer opisa:
predajNekiString( mojString:String );
predajNekiBroj( mojBroj:Number );
A ti u stvari treba da napises:
predajNekiString( "moj tekst" );
predajNekiBroj( 45 );
Potpis
www.zeitgeistmovie.com - film koji mora svako da vidi! (free to download)
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
gledao sam na google-u, ali nisam nasao resenje za problem, sutra cu pogledati po knjigama sta nije u redu
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 private function onConnect(evt):void
Code:
private function onSocketData(event:ProgressEvent):void
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
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;
}
}
}
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;
}
}
}
izmenjeno 1 put, poslednji put milos 2 17.08.2010. u 11:05
Izmene poruke
- milos 217.08.2010. u 11:05zapis iz teksta poruke
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
description: 1037: Packages cannot be nested.
source: {
tu gresku daje u 2. redu