Просмотр полной версии : Загрузка случайной картинки (Random Image)
daemonium
04.05.2007, 22:22
Собственно вопрос, как реализовать? нужна загрузка картинок в случайном порядке из xml.
нашел подобную тему, но там вместо картинок, загружаются мувики.
Я только начинаю изучать флеш, но эта штука срочно нужна, извините за наглость, но может кто нибуть сможет выложить исходник :o Пожалуйста!
заранее спасибо!
В разделе для профи вопросы задают профи и не из серии «Сделайте всё за меня».
daemonium
04.05.2007, 22:27
я уже это понял, извините :rolleyes:
грузяться как мувики, так и картинки, точно так же. Случайно - это Math.random()
daemonium
05.05.2007, 18:02
вроде разобрался. спасибо добрым людям.
вот скрипт который вставляю:
pic_xml = new XML();
pic_xml.ignoreWhite = true;
pic_xml.onLoad = function(success) {
if (success && pic_xml.status == 0) {
trace("");
picSelection();
}
};
pic_xml.load("random.xml");
function picSelection() {
var currentPic:Number = Math.floor(Math.random()*pic_xml.firstChild.childNodes.length);
var picName:String = pic_xml.firstChild.childNodes[currentPic].attributes.picName;
var bannerLink:String = pic_xml.firstChild.childNodes[currentPic].attributes.link;
createBanner(picName, bannerLink);
}
function createBanner(pic, link) {
this.createEmptyMovieClip("picHolder_mc", 0);
var loader:MovieClipLoader = new MovieClipLoader();
loader.loadClip("random/"+pic, "picHolder_mc");
}
возник еще вопрос: как сделать picHolder_mc._x; picHolder_mc._y; по центру если картинки разных размеров?
и можно ли сделать прелоадер для каждой картинки, если да, то как?
помогите пожалуйста, очень нужна помощь!
daemonium
05.05.2007, 23:17
что, никто не может помочь?
пробовал менять параметры picHolder, в частности таким образом
picHolder_mc._x =(Stage.width/2) - (MovieClip._width/2);
picHolder_mc._y =(Stage.height/2) + (MovieClip._height/2);
но ничего не работает : (
У класса MovieClip нет статических свойств _width и _height. Нужно заменить MovieClip в коде на picHolder_mc.
daemonium
05.05.2007, 23:52
всё равно не работает
есть другие варианты выравнивать подгружаемую картинку по центру? или только через picHolder_mc._x/_y
Дождаться загрузки, потом выставить.
daemonium
06.05.2007, 00:05
не совсем понял.
все картинки разных размеров, но все меньше сцены и должны быть по центру
Ну залезьте в хелп, посмотрите как там с MovieClipLoader обращаются. Цепляют listener.
daemonium
06.05.2007, 03:27
сод должен выглядеть так:
// Создаем новый объект XML
pic_xml = new XML();
//
// Удаляем все ненужные пробелы и символы
// переноса строки
pic_xml.ignoreWhite = true;
//
// Прописываем сценарий, который выполнится при
// успешной загрузке XML-файла
pic_xml.onLoad = function(success) {
if (success && pic_xml.status == 0) {
//
// Запускаем функцию, которая и выберет нам картинку
trace("XML-файл успешно загружен");
picSelection();
}
};
pic_xml.load("random.xml");
//
// Функция, выбирающая случайную картинку
function picSelection() {
// Выбираем случайным образом баннер, который
// будем загружать
var currentPic:Number = Math.floor(Math.random()*pic_xml.firstChild.childNodes.length);
var picName:String = pic_xml.firstChild.childNodes[currentPic].attributes.picName;
var bannerLink:String = pic_xml.firstChild.childNodes[currentPic].attributes.link;
//
// Запускаем построение баннера, в аргументах передаем
// имя выбранной картинки и ссылку, которая будет открываться
// при щелчке по баннеру
createBanner(picName, bannerLink);
}
//
// Функция, которая загрузит выбранную картинку
// и назначит для нее ссылку
function createBanner(pic, link) {
// Создаем пустой клип, в который и будем грузить картинку
this.createEmptyMovieClip("picHolder_mc", 0);
var loader:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip)
{
picHolder_mc._x=(Stage.width-picHolder_mc._width)/2;
picHolder_mc._y=(Stage.height-picHolder_mc._height)/2;
};
loader.addListener(mclListener);
loader.loadClip("random/"+pic, "picHolder_mc");
}
может кому пригодится : )
осталось только с прелоадером разобраться : )
mclListener.onLoadInit = function(target_mc:MovieClip)
{
target_mc._x=(Stage.width-target_mc._width)/2;
target_mc._y=(Stage.height-target_mc._height)/2;
};
Все остальное навскидку нормально.
daemonium
06.05.2007, 23:12
Перечитал весь хелп по MovieClipLoader и по onLoadProgress, ничего не получается с прелоадером, ну что поделать, чайник я и не понимаю ничего в скриптах, для меня это китайская грамота :confused:
может кто нить посмотрит а? пожалуйста
там прелоадер простенький совсем нужен, без текста, без ничего, простая полосочка, я её нарисовал в отдельном слое.
Очень надо, иначе не стал бы тут умолять, я правда ничего в этом не смыслю... и обратиться больше не к кому
daemonium
06.05.2007, 23:54
Kikasso
да, картинки грузятся, все нормально.
Ну если не получается с onLoadProgress, а локально оно может не получиться, есть mcl.getProgress() Сажайте onEnterFrame или по интервалу, только после загузки не забудьте интервал очистить.
daemonium
07.05.2007, 21:07
а так почему не работает?
mclListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void
{
trace(bytesLoaded + " / " + bytesTotal);
}
Работает, только не локально.
daemonium
07.05.2007, 21:44
http://www.grafiteca.com/1/
и не локально тоже не работает
может посмотришь? пожалуйста
А где в исходике прелоадер? Вообще не вижу.
daemonium
08.05.2007, 00:02
в исходнике его нет, на данный момент, с прелоадером, код выглядит так:
pic_xml = new XML();
pic_xml.ignoreWhite = true;
pic_xml.onLoad = function(success) {
if (success && pic_xml.status == 0) {
trace("");
picSelection();
}
};
pic_xml.load("random.xml");
function picSelection() {
var currentPic:Number = Math.floor(Math.random()*pic_xml.firstChild.childNodes.length);
var picName:String = pic_xml.firstChild.childNodes[currentPic].attributes.picName;
var bannerLink:String = pic_xml.firstChild.childNodes[currentPic].attributes.link;
createBanner(picName, bannerLink);
}
function createBanner(pic, link) {
this.createEmptyMovieClip("picHolder_mc", 0);
var loader:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip)
{
target_mc._x=(Stage.width-target_mc._width)/2;
target_mc._y=(Stage.height-target_mc._height)/2;
};
mclListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void
{
trace(bytesLoaded + " / " + bytesTotal);
}
loader.addListener(mclListener);
loader.loadClip("random/"+pic, "picHolder_mc");
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.