我对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;
}
这些反映了组件支持团队向我建议的更改,但横幅中的动画仍然被打破,因为启动叠加层的交互性也是如此。
答案 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将无法找到它
请确保您在每个功能上使用可配置的参数,您将获得一个真正可重复使用的组件,可以根据需要多次使用。
希望它有所帮助!