Форум 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)
-   -   снова про swapDepth (http://www.flasher.ru/forum/showthread.php?t=133367)

a_web 03.12.2009 12:37

снова про swapDepth
 
Здравствуйте всем,

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

Код AS1/AS2:

ItemClip[i] = _root.createEmptyMovieClip ("_item." + i.toString(), _root.getNextHighestDepth());
ItemImage[i] = ItemClip[i].createEmptyMovieClip ("_image." + i.toString(), ItemClip[i].getNextHighestDepth());

Далее, к каждому клипу привязываю событие drag_drop, в котором выполняю следующий код
Код AS1/AS2:

this.swapDepths(_root.getNextHighestDepth());

Но смены глубины не происходит и последний клип всегда остается выше остальных. Как можно еще решить проблему?

Спасибо!

mooncar 03.12.2009 12:42

1. Потрейсите значение уровней.
2. Приведите полный код, вот это:
"к каждому клипу привязываю событие drag_drop" ничего не проясняет.
Что значит "привязываю", что за событие drag_drop - загадка.

TihelpER 03.12.2009 12:42

Покажи весь код целиком. Не очевидно на какой клип ты вешаешь событие и куда будет ссылаться this.

a_web 03.12.2009 12:52

Инициализация ролика

Код AS1/AS2:

//Инициализируем вопрос
function InitQuestion(ScaleUrl:String, ItemUrl:String)
{
        Params = new InitialPars(ScaleUrl, ItemUrl);
 
        //Вставляем линейку
        if (Params.ScaleUrl != "")
        {               
                //делаем клип
                var ScaleMCL:MovieClipLoader = new MovieClipLoader();
                var ScaleCompleteListener:Object = new Object();
 
                ScaleMCL.addListener(ScaleCompleteListener);
                ScaleCompleteListener.onLoadInit =
                        function (SrcClip)
                        {
                                SrcClip._x = 0;
                                SrcClip._y = DocumentHeight - SrcClip._height;
                        }
 
                ScaleClip = _root.createEmptyMovieClip ("_scale", _root.getNextHighestDepth());
                ScaleMCL.loadClip(ScaleUrl, ScaleClip);
        }
 
        len = Params.Items.length;
        ItemClip = new Array(len);
        ValueOut = new Array(len);
        var ItemImage:Array = new Array(len);
 
        //Собираем ползунки
        for (i = 0; i < len; i++)
        {
                var ItemMCL:MovieClipLoader = new MovieClipLoader();
                var ItemCompleteListener:Object = new Object();
 
                ItemMCL.addListener(ItemCompleteListener);
                ItemCompleteListener.onLoadInit =
                        function (SrcClip)
                        {
                                id = SrcClip._name.split(".")[1];
 
                                SrcClip._parent.height = (SrcClip._height + 40) * 2;
                                SrcClip._y = (SrcClip._height + 40) / 2;
                                PointerClip = SrcClip._parent.attachMovie("pointer", "_pointer", SrcClip._parent.getNextHighestDepth());
                                PointerClip._x = (SrcClip._width / 2) - 10;
                                PointerClip._y = SrcClip._y + SrcClip._height;
 
                                SrcClip._parent._y = DocumentHeight - (ScaleClip == null ? 0 : ScaleClip._height) - (SrcClip._parent.height * 0.75) - Params.Removal;
                                dragAndDrop(SrcClip._parent, SrcClip._parent._y, 71, parseInt(id));
                        }
 
                ItemClip[i] = _root.createEmptyMovieClip ("_item." + i.toString(), _root.getNextHighestDepth());
                ItemImage[i] = ItemClip[i].createEmptyMovieClip ("_image." + i.toString(), ItemClip[i].getNextHighestDepth());
 
                ItemMCL.loadClip(Params.Items[i], ItemImage[i]);
        }
 
}

событие перетаскивания
Код AS1/AS2:

function dragAndDrop(clip:MovieClip, initY, initDelta, index):Void
{
        clip.onPress =
                function()
                {
                        var oldX = this._x;
                        var newX = oldX;
                        var oldY = initY;
                        var newY = oldY;
 
 
                        this.swapDepths(_root.getNextHighestDepth());
                        ...
                }
        ...
}


TihelpER 03.12.2009 13:53

На первый взгляд должно работать.
Посмотри внутри функции dragAndDrop трэйсы:
Код AS1/AS2:

// Место и уровень клипа до попытки поднять
trace("mc: " + this + "; depth: " + this.getDepth() + "; next depth: " + _root.getNextHighestDepth())
this.swapDepths(_root.getNextHighestDepth());
// Место и уровень клипа после попытки
trace("mc: " + this + "; depth: " + this.getDepth() + "; next depth: " + _root.getNextHighestDepth() + "\n -------")



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

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