PDA

Просмотр полной версии : момент по созданию видеоплеера


DoomerSamoiloff
25.01.2007, 19:55
Допустим, нужен медиаплеер, у которого видео-изображение занимает всю сцену. При наведении мыши над медиаплеером должно появляться навигационное меню (play,rewind и т.д.). Уже 2 дня мучаюсь, каким образом лучше это организовать. Проблема в следующем: а) если меню находится внутри мувиклипа плеера, то событие onRollOver(onRollOut) плеера перекрывает события onPress навигационного меню (т.е. кнопки не нажимаются) б) если меню лежит поверх мувика с видео, то при наведении мыши над меню - срабатывает (onRollOut) мувика с видео и меню становится невидимым.
Буду благодарен за любые идеи. (Уже пробовал _xmouse и _ymouse - не срабатывает при быстром движении мыши).
Заранее спасибо

etc
25.01.2007, 20:07
Сообщи мувику под меню, что мышка над меню.

DoomerSamoiloff
25.01.2007, 20:17
на мой взгляд слишком общее решение... :(

etc
25.01.2007, 20:21
На мой взгляд слишком общий вопрос…

DoomerSamoiloff
25.01.2007, 20:26
__etc, вот фрагмент кода одной из таких реализаций (при слишком быстром перемещении мыши не срабатывает, и при драге не срабатывает :) ):

var names_:Array = Array("rewindBtn_mc","playBtn_mc","forwardBtn_mc","stopBtn_mc"); //массив с именами кнопок меню

for (var i:Number =0; i<names_.length;i++) {//регистрация onRollOver, onRollOut, onDragOut событий для кнопок меню
_root.myPlayer_mc[names_[i]].onRollOver = function () {
_root.bFlag = true;
}
_root.myPlayer_mc[names_[i]].onRollOut = _root.myPlayer_mc[names_[i]].onDragOut =function () {
_root.outInt = setInterval(outInterval,_root.delay);
}
}

_root.myPlayer_mc.videoScr_mc.onRollOver = fOver; //регистрация событий onRollOver, onRollOut, onDragOut для мувика под менюшкой
_root.myPlayer_mc.videoScr_mc.onRollOut = _root.myPlayer_mc.videoScr_mc.onDragOut = fOut;

function overInterval (mc:MovieClip) { //интервальные функции введены с целью установления задержки
if (_root.overInt) { //чтобы переменная bFlag могла установиться
if(!_root.bFlag) {hideMenu ()} //bFlag = true если ымшь над кнопками меню
clearInterval(_root.overInt);
}
}
function outInterval () {
if (_root.outInt) {
_root.bFlag = false;
clearInterval(_root.outInt);
}
}
function fOver() {
delete(this.onRollOver);
if (!_root.bFlag) {showMenu ();}
this.onRollOut = this.onDragOut = fOut;
}
function fOut() {
delete(this.onRollOut);
delete(this.onDragOut);
_root.overInt = setInterval(overInterval,_root.delay,this);
this.onRollOver = fOver;

}[iNils: Для оформления своего кода, надо использовать теги ]

DoomerSamoiloff
25.01.2007, 20:32
лучше так. вот исходник

before
28.01.2007, 05:27
Мне кажется что такой скрипт для такой задачи слишком сложный...:o

слушай не onEnterFrame() а onMouseMove() и тогда _xmouse и _ymouse всегда будут успевать...

video - клип с видео
menu - меню

video.onMouseMove = function() {
with(this){
if(_xmouse>0 && _xmouse<_width && _ymouse>0 && _ymouse<_height){
//показываем меню
_root.menu._visible = true;
}else{
//скрываем меню
_root.menu._visible = false;
}
}
}