Actionscript 3 Flash As3在线人数
我已经创建了一个罐子,我想装满萤火虫,这取决于有多少用户在线 我做了一些挖掘,发现了如何创建XMLSocket。它工作,但我不知道如何获得信息有多少人在线,而且它需要一个CMD窗口运行所有的时间 我找到的第二种方法是通过我在Apache服务器上运行的PHP、MYSQL,但我找到的教程和脚本对我来说并不适用。我没有创建所需的表Actionscript 3 Flash As3在线人数,actionscript-3,flash,flash-cs5,Actionscript 3,Flash,Flash Cs5,我已经创建了一个罐子,我想装满萤火虫,这取决于有多少用户在线 我做了一些挖掘,发现了如何创建XMLSocket。它工作,但我不知道如何获得信息有多少人在线,而且它需要一个CMD窗口运行所有的时间 我找到的第二种方法是通过我在Apache服务器上运行的PHP、MYSQL,但我找到的教程和脚本对我来说并不适用。我没有创建所需的表 我的问题是,在页面/闪存文件中查找当前在线用户数的最简单方法是什么?有没有一种快速的方法可以在flash中完成,而不必使用MYSQL或PHP?没有,没有一种简单的方法可以只
我的问题是,在页面/闪存文件中查找当前在线用户数的最简单方法是什么?有没有一种快速的方法可以在flash中完成,而不必使用MYSQL或PHP?没有,没有一种简单的方法可以只在flash中完成,而不使用任何外部部件(PHP、MYSQL、Java等…)。请记住,Flash是在本地运行的,因此需要与PHP或类似工具交互,以便与服务器交互,告知服务器用户的活动,并询问服务器其他用户的活动(在线用户数) 如果您只想在线显示用户,我推荐您发布的示例中显示的方式。当用户看到活动时,只需更新数据库,当x分钟内未看到活动时,将用户计为脱机。除非您希望用户以任何方式相互交互,否则没有必要为此涉及XMLSockets
如果您想要的不仅仅是在线显示用户,我建议您在ActionScript中使用XMLSockets并查看PHP套接字。我不这么认为,flash player必须需要一种在服务器上“检查”在线用户数量的方法。最简单的方法是向服务器脚本发送一个URLRequest(我希望类名是正确的),该脚本可以是php或aspx(或任何服务器技术)脚本/页面 该服务器脚本应返回站点拥有的用户数 e、 g
下一部分是跟踪用户数量的php脚本(或任何其他服务器脚本)。我想你应该把它作为另一个SO问题发布?我让它工作了,但是我想链接php文件,而不是通过它的HTTP地址,而只是相对于.swf文件的路径(只是myFile.php或path/myFile.php) 我将As3接收的文本转换为int,因为我还不知道如何发送veria
主PHP文件(as3连接到的文件):
函数文件通过
echo$count发送在线访问者的数量代码>是的,您可以在没有数据库(MYSQL)和PHP的情况下完成它;但您仍然需要(媒体)服务器。
如果您的“唯一”目的是统计连接的客户端数,我不会建议您执行以下操作,但如果您有理由并且可以访问Flash Media Server,您可以尝试以下操作:
在服务器端:
在FMS上创建应用程序(文件夹),在该文件夹内创建main.asc文件李>
在main.asc中;创建(远程)(例如:用户\u so
)
在应用程序.onConnect
事件上监视连接客户端。将每个连接客户端添加到此处理程序中的SharedObject
还要注意在应用程序.onDisconnect
事件上断开客户端的连接。从此处理程序内的SharedObject中删除每个断开连接的客户端
在客户端:
当应用程序加载到浏览器中时,将每个Flash客户端连接到FMS(URI中有新的应用程序文件夹路径)
观察NetStatusEvent.NET\u状态
事件和“NetConnection.Connect.Success”
code。连接时;创建远程服务器并从服务器获取远程服务器李>
将SyncEvent.SYNC
事件侦听器添加到SharedObject
。当用户连接或断开与服务器的连接时,这将与每个闪存客户端同步
在同步事件处理程序中,从事件响应中获取并统计用户数
在Flash客户端上显示计数
请参阅,特别是应用程序类。
同样有用的是:
希望这有帮助。您是否希望该示例在不创建所需表的情况下工作?我使用了PHP脚本,但无法访问PHP文件中的变量,比如说我在PHP中有一个变量“$Cake=“lie””,如何从as3访问它,当我使用您的示例,然后使用e.target.data.Cake时,它会给我一个错误“在字符串上找不到属性,并且没有默认值”。@Simeon您需要在PHP中回显结果。还要确保对dataFormat使用了正确的设置:(在您的情况下,它应该是默认的文本)。然后只使用URLLoader的data属性访问string.Simeon,我认为不需要执行e.target.data.Cake。。正如Simon Andre所建议的,只需回显php脚本()的输出,e.target.data就会捕捉到它。
var numberOfVisitors:Int = 0;
function onLoaded(e:Event):void {
numberOfVisitors = e.target.data;
// now print this 'numberOfVisitors' where you want to on the client
}
var numVisitors:URLLoader = new URLLoader();
numVisitors.addEventListener(Event.COMPLETE, onLoaded);
numVisitors.load(new URLRequest("num_users.php"));
AS3 file:
NewRequest = new URLRequest("numOnline.php");
var numberOfVisitors:int = 10;
var NewRequest:URLRequest;
var UrlLoader:URLLoader;
UrlLoader = new URLLoader();
UrlLoader.dataFormat = URLLoaderDataFormat.TEXT;
UrlLoader.addEventListener(Event.COMPLETE, onLoaded);
UrlLoader.load(NewRequest);
function onLoaded(e:Event):void {
trace(e.target.data);
numberOfVisitors = int(e.target.data);
}
main PHP file (the file that as3 connects to):
<?php
include_once 'config.php'; //This file would contain the variables needed to connect to the database with $link, below
include_once 'functions.php'; //We include the functions we have created
$database = "online";
$link = mysql_connect($server, $db_user, $db_pass)or die ("Could not connect to mysql because ".mysql_error());
mysql_select_db($database)or die ("Could not select database because ".mysql_error());
usersOnline(5); //We call the usersOnline function with a time span of 5 minutes
showUsersOnline(1); //Show the number of users online, and the list of users
mysql_close($link);
?>