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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > Advanced

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

Регистрация: Jun 2002
Сообщений: 391
По умолчанию Подгрузить массив... ->

Здрасьте Вам.

Можно ли как-нибудь через XML или LoadVar (но не подгрузкой другого мувика) подгружать массивы (учитывая специфику Флэша — "объем информации, обращаться к которому можно поэлементно")?

Старый 28.03.2003, 14:58
Sh@man вне форума Посмотреть профиль Отправить личное сообщение для Sh@man Найти все сообщения от Sh@man
  № 2  
Sh@man
 
Аватар для Sh@man

Регистрация: Mar 2002
Сообщений: 840
Отправить сообщение для Sh@man с помощью AIM Отправить сообщение для Sh@man с помощью Skype™
По умолчанию Держи вот это

Method 1 - plain flash vars
Use: loadvariables, Loadvars.load, Loadvars.sendAndLoad

The data string sent from the server could read
prod1=xxx&price1=1.11&orderno1=123&image1=iii.jpg&prod2=abc&price2=2.22&orderno2=456&count=2
Now, if you wanted to build the flash array from the data, you would have to wait for the variables (!) and then use some code like that
data = [];
for(n = 1 ; n <= Number(count) ; n++)
{ prod = _root['prod'+n];
price = _root['price'+n];
orderno = _root['orderno'+n];
item = {prodrod, pricerice, ordernorderno};
image = _root['image'+n];
if(typeof(image) != 'undefined')
item.image = image;
related = _root['related'+n];
if(typeof(related) != 'undefined')
item.related = related;
data.push(item);
}
Pro: using urlencode, all characters can be transmitted easily - no special handling required
Pro: data format is easy to understand and verify
Con: all data are received as strings
Con: extending data set to complex structures or multi-dimensional arrays may not be easy - consider data names like xyz13_21
Con: creates lots of variables, so in fact the _root should be replaced by a dedicated MC receiving the vars

Method 2 - comma-separated strings
Use: loadvariables, Loadvars.load, Loadvars.sendAndLoad

The data string sent from the server could read
prods=xxx,1.11,123,iii.jpg,|abc,2.22,456,,
To read that data, you would again wait for data (!) and then use code like this
data = prods.split('|');
for(n = 0 ; n < data.length ; n++)
{ d = data[n].split(',');
item = {prod:d[0], price:d[1], orderno:d[2]};
if(d[3] != '')
item.image = d[3];
if(d[4] != '')
item.related = d[4];
data[n] = item;
}
Pro: small data size
Con: only works when separator chars do not occur within data; this may be hard to achieve, and there is no obvious way to include all characters
Con: all data are received as strings
Con: no easy and fool-proof way to extend the data format - adding a new column to the data in the wrong place may go unnoticed
Con: at least FP5 got severe performance problems splitting those strings

Method 3 - XML
Use: XML.load, XML.sendAndLoad

The data sent from the server might read
<prods>
<item>
<prod>xxx</prod>
<price>1.11</price>
<orderno>123</orderno>
<image>iii.jpg</image>
</item>
<item>
<prod>abc</prod>
<price>2.22</price>
<orderno>456</orderno>
</item>
</prods>

Once the data loads, some actionscript would be necessary to convert the received xml object into the target array

Pro: easy to read and verify; if you care to write a formal specification for the data, you can even use available tools to verify the output of the server script
Pro: easy to extend, data format handles complex structures nicely
Pro: flash client could be replaced by something else
Pro: arrays / objects on the server can more or less automatically be converted into xml and back through inclusion of canned code (distinction between a data item and an array holding exactly 1 item may be lost)
Con: more coding to create and parse the xml than other methods, if it has to be done individually
Con: FP5 did not handle xml parsing too well either

Method 4 - binary
Use: loadmovie
The data is not sent as readable text but rather as a movie consisting of scripts only.
Now, the flash player does not read actionscript source, like the
data = [{prod:'xxx',price:1.11,orderno:123,image:'iii.jpg'},{prod:'abc',price:2.22,orderno:456}];
specification, but only compiled actionscript. So for this method we need something on the server that compiles actionscript. This could be MING since it includes a full AS compiler. This could also be a php class or perl package that converts php or perl data into a movie.

Sample MING code
<?
$m = new SWFMovie();
$m->add(new SWFAction("
data = [
{prod:'xxx',price:1.11,orderno:123,image:'iii.jpg'},
{prod:'abc',price:2.22,orderno:456}
];
"));
header('Content-type: application/x-shockwave-flash');
$m->output();
?>
If the data is derived from searching a database, that line of actionscript would have to be created by the server script first.
The above-mentioned php class works with arrays and provides methods to set a variable or call a function, so code might be
<?
require "swfdata.php";
$data = array(
array(prod=>'xxx', price=>1.11, orderno=>123, image=>'iii.jpg'),
array(prod=>'abc', price=>2.22, orderno=>456)
);
$d = new swfdata();
$d->setvar('prods', $data);
$d->send();
?>
Creating an array from a database search seems to be somewhat easier than creating a string

Pro: no code required in receiving movie, the result data structure just "comes into life" when the transfer completes
Pro: data typing determined by server
Pro: full character set can be passed without any effort
Pro: with appropriate precautions can even pass the foreign server barrier
Con: if any errors occur on the server, a movie transmitting just an error message has to be sent
Con: data is not human readable, so extra software is required to check that a server script is indeed sending correct data
Con: some idiot servers add "banners" to all script output, even to generated swf ... which certainly will not work - and may take ages to diagnose

Sample codes
using constant array create in the programming language php example
<?
require "swfdata.php";
$m = new swfdata();
$m->setvar('_root.data.counter', array(23, 25));
$m->call('_root.starter', 2.7, array('a', 'b', array('aa'=>11, 'bb'=>'unfug', 'cc'=>0), 'd'));
$m->send();
?>
perl example
#!/usr/bin/perl
require "swfdata.php";
$m = new swfdata();
$m->setvar('_root.data.counter', [23, 25]);
$m->call('_root.starter', 2.7, ['a', 'b', {'aa'=>11, 'bb'=>'unfug', 'cc'=>0}, 'd']);
$m->send();

Method 5 - binary AMF
Use: NetConnection.call etc.

Yet another way of passing binary data, commonly called Flash remoting.
Here the movie can send actionscript objects as a binary message, and the server returns a similar message. Like above, the data on the server would appear as an array or object in the server scripting language.
Sample application - flash part:
var nc = new NetConnection();
nc.connect(url);
var reply = {};
reply.onResult = function(result) {
trace('result is '+result+' ('+typeof(result)+')');
};
nc.call('script1', reply, data1, data2);
Here data1 and data2 are arbitrary flash data items
Sample application - server part:
<?
include "amfdata.php";
$rqst = new amfdata(); // read request data
switch($rqst->fn)
{ case 'script1':
$data = $rqst->fnargs[0];
// process data here
$data = array(-3.7, 4.5);
$rqst->sendresult($data);
}
?>
Pro: passing data in either direction as actionscript objects - all the other methods utilized plain flash vars to send the request.
Pro: data typing determined by server
Pro: full character set can be passed without any effort
Con: if any errors occur on the server, a movie transmitting just an error message has to be sent
Con: undocumented format, typically requires a fairly pricey server solution and uses some not-so-common server languages like CF and hence does not lend itself to experimentation
Con: third-party restriction in effect
Con: data is not human readable, so extra software is required to check that a server script is indeed sending correct data - for the movie method above one of the available actionscript analyzers should do, there does not seem to be software for amf around.
Con: requires FP6
__________________
www.maxshaman.com

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

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

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


 


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


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