Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Слайдшоу из XML по таймеру (http://www.flasher.ru/forum/showthread.php?t=155431)

niks_13 04.05.2011 17:05

Слайдшоу из XML по таймеру
 
Добрый день. Нужно сделать слайдшоу с интервалом в 2 секунды. Параметры забираю из XML. Сначала при вызове ф-ции загружаю картинку с 0 индексом - работает.
Потом через каждые 2 секунды по таймеру из переменной забираю увеличенное значение индекса.
Трейсом вывожу имена новых элементов и их параметры - всё выводится, но картинка не обновляется - получаю ошибку:

Ошибка:
Код:

TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать XML@277684f1 element <pctSw2 pctSwX="435" pctSwY="150" pctSwWidth="548" pctSwHeight="530"> в flash.net.URLRequest.
        at Function/<anonymous>()
        at flash.utils::Timer/_timerDispatch()
        at flash.utils::Timer/tick()

XML:
Код:

<objects>
        <pictShow>
                <pctSw1 pctSwX = "435"
                                pctSwY = "150"
                                pctSwWidth = "550"
                                pctSwHeight = "529">06_1.jpg</pctSw1>
                <pctSw2 pctSwX = "435"
                                pctSwY = "150"
                                pctSwWidth = "548"
                                pctSwHeight = "530">06_2.jpg</pctSw2>
                <pctSw3 pctSwX = "435"
                                pctSwY = "150"
                                pctSwWidth = "550"
                                pctSwHeight = "530">06_3.jpg</pctSw3>
                <pctSw4 pctSwX = "435"
                                pctSwY = "150"
                                pctSwWidth = "549"
                                pctSwHeight = "530">06_4.jpg</pctSw4>
                <pctSw5 pctSwX = "435"
                                pctSwY = "150"
                                pctSwWidth = "547"
                                pctSwHeight = "489">06_5.jpg</pctSw5>
                <pctSw6 pctSwX = "435"
                                pctSwY = "150"
                                pctSwWidth = "549"
                                pctSwHeight = "530">06_6.jpg</pctSw6>
        </pictShow>
</objects>

Код AS3:

var pictMem:int = 0;
 
function callPictShow():void
{
        var xmlPictShowList:XMLList;
              xmlPictShowList = xmlTitleList[i].children();
 
        var pictShowLoad:UILoader = new UILoader();
 
        var timerPict:Timer = new Timer (2000);
              timerPict.addEventListener(TimerEvent.TIMER, onTimerPict);
              timerPict.start();
 
              pictShowLoad.x = xmlPictShowList.attribute('pctSwX')[0];
              pictShowLoad.y = xmlPictShowList.attribute('pctSwY')[0];
              pictShowLoad.width = xmlPictShowList.attribute('pctSwWidth')[0];
              pictShowLoad.height = xmlPictShowList.attribute('pctSwHeight')[0];
              pictShowLoad.source = xmlPictShowList[0];
              pictShowLoad.load();
              pictMem = 0;
 
            addChildAt(pictShowLoad,2);
 
        function onTimerPict(e:TimerEvent):void
        {
                pictMem++;
                trace(xmlPictShowList[pictMem]);
                trace (xmlPictShowList.attribute('pctSwX')[pictMem]);
                trace (xmlPictShowList.attribute('pctSwY')[pictMem]);
                trace (xmlPictShowList.attribute('pctSwWidth')[pictMem]);
                trace (xmlPictShowList.attribute('pctSwHeight')[pictMem]);
                trace(xmlPictShowList[pictMem]);
 
                pictShowLoad.x = xmlPictShowList.attribute('pctSwX')[pictMem];
                pictShowLoad.y = xmlPictShowList.attribute('pctSwY')[pictMem];
                pictShowLoad.width = xmlPictShowList.attribute('pctSwWidth')[pictMem];
                pictShowLoad.height = xmlPictShowList.attribute('pctSwHeight')[pictMem];
                pictShowLoad.load(xmlPictShowList[pictMem]);
 
                timerPict.stop();
                timerPict.reset();
                timerPict.start();
        }
}


Crazy 04.05.2011 17:23

http://help.adobe.com/ru_RU/AS3LCR/F...er.html#load()

А Вы что туда пытаетесь передать? :)

niks_13 04.05.2011 17:38

Я передаю из XML листа имя картинки.
Если оттрейсить: xmlPictShowList[pictMem] - выводятся правильные имена из XML'а.

Если знаете что исправить буду признателен.

Crazy 04.05.2011 17:56

Если бы Вы пошли по ссылке и прочитали текст, то увидели бы примеры кода. :)

niks_13 04.05.2011 18:09

Я прекрасно умею пользоваться loader'ом и мне нужно решение проблемы, а не прочтение Войны и Мира, иначе зачем ещё форум нужен.
_____________________________________________________________
Проблема решена.

Crazy 04.05.2011 19:05

Коллега, не надо рефлексии. Строка pictShowLoad.load(xmlPictShowList[pictMem]) говорит, что лоадером Вы пользоваться не умеете и более возвращаться к этому не будем.
Итак, берем пример по ссылке, которую я дал:

Код AS3:

import fl.containers.UILoader;
 
var url:String = "http://www.helpexamples.com/flash/images/image3.jpg";
var req:URLRequest = new URLRequest(url);
 
var myUILoader:UILoader = new UILoader();
myUILoader.scaleContent = false;
myUILoader.move(10, 10);
myUILoader.load(req);
addChild(myUILoader);

Здесь url задан литералом, у Вас он лежит в xmlPictShowList[pictMem]. Заменяем, убираем scaleContent, move и addChild и получаем требуемый Вам код.

Нет?

niks_13 04.05.2011 23:20

Эта строка говорит, что я делал это в 2:43 ночи, а если бы Вы видели предыдущие 500 строк (чего я ни в жисть не покажу) и 8 вызываемых лоадеров, то заметили бы, что это случайная ошибка. Так что не надо необъективной критики.

Я же сказал, что уже всё решил.
Это:
Код AS3:

pictShowLoad.load(xmlPictShowList[pictMem]);

меняем на:
Код AS3:

pictShowLoad.source = xmlPictShowList[pictMem];
pictShowLoad.load();


Crazy 04.05.2011 23:41

2:43, 16:05, 16:38.

No more comments :)


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

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