• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

watt

[Duvidad] AS 3 + Sockets

8 mensagens neste tópico

Boas pessoal!

tenho um servidor tcp feito em c# a trabalhar, e agora queria ligar o flash ao servidor, então estive a ver os sockets no AS 3 e tentei por mãos ao trabalho.

só que não estou a conseguir correr o codigo, ele diz: "1037: Packages cannot be nested.".

como é que dou a volta a isto?

é que á tempos usei XMLsockes no AS2 e consegui fazer kalker coisa, mas agora no AS3.... n está facil.

tenho o seguinte condigo o que está a falhar ?

package
{
   	import flash.display.Sprite;
   	import flash.net.Socket;
   	import flash.events.Event;
import flash.events.IOErrorEvent;

   public class Client extends Sprite
   {
      private var host:String;
      private var port:int;

      private var socket:Socket;

      public function DemoClient()
      {
         host = "localhost";
         port = 9098;

         connect();
      }

      private function connect():void
      {
         socket = new Socket();

   socket.addEventListener(Event.CONNECT, socketConnect);
   socket.addEventListener(Event.CLOSE, socketClose);
   socket.addEventListener(IOErrorEvent.IO_ERROR, socketError );

   try
   {
	  socket.connect( host, port );
   }
   catch ( e:Error )
   {
   }
      }
  
  
   }
}

orientei-me por este site: http://specialrelativity.org/blog/2007/08/05/connecting-with-java-over-a-socket-via-actionscript-3/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Estás a correr este código dum .as ou dum .fla?

Para funcionar tem que estar num ficheiro Client.as.

Pergunto isto porque depois de pesquisar na net reparei que muito pessoal tem o erro 1037 por estar a correr código relativo a uma classe dentro do fla.

Cheers!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já o consegui por a trabalhar(dentro de um fla), só que não estou a perceber isto lá muito bem, acho que tenho tudo ao monte no projecto. esse .as é como se fosse um file com uma class ? é que ainda n entendi bem essas parte no flash.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse ficheiro é mesmo uma classe por causa da declaração:

     public class Client extends Sprite

por isso terá que ser gravado com o nome Client.as.

Seguidamente poderás instanciar o código na tua timeline ou então num ficheiro "Document Class" que será mais ou menos o equivalente ao Main.java do java.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes dizer-me como chameo o .as dentro de um file fla. e já agora pq é que é extends Sprite e não outro nome qualquel? tem algum razão de o ser

?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Confesso que não estou muito à vontade com AS3.0. De qualquer forma vou tentar responder às tuas questões.

O AS3.0 está mais centrado na programação orientada a objectos (caso não estejas por dentro deste paradigma sugiro que o estudes para que possas usufruir de todo o potencial do AS3.0).

Podes importar classes de várias formas. Uma delas é pelo Document Class. Essa opção aparece quando clicas do Stage e como te disse no outro post é destinado à classe que controla todo o documento ou projecto se preferires . Podes também importar classes directamente nos movieClips através da opção Linkage. Possivelmente também poderás importar classes para a timeline mas tenho lido em vários fóruns críticas muito desfavoráveis em relação a esta prática.

O que a palavra extends quer dizer é que a classe em causa vai herdar todos os métodos e atributos da classe que for definida à frente do extends. Neste caso a classe Client vai herdar todos os metodos de atributos da classe Sprite.

Em relaçao ao significado da classe Sprite, o help do flash é esclarecedor:

The Sprite class is a basic display list building block: a display list node that can display graphics and can also contain children.

A Sprite object is similar to a movie clip, but does not have a timeline. Sprite is an appropriate base class for objects that do not require timelines. For example, Sprite would be a logical base class for user interface (UI) components that typically do not use the timeline.

The Sprite class is new in ActionScript 3.0. It provides an alternative to the functionality of the MovieClip class, which retains all the functionality of previous ActionScript releases to provide backward compatibility.

Espero ter ajudado e acima de tudo não ter dito nenhuma asneira.  :drunk:

Cheers!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tá fixe:P eu quanto a POO estou habituado a usar em c#, como anteriormente mexi um pouco no AS 2, agora faz-me confusão usar POO no CS3.

neste momento ja consigo comunicar entre sockets no c# e no flash... é o inicio, agora tenho tenho é que praticar isto, dentro de 1 a 2 meses quero ter já ai o 1º jogo em flash multiplayer. mas n esperem nada de outro mundo ainda estou a começar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora