Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   управление роликами (http://www.flasher.ru/forum/showthread.php?t=75315)

влад 09.02.2006 19:59

управление роликами
 
доброго времени суток :)
вопрос вот в чем:

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

спасибо :)

Futs 09.02.2006 20:18

Для того что бы сделать, нужно подумать. Имеем массив с именами картинок, пишем функцию загрузки картинок в требуемые клипы, сразу клипам присваеваем _alpha=0. Проверяем загрузку, если все загрузилось, запускаем еще одну функцию появления. Нажимаем кнопку берем имена картинок к примеру из другого массива и создаем в мувиках еще по одному мувику и повторяем предыдущие действия. Ничего сложного да и вариантов выполнения множество

влад 09.02.2006 22:00

управление роликами -2
 
спасибо Futs :)

может есть какой-либо "сэмпл" из которого изложенное может понять ИДИОТ ? :) кое-как разобрался с 4-ой версией "флэш" а потом "перепрыгнул" на OS X и оказался нос к носу с этим МХ ... :( можно как-то на примерах показать эти операции ?

спасибо :)

влад 09.02.2006 23:54

спасибо Futs

может есть какой-либо "сэмпл" из которого изложенное может понять ИДИОТ ? кое-как разобрался с 4-ой версией "флэш" а потом "перепрыгнул" на OS X и оказался нос к носу с этим МХ ... можно как-то на примерах показать эти операции ?

спасибо

Король 10.02.2006 00:13

1)добавляешь все картинки в массив:
Код:

mArr = [];
for (var i = 1; i<кол-во картинок; i++) {
        mc = след картинка
        mArr.push(mc);
}

2)создаем функцию, которая будет делать какие-то действия по очереди:

Код:

MovieClip.prototype.startConveyer = function(arr, func, offcet, speed, onComplete) {
       
        this.t = offcet;
        this.func = func;
        this.arr = arr;
        this.speed = speed;
        this.onComplete = onComplete;
        this.onEnterFrame = function() {
                this.arr[this.t].onComplete = this.func;
                this.arr[this.t].onComplete();
                if (this.t>this.arr.length) {
                        delete this.onEnterFrame;
                        this.onComplete();
                       
                }
                this.t += this.speed;
        };
};

3) создаем функции появления-погасания

Код:

MovieClip.prototype.appear = function(){
this.alpTo(100,3)
}
MovieClip.prototype.disAppear = function(){
this.alpTo(0,3)
}

4) да, не забываем про сами прототипы транзишнов:

Код:

MovieClip.prototype.alpTo = function(alp, speed, onComplete) {
        this.alp = alp;
        this.speed = speed;
        this.onComplete = onComplete;
        this.onEnterFrame = function() {
                this._alpha += (this.alp-this._alpha)/this.speed;
                if (Math.abs(this._alpha-this.alp)<2) {
                        delete this.onEnterFrame;
                        this._alpha = this.alp;
                        this.onComplete();
                }
        };
};

5) пишем более-менее универсальный код загрузчика:

Код:

MovieClip.prototype.loadImage = function(src, onComplete) {
                this.createEmptyMovieClip("image_holder", 100);
               
               
                this.mclListener = new Object();
                this.mclListener.onLoadComplete = function(trg) {
                       
                       
                        trg.onComplete();
                };
                this.mclListener.onLoadStart = function(trg) {
                trg.onComplete = onComplete;
                };
                this.mclListener.onLoadStart = function(trg) {
                };
                this.image_mcl = new MovieClipLoader();
                this.image_mcl.addListener(this.mclListener);
                this.image_mcl.loadClip(src, this.image_holder);
        };


теперь пишем код который грузит новые картинки:
Код:

loadNewImages = function(){
for(var i in mArr){
mArr[i].loadImage(линк на картинку, событие по окончанию)

}

функцию которая следит за тем - загрузились ли все картинки - напиши сам
мне ее писать сейчас лень но допустим она вызывает onAllImagesLoaded()
Дальше - картинки исчезают:

Код:

controller = _root.createEmptyMovieClip("controller", 100)
controller.startConveyer(mArr , disAppear, 0, 1, loadNewImages);

loadNewImages вызывается, загружает, потом вызывается onAllImagesLoaded()


Код:

onAllImagesLoaded = function(){
mArr.reverse() //если ты хочешь чтоб они появлялись в обратном порядке
controller.startConveyer(mArr , аppear, 0, 1);
}


Король 10.02.2006 00:14

много кода слишком. можно проще - но у меня уже готовые функции были

Futs 10.02.2006 11:36

2 Король, грамотно - особенно понравился конвеер, надо будет взять идею на вооружение, помню парился с подобной задачей, но боюсь Владу трудно будет с этим разобраться, а писать попроще времени нет.
2 Влад, думаю тебе лучше поискать исходник какой-нибудь галереи их не так мало

Antares 10.02.2006 12:01

Хехе :) Конвеер :) Интересно, читает ли нас Джон:)

Король 10.02.2006 12:07

ну у Джона то другой конвеер) хотя название, конечно, не супероригинальное

влад 10.02.2006 19:09

Спасибо за ответ, Король :)

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

работа естсественно чего-то СТОИТ ... озвучте! :)

удачного дня :)


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

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