Flash 闪存套接字未定义属性,但已定义?
您好,我正在尝试在flash中打开套接字。因此我遵循了一个教程,但出现了错误:Flash 闪存套接字未定义属性,但已定义?,flash,sockets,Flash,Sockets,您好,我正在尝试在flash中打开套接字。因此我遵循了一个教程,但出现了错误: package com.game.game { import flash.net.socket; import flash.events.*; public dynamic class game { var mysocket:Socket = new Socket(); Security.allowDomain("*"); mysoc
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.
我必须进口什么吗???
有什么想法吗?看起来您有正确的套接字代码,但它需要位于方法内部。如果将用于实例化套接字的代码放在构造函数方法中,则在实例化类时将连接到套接字。或者,您可以将套接字代码放在另一个公共方法中,该方法可以从类外部调用 您可能还需要通过在声明中声明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
}
}
}
你的课应该延长MovieClip。公共动态类游戏扩展了MovieClip。导入flash.display.MovieClip使其生效。另外,通常的做法是让类名以大写字母开头。谢谢,但我有两个错误:1084:语法错误:分号前应为左括号。1084:语法错误:应在程序结束前使用rightbrace。已修复该错误,但现在找不到:1046:类型或该类型不是编译时常量:Socket。我刚刚注意到您的原始代码,我的响应在导入语句中使用了小写的Socket。将其更改为大写应该可以消除该错误。例如:导入flash.net.Socket;谢谢,还有一个错误,但我通过导入flash.system.Security修复了它。非常感谢。:)没问题。为了便于将来参考,如果使用Flash Builder Auto Complete,Flash Builder通常会自动插入必要的导入语句。