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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

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

Регистрация: Jul 2009
Адрес: 12 37
Сообщений: 17
По умолчанию Проблема с загрузкой данных в Flash'ку на HTML странице

Написал на AS3 скрипт, который передает данные PHP файлу, а тот обращается к MySQL и на основе полученных данных генерирует XML, который загружает Flash.

Ну так вот. Когда я запускаю Flash'ку в среде разработки (Adobe Flash CS4), то данные в ней отображаются. Также они отображаются при ее запуске вне среды. Но вот когда я помещаю ее на HTML страницу данные уже не отображаются.

Я изрыл весь интернет и узнал, что данная проблема может быть связана с политикой безопасности Flash Player'а, и что может момочь некий crossdomain.xml. Но при помещении такового в папку где находится Flash'ка ничего не меняется.

содержание crossdomain.xml
Код:
<?xml version="1.0" ?> 
  <cross-domain-policy>
    <allow-access-from domain="*"/> 
  </cross-domain-policy>
Инстрментарий:
Adobe Flash Player 10
Adobe Flash CS4
Denwer 3


Последний раз редактировалось Gam6it; 27.07.2009 в 15:27.
Старый 09.07.2009, 21:24
CEBEP вне форума Посмотреть профиль Отправить личное сообщение для CEBEP Посетить домашнюю страницу CEBEP Найти все сообщения от CEBEP
  № 2  
Ответить с цитированием
CEBEP
 
Аватар для CEBEP

Регистрация: Nov 2006
Сообщений: 688
Отправить сообщение для CEBEP с помощью ICQ Отправить сообщение для CEBEP с помощью Skype™
crossdomain.xml кладут не в папку, где флешка находится а в "root" вашего сайта.
Или почитайте про SecurityPolicy и как грузить crossdomain.xml если он в другой папке.
__________________
"I am the terror that flaps in the night…!"

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

Регистрация: Jul 2009
Адрес: 12 37
Сообщений: 17
Проведем эксперимент №1
Создадим в Денвер'е, в папке home, новую дирректорию. Назовем ее simpletest (таково будет и имя нашего сайта). В папке simpletest создаем еще одну папку www. Сдесь создаем файл index.php (UTF-8), со следующим содержимым:

PHP код:
<?php
echo"
<html>
<head>
    <title>Простой тест</title>
    <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">
</head>
<body>
<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0 id=index width=700 height=600> 
                <param name=src value=simpletest.swf>
                <param name=quality value=high>
                <embed name=movie src=simpletest.swf quality=high width=700 height=600 type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash>
                </embed>
            </object>
</body>
</html>
"
;
?>
содаем файл data.php (UTF-8) с содержимым :
PHP код:
<?php
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<dots group=\"TB\">
<item date=\"2007-06-15 00:00:00\" money=\"1800.00000\"/>
<item date=\"2007-06-18 00:00:00\" money=\"50.00000\"/>
<item date=\"2007-06-19 00:00:00\" money=\"50.00000\"/>
<item date=\"2007-06-22 00:00:00\" money=\"50.00000\"/>
<item date=\"2007-07-04 00:00:00\" money=\"50.00000\"/>
<item date=\"2007-07-12 00:00:00\" money=\"100.00000\"/>
</dots>"
;
?>
В этой же папке создаем файл simpletest.fla, помешаем на сцену компонент TextArea и присваиваем ему имя "txt". Добавляем слой "actions" и в нем пишем код:
Код AS3:
var loader:URLLoader = new URLLoader();
var quest:URLRequest = new URLRequest("http://simpletest/data.php");
 
loader.load(quest);
loader.addEventListener(Event.COMPLETE, comp)
 
function comp(e:Event):void
{
	txt.text = XML(e.target.data);
}
Компилируем флэш-ролик. Запускаем Денвер.

При открытии адреса http://simpletest во всех 3х браузерах (FireFox 3.5 , Opera 9.64, IE8) данные передающиеся cо странице data.php , отображаются корректно. Значит политика безопасности флеш плеера скорее всего ни причем.


Последний раз редактировалось Gam6it; 31.07.2009 в 00:49.
Старый 03.08.2009, 22:54
Gam6it вне форума Посмотреть профиль Отправить личное сообщение для Gam6it Найти все сообщения от Gam6it
  № 4  
Ответить с цитированием
Gam6it
 
Аватар для Gam6it

Регистрация: Jul 2009
Адрес: 12 37
Сообщений: 17
Эврика, я понял в чем была проблема.

Мне надо было передать переменную (variable1.group=2) PHP-скрипту, и забрать полученный результат.
И реализовал я это так.
Код AS3:
var request1:URLRequest = new URLRequest("http://test2/data2.php");
var variable1:URLVariables = new URLVariables();
var loader1:URLLoader = new URLLoader();
 
request1.method = URLRequestMethod.POST;
variable1.group=2;
 
request1.data = variable1;
loader1.load(request1);
loader1.addEventListener(Event.COMPLETE, loadXML);
 
function loadXML(event:Event):void
{
	var request2:URLRequest = new URLRequest("http://test2/data2.php");
	var loader2:URLLoader = new URLLoader();	
	loader2.load(request2);
	loader2.addEventListener(Event.COMPLETE, buildXML);
}
 
function buildXML(event:Event):void
{
	txt.text = event.target.data;
}
Этот код работал, только в среде разработки Flash и если локально запустить скомпилированный Flash ролик. Так флэшка работала через браузер IE8.
В нормальных же браузерах эта флэшка не отображала полученных данных. Потому что, если посмотреть на 2 URLLoader'а со стороны браузера, то каждый представляет собой отдельного пользователя. То есть первый URLLoader передает переменную php-файл? который ему выводит запрашиваемое содержимое на основе посланной переменной, и после этого второй URLLoader обращается к тому же php-скрипту, и тот ему ничего не выводит.

Ниже представлен php скрипт, если кому интересно.
PHP код:
<?php
if(isset($_GET["group"]))
{
    
$mcon mysql_connect("localhost","root","");
    
mysql_select_db("test",$mcon);
    
$query "select * from table1";
    
$result mysql_query($query$mcon);
    
$out "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dots>";
    while(
$row mysql_fetch_assoc($result))
    {
        
$out .= "<item date=\"".$row["data"]."\" money=\"".$row["money"]."\"/>";
    }
    
$out .= "</dots>".$_GET["group"];

    echo 
$out;    
}
else
{
echo 
"переменая POST не была передана";
}
?>
данная проблема решается с помошью одного URLLoader и URLRequest, к которому в параметр url
Код AS3:
("http://test2/data.php")
дописывается GET-переменная -
Код AS3:
("http://test2/somescript.php?group="+group)

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

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

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


 


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


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