![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 2
|
Добрый день, уважаемые флэшеры!
мне нужно сделать основанный на 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");
}
};
третий фрейм: 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(); //добавлено только для того чтобы убедиться, что визуально эффект выглядит так, как должен.
как показать следуюущие пять (или меньше) элементов? как проверить сколько следующих элементов показывать? как наилучшим образом организовать показ всего "шоу" сначала (первых пяти? буду благодарен за любую помощь |
|
|||||
|
[+1 10.07.06]
Регистрация: Jan 2003
Сообщений: 365
|
Можно (нужно) обойтись и одним фреймом для загрузки:
onMyLoad = 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");
}
};
var indhold:XML = new XML();
indhold.ignoreWhite = true;
indhold.onLoad = onMyLoad;
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");
|
|
|||||
|
Регистрация: Jun 2006
Сообщений: 2
|
спасибо! изначально все было в одном фрейме (и анимация тоже), но была та же самая проблема с загрузкой xml, который грузился через раз как бог на душу положит
поэтому решено было дать ему крохотный шанс длиною во фрейм для загрузки... |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:12. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|