PDA

Просмотр полной версии : Помогите с фотогалереей.


CREDO
24.02.2006, 19:37
Я сделал PHP скрипт, который передаёт ссылки всех jpg фаилов, лежащих в определённой деректории, во flash. Flash же в свою очередь создает нужное количество клипов и грузит в них превьюшки.

Подскажите каким образом можно сделать так, что бы Flash создавал, например 3 строки и 3 столбца, если PHP передаёт количество ссылок больше 9, то дополнительно создаётся кнопка "дальше", при нажатии которой создаётся опять 3 столбца и 3 строки, но в которые уже грузяться следующие превьюшки и так до безконечности.


Пример в портфолио сайта здесь (http://www.dealfil.com/)

Usnul
24.02.2006, 19:46
создается массив ссылок, создается флаг, указатель того с какой позиции читать массив, при нажатии кнопки дальше увеличить значение флага на 9. Описывать остальное не стану. Если ты знаешь пхп ты должен быть знаком с условиями и массивами, а это все что тут нужно.

Homo Sapiens
24.02.2006, 20:59
Велика проблема, 9 клипов поставить квадратом. Ты про свойства _x, _y слышал?
А есть другое свойство - _visible.

CREDO
24.02.2006, 21:18
Тут всё сложнее я всё програмно делаю. Просто 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);

}

Usnul
24.02.2006, 21:23
Тут всё сложнее я всё програмно делаю. Просто 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);

}


читай мой пост до тех пор пока не поймешь...

CREDO
24.02.2006, 21:27
Я понял твой пост
Нужно создать флаг!
Там в моём скрипте в место this.n будет переменная равная 9, 18 ....и т д.


Но для начала нужно понять, как перенести клипы после каждых 3 - ёх на новую строку.

__i
24.02.2006, 21:49
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. Догадаешься как изменить?

CREDO
24.02.2006, 22:29
public - обязательно?

Homo Sapiens
24.02.2006, 22:40
Если ты используешь его в AS2 классе - да, если в коде - не нужен.
collection - имя массива со значениями

CREDO
24.02.2006, 22:43
ты прям мысли читаешь.

CREDO
24.02.2006, 22:52
collection - в массиве ссылки на фотографии,
Ты хочешь их по координатам, что ли выставить?

Homo Sapiens
24.02.2006, 22:57
Нет, скажу "Крэкс - Брэкс - Пэкс" и они встанут сами.
Что тебе не нравится?

CREDO
24.02.2006, 23:22
сказать, что не нравиться - не правильно сказать, просто я не вьехал в твой скрипт, мне показалось, что он не верен. Я почти добился результата со скриптом от ______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%. В реальном проекте. Я тебе его так и дал, вырезав строки, которые к нему не относились :)

CREDO
24.02.2006, 23:41
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?

CREDO
24.02.2006, 23:43
Он работает :) 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" - имя произвольного клипа, в моём случае красный кружок. Как ни странно - работает.

CREDO
25.02.2006, 10:36
:D

Хорошо.

Вот выставил я эти 9 клипов, загрузил в них превьюшки, и жму далее.
Что происходит?
Следующие 9 клипов грузяться ниже в продолженние старых.

так как
if (i%4 == 3) {
x = x_start;
y += 100;
}

Как избежать этого?

CREDO
25.02.2006, 11:49
С этим я справился.

Смысл заключается в следующем.

Смещаю цикл на -9.