Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   фото/видео галерея (http://www.flasher.ru/forum/showthread.php?t=90905)

KLieriK 20.01.2007 15:35

фото/видео галерея
 
Доброго времени суток.
1. подскажите плиз как реализовать еффект прокручивания превьюшек.
вот пример: http://www.flashrelief.com/thumbgallery/features.html
вот тут внизу флешки прокручиваються превьюшки.
знаю что ето реализовано просто через маски... ну в упор непонимаю как...
может кто на исходник линк даст... покалупать :)

2. FLV галерея. подскажите алгоритм ее написания. какие классы тут используються? исходник так же приветствуеться ;)

CorC 20.01.2007 15:40

хм, я это месяца 1.5 -2 назад тут писал
поищите в поск4е что то типа: перемещение кнопок...

KLieriK 20.01.2007 16:24

что-то совсем туго. ничего подобного найти не могу :(

CorC 20.01.2007 17:11

о, нашел
http://www.flasher.ru/forum/showthread.php?t=89035

Мыкыта 20.01.2007 19:57

=)) если кто видел аль впомнит простенький пример того же самого только движение и скорость зависит от координат курсора мышы курсор уводим мувик останавливается воть =)) токмо без кнопок =)))

KLieriK 21.01.2007 01:02

сейчас пытаюсь зделать фото галерею (хотя бы).
думаю так:
1. создание xml объекта и обработка его onLoad:
Код:

var xml_file:String = 'gallery.xml';       
var xmlData:XML = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load(xml_file);

xmlData.onLoad = function (success){ // check if xml file is loaded well
        if(success){       
                indicator._visible = false;
                //trace (xmlData_len);
                createXmlArray(boxid);
        }else{
                indicator.textColor = 0x00FF00;//текчтовое дин. поле отображение состояния.
                indicator.text = 'can`t load xml file';
        }
}

2. На далее начинаю делать парсинг xml на составные в массив, да бы упорядочить данные
Код:

function createXmlArray(boxId:Number) {        //creating array from xml for gallary tag name
        var xmlDataTemp:Array = new Array();
        if (boxId == 0) {//передаеться 0
                var xmlBoxLen = xmlData.firstChild.childNodes[boxId].childNodes.length;
                var xmlBox = xmlData.firstChild.childNodes[boxId].childNodes;
                var gallName:String;
                for (var i = 0; i<xmlBoxLen; ++i) {
                       
                        gallName = xmlBox[i].attributes.name;        // gallery title
                        xmlDataTemp[gallName] = new Array();        // create array[gallery Name]
                       
                        for (var aNode:XMLNode = xmlBox[i].firstChild; aNode != null; aNode=aNode.nextSibling) {
                                //trace (aNode.attributes.title);
                                xmlDataTemp[gallName][xmlDataTemp[gallName].length] = new Array();
                                xmlDataTemp[gallName][xmlDataTemp[gallName].length-1]['title'] = aNode.attributes.title;
                                xmlDataTemp[gallName][xmlDataTemp[gallName].length-1]['main'] = aNode.attributes.main;
                                xmlDataTemp[gallName][xmlDataTemp[gallName].length-1]['thmb'] = aNode.attributes.thmb;
                        }
                }
        }

       
        return (xmlDataTemp);
}

3. далее хочу на основе выходных данных вышеуказаной ф-ии, зная кол-во елементов в массиве ([i]) создать такое же кол-во копий мувика, в который запихнуть соответствующую превью-картинку.
4. потом при создании етих превью, повесить на них код загрузки (прелоадер) для каждого рисунка (буду очень признателен есси кто-то выложит этот код. для одного мувика написать просто. а как повесить на дубликат что-то голова не варит)
5. при нажатии на соответствующий мувик-превью в главный контейнер загрузить соответствующий рисунок (на него так же вещаеться програмный прелоадер)

в общем как-то так. только мне кажеться что парсинг xml очень получаеться перегружен в моем случае и логика далеко не идеальна. подскажите плиз правильное направление.
буду очень признателен за тутор (рус/англ значения не имеет).

заранее спасибо! ;)

KLieriK 21.01.2007 22:32

пака писал... встретился тут с очередной проблемой.
имею список превьюшек.
ну и что... начинаю дублировать...
Код:

        thumbMC.duplicateMovieClip('thumb-0', this.getNextHighestDepth());
        eval('thumb-0')._x = thumbMC._x+thumbMC._width+10;
        eval('thumb-0').onPress = function() {
                //this.loadMovie(thList[0]['main']);
                trace(thList[0]['main']);
        };
        for (var i:Number = 1; i<arr.length; ++i) {
                thumbMC.duplicateMovieClip('thumb-'+i, this.getNextHighestDepth());
                eval('thumb-'+i)._x = eval('thumb-'+(i-1))._x+eval('thumb-'+(i-1))._width+10;
                eval('thumb-'+i).onPress = function() {
                        mc.loadMovie(thList[i]['main']);
                };

        }

но вот проблема заключаеться в том что событие при нажатии срабатывает
mc.loadMovie(thList[i]['main']);
а надо
mc.loadMovie(адрес к рисунку);

то есть надо чтоб оно вместо thList[i]['main'] всунуло адресс.

может как-то по другому можно раздублировать рисунки и динамически им присвоить события для кадого соответствующие?!

Kikasso 21.01.2007 23:24

а адрес к рисунку где хранится?
вместо дублирования используйте
attachMovie(), (F1), передавая в initObj все что вам нужно, в т.ч. и url подгружаемой картинки.
eval() лучше тоже не использовать, создавайте ссылки:
Код:

mc = thumbMC.duplicateMovieClip('thumb-0', this.getNextHighestDepth());
// лучше так:
var initObj = {url:path-to-url, _x:newX, _y:newY};
mc = attachMovie( id, newname, depth, initObj );


KLieriK 21.01.2007 23:29

выложите примерчик плиз, если он не оч большой и не сложен в написании. а то так я никогда не делал.
а про атачмувие сейчас почитаю ;)

Kikasso 21.01.2007 23:55

Писал на коленке, ничего не гарантирую:
Код:

//первый клип ставим в 0, 0
var tn:MovieClip;
var id:String = <llinkage в библиотеке>;
var newX:Number = 0;
var i:Number;
var pikUrl:String;
function tnOnPress():Void{
 mc.loadMovie(this.pikUrl);
}
for ( i=0; i<arr.length; i++) {
 var initObj = { pikUrl:path-to-url, _x:newX, onPress:tnOnPress };
 tn = attachMovie( id, "tn"+i, getNextHighestDepth(), initObj );               
 newX += tn._width + 10;
}

mc - это область просмотра
как получить path-to-url по номеру в твоем случае, не знаю, не понимаю где они хранятся.


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

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