PDA

Просмотр полной версии : Передача параметров из php во Flash генерящийся на основании php параметров.


Shinoby
30.10.2007, 17:35
Задача такова.

Отрабатывает Php и генерит в ХТМЛ переменные и значения переменных. Как их считать я кажется понял. Тобишь во флеш я передаю. А сделать мне надо следующее: Флеш получает разделенные каким либо символом строки с заголовком, ссылкой и кратким описанием (ну или просто несколько переменных сделать для этих 3 видов параметров), но суть не в этом, а в том, как мне сгенерить кучу "лейблов" при клике на которые я бы переходил по ссылке? Не пойму как создать кучу неких лейблов и привязать к ним параметры типа label, link, text - это все что мне бы было нужно. С чего начать и как сделать? Во флене я профан, хотя другие языки знаю некоторые.

etc
30.10.2007, 17:42
XML в руки.

2morrowMan
30.10.2007, 21:47
Пишу находу - работоспособность не гарантирую! :)
Flash:

var dataXML= new XML();
dataXML.ignoreWhite = true;
dataXML.load('data.php');
dataXML.onLoad = function (success)
{
if (success)
{
for (var node = dataXML.firstChild.firstChild; node!= null; node = node.nextSibling)
{
trace(node.text);
trace(node.link);
}
}
else
{
trace ("XML data loading failed");
}
};


PHP. "data.php"

<?php
for ($i = 0; $i < 10; $i++)
{
$body .= "\n<label text=\"myText".$i."\" link=\"myLink".$i."\" />";
}
print "<data>".$body."\n</data>";
?>


P.S. Администрация, форматирование текста заключенное в тэги [РНР][/РНР] - просто УЖАСНОЕ! :(

Shinoby
31.10.2007, 10:35
"TypeError: Error #1006: value is not a function.
at data_fla::MainTimeline/data_fla::frame1()"

В коде синтаксических ошибок нет, но выдается вышеописанное сообщение при запуске.

Линк на тест (http://www.shadows.warlord.name/data.html)

тут же лежит и data.php - генерит все ОК
и data.swf - собственно выдающее ошибку.

Хотя я просто воткнул флешовый код в Layer1 по умолчанию. Может его надо к какому то конкретному созданному заранее объекту привязать? Я не совсем улавливаю код флеша пока. Значения куда сбрасываются - в некий объект "trace"? Как мне на основании этого сгенерить например N количество текстовых полей на основании уже имеющегося (с ранее заданными параметрами шрифта и прочего)? 100% есть же функция для этого. Просто будет не Text1, а Text1(1) или как?

Я не прошу за меня готовый код сделать, но куски мне очень помогут. Как создать копию объекта на основании имеющегося, как потмо пробежать по всем значениям этого TRACE (если это он все хранит) и создать точное кол-во этих текстовых объектов. А можно ли добавить этим текстовым объектам еще параметр и сохранить в него ссылку, а не только вывести на заголовок значение ТЕХТ? Или проще как то сразу из TRACE все цеплять не нагружая излишними данными создаваемые объекты?

Shinoby
31.10.2007, 11:29
Я кажется нашел еще примерчики, но длинные шибко. щас перевариваю...

Я научился работать с XML ужо. Сделал класс и подцеплил его в swf

А как мне теперь налабать кучу вышеописанных объектиков по образу и подобию какого то имеющегося?

2morrowMan
31.10.2007, 12:33
Извени, но учить тебя ActionScipt времени нету - смотри уроки в инете.
На счет объекта "trace" вставь просто код:

trace('Я объект trace :D');

Shinoby
31.10.2007, 13:11
Я уже понял это все.
Просто не допру как сгенерить объекты на основании ХМЛ...

trace = echo = print =)

Рельно не могу найти тему о создании копии объектов с добавлением им ну индексов что ли или как их иначе различать?

etc
31.10.2007, 14:09
Shinoby, если надо что-то добавить *— редактируйте свой пост, а не лепите второй рядом.

Shinoby
31.10.2007, 14:38
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.XMLDocument;

public class xml_loader extends Sprite {

public function xml_loader() {

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("test.xml"));


function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
//trace(xmlData);
//trace(xmlData.layer.desc.text());
//trace(xmlData.layer.desc.text()[0]);

//var nameList:XMLList = xmlData.layer.link.text();
//trace(nameList);
//for each (var nameEl:XML in nameList) {
//trace (nameEl);
//}


var layerChildren:XMLList = xmlData.layer.children();
for each (var layerInfo:XML in layerChildren) {
trace(""+layerInfo.name());
trace(" "+layerInfo);

}

var total = xmlLoader.bytesTotal
var loaded = xmlLoader.bytesLoaded
trace("Total bytes:"+total+" , Loaded bytes:"+loaded);
}
}
}
}

Вот до этого я допер... ну поэкспериментировал, потестил... Там несколько строк заблочены - просто я и так и так тестил и оставил на потом не стирая, что бы синтаксис не забыть.

Нашел пример для создания объектов


package
{
//
import flash.display.Sprite;
import flash.text.TextField;
//
public class Starter_1 extends Sprite
{
private var tField:TextField;
public function Starter_1 ()
{
myTest();
}
private function myTest():void
{
tField = new TextField();
tField.autoSize = "left";
tField.background = true;
tField.border = true;
tField.x = 20;
tField.y = 75;
tField.text = "Hello You, what is your name?";
addChild(tField);
}
}
}


Это все по логике должно хранится в классе документа. НО 2 класса не фурычат, в одном конфликтуют, а как этот код мне скомпоновать воедино и как сделать что бы на основании первого генерились tFirld (пусть так называются) и они же еще на события реагировали клик и ежели мыша над объектом (объект в фокусе)? ну немного же осталось, помогите. Все что мог нашел...