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

khorokhorya 09.03.2008 22:25

Как сделать, чтобы пункты меню перемещались, когда один из пунктов открывается?
 
пункты меню загружаются из библиотеки и встают друг за другом, когда наводишь на один из пунктов мув внутри него проигрывается и увеличивается вертикально, как настроить, чтобы остальные пункты меню изменяли свою координату по y?

Код:

myPhoto = new XML ();
myPhoto.ignoreWhite = true;
myPhoto.onLoad = function (success) {
        //если xml загрузился, то присваиваем переменной numimages значение количества узлов(фоток галереи)
        numimages = this.firstChild.childNodes.length;
        //ширина иконки + расстояние  между иконками в мувике thumbnails
        spacing = 13;
        // проходим циклом по массиву
        for (i = 0; i < numimages; i++) {
                // берём  первый узел
                this.picHolder = this.firstChild.childNodes[i];
                //создаём  в мувке thumbnails пустой мувиклип с названием thumbnail1 и глубиной 1
                this.thumbHolder = thumbnails.createEmptyMovieClip ("thumbnail" + i, i);
                this.pred = "thumbnails." + "thumbnail" + (i - 1);
                // его координата по x относительно thumbnails равна числу номера узла умноженному на spacing
                this.thumbHolder._y = i * spacing;
                //создание ещё одного пустого клипа в пустом клипе
                this.thumbLoader = this.thumbHolder.createEmptyMovieClip ("thumbnail_image", 0);
                //загрузка linkage клипа во внутреннй пустой мувиклип
                this.pic = this.thumbLoader.attachMovie ("btn_menu", "btn_menu_01", i);
                //загрузка картинки во внутреннй пустой мувиклип
                this.pic.pic_menu.loadMovie (this.picHolder.attributes.thmb);
                // сколько работ в разделе               
                _root.rabotki.rabotki.text = "В разделе " + razdel + " " + numimages + " работ.";
                this.thumbHolder.title = this.picHolder.attributes.title;
                this.thumbHolder.main = this.picHolder.attributes.main;
                this.thumbHolder.wi = this.picHolder.attributes.wi;
                this.thumbHolder.hi = this.picHolder.attributes.hi;
                this.thumbHolder.opisanie = this.firstChild.childNodes[i].childNodes[0].nodeValue;
                //реакция на релиз
                this.thumbLoader.onRollOver = function () {
                        this.btn_menu_01.gotoAndPlay (2);
                };
                this.thumbLoader.onRollOut = function () {
                        this.btn_menu_01.gotoAndPlay (26);
                };
        }
};
myPhoto.load ("xml_photo.xml");


Fann 10.03.2008 00:09

Код:

var _this=this;
this.thumbLoader.onRollOver = function () {
for(var j:Number=0;j<_this.numimages;j++){
  if(j==i){continue;}
var newYCoord =100;//изменить
var menuItem = _this.thumbnails['thumbnail' + i];
menuItem.motion = new mx.transitions.Tween(menuItem, "_y", mx.transitions.easing.Strong.easeOut,menuItem._y, newYCoord, 50, false);
}
}

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

khorokhorya 10.03.2008 00:26

Вложений: 1
что то у меня не пашет, может не туда втавилось...
прикрепляю то , что у меня получилось, помоги, пожалуйста.

Fann 10.03.2008 01:36

Код:

var nItems:Number;
myPhoto.onLoad = function(success) {
        //если xml загрузился, то присваиваем переменной numimages значение количества узлов(фоток галереи)
        numimages = this.firstChild.childNodes.length;
    nItems=numimages
        //ширина иконки + расстояние  между иконками в мувике thumbnails
        spacing = 13;
        // проходим циклом по массиву
        for (i=0; i<numimages; i++) {
                // берём  первый узел
                this.picHolder = this.firstChild.childNodes[i];
                //создаём  в мувке thumbnails пустой мувиклип с названием thumbnail1 и глубиной 1
                this.thumbHolder = thumbnails.createEmptyMovieClip("thumbnail"+i, i);
                this.pred = "thumbnails."+"thumbnail"+(i-1);
                // его координата по x относительно thumbnails равна числу номера узла умноженному на spacing
                this.thumbHolder._y = i*spacing;
                //spacing  = this.thumbnails.thumbHolder._height
                //this.thumbHolder._y = i * spacing ;
                //создание ещё одного пустого клипа в пустом клипе
                this.thumbLoader = this.thumbHolder.createEmptyMovieClip("thumbnail_image", 0);
                //загрузка linkage клипа во внутреннй пустой мувиклип
                this.pic = this.thumbLoader.attachMovie("btn_menu", "btn_menu_01", i);
                //загрузка картинки во внутреннй пустой мувиклип
                this.pic.pic_menu.loadMovie(this.picHolder.attributes.thmb);
                // сколько работ в разделе
                _root.rabotki.rabotki.text = "В разделе "+razdel+" "+numimages+" работ.";
                this.thumbHolder.title = this.picHolder.attributes.title;
                this.thumbHolder.main = this.picHolder.attributes.main;
                this.thumbHolder.wi = this.picHolder.attributes.wi;
                this.thumbHolder.hi = this.picHolder.attributes.hi;
                this.thumbHolder.opisanie = this.firstChild.childNodes[i].childNodes[0].nodeValue;
        }
        addHandlers();
};
myPhoto.load("xml_photo.xml");
function addHandlers() {
        var mc;
        for (var num:Number = 0; num<nItems; num++) {
                mc = thumbnails['thumbnail'+num];
                mc.thumbnail_image.num = num;
                mc.thumbnail_image.onRollOver = function() {
                        this.btn_menu_01.gotoAndPlay(2);
                        _root.moveMenuItems(this.num);
                       
                };
                mc.thumbnail_image.onRollOut = function() {
                        this.btn_menu_01.gotoAndPlay(26);
                };
        }
}
function moveMenuItems(cnt:Number):Void {
        var newYCoord:Number;
        var menuItem:MovieClip;
        for (var j:Number = 0; j<nItems; j++) {
                if (j == cnt) {
                        continue;
                }
                menuItem = thumbnails['thumbnail'+j];
                newYCoord = menuItem._y+10;//изменить
                menuItem.motion = new mx.transitions.Tween(menuItem, "_y", mx.transitions.easing.Strong.easeOut, menuItem._y, newYCoord, 50, false);
        }
}

тока ж их нада возвращать на место потом

khorokhorya 10.03.2008 02:36

прикольно), а нельзя как-нить чтобы например Y последующей был равен Y предыдущей + её высота, и как нить апдейт делать ежекадрово?

iNils 11.03.2008 01:12

Сначала надо загрузить один объект, потому определить его размеры и только потом начинать грузить следующий.

Aisaid 11.03.2008 17:27

если все thumbnail одинакового размера, то можно сделать универсально...
хотя правильнее было бы, как и сказал iNils, сначала определять размер имажа
а алгоритм динамического сдвига я могу выслать (недавно тренировался делать полностью динамическое меню...)

khorokhorya 11.03.2008 19:17

Aisaid, все thumbnail одинакового размера когда закрыты и когда открыты, а когда на них наводишь происходит анимация, и хочется, чтобы остальные закрытые отъезжали , открывая наведённый, если у тебя есть динамическое меню вышли пожалуйста, я делаю диплом мне хотелось меню как на сайте http://www.marc-aurel.com/2007/ в разделе lookbook? где фотки моделей выбираются. Но если будет чтото интересное динамичное но в другом виде тоже может подойти....


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

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