Форум 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=87277)

repz 02.11.2006 01:42

Про висибле.. массив кнопок...?
 
Есть мини картинка(мини) при нажатии на которую, в соседнем окне она же, но в полный рост (макс) при этом что бы перейти в галерею по ссылке, делаю под каждой картинкой ссылку, как можно сделать что бы при нажатии на мини под макси высвечивалась ссылка нужная. Все что лезет в голову через висибле, но можно ведь и через цикл наверно так?? Но тоже видимо с висибле?
Код:

        for (i=0; i<5; i++) {
this["pic"+i+"_mc"].X = i;
this["pic"+i+"_mc"].onRelease = function() {
mcLoader.loadClip(p+this.X+".jpg",picViewer_mc.picLoader);

}
};

Есть массив кнопок аля txt1_mc, txt2_mc........txt5_mc, как прикрутить, помогите........???????????

terbooter 02.11.2006 10:41

Наверно можно создать динамическое текстовое поле под картинкой
и при нажатии на кнопку вставлять туда нужную ссылку из массива.

Код:

links_ar =["http://ya.ru","2","3","4"];

        for (i=0; i<5; i++) {
this["pic"+i+"_mc"].X = i;
this["pic"+i+"_mc"].onRelease = function() {
mcLoader.loadClip(p+this.X+".jpg",picViewer_mc.picLoader);

description_txt.text=links_ar[this.X];

}
};

Кстати еще момент. Если не ошибаюсь, то в твоем варианте есть одна засада, сколько раз посетитель будет нажимать на кнопочку с изображением мини, столько раз картинка макси будет грузится с сервака заново.
Протести в режиме симуляция загрузки

repz 02.11.2006 11:50

2 terbooter
Да так точно и есть, сколько жми столько и грузится, засада.......!
Ваш вариант ща попробую.

repz 02.11.2006 12:01

2 terbooter:
Вы мя не так поняли, не показывать в текстовом поле ссылки, а что б они были рабочие + это скорее не ссылки а команды вида
Код:

_level0.mcLoader.loadClip("ххх",_level0.myLoader);
, а это значит , что это должна быть кнопка (я так думаю), вида
Код:

ххх_btn.onRelease = function () {
        _level0.mcLoader.loadClip("ххх",_level0.myLoader); }


repz 03.11.2006 01:04

Гуру напишите хоть, что низя так сделать........!!!!

miramax 03.11.2006 01:38

Цитата:

Есть мини картинка(мини) при нажатии на которую, в соседнем окне она же, но в полный рост (макс) при этом что бы перейти в галерею по ссылке, делаю под каждой картинкой ссылку, как можно сделать что бы при нажатии на мини под макси высвечивалась ссылка нужная. Все что лезет в голову через висибле, но можно ведь и через цикл наверно так?? Но тоже видимо с висибле?
Я из этого ничего не понял. Какой конкретный вопрос у тебя?

repz 03.11.2006 02:08

При нажатии на мини картинку загружается большая, вопрос как сделать кнопку,которая будет появлятся вместе с большой картинкой и иметь уникальную ссылку вида:
Код:

_level0.mcLoader.loadClip("ххх",_level0.myLoader); }
_level0.mcLoader.loadClip("ххх1",_level0.myLoader); }
_level0.mcLoader.loadClip("ххх2",_level0.myLoader); }

, код загрузки большой картинки :
Код:

        for (i=0; i<5; i++) {
this["pic"+i+"_mc"].X = i;
this["pic"+i+"_mc"].onRelease = function() {
mcLoader.loadClip(p+this.X+".jpg",picViewer_mc.picLoader);

}
};


motor4ik 03.11.2006 12:23

ну атачить кнопку (клип) из библиотеки, вешать он прес, с вашим что нужно да и все, в чем проблема? что не получается?

Хемуль 04.11.2006 01:11

Вложений: 1
Может поможет этот пример, который я когда-то делал...
Хотя, конечно, задача сформулирована так ужасно, что помочь просто нереально...

repz 04.11.2006 01:19

2 Хемуль:
Все так как у Вас, так вот при нажатии на мини картинку внизу на Вашем примере кроме большой картинки должна появлятся кнопка с сылкой на подгрузку другово мува.

Wolsh 04.11.2006 03:26

парень хочет кнопку Next и, хоть он в этом не сознается, наверное и Prev.
обычные фичи в галерее.

Хемуль 04.11.2006 04:43

Цитата:

Сообщение от repz
2 Хемуль:
Все так как у Вас, так вот при нажатии на мини картинку внизу на Вашем примере кроме большой картинки должна появлятся кнопка с сылкой на подгрузку другово мува.

Ну, кнопку прицепить несложно... А что за другой "мув"? Откуда он берётся? Он как-то связан с маленькими картинками?

repz 04.11.2006 15:01

2 ALL:
Прень не хочет кнопки прев и некст.....
Так: есть мувик - контейнер в него грузится другой мув с маленькими картинками и полем для большой все это грузится в myLoader`ы, при нажатии на маленькую она показывается в поле для большой, а далее нужно, что бы при нажатии на большую - она выгружалась и подгружался другой мув в контейнер, если это возможно, если нет, то как я и писал должна появлятся кнопка (мув) с ссылкой на выгрузку и загрузкой другого мува в контейнер.

repz 05.11.2006 01:03

Код:

links_ar =["http://ya.ru","2","3","4"];

        for (i=0; i<5; i++) {
this["pic"+i+"_mc"].X = i;
this["pic"+i+"_mc"].onRelease = function() {
mcLoader.loadClip(p+this.X+".jpg",picViewer_mc.picLoader);

description_txt.text=links_ar[this.X];

}
};

Вот код terbooter в общем он мя устраивает за тем исключением, что по ссылке не переходит, а только показывает ее, знаю вроде через asfunction можно. Помогите плииизззз!!!!

Wolsh 05.11.2006 01:45

Так в чём проблема-то??? Не может же быть, что человек, написавший все эти загрузки-выгрузки мувов в мувы, не знает как написать на мувик онПресс. В чём конкретно проблема, repz? Только не надо пятый раз рассказывать, как у тебя всё подгружается. Конкретно: что у тебя не получается???

Хемуль 05.11.2006 02:22

2 repz:
Ох... Вы так пишите... Давайте я попробую переписать вашу задачу и вы мне скажите, правильно ли я вас понял...

1. Есть мувиклип А.
2. В мувиклип А вставляются несколько маленьких картинок (мувиклипов), содержимое которых грузится извне.
3. При нажатии на одну из маленьких картинок в мувиклипе А необходимо вывести в этом же клипе А эту же картинку, но в увеличенном виде. Назовём эту картинку мувиклипом Б.
4. При нажатии на мувиклип Б необходимо, чтобы из мувиклипа А удалялось всё, что там есть (маленькие картинки и мувиклип Б), после чего туда должен загружаться какой-то мувиклип В.

Так что ли? Кстати, вопрос... Мувиклип В как-то связан с мувиклипом Б? Ну, то есть, как они логически связаны? Это одна и та же картинка в разных размерах или что?

repz 05.11.2006 02:51

2 Хемуль:
Так точно все верно, условно есть 4 времен года, так вот когда мы нажимаем на В она подгружает мув А1 в А в котором все про зиму скажем, вот так они связанны.

2 Wolsh:
:-))) on Press.. не проблема, как оптимизировать, что б кода поменьше было....

Хемуль 05.11.2006 03:18

2 repz:
Загружать маленькие (и большие, соответственно) картинки нужно извне или из библиотеки?

repz 05.11.2006 03:19

Все извне, в том-то и проблема.

Хемуль 05.11.2006 03:28

2 repz:
Это не проблема.

repz 05.11.2006 03:33

2 Хемуль:
Вопрос открыт по прежнему, проблем с подгрузкой извне - нет, проблема в ссылке.

Хемуль 05.11.2006 03:36

2 repz:
Я постараюсь написать. Только сразу говорю, будет сложно... Наверное...

repz 05.11.2006 03:38

2 Хемуль:
Буду благодарен...

Хемуль 05.11.2006 20:18

Вложений: 3
Вот... Может не очень красиво...
Код:

var currentMovie:Number = 1;
var thumbsNumber:Number = 4;

var containerClipName:String = "container";
var containerLeft:Number = 20;
var containerTop:Number = 20;

var thumbsBaseName:String = "resources/pic";
var thumbsExtension:String = "jpg";
var thumbsClipBaseName:String = "thumb";
var thumbsLeft:Number = 0;
var thumbsTop:Number = 200;
var thumbsScale:Number = 50;
var thumbsInterval:Number = 10;

var bigsBaseName:String = "resources/big";
var bigsExtension:String = "jpg";
var bigLeft:Number = 0;
var bigTop:Number = 0;

var zoomedClipName:String = "zoomed";
var zoomedLeft:Number = 0;
var zoomedTop:Number = 0;
var zoomedScale:Number = 100;

var currentThumbX:Number = thumbsLeft;
var thumbsLoaded:Number = 0;
var thumbSelected:Number = 0;

var containerClip:MovieClip = this.createEmptyMovieClip(containerClipName, this.getNextHighestDepth());
containerClip._x = containerLeft;
containerClip._y = containerTop;

var clipsLoader:MovieClipLoader = new MovieClipLoader();
var clipsLoaderListener:Object = new Object();
clipsLoader.addListener(clipsLoaderListener);
loadNewMovie(currentMovie);

clipsLoaderListener.onLoadInit = function(targetClip:MovieClip)
{
        thumbsLoaded++;
        targetClip._xscale = targetClip._yscale = thumbsScale;
        currentThumbX += targetClip._width + thumbsInterval;
        targetClip.id = currentMovie;
        loadNextMovie();       
        targetClip.onRollOver = function()
        {
                this.setTransformRGBA(100, 110, 100, 0, -100, 0, 100, 0);
        };
        targetClip.onRollOut = targetClip.onReleaseOutside = function()
        {
                this.resetTransformRGBA();
        };
        targetClip.onRelease = function()
        {
                if (this._parent[zoomedClipName] != undefined)
                {
                        this._parent[zoomedClipName].removeMovieClip();
                }
                thumbSelected = this.id;
                var zoomedLoader:MovieClipLoader = new MovieClipLoader();
                var zoomedLoaderListener:Object = new Object();
                zoomedLoader.addListener(zoomedLoaderListener);
                var zoomedName:String = thumbsBaseName + this.id + "." + thumbsExtension;
                var zoomedContainerClip:MovieClip = this._parent.createEmptyMovieClip(zoomedClipName, this._parent.getNextHighestDepth());
                zoomedContainerClip._x = zoomedLeft;
                zoomedContainerClip._y = zoomedTop;
                zoomedLoader.loadClip(zoomedName, zoomedContainerClip);
                zoomedLoaderListener.onLoadInit = function(targetZoomedClip:MovieClip)
                {
                        targetZoomedClip.id = thumbSelected;
                        targetZoomedClip.onRelease = function()
                        {
                                if (thumbsLoaded == thumbsNumber)
                                {
                                        var parentClip:MovieClip = this._parent;
                                        for (thumbsIndex:Number = 1; thumbsIndex <= thumbsNumber; thumbsIndex++)
                                        {
                                                var thumbToDeleteName:String = thumbsClipBaseName + thumbsIndex;
                                                parentClip[thumbToDeleteName].removeMovieClip();
                                        }
                                        var bigLoader:MovieClipLoader = new MovieClipLoader();
                                        var bigName:String = bigsBaseName + this.id + "." + bigsExtension;
                                        this.removeMovieClip();                                       
                                        bigLoader.loadClip(bigName, parentClip);                                       
                                }
                        };
                        targetZoomedClip.onRollOver = function()
                        {
                                this.setTransformRGBA(100, 110, 100, 0, -100, 0, 100, 0);
                        };
                        targetZoomedClip.onRollOut = targetClip.onReleaseOutside = function()
                        {
                                this.resetTransformRGBA();
                        };                       
                };
        };
}

clipsLoaderListener.onLoadError = function(targetClip:MovieClip, errorCode:String)
{
        targetClip.removeMovieClip();
        loadNextMovie();
}

function loadNewMovie(movieNumber:Number)
{
        var movieName:String = thumbsBaseName + movieNumber + "." + thumbsExtension;
        var movieContainerClipName:String = thumbsClipBaseName + movieNumber;
        var movieContainerClip:MovieClip = containerClip.createEmptyMovieClip(movieContainerClipName, containerClip.getNextHighestDepth());
        movieContainerClip._x = currentThumbX;
        movieContainerClip._y =        thumbsTop;
        clipsLoader.loadClip(movieName, movieContainerClip);
}

function loadNextMovie()
{
        currentMovie++;
        if (currentMovie <= thumbsNumber)
        {
                loadNewMovie(currentMovie);
        }
}

MovieClip.prototype.setTransformRGBA = function (ra, rb, ga, gb, ba, bb, aa, ab)
{
        if (arguments.length < 8)
        {
                return false;
        }
        var x:Number = 0;
        while (x < arguments.length)
        {
                if (isNaN(arguments[x++]))
                {
                        return false;
                }
        }
        if (ra <= 100 && ga <= 100 && ba <= 100 && aa <= 100 && ra >= -100 && ga >= -100 && ba >= -100 && aa >= -100 && rb <= 255 && gb <= 255 && bb <= 255 && ab <= 255 && rb >= -255 && gb >= -255 && bb >= -255 && ab >= -255)
        {
                var thisColor:Object = {ra:ra, rb:rb, ga:ga, gb:gb, ba:ba, bb:bb, aa:aa, ab:ab};
                var col:Color = new Color(this);
                col.setTransform(thisColor);
                return true;
        }
        else
        {
                return false;
        }
}

MovieClip.prototype.resetTransformRGBA = function()
{
        var thisColor:Object = {ra:100, rb:0, ga:100, gb:0, ba:100, bb:0, aa:100, ab:255};
        var col:Color = new Color(this);
        col.setTransform(thisColor);
}

Исходник прикрепляю...

repz 05.11.2006 23:36

2 Хемуль:
Я конечно уже наглею, но все же посмотри мой пример,я в AS так не рублю сильно у мя попроще немного...... может с моим можно , что-то сделать?

Хемуль 06.11.2006 00:13

2 repz:
Ой, извините, я не хочу разбираться в вашем коде. Я посмотрел, очень уж у вас всё просто. Я не говорю, что нужно обязательно моим путём идти, но и по-вашему нормально не получится... Смотрите, в чём проблема... Мы загружаем извне картинки на сцену и делаем из них маленькие такие сабнейлы... Для этого нужен один обьект MovieClipLoader... Потом нам нужно щёлкнуть на маленькую картинку и получить большую... duplicateMovieClip не пройдёт, потому что флешка была загружена извне. Поэтому придётся снова грузить ту же флешку, что и для маленькой картинки, но уже не уменьшать её. Если предположить, что пользователь может щёлкнуть на первом сабнейле, когда ещё не загружены все остальные, нам понадобится ещё один MovieClipLoader. Ну, мне так кажется... Потом, если предположить, что то же самое произойдёт с увеличенным мувиклипом (нажатие мышью на нём), то нам понадобится ещё один MovieClipLoader. Я вот точно не знаю, может ли MovieClipLoader параллельно загружать флешки в несколько клипов. Но даже если может, это всё равно не слишком сильно уменьшит код. Если не может, но вы захотите всё реализовать одним MovieClipLoader, то придётся вводить переменные-флаги и ограничивать пользователя в действиях, ожидая окончание загрузки...
Проще говоря, врядли получится нормально обойтись тем количеством строк, что у вас в коде...

repz 06.11.2006 00:16

2 Хемуль:
Спасибо за помощь, сделаю кнопки к каждой маленькой картинки....

Хемуль 06.11.2006 00:25

2 repz:
Кнопки? В смысле символы button в библиотеке? о_0
Вас что, действительно так сильно напугал мой код? Но ведь проще действительно врядли выйдет. У вас в задаче целых 3 последовательных загрузки извне... Сложно ожидать, что всё это будет так просто работать и займёт пару строк кода...

repz 06.11.2006 00:30

2 Хемуль:
В коде вроде разобрался, кое что осталось не понятным, лишнее удалил..., но у меня не три картинки, а 16 и их размещение вызывает у меня большие вопросы в смысле кода....
P.S. Нет просто под каждым полем с картинкой - мувик кнопка,который выгружает текущий мувик и на его место загружает другой.

Хемуль 06.11.2006 00:37

У меня в коде количество картинок, которые нужно загружать регулируется переменной thumbsNumber.
По поводу кнопки под полем с картинкой... Ну в обработчике zoomedLoaderListener.onLoadInit моего кода можно просто создать/загрузить кнопку и назначить для неё обработчик onRelease...

repz 06.11.2006 00:40

А как расположить картинки по квадрату в вашем коде? 5*5

Хемуль 06.11.2006 00:56

http://flasher.ru/forum/showthread.php?t=87456


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

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