Просмотр полной версии : Помогите с фотогалереей.
Я сделал PHP скрипт, который передаёт ссылки всех jpg фаилов, лежащих в определённой деректории, во flash. Flash же в свою очередь создает нужное количество клипов и грузит в них превьюшки.
Подскажите каким образом можно сделать так, что бы Flash создавал, например 3 строки и 3 столбца, если PHP передаёт количество ссылок больше 9, то дополнительно создаётся кнопка "дальше", при нажатии которой создаётся опять 3 столбца и 3 строки, но в которые уже грузяться следующие превьюшки и так до безконечности.
Пример в портфолио сайта здесь (http://www.dealfil.com/)
создается массив ссылок, создается флаг, указатель того с какой позиции читать массив, при нажатии кнопки дальше увеличить значение флага на 9. Описывать остальное не стану. Если ты знаешь пхп ты должен быть знаком с условиями и массивами, а это все что тут нужно.
Homo Sapiens
24.02.2006, 20:59
Велика проблема, 9 клипов поставить квадратом. Ты про свойства _x, _y слышал?
А есть другое свойство - _visible.
Тут всё сложнее я всё програмно делаю. Просто 9 клипов вставить - это лажа.
проблема перейти ко второй строке.
В ряд выставить 9 штук проблем нет.
var files:LoadVars = new LoadVars();
files.sendAndLoad("http://"+domain+target+"/Amount.php", files, "GET");
files.onLoad = function() {
for (count=0; count<this.n; count++) {
var position = images_mc.createEmptyMovieClip("cell_"+count, images_mc.getNextHighestDepth());
images_mc["cell_"+count].attachMovie("frame_mc", "frame_mc", 1);
position._x = (position._width+20)*count;
images_mc["cell_"+count].frame_mc.loaders_mc.loadMovie("http://"+domain+target+"/Resize.php?f="+this["amount"+count]+"&w="+preview, 1);
}
Тут всё сложнее я всё програмно делаю. Просто 9 клипов вставить - это лажа.
проблема перейти ко второй строке.
В ряд выставить 9 штук проблем нет.
var files:LoadVars = new LoadVars();
files.sendAndLoad("http://"+domain+target+"/Amount.php", files, "GET");
files.onLoad = function() {
for (count=0; count<this.n; count++) {
var position = images_mc.createEmptyMovieClip("cell_"+count, images_mc.getNextHighestDepth());
images_mc["cell_"+count].attachMovie("frame_mc", "frame_mc", 1);
position._x = (position._width+20)*count;
images_mc["cell_"+count].frame_mc.loaders_mc.loadMovie("http://"+domain+target+"/Resize.php?f="+this["amount"+count]+"&w="+preview, 1);
}
читай мой пост до тех пор пока не поймешь...
Я понял твой пост
Нужно создать флаг!
Там в моём скрипте в место this.n будет переменная равная 9, 18 ....и т д.
Но для начала нужно понять, как перенести клипы после каждых 3 - ёх на новую строку.
var count_for_view=9;
var count_row=3;
var cols=0;
for (i=0; i<count_for_view; i++){
if ((i%count_row)==0){
cols++;
}
this.['mc'+i]._x = 20*(i%count_row);
this.['mc'+i]._y = 20*cols;
}
Homo Sapiens
24.02.2006, 22:19
Нарисуй на бумажке таблицу из 9 клеточек и поставь в каждой по точке. Вот в таком жее порядке и заполняй. И не ленись. А код элементарен:
public function PlaceAll():Void
{
var x_start:Number = 150;
var y_start:Number = 60;
var x:Number = x_start;
var y:Number = y_start;
var len:Number = collection.length;
for(var i = 0; i < len; i++) {
collection[i]._x = x;
collection[i]._y = y;
x += 100;
if(i % 4 == 3) {
x = x_start;
y += 100;
}
}
}Строит таблицу 4 на 3. Догадаешься как изменить?
Homo Sapiens
24.02.2006, 22:40
Если ты используешь его в AS2 классе - да, если в коде - не нужен.
collection - имя массива со значениями
collection - в массиве ссылки на фотографии,
Ты хочешь их по координатам, что ли выставить?
Homo Sapiens
24.02.2006, 22:57
Нет, скажу "Крэкс - Брэкс - Пэкс" и они встанут сами.
Что тебе не нравится?
сказать, что не нравиться - не правильно сказать, просто я не вьехал в твой скрипт, мне показалось, что он не верен. Я почти добился результата со скриптом от ______i
ar count_for_view=9;
var count_row=3;
var cols=0;
for (i=0; i<count_for_view; i++){
if ((i%count_row)==0){
cols++;
}
this.['mc'+i]._x = 20*(i%count_row);
this.['mc'+i]._y = 20*cols;
}
Homo Sapiens
24.02.2006, 23:39
Он работает :) 100%. В реальном проекте. Я тебе его так и дал, вырезав строки, которые к нему не относились :)
ar count_for_view=9;
var count_row=3;
var cols=0;
for (i=0; i<count_for_view; i++){
if ((i%count_row)==0){
cols++;
}
this.['mc'+i]._x = 20*(i%count_row);
this.['mc'+i]._y = 20*cols;
}
Когда мы нажмём на кнопку далее как изменить переменную в цикле i?
Он работает :) 100%. В реальном проекте. Я тебе его так и дал, вырезав строки, которые к нему не относились :)
Я всё таки не разобрался в твоём скрипте, хотя код красивый, типизированный и читабельный
Я не смог внедрить его в свой.
sergwizard
25.02.2006, 00:03
Вот, попробуй такой вариант.
Homo Sapiens
25.02.2006, 00:09
Я всё таки не разобрался в твоём скрипте, хотя код красивый, типизированный и читабельный
Я не смог внедрить его в свой.
Ну извини. Сделал за 1 минуту:
function PlaceAll():Void
{
var x_start:Number = 150;
var y_start:Number = 60;
var x:Number = x_start;
var y:Number = y_start;
var len:Number = collection.length;
for(var i = 0; i < len; i++) {
collection[i]._x = x;
collection[i]._y = y;
x += 100;
if(i % 4 == 3) {
x = x_start;
y += 100;
}
}
}
var collection:Array = new Array();
for(var i = 0; i < 12; i++)
{
collection.push(_root.attachMovie("t", "t" + i, i));
}
PlaceAll();
"t" - имя произвольного клипа, в моём случае красный кружок. Как ни странно - работает.
:D
Хорошо.
Вот выставил я эти 9 клипов, загрузил в них превьюшки, и жму далее.
Что происходит?
Следующие 9 клипов грузяться ниже в продолженние старых.
так как
if (i%4 == 3) {
x = x_start;
y += 100;
}
Как избежать этого?
С этим я справился.
Смысл заключается в следующем.
Смещаю цикл на -9.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.