Добрый день, уважаемые флэшеры!
мне нужно сделать основанный на XML баннер. XML файл будет содержать от 5 до 30 тэгов (childNodes). Предполагается, что XML будет редактироваться клиентом (то есть количество ChildNodes будет меняться).
мне нужно брать данные из XML и затем отображать их анимированными по пять штук за раз. Первые пять, вторые пять, и т.д. А если, например, тэгов будет 13, то соответственно 5, 5 и затем 3. После чего вся канитель должна начинаться сначала, то есть первые пять и т.д.
XML выглядит так:

Код:
<?xml version = "1.0" encoding = "Windows-1251" ?>
<tariffs>
<tariff where = "Kaliningrad, Russia" howmuch = "1,5$" />
<tariff where = "Khorezm" howmuch = "0,2$" />
<tariff where = "Moscow" howmuch = "2,5$" />
<tariff where = "Kiev" howmuch = "0,4$" />
<tariff where = "Bobruysk" howmuch = "0,3$" />
<tariff where = "Chirchik" howmuch = "0,3$" />
<tariff where = "Tashkent, mobiles" howmuch = "0,3$" />
<tariff where = "Magadan" howmuch = "0,3$" />
<tariff where = "Almaty" howmuch = "0,3$" />
</tariffs>
actionscript:
первый фрейм:

Код:
var indhold:XML = new XML();
indhold.ignoreWhite = true;
var destinations:Array = new Array();
var prices:Array = new Array();
var Format:TextFormat = new TextFormat();
Format.size = 11;
Format.color = 0xffffff;
Format.font = "tahoma";
Format.bold = true;
indhold.load("tarifi.xml");
второй фрейм:

Код:
indhold.onLoad = function(success) {
if (success) {
var tarifiki:Array = this.firstChild.childNodes;
for (i=0; i<tarifiki.length; i++) {
destinations.push(tarifiki[i].attributes.where);
prices.push(tarifiki[i].attributes.howmuch);
}
} else {
trace("error loading xml");
}
};
кстати, несмотря на проверку загрузки, xml грузится через раз, то данные выдает, то undefined. в чем может быть проблема?
третий фрейм:

Код:
import mx.transitions.*;
import flash.filters.*;
// делаем текстовые поля:
for (i=0; i<5; i++) {
_root.createTextField("gde"+i, i+3, 16, 20*i+30, 200, 30);
var ds:DropShadowFilter = new DropShadowFilter(5, 45, 0x000000, 100, 1, 3, 0, 1, false, false, false); // фильтр добавлен лишь ради alpha tween-a,
// который без этого отказывался работать.
_root["gde"+i].filters = [ds];
_root["gde"+i].text = destinations[i];
_root["gde"+i].setTextFormat(Format);
var nashTween = new Tween(_root["gde"+i], "_alpha", Strong.easeIn, 0, 100, 2, true);
}
for (i=0; i<5; i++) {
_root.createTextField("pochem"+i, i+33, 180, 20*i+30, 200, 30);
var ds:DropShadowFilter = new DropShadowFilter(5, 45, 0x000000, 100, 1, 3, 0, 1, false, false, false);
_root["pochem"+i].filters = [ds];
_root["pochem"+i].text = prices[i];
_root["pochem"+i].setTextFormat(Format);
var nashTween = new Tween(_root["pochem"+i], "_alpha", Strong.easeIn, 0, 100, 2, true);
}
var maskClip:MovieClip = _root.createEmptyMovieClip("opa", 200);
with (maskClip) {
// рисуем маску
beginFill(0x667686, 100);
moveTo(0, 30);
lineTo(Stage.width, 30);
lineTo(Stage.width, Stage.height);
lineTo(0, Stage.height);
lineTo(0, 30);
endFill();
}
// анимируем маску
var myTransitionManager:TransitionManager = new TransitionManager(opa);
myTransitionManager.startTransition({type:Wipe, direction:Transition.OUT, duration:3, easing:None.easeNone, startPoint:9});
var myListener:Object = new Object();
myListener.allTransitionsOutDone = function(eventObj:Object) {
trace("allTransitionsOutDone event occurred."); // трейс добавлен для //отлова момента, когда следует начинать отображение следующих пяти //элементов массива в текстовых полях, тут я пытался убить первые пять //полей и создать новые, однако первые пять отказывались умирать
};
myTransitionManager.addEventListener("allTransitionsOutDone", myListener);
stop(); //добавлено только для того чтобы убедиться, что визуально эффект выглядит так, как должен.
а теперь проблемы/вопросы:
как показать следуюущие пять (или меньше) элементов?
как проверить сколько следующих элементов показывать?
как наилучшим образом организовать показ всего "шоу" сначала (первых пяти?
буду благодарен за любую помощь