Flash As3在线人数

时间:2012-05-24 13:05:47

标签: actionscript-3 flash flash-cs5

我创建了一个Jar,我想填充萤火虫,具体取决于有多少用户在线。

我做了一点挖掘,我发现了如何创建XMLSocket。它工作但我不知道如何获取有多少人在线的信息,并且它还需要一个CMD窗口一直运行。

我发现的第二种方式是通过我的Apache服务器运行的PHP,MYSQL,但是我发现的教程和脚本对我来说并不适用于example。我没有创建所需的表格。

我的问题是,在您的网页/ Flash文件中找到当前在线用户数的最简单方法是什么?有没有快速的方法在Flash内部进行,而不涉及MYSQL或PHP?

4 个答案:

答案 0 :(得分:0)

不,没有一种简单的方法可以在不使用任何外部部件(PHP,MySQL,Java等等)的情况下在Flash中执行此操作。请记住,Flash是在本地运行的,因此需要与PHP交互,以便与服务器交互,告诉服务器用户的活动,并向服务器询问其他用户的活动(在线用户数)。

如果您只想在线显示用户,我建议您发布的示例中显示的方式。只需在用户看到活动时更新数据库,并在x分钟未显示任何活动时将用户计为脱机。除非您希望用户以任何方式相互交互,否则无需涉及XMLSockets。

如果您不仅需要在线显示用户,我建议您在ActionScript中使用XMLSockets并查看PHP套接字。

答案 1 :(得分:0)

我不这么认为,Flash播放器必须要有一种方法在服务器上“检查”在线用户的数量。最简单的方法是将一个URLRequest(我希望我的类名正确)发送到服务器脚本,该脚本可以是php或aspx(或任何服务器技术)脚本/页面。

该服务器脚本应返回该站点拥有的用户数。

e.g。

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"));

下一部分将是一个跟踪用户数量的php脚本(或任何其他服务器脚本)。我认为你应该发布另一个SO问题吗?

答案 2 :(得分:0)

我得到了它的工作,但我没有通过它的HTTP地址链接php文件,而只是相对于.swf文件的路径(只是myFile.php或path / myFile.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);
}

我将文本As3接收转换为int,因为我还不知道如何发送veria

php files

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);

?>

函数文件使用echo $count;

发送Visiters Online的数量

答案 3 :(得分:0)

是的,你可以在没有数据库(MYSQL)和PHP的情况下完成;但是你仍然需要一个(媒体)服务器。 如果您的“唯一”目的是计算连接客户端,我不会建议以下内容,但如果您有理由并且可以访问 Flash Media Server ,则可以尝试以下操作:

在服务器端:

  1. 在FMS上创建一个应用程序(文件夹),在该文件夹中创建main.asc文件。
  2. 在main.asc内;创建一个(远程)SharedObject (server-side)(例如:users_so
  3. 注意application.onConnect事件上的客户端连接。将每个连接客户端添加到此处理程序中的SharedObject。
  4. 还要注意application.onDisconnect事件中断开客户端的连接。从此处理程序内的SharedObject中删除每个断开连接的客户端。
  5. 在客户端:

    1. 当应用程序在浏览器中加载时,将每个Flash客户端连接到FMS(使用URI中的新app-folder路径)。
    2. 关注NetStatusEvent.NET_STATUS事件和"NetConnection.Connect.Success"代码。连接时;创建一个SharedObject (client-side)并从服务器获取远程。
    3. SyncEvent.SYNC事件监听器添加到SharedObject。当用户连接或断开与服务器的连接时,这将与每个Flash客户端同步。
    4. 在同步事件处理程序中,从事件响应中获取并计算用户。
    5. 在Flash客户端上显示计数。
    6. 请参阅Server-Side ActionScript Language Reference for Flash Media Server 4.5,尤其是应用程序类。 同样有用:Flash Media Server Developer Center

      希望这有帮助。