PDA

Просмотр полной версии : управление роликами


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

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

спасибо :)

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

влад
09.02.2006, 22:00
спасибо 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
Спасибо за ответ, Король :)

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

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

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