Слушатель ActionScript onMouseOut не полностью работает в Internet Explorer 8

Я работаю над видеоплеером во Flash CS4. Я пытаюсь построить проигрыватель таким образом, чтобы, когда пользователь наводит указатель мыши на объект flash, появляются элементы управления воспроизведением, а когда пользователь перемещает мышь из объекта flash, элементы управления исчезают.

Мне удалось собрать код, который работает во всех браузерах, кроме одного: Internet Explorer. Что ж, это «работает», но только если вы медленно переместите мышь на левую сторону объекта вспышки.

Я довольно много поискал в Google в поисках ответа, но не могу найти кого-нибудь с похожей проблемой.

Код выглядит следующим образом:

Код ActionScript:


_root.onLoad = function(){
    _root.clip.skinAutoHide=true;
    _root.clip.skinFadeTime=0;
}

_root.onRollOver = function () {
    _root.clip.skinAutoHide=false;
}

_root.onRollOut = function () {
    _root.clip.skinAutoHide=true;
    _root.clip.skinFadeTime=0;
}

Код веб-сайта (вставляется туда, где должна размещаться флеш-память):


var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if(hasRightVersion) {  // if we've detected an acceptable version
    // embed the flash movie
    AC_FL_RunContent(
        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,24,0',
        'width', '280',
        'height', '280',
        'src', '01clip1',
        'quality', 'best',
        'pluginspage', 'http://www.adobe.com/go/getflashplayer',
        'align', 'middle',
        'play', 'true',
        'loop', 'true',
        'scale', 'noscale',
        'wmode', 'transparent',
        'devicefont', 'false',
        'id', '01clip1',
        'bgcolor', '#ffffff',
        'name', '01clip1',
        'menu', 'true',
        'allowFullScreen', 'false',
        'allowScriptAccess','sameDomain',
        'movie', '01clip1',
        'salign', ''
        ); //end AC code
} else {  // flash is too old or we can't detect the plugin
    var alternateContent = 'Alternate HTML content should be placed here.'
        + 'This content requires the Adobe Flash Player.'
        + 'Get Flash';
    document.write(alternateContent);  // insert non-flash content
}

Любое понимание будет оценено.


person Justin Pearce    schedule 22.03.2011    source источник
comment
Привет! Может быть совершенно не связанным, но действительно ли вам нужно, чтобы ваш wmode был прозрачным? Попробуйте opaque или window для лучшей производительности и, возможно, решения вашей проблемы ...   -  person Kodiak    schedule 22.03.2011
comment
Я попробовал ваше предложение, чтобы посмотреть, не вызывает ли оно проблему, но это не решило проблему. К сожалению, клиент, который заставляет нас это делать, хочет, чтобы видео было прозрачным, чтобы видео (парень идет и говорит, прозрачный фон) выглядело так, как будто парень заходит на веб-страницу.   -  person Justin Pearce    schedule 22.03.2011


Ответы (1)


Хорошо, я исправил. Проблема заключалась в том, что, очевидно, методы AS2 для работы с mouseover / mouseout в этом случае не очень хорошо работают. Я обновил флеш-память, чтобы использовать AS3, и использовал следующий код:


/*
Code lifted and slightly modified from:
http://board.flashkit.com/board/showthread.php?t=714795
*/
clip.skinAutoHide = false;
clip.skinBackgroundAlpha = 0;
clip.skin = "";

stage.addEventListener(Event.MOUSE_LEAVE, hideSkin);
stage.addEventListener(MouseEvent.MOUSE_MOVE, showSkin);

function showSkin(evt:Event=null):void {
    clip.skinBackgroundAlpha = 0.30;
    clip.skin = "SkinOverPlaySeekMute.swf";
}

function hideSkin(evt:Event=null):void {
    clip.skinBackgroundAlpha = 0;
    clip.skin = "";
}

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

Ваше здоровье.

person Justin Pearce    schedule 24.03.2011