Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы (http://www.flasher.ru/forum/forumdisplay.php?f=10)
-   -   Помогите, проблема с вложенными событиями. (http://www.flasher.ru/forum/showthread.php?t=62411)

AStrike 26.08.2004 20:36

Помогите, проблема с вложенными событиями.
 
Короче ситуация:
нужно сделать меню(вертикальное):
есть Мувик(контейнер для меню), к нему(в фрейме) приклеен код this.onRollOver = functi... и так далее.
В нем лежат кнопки(с клипами таже история) с которыми сделано on(RollOver) {..}
Ну и естественно одно событие перекрывает другое. И естественно таким способом меню сделать не получилось, но вопрос все равно остался, как решить проблему перекрытия(блокировки) одного события другим. Объясните плизз.

Usnul 26.08.2004 20:56

использовать if(this.hitTest(x,y,flag)){}

artfla$her 27.08.2004 01:55

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

Usnul 27.08.2004 05:27

все та же бурда, хит тест самое рациональное решение.

artfla$her 27.08.2004 14:39

Кому как :)

Usnul 27.08.2004 16:40

Бла-бла-бла, напиши работающий пример, тогда я поверю.
вот кусок моего старого кода, работает идеально.
Код:


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Creating startmenu
_root.OSstartmenu.onMouseDown=function(){
        if(_root._xmouse>0 and _root._xmouse<Number(_root.OSvariables.StartButtonWidth) and _root._ymouse<600 and _root._ymouse>600-Number(_root.OSvariables.TaskbarHeight)){
                _root.OSvariables.StartMenuShow=true
                for(t in _root.OSstartmenu){_root.OSstartmenu[t].removeMovieClip(), _root.OSstartmenu.clear()}
        }
}
_root.OSstartmenu.onEnterFrame=function(){
        if((Boolean(_root.OSvariables.StartMenuShow)==true)){
                _root.OSvariables.StartMenuShow=false
                _root.OSstartmenu.beginFill(Number(_root.OSvariables.StartMenuColour),Number(_root.OSvariables.StartMenuColourAlpha));
                _root.OSstartmenu.lineStyle(Number(_root.OSvariables.StartMenuLineThickness),Number(_root.OSvariables.StartMenuLineColour),Number(_root.OSvariables.StartMenuLineColourAlpha));
                _root.OSstartmenu.lineTo(Number(_root.OSvariables.StartMenuCellWidth),0);
                _root.OSstartmenu.lineTo(Number(_root.OSvariables.StartMenuCellWidth),_root.OSvariables.StartMenuItemsNumber*Number(_root.OSvariables.StartMenuCellHeight));
                _root.OSstartmenu.lineTo(0,_root.OSvariables.StartMenuItemsNumber*Number(_root.OSvariables.StartMenuCellHeight));
                _root.OSstartmenu.lineTo(0,0);
                _root.OSstartmenu.endFill();
                for(i=1;i<=_root.OSvariables.StartMenuItemsNumber;i++){
                        _root.OSstartmenu.createEmptyMovieClip("item"+i,i)
                        //Drawing Spliting line
                        _root.OSstartmenu["item"+i].lineStyle(Number(_root.OSvariables.StartMenuLineThickness),Number(_root.OSvariables.StartMenuLineColour),Number(_root.OSvariables.StartMenuLineColourAlpha));
                        _root.OSstartmenu["item"+i].moveTo(0,Number(_root.OSvariables.StartMenuCellHeight))
                        _root.OSstartmenu["item"+i].lineTo(Number(_root.OSvariables.StartMenuCellWidth),Number(_root.OSvariables.StartMenuCellHeight))       
                        //Text field creating
                        _root.OSstartmenu["item"+i].StartButtonTextFormat = new TextFormat();
                        _root.OSstartmenu["item"+i].StartButtonTextFormat.font = _root.OSvariables.StartMenuItemTextFont;
                        _root.OSstartmenu["item"+i].StartButtonTextFormat.size = Number(_root.OSvariables.StartMenuCellHeight)*0.5;
                        _root.OSstartmenu["item"+i].StartButtonTextFormat.bold = Boolean(_root.OSvariables.StartMenuItemTextBold)
                        _root.OSstartmenu["item"+i].StartButtonTextFormat.italic = Boolean(_root.OSvariables.StartMenuItemTextItalic)
                        _root.OSstartmenu["item"+i].createTextField("startbuttontext",1,Number(_root.OSvariables.StartMenuCellHeight),0,Number(_root.OSvariables.StartMenuCellWidth)-Number(_root.OSvariables.StartMenuCellHeight),Number(_root.OSvariables.StartMenuCellHeight));
                        _root.OSstartmenu["item"+i].startbuttontext.type = "dynamic";
                        _root.OSstartmenu["item"+i].startbuttontext.selectable = false
                        _root.OSstartmenu["item"+i].startbuttontext.textColor = Number(_root.OSvariables.StartMenuItemTextColour);
                        _root.OSstartmenu["item"+i].startbuttontext.autoSize = true;
                        _root.OSstartmenu["item"+i].startbuttontext.setNewTextFormat(_root.OSstartmenu["item"+i].StartButtonTextFormat);
                        _root.OSstartmenu["item"+i].startbuttontext.text = _root.OSvariables["StartMenuItem"+i+"Name"]
                        _root.OSstartmenu["item"+i]._y=(i-1)*Number(_root.OSvariables.StartMenuCellHeight)
                        //Adding Icon
                        _root.OSstartmenu["item"+i].icon=_root.OSstartmenu["item"+i].createEmptyMovieClip("icon",2);
                        if(_root.OSvariables["StartMenuItem"+i+"IconURL"]!=undefined){_root.OSstartmenu["item"+i].icon.loadMovie(_root.OSvariables["StartMenuItem"+i+"IconURL"])}
                        else{_root.OSstartmenu["item"+i].icon.loadMovie(_root.OSvariables.DefaultIconURL)}
                        _root.OSstartmenu["item"+i].onEnterFrame=function(){
                                if(this.icon.getBytesLoaded()>=this.icon.getBytesTotal()){
                                        this.IconLoadClip.clear();
                                        this.icon._y=Number(_root.OSvariables.StartMenuCellHeight)*0.05
                                        this.icon._x=Number(_root.OSvariables.StartMenuCellHeight)*0.05
                                        if(this.icon._height>this.icon._width){
                                                this.icon._width=Number(_root.OSvariables.StartMenuCellHeight)*0.9*(this.icon._width/this.icon._height)
                                                this.icon._height=Number(_root.OSvariables.StartMenuCellHeight)*0.9
                                        }
                                        else{
                                                this.icon._height=Number(_root.OSvariables.StartMenuCellHeight)*0.9*(this.icon._height/this.icon._width)
                                                this.icon._width=Number(_root.OSvariables.StartMenuCellHeight)*0.9
                                        }
                                }
                                else{
                                        this.IconLoadClip=this.createEmptyMovieClip("IconLoadClip",3);
                                        this.IconLoadClip.lineStyle(Number(_root.OSvariables.StartMenuIconLoadBarLineThickness),Number(_root.OSvariables.StartMenuIconLoadBarLineColor),Number(_root.OSvariables.StartMenuIconLoadBarLineColorAlpha))
                                        this.IconLoadClip.moveTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9,Number(_root.OSvariables.StartMenuCellHeight)*0.9)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.9)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
                                        this.IconLoadClip.beginFill(Number(_root.OSvariables.StartMenuIconLoadBarColor),Number(_root.OSvariables.StartMenuIconLoadBarColorAlpha))
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9*Math.floor(this.icon.getBytesLoaded()/this.icon.getBytesTotal()),Number(_root.OSvariables.StartMenuCellHeight)*0.05)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9*Math.floor(this.icon.getBytesLoaded()/this.icon.getBytesTotal()),Number(_root.OSvariables.StartMenuCellHeight)*0.9)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.9)
                                        this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
                                        this.IconLoadClip.moveTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
                                }
                        }
                        //Selecting of Item
                        _root.OSstartmenu["item"+i].ItemNumber=i
                        _root.OSstartmenu["item"+i].onMouseDown=function(){
                                if(_root._xmouse>0 and _root._xmouse<Number(_root.OSvariables.StartMenuCellWidth) and _root._ymouse>600-Number(_root.OSvariables.StartMenuCellHeight)*_root.OSvariables.StartMenuItemsNumber+(this.ItemNumber-1)*Number(_root.OSvariables.StartMenuCellHeight)-Number(_root.OSvariables.TaskbarHeight) and _root._ymouse<600-Number(_root.OSvariables.StartMenuCellHeight)*_root.OSvariables.StartMenuItemsNumber+(this.ItemNumber)*Number(_root.OSvariables.StartMenuCellHeight)-Number(_root.OSvariables.TaskbarHeight)){
                                                _root.OSvariables.OpenNewWindow=1
                                                _root.OSvariables.NewWindowName=_root.OSvariables["StartMenuItem"+this.ItemNumber+"Name"]
                                                _root.OSvariables.NewWindowURL=_root.OSvariables["StartMenuItem"+this.ItemNumber+"URL"]
                                                _root.OSvariables.NewWindowIconURL=_root.OSvariables["StartMenuItem"+this.ItemNumber+"IconURL"]
                                }
                        }
                }
                _root.OSstartmenu._x=0;
                _root.OSstartmenu._y=600-_root.OSstartmenu._height+Number(_root.OSvariables.StartMenuLineThickness)*2-Number(_root.OSvariables.TaskbarHeight);
        }
        if((_root._xmouse>_root.OSstartmenu._width or _root._xmouse<0 or _root._ymouse<600-_root.OSstartmenu._height+Number(_root.OSvariables.StartMenuLineThickness)*2-Number(_root.OSvariables.TaskbarHeight) or _root._ymouse>600+Number(_root.OSvariables.StartMenuLineThickness)*2-Number(_root.OSvariables.TaskbarHeight)) and (_root._xmouse<0 or _root._xmouse>Number(_root.OSvariables.StartButtonWidth) or _root._ymouse>600 or _root._ymouse<600-Number(_root.OSvariables.TaskbarHeight))){
                _root.OSstartmenu.clear();
                for(t in _root.OSstartmenu){_root.OSstartmenu[t].removeMovieClip()}
        }
}
//Finish of Creating startmenu


artfla$her 27.08.2004 17:15

Хи, а какой пример ты хочешь увидеть? Клип-фон и кнопки меню с более высоким уровнем, чем у фона? :D Я же про это говорил :) То есть не весь контейнер делать кнопкой, а только фон. Кончено, если надо иметь меню как один клип - мое решение никуда не годится. Но ведь AStrike про это ничего не сказал :) Не кипятись. :)

Usnul 27.08.2004 17:58

хорошо, могу углубиться в детали.
onRollOver работает на тот клип, который находится выше, понимаешь? вот представь что у нас есть меню, фон и кнопки. На фоне стоит событие onRollOut тоесть когда мышь выходит за фон, то менюшка закрывается, логично?
так вот, это фобытие будет перекрываться событием onRollOver в кнопке, и как только ты наведешь на кнопку менюшка закроется, понял?

artfla$her 27.08.2004 19:18

Понял, дарагой Usnul. Вернее, я с этим и раньше сталкивался. Просто я не правильно понял вопрос AStrike. Я не думал, что ему надо применять скрывание своей менюшки. Может, он про это где-нить в другом разделе уже писал, я не знаю. Если бы сразу сказали про исчезновение меню, я бы свой вариант и не предлагал.


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

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