2012-05-24 4 views
-1

Я создал банку, которую хочу заполнить светлячками, в зависимости от количества пользователей в Интернете.Flash As3 Количество людей онлайн

Я немного поработал, и я нашел, как создать XMLSocket. Это сработало, но я не знал, как получить информацию о том, как много людей в сети, а также потребовало, чтобы окно CMD запускалось все время.

Второй способ, который я нашел, был через PHP, MYSQL, который я запускал с моим сервером Apache, но учебники и сценарии, которые я нашел, не работали для меня, для example. Я не создал необходимые таблицы.

Мой вопрос - это самый простой способ найти текущее количество пользователей онлайн на вашей странице/флеш-файле? Есть ли быстрый способ сделать это внутри flash и не вмешиваться в MYSQL или PHP?

+0

Вы ожидали, что пример будет работать без создания необходимых таблиц? –

ответ

0

Нет, нет простого способа сделать это только в Flash без использования какой-либо внешней части (PHP, MySQL, Java и т. Д.). Помните, что Flash запускается локально и, следовательно, ему необходимо взаимодействовать с PHP или аналогично взаимодействовать с сервером, чтобы сообщить серверу о активности пользователя и спросить сервер о других действиях пользователей (количество пользователей в Интернете).

Если вы хотите показывать только пользователей в Интернете, я рекомендую способ, который показан в примере, который вы опубликовали. Просто обновите базу данных, когда активность была замечена пользователем, и подсчитайте пользователя как офлайн, если за x минут не было обнаружено никаких действий. Для этого нет необходимости включать XMLSockets, если вы не хотите, чтобы пользователи каким-либо образом взаимодействовали друг с другом.

Если вы хотите больше, чем просто показывать пользователей в Интернете, я рекомендую использовать XMLSockets в ActionScript и смотреть в PHP-сокеты.

0

Я так не думаю, что флеш-плеер должен иметь способ «проверить» на сервере количество пользователей, которые находятся в сети. самым простым было бы отправить URLRequest (я надеюсь, что я получил имя класса справа) на серверный скрипт, который может быть сценарием/страницей php или aspx (или любой серверной технологии).

, что серверный скрипт должен вернуть количество пользователей сайта.

например.

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 (или любой другой серверный скрипт), который отслеживает количество пользователей. что я думаю, что вы должны разместить другой вопрос?

+0

У меня скрипт PHP работает, но я не могу получить доступ к переменным из моего PHP-файла скажем, у меня есть var в PHP '$ Cake = "lie"' как я могу получить к нему доступ из as3, когда я использую ваш пример а затем e.target.data.Cake, это дает мне ошибку «Свойство не найдено в String и нет значения по умолчанию». – Simeon

+1

@Simeon вам нужно «эхо» результат в PHP. Также убедитесь, что вы используете правильную настройку в dataFormat: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html#dataFormat (это должно быть значение по умолчанию, текст, в ваш случай). Затем вы используете только свойство data URLLoader для доступа к строке. –

+0

Симеон, я не думаю, что вам нужно сделать e.target.data.Cake .. как предложил Саймон Андре, просто повторить вывод из скрипта php () И e.target.data поймает его. –

0

Я получил его на работу, но я хочу связать php-файл не через его HTTP-адрес, а просто путь относительно файла .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 получает в целое, потому что я еще не знаю, как отправить Верия

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;

0

Да, вы можете сделать это без базы данных (MYSQL) и PHP; НО вам все равно понадобится сервер (Media). я не хотел бы предложить следующее, если ваша «только» цель состоит в том, чтобы считать подключения клиентов, но если у вас есть причины, и иметь доступ к серверу Flash Media , вы можете попробовать следующее:

На Ссылка на сервер:

  1. Создайте приложение (папку) в FMS, создайте файл main.asc внутри этой папки.
  2. Внутри main.asc; создать (удаленный) SharedObject (server-side) (например: users_so)
  3. Наблюдать за подключением клиентов на application.onConnect события. Добавьте каждый подключаемый клиент к этому SharedObject внутри этого обработчика.
  4. Также следите за отключением клиентов на мероприятии application.onDisconnect. Удалите каждый отсоединяющий клиент из объекта SharedObject внутри этого обработчика.

На стороне клиента:

  1. Connect каждый флэш-клиент FMS (с новым путем приложения-папки в URI) при загрузке приложения в браузере.
  2. Наблюдать за событием NetStatusEvent.NET_STATUS и "NetConnection.Connect.Success". При подключении; создайте SharedObject (client-side) и получите удаленный доступ с сервера.
  3. Добавить SyncEvent.SYNC прослушиватель событий на SharedObject. Это будет синхронизироваться с каждым клиентом Flash, когда пользователь подключится или отключится от сервера.
  4. Внутри обработчика событий синхронизации получайте и подсчитывайте пользователей от ответа на событие.
  5. Показать счетчик на вашем Flash-клиенте.

См Server-Side ActionScript Language Reference for Flash Media Server 4.5, особенно класса Application. Также полезно: Flash Media Server Developer Center

Надеюсь, это поможет.