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

Fox M. Lurde 15.02.2009 14:35

Выпадающее субменю - как заставить кнопки работать?
 
Господа, доброго времени суток!

Новый день знаменуется новым вопросом ;)

Этап 1.

Создаю 2-ух кадровый MC в виде прямоугольника. В первом кадре оный черный, во втором - красный. В первом кадре стоит stop();

Этап 2.

Кладу эту кнопку в первый кадр клипа. В кадре пишу stop();. На кнопку вешаю следующий код:

Код AS1/AS2:

on(rollOver){
        this.attachMovie("my","my",100);
        my._x=154;
        my._y=0;
}
 
onClipEvent(enterFrame){
        if((_xmouse>(0) and
          _xmouse<(154) and
          _ymouse>(0) and
          _ymouse<(58))
          or
          (_xmouse>154 and
            _xmouse<308 and
            _ymouse>0 and
            _ymouse<160)
          ){
                  isItMouseInTarget=true;
          }else{
                  isItMouseInTarget=false;
          }
 
          if(isItMouseInTarget){
          } else {
                  my.removeMovieClip();
                  delete this.onEnterFrame;
          }
}

Этап 3.

Беру экземпляры все той же кнопки в количестве 3 штук. На одну из них вешаю такой код:

Код AS1/AS2:

on(rollOver){
        this.gotoAndStop(2);
}
on(rollOut){
        this.gotoAndStop(1);
}
on(release){
        _level0.gotoAndStop(2);
}

После этого все 3 кнопки преобразую в MC "my"

Этап 4.

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

Код AS1/AS2:

on(rollOver){
        this.gotoAndStop(2);
}
on(rollOut){
        this.gotoAndStop(1);
}
on(release){
        _level0.gotoAndStop(1);
}

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

Вопрос.

Как сделать так, что бы при нажатии кнопки субменю клип все-таки переходил на 2 кадр.

Заранее гранд се[н]кс!

P.S. Почему-то конструкции this._width и this.width не возвращают ширины клипа, к которому аттачиться субменю. Как можно получить его ширину и высоту?

Psycho Tiger 15.02.2009 16:06

Хватит уже писать на кнопках.
А проблема в том, что главное меню получает клик (т.е. то, куда атачиться), а не субменюшки.

Fox M. Lurde 16.02.2009 12:33

понял-понял, прекращаю ;)
спасибо за совет. привожу кусок скрипта - работает. может, кому пригодиться
Код AS1/AS2:

stop();
 
onLoad = function () {
 
        //create graphic interface
 
        /*******************************************/
        //create main menu
        //create main container for buttons
        _level0.createEmptyMovieClip("mainMenu",100);
        mainMenu._x = 50;
        mainMenu._y = 150;
 
        //attach menu buttons
        mainMenu.attachMovie("b_main_1","b_main_1",101);
        mainMenu.b_main_1._x = 0;
        mainMenu.b_main_1._y = 0;
 
        mainMenu.attachMovie("b_main_2","b_main_2",102);
        mainMenu.b_main_2._x = 0;
        mainMenu.b_main_2._y = mainMenu.b_main_1._height+5;
 
        mainMenu.attachMovie("b_main_3","b_main_3",103);
        mainMenu.b_main_3._x = 0;
        mainMenu.b_main_3._y = mainMenu.b_main_2._height*2+10;
 
        mainMenu.attachMovie("b_main_4","b_main_4",104);
        mainMenu.b_main_4._x = 0;
        mainMenu.b_main_4._y = (mainMenu.b_main_3._height*3)+15;
 
        mainMenu.attachMovie("b_main_5","b_main_5",105);
        mainMenu.b_main_5._x = 0;
        mainMenu.b_main_5._y = mainMenu.b_main_4._height*4+20;
 
};
 
 
onEnterFrame = function () {
 
        //submenu event
        //create first submenu
        mainMenu.b_main_2.onRollOver=function(){
 
                //create submenu contaner
                _level0.createEmptyMovieClip("submenu1",200);
                submenu1._x=300;
                submenu1._y=205;
 
                //attach submenu buttons
                submenu1.attachMovie("b_sub1_1","sub1",201);
                submenu1.sub1._x=5;
                submenu1.sub1._y=0;
 
                submenu1.attachMovie("b_sub1_2","sub2",202);
                submenu1.sub2._x=5;
                submenu1.sub2._y=mainMenu.b_main_2._height+5;
 
                submenu1.attachMovie("b_sub1_3","sub3",203);
                submenu1.sub3._x=5;
                submenu1.sub3._y=mainMenu.b_main_2._height*2+10;
 
                submenu1.attachMovie("b_sub1_4","sub4",204);
                submenu1.sub4._x=5;
                submenu1.sub4._y=mainMenu.b_main_2._height*3+15;
 
                submenu1.attachMovie("b_sub1_5","sub5",205);
                submenu1.sub5._x=5;
                submenu1.sub5._y=mainMenu.b_main_2._height*4+20;
 
                submenu1.attachMovie("b_sub1_6","sub6",206);
                submenu1.sub6._x=5;
                submenu1.sub6._y=mainMenu.b_main_2._height*5+25;
 
        }
 
        if(
          mainMenu.b_main_2.hitTest(_xmouse, _ymouse) or
          submenu1.hitTest(_xmouse, _ymouse)
          ){
                  isItMouseInTarget=true;
          }else{
                  isItMouseInTarget=false;
          }
 
          if(isItMouseInTarget){
                  submenu1.sub1.onRelease=function(){
                          _level0.gotoAndStop(3);
                          _level0.submenu1.removeMovieClip();
                          isItMouseInTarget=false;
                  }
          } else {
                  _level0.submenu1.removeMovieClip();
                  //delete this.onEnterFrame;
          }
};



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

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