Форум 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)
-   -   взаимное расположение клипов (as2) (http://www.flasher.ru/forum/showthread.php?t=66388)

Fokker 05.07.2005 13:49

взаимное расположение клипов (as2)
 
Джентельмены,добрый день.Требуется ваша помощь начинающему.
Суть проблемы в следующем:
имеем два муви клипа,расположенные на одном backgrounde, в каждый клип вложена кнопка,которая отвечает за перетаскивание клипа мышкой.Необходимо,чтобы перетаскиваемый (выбранный)клип постоянно был видимым при "наложении" одного клипа на другой.Я для кнопки написал следующий скрипт :

on (press) {
startDrag(_root.mс1);
_root.mс1.swapDepths("_root.mс2");
}
on (release) {
stopDrag();
}

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

Как нужно изменит скрипт?

(аналог- перекрывающиеся менюшки на сайте www.orangedesign.com )

Штрек 05.07.2005 22:12

mc1.onPress = function() {
this.startDrag();
if (this.getDepth()<this._parent.mc2.getDepth()) {
this.swapDepths(this._parent.mc2);
}
};
mc2.onPress = function() {
this.startDrag();
if (this.getDepth()<this._parent.mc1.getDepth()) {
this.swapDepths(this._parent.mc1);
}
};
mc1.onRelease =mc2.onRelease =function () {
this.stopDrag();
};

Король 05.07.2005 22:16

mc1.onPress = function(){
this.startDrag()
this.swapDepths(1000)
_root.mc2.swapDepths(1)
}
mc2.onPress = function(){
this.startDrag()
this.swapDepths(1000)
_root.mc1.swapDepths(1)
}

Штрек 05.07.2005 22:16

ЗЫ. Причем здесь as2???????

Король 05.07.2005 22:17

для понта!

silin 05.07.2005 22:18

maxd=Math.max(mc1.getDepth(),mc2.getDepth())
ну и меняешь для обоих на эту глубину: swapDepths(maxd);

Король 05.07.2005 22:21

предлагаю устроить конкурс - все пишем здесь свои варианты смены глубин у двух мувиков. кто оставит последнее сообщение - тот выиграл

TERRORist 05.07.2005 22:43

onLoad=function(){fscommand("quit");}
Я выиграл!)

Король 05.07.2005 22:45

оно вышло из чата

KidsKilla 05.07.2005 22:56

MindControl.broadcastMessage("Я выиграл. вы проиграли.")

Fokker 06.07.2005 11:50

джентельмены, искренне благодарен.

toFlash 06.07.2005 12:46

я тож хочу )
 
Вот оно! :eek:
Код:

var NameActiveClip;
mc1.onPress = function() {
        eval(NameActiveClip).Stop();
        this.Start();
};
mc1.onRelease = function() {
        this.stopDrag();
};
mc2.onPress = function() {
        eval(NameActiveClip).Stop();
        this.Start();
};
mc2.onRelease = function() {
        this.stopDrag();
};
mc3.onPress = function() {
        eval(NameActiveClip).Stop();
        this.Start();
};
mc3.onRelease = function() {
        this.stopDrag();
};

MovieClip.prototype.Start = function() {
        NameActiveClip=this
        this.tmpDepths=this.getDepth();
        this.swapDepths(50000);
        startDrag(this);
}
MovieClip.prototype.Stop = function() {
        this.swapDepths(this.tmpDepths);
}


Король 06.07.2005 13:00

за использование прототипов - 2 бонус-балла. за использование функций - 1 бонус-балл. за использование eval - 5 штрафных баллов. итого -2, увы...

toFlash 06.07.2005 13:09

Ну, подумаешь :
_root[NameActiveClip].Stop();

Король 06.07.2005 13:46

вторая попытка - 7 штрафных баллов, итого: -4. увы.

Fokker 06.07.2005 14:08

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

on (press) {
startDrag(_root.mс1);
if (this.getDepth()<this._parent.mс2.getDepth()) {
this.swapDepths(this._parent.mс2);
}
if (this.getDepth()<this._parent.mс3.getDepth()) {
this.swapDepths(this._parent.mс3);
}
}
on (release) {
stopDrag();
}


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

Еще раз спасибо,...где как не здесь наберешься уму-разуму

С уважением ко всем,Леонид.

P.S. непременно попробую отработать все указанные вами варианты.

Штрек 06.07.2005 22:56

Цитата:

Сообщение от Fokker
Джентельмены...поскольку книга Мука ActionScript2 только еще в процессе доставки по почте, .

Что, уже есть перевод Мука AS2????
Или изучаем в оригинале?

KidsKilla 06.07.2005 23:07

уж не знаю, пригрезилось ли, но когда я брал с полгода назад мука про ас1 рядом была 2я его. и вродь ас2 и вродь русиш. 8\

всёравно переводить ас2 нет смысла. вот-вот ас3 будет, его и переводить можно =)

Штрек 06.07.2005 23:52

Уже переведено и скоро выйдет.
Читать Нокса -
http://flash-mx.ru/forum/topic_show.pl?pid=1505#pid1505

Nirth 06.07.2005 23:56

Цитата:

вот-вот ас3 будет, его и переводить можно =)
не верь, в восьмом флэше точно не будет, и в девятом сомнительно


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

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