2012-09-29 2 views
0

안녕하세요 난 flash.So에 소켓을 열려고하고 난 하나의 튜토리얼을 따라하지만 난 오류가있어 :플래시 소켓 정의되지 않은 속성이지만 정의 되었습니까?

package com.game.game 
{ 
    import flash.net.socket; 
    import flash.events.*; 
    public dynamic class game 
    { 
     var mysocket:Socket = new Socket(); 

     Security.allowDomain("*"); 

     mysocket.addEventListener(Event.CONNECT, onConnect); 
     mysocket.addEventListener(Event.CLOSE, onClose); 
     mysocket.addEventListener(IOErrorEvent.IO_ERROR, onError); 
     mysocket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse); 
     mysocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecError); 

     mysocket.connect("hejp.co.uk", 80); 
    } 

} 

내가 이러한 오류가있어 : 내가 뭔가를 가져와야합니다

1120: Access of undefined property mysocket. 
1120: Access of undefined property onConnect. 
1120: Access of undefined property mysocket. 
1120: Access of undefined property onClose. 
1120: Access of undefined property mysocket. 
1120: Access of undefined property onError. 
1120: Access of undefined property mysocket. 
1120: Access of undefined property onResponse. 
1120: Access of undefined property mysocket. 
1120: Access of undefined property onSecError. 
1120: Access of undefined property mysocket. 
The class 'com.game.game.game' must subclass 'flash.display.MovieClip' since it is linked to a library symbol of that type. 

을 ??? 아이디어가 있으십니까?

+0

클래스는 MovieClip을 확장해야합니다. public dynamic class game은 MovieClip을 확장합니다. 클래스 flash.display.MovieClip을 가져 와서 작업하십시오. 또한 클래스 이름을 대문자로 시작하는 것이 일반적입니다. –

답변

1

올바른 소켓 코드를 가지고있는 것처럼 보입니다. 그러나 메소드 내부에 있어야합니다. 생성자 메서드 내부에 소켓을 인스턴스화하는 코드를 넣으면 클래스를 인스턴스화 할 때 소켓에 연결합니다. 또는 소켓 코드를 클래스 외부에서 호출 할 수있는 다른 public 메서드 안에 넣을 수도 있습니다.

선언에 public 또는 private을 명시하여 클래스 속성 및 메서드의 범위를 명시해야 할 수도 있습니다.

각 리스너 함수를 선언해야합니다. 그렇지 않으면 소켓에 연결할 함수가 없습니다.

package com.game.game 
{ 
    import flash.net.socket; 
    import flash.events.*; 
    public dynamic class game 
    { 
     //public class variables 
     public var mysocket:Socket; 

     //constructor 
     public function game() { 
      mysocket = new Socket(); 

      Security.allowDomain("*"); 

      mysocket.addEventListener(Event.CONNECT, onConnect); 
      mysocket.addEventListener(Event.CLOSE, onClose); 
      mysocket.addEventListener(IOErrorEvent.IO_ERROR, onError); 
      mysocket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse); 
      mysocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecError); 

      mysocket.connect("hejp.co.uk", 80); 
     } 

     //private listener methods 
     private function onConnect(evt:Event):void { 
      //connect method code 
     } 

     private function onClose(evt:Event):void { 
      //close method code 
     } 

     private function onError(evt:IOErrorEvent):void { 
      //error method code 
     } 

     private function onResponse(evt:ProgressEvent):void { 
      //response method code 
     } 

     private function onSecError(evt:SecurityErrorEvent):void { 
      //security error method code 
     } 
    } 

} 
+0

고마워,하지만 2 가지 오류가있다 : 1084 : 구문 오류 : 세미콜론 앞에 leftbrace가 필요하다. 1084 : 구문 오류 : 프로그램이 끝나기 전에 rightbrace가 필요합니다. –

+0

고정되었지만 이제는 다음과 같습니다. 1046 : 형식을 찾을 수 없거나 컴파일시 상수가 아닙니다 : 소켓. –

+0

방금 ​​원래 코드를 알아 채고 내 응답에 import 문에 소문자로 표시된 소켓이 있습니다. 대문자로 변경하면 해당 오류를 제거해야합니다. 예 : import flash.net.Socket; – gamerInTheCode

관련 문제