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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

Регистрация: Jun 2006
Сообщений: 2
По умолчанию XML, loop по нескольку штук за раз, арифметика и др.

Добрый день, уважаемые флэшеры!

мне нужно сделать основанный на 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(); //добавлено только для того чтобы убедиться, что визуально эффект выглядит так, как должен.
а теперь проблемы/вопросы:
как показать следуюущие пять (или меньше) элементов?
как проверить сколько следующих элементов показывать?
как наилучшим образом организовать показ всего "шоу" сначала (первых пяти?


буду благодарен за любую помощь

Старый 28.06.2006, 15:28
Cvazimodo вне форума Посмотреть профиль Отправить личное сообщение для Cvazimodo Найти все сообщения от Cvazimodo
  № 2  
Ответить с цитированием
Cvazimodo
[+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");
На остальной вопрос, честно говоря, долго писать придётся... Проще говоря, нужно завести счетчик, какой элемент мы уже показали... ну и крутить его.

Старый 28.06.2006, 15:33
udvikler вне форума Посмотреть профиль Отправить личное сообщение для udvikler Найти все сообщения от udvikler
  № 3  
Ответить с цитированием
udvikler

Регистрация: Jun 2006
Сообщений: 2
спасибо! изначально все было в одном фрейме (и анимация тоже), но была та же самая проблема с загрузкой xml, который грузился через раз как бог на душу положит поэтому решено было дать ему крохотный шанс длиною во фрейм для загрузки...

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

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

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


 


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


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