Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.08.2014, 21:30
Zombie вне форума Посмотреть профиль Отправить личное сообщение для Zombie Найти все сообщения от Zombie
  № 1  
Ответить с цитированием
Zombie

Регистрация: Jul 2014
Сообщений: 9
По умолчанию Автообновление с внешнего php

В потоковом mp3 плеере потребовалось сделать вывод текущих треков с внешнего php-файла. Ниже привожу примеры кодов: первый с ручным обновлением, второй - автоматическое. Первый везде работает нормально, а во втором столкнулся с проблемой - на некоторых компьютерах после 3-4 минут работы плеер наглухо виснет. Подумал, что дело может быть в переполнении памяти (если ввести trace видно, что вывод запросов происходит ежесекундно). Действительно ли так, и если да, то как можно сократить частоту обновления?

Код AS3:
var urlLoader:URLLoader = new URLLoader();
update_mc.addEventListener(MouseEvent.CLICK, updateSong);
 
 function updateSong(e:MouseEvent = null):void
{
	var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE,setInfo);
    urlLoader.load(new URLRequest("http://localhost/file.php"));
 
    function setInfo(e:Event):void{
        var loader:URLLoader = URLLoader(e.target);
	 name_txt.text = urlLoader.data;
    }
}

Код AS3:
function callServer(e:Event):void{
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE,setInfo);
    urlLoader.load(new URLRequest("http://localhost/file.php"));
 
    function setInfo(e:Event):void{
        var loader:URLLoader = URLLoader(e.target);
	 name_txt.text = urlLoader.data;
        }
    }
 
stage.addEventListener(Event.ENTER_FRAME, callServer);


Последний раз редактировалось Zombie; 07.08.2014 в 21:44.
Старый 08.08.2014, 09:24
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 2  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
ну так еще бы, вы каждый фрейм дергаете сервер. зачем так часто? поставьте таймер

Старый 19.04.2016, 23:47
Zombie вне форума Посмотреть профиль Отправить личное сообщение для Zombie Найти все сообщения от Zombie
  № 3  
Ответить с цитированием
Zombie

Регистрация: Jul 2014
Сообщений: 9
Опять столкнулся с такой же ситуацией: при использовании функции автообновления внешнего php на некоторых компах флешка намертво виснет через несколько минут. Таймер установил, php обновляется исправно через 15 сек. Правда все равно программа продолжает ежесекундно выдавать запросы во внутреннем окне, не знаю должно быть так или нет. Но если даже заменить
Код AS3:
trace(urlLoader.data);
на
Код AS3:
var loader:URLLoader = URLLoader(e.target);
- проблема не решается. Может кто-то глянет код.


Код AS3:
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
 
	var timer:Timer = new Timer(15000, 0);
	timer.addEventListener(TimerEvent.TIMER, fTimer);
 
	timer. start();
	function fTimer (e:TimerEvent){
 
		stage.addEventListener(Event.ENTER_FRAME, callServer);
	}
 
function callServer(e:Event):void{
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, setInfo);
    urlLoader.load(new URLRequest("http://localhost/file.php"));
 
 
	  function setInfo(e:Event):void{
        trace(urlLoader.data);
	 name_txt.text = urlLoader.data;
        }
	}

Старый 20.04.2016, 00:07
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 4  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
лол)
Код AS3:
timer.addEventListener(TimerEvent.TIMER, callServer);
function callServer(e:TimerEvent):void{
}

Старый 20.04.2016, 06:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Заметил, что почти все новички постоянно используют везде где только можно ENTER_FRAME. Наверное это связано с незнанием других событий.

Что вот это за чушь?
Код AS3:
// этот метод вызывается каждые 15 секунд
function fTimer (e:TimerEvent){
 // и добавляет всё ту же констнрукцию, которая будет дергать сервер каждый кад
 // в итоге происходит все ровно то же самое, что и в первом примере, только реализовано еще более криво
		stage.addEventListener(Event.ENTER_FRAME, callServer);
	}

Это что, программирование "пальцем в небо"?)
__________________
Ко мне можно и нужно обращаться на ты)

Старый 20.04.2016, 07:55
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 6  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
ТС, запомни на будущее если есть место,где ты подписываешься на событие, должно быть и место,где ты от него отписываешься. В твоем случае даже если ты разберешься с частотой обновления, оно все равно со временем начнет лагать т.к. все ответы сервера складируются в памяти и неотписанный лисенер не дает сборщику мусора этот хлам почистить, просто добавь в setInfo строку:
Код AS3:
e.target.removeEventListener(Event.COMPLETE, setInfo);

Старый 21.04.2016, 18:26
Zombie вне форума Посмотреть профиль Отправить личное сообщение для Zombie Найти все сообщения от Zombie
  № 7  
Ответить с цитированием
Zombie

Регистрация: Jul 2014
Сообщений: 9
Цитата:
Сообщение от faraday Посмотреть сообщение
лол)
Код AS3:
timer.addEventListener(TimerEvent.TIMER, callServer);
function callServer(e:TimerEvent):void{
}
Благодарю, то что надо!

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:57.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.