起因:那啥~ 某天闲来无事 答应为某人做个flash导航~
要求: 1.flash 尽可能的小
2.可以编辑导航内容
3.flash 背景透明
4.onmouseover 背景色块还要有变化
5.…
综上选择了 AS3 + JS 的组合
构想:flash尽量小? 采用背景图片与flash分离方式
可编辑?外部传值
flash透明 背景还要有onmouseover 效果? 用AS3调用JS 操作DOM
成品:http://www.iding360.com/index4.html
原理:利用 AS3 ExternalInterface 接口与 JS通信
用坐标轴 计算得出 onmouseover 元素
初始化参数如下:
var op={
width:1024, //flash 宽度
height:530, //flash 高度
target:'new', //tatget 不解释你懂的
delay:0.5, //动画延迟 时间单位 秒
autoMove:false, //是否自动运行动画
img:[[imgurl,href,x,y]] //展示图片数组
}
与此同时 JS端 并行加载 背景图片中…
代码如下:
var BgImg = new Image();
BgImg.onload = function()
{
/*
生成色块、设置动画
*/
setTimeout(function()
{
flash=document["flashUpImg"]||window["flashUpImg"];
if( FlashReady) //验证flash 是否加载完成 (如何验证?)
{
if(flash.jsMove())return; // 初始化设置了autoMove:false 所以这里手动调用
}
setTimeout(arguments.callee,10);
},10);
}
此效果 主要 AS3 程序:
stage.addEventListener(MouseEvent.MOUSE_MOVE,MouseMove);
public function MouseMove(event:Event):void {
ExternalInterface.call("Flash_MouseMove",stage.mouseX,stage.mouseX);//flash调用js中的方法
}
主要JS函数:
function Flash_MouseMove(x,y) //鼠标移动函数
{
var d = Math.floor(x/barWidth);
if(d==nowDiv)return;
$animate( pc[nowDiv], { 'marginTop':{from:'3px', to:0}, 'opacity':{from:1,to:0.8} }, 150);
$animate( pc[d], { 'marginTop':{from:0, to:'3px'}, 'opacity':{from:0.8,to:1} }, 150);
nowDiv = d;
}
最终效果 :http://www.iding360.com/index4.html
ps:1. 为IE6-7 写了不同动画效果
2. 顺便吐槽 IE6 的背景闪烁 BUG
相关推荐
as3.0利用ExternalInterface与js交互的播放器,重写flvPlayerbeta0.1例子
ExternalInterface
网路上找的残缺不齐 甚至没有返回值。 我这个不是两个专案,但关键代码都齐。 学个三个月以上的,就看得懂。 代码贴对地方,可以直接运行。 新手别下。
ExternalInterface在我看来就是flash为了外部程序的调用所声明的接口。看到论坛里有好多人问但是回答的就不是很多,就把自己做的一个简单的例子放上来.写的不好,希望能抛砖引玉,大侠勿拍!!这个是里面用到的flash...
自制的,两个简单实例实现Flash与JS的相互调用与传值,仅实现基本功能,可在此原理基础上对函数进行拓展,例如使用Flash封装网页数据等。 在AS代码中附有简单注释解释程序。 ======== 简 单 介 绍 ======== 1、...
flex与js交互 关于ExternalInterface使用的小例子
亲测可用!我也是初学者,找了好久,网上都语焉不详。还是CSDN好! 1、as文件是源代码,fla是源文件。...if (ExternalInterface.available)ExternalInterface.call("sendToJavaScript", ala2);这一句话。
vb动态加载ShockwaveFlash控件,解决了静态加载无法保存问题 flash利用ExternalInterface类创建外部函数以及通过fscommand发送参数 vb使用带事件定义变量。 完成 flash与vb的双向通信。
3、使用Flash中的ExternalInterface.call方法和fscommand方法对JS进行调用与传送数据。 4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的函数。 包含swfobject.js与fla源文件。 (*...
flash as 3.0通过ExternalInterface与c#通信
OpenSPARCT1 External Interface
js-communicate INTRAS-JS的交互通讯模块,提供了JS中模拟AS3事件监听处理方式用于取代AS直接调页面接口的方式。使用该库将为SWF提供三个接口给JS来调用:notify,用于JS调AS中的接口swf.notify('pausePlayer', [p1,...
本例通过flash 8的ExternalInterface实现了javascript与flash之间的相互调用
但是在实现js传值给flash时,flash在获取值存在几率性,有时可以获得到,有时有获取不到。后来发现,其实是由于<object …></object>所对应的flash没有加载完,在js就开始调用flash中的...
flex与javascript交互利用externalinterface.callback函数进行。
“ExternalInterface”类是外部API,在ActionScript和FlashPlayer的容器之间实现直接通讯的应用程序编程接口,例如,含有JavaScript的HTML页。推荐对所有JavaScript与ActionScript之间的通信使用ExternalInterface。...
Added setFlashCallObject and setFlashCallListener methods to support the Flash ExternalInterface.call functionality (requires Flash 9 or greater) - Added callFunction method which can call Flash ...
不用getURL和fsCommand方法 flash使用的actionscript跟javascript是非常相通的,下面描述如何互相调用函数: 1:javascript调用flash中的函数 在flash的脚本中增加 import flash.external.ExternalInterface;...
jsp和flash函数互相调用的方法ExternalInterface.call和ExternalInterface.addCallback
与asp js交互数据实现 ------------------------------ import fl.controls.Button; import fl.core.UIComponent; var TF : TextFormat = new TextFormat(); TF.size = 16; TF.color = 0x0000ff; key.setStyle(...