动画横幅启动完整窗口覆盖与视频与第三方组件

时间:2012-02-23 15:23:49

标签: actionscript-3 flash-cs4

我对Flash中的这类事情比较陌生,所以如果我的解释在任何方面都缺乏,我真的很抱歉,我真的很感激,如果有任何答案可以完全解释我在做什么,那么我可以学习而不是只是粘贴在解决方案中。

我想要制作的是一个小动画横幅,点击时会启动半透明覆盖(类似于LightBox,最初是用LightBox构建的),覆盖网页内容并包含视频播放器。从现在开始,我将把这些元素称为“横幅”和“叠加”。叠加层和横幅包含在单独的.swf文件中。

横幅相对复杂,在加载时动画,在空闲时播放循环动画,在mouseOver上播放另一个动画。单击横幅或允许mouseOver动画完成两者都启动叠加层。我有一个可以调用jQuery Lightbox的工作版本,但现在已被要求在使用其他第三方组件时构建该功能,并且它已经破坏了横幅的动画和交互性。

这是ActionScript,因为它位于横幅文件中。

import flash.external.ExternalInterface;
import flash.events.MouseEvent;
import flash.events.Event;

stop();

curl_mc.alpha = 0;

curl_mc.stop();

hotspot_mc.useHandCursor = true;
hotspot_mc.buttonMode = true;

hotspot_mc.addEventListener(MouseEvent.ROLL_OVER, onLoopRollover, false, 0, true);
hotspot_mc.addEventListener(MouseEvent.ROLL_OUT, onLoopRollout, false, 0, true);

hotspot_mc.addEventListener(MouseEvent.CLICK, screenad.shared.callMethod("launchLayer"));
curl_mc.addEventListener('curlComplete', screenad.shared.callMethod("launchLayer"));

function onLoopRollover(e:MouseEvent):void
{
  loop_mc.alpha = 0;
  loop_mc.stop();

  curl_mc.alpha = 1;
  curl_mc.gotoAndPlay(1);
}

function onLoopRollout(e:MouseEvent):void
{
  loop_mc.alpha = 1;
  loop_mc.gotoAndPlay(1);

  curl_mc.alpha = 0;
  curl_mc.stop();
}

这是覆盖文件中的ActionScript。

screenad.hide();

screenad.shared.'showAd' = function()
{ 
  screenad.show;
}

这些反映了组件支持团队向我建议的更改,但横幅中的动画仍然被打破,因为启动叠加层的交互性也是如此。

1 个答案:

答案 0 :(得分:0)

我认为你需要混合使用HTML + Flash来解决这个问题。

我可能会做的是必须分开flash对象。

横幅和视频。

横幅将是一个简单的动画组件,一旦点击,您可以将HTML叠加层放到整个页面并在其中加载Flash视频组件。

您可以通过闪光灯进行通讯 - >通过ExternalInterface类的Javascript。

例如:

<强> AS3

if( ExternalInterface.isAvailable )
{
    ExternalInterface.call("loadOverlayVideo","4")
}

的Javascript

function loadOverlayVideo(videoId)
{
    showBlahBlah()
}

注意:如果您的函数在JQuery嵌入式函数中,您可能需要使用以下函数“外化”该函数:

window.loadOverlayVideo = loadOverlayVideo

否则flash将无法找到它

请确保您在每个功能上使用可配置的参数,您将获得一个真正可重复使用的组件,可以根据需要多次使用。

希望它有所帮助!