2007年6月7日
flash 中调用js 有两种方法,第一中是同getURL 这个方式来调用js,第二种是用 ExternalInterface.call( ).第一种是很常见的用法,我就说一下小明我是怎么用 ExternalInterface.call
什么是 ExternalInterface?
ExternalInterface类是外部api ,也就是actionscript 和 flashplayer 的容器之间实现直接通讯的应用程序编程接口 。在flash的帮助文档里是推荐用ExternalInterface来实现javascript 和 actionscript 之间通讯的。利用ExternalInterface可以调用html网页上任何的js 功能,传递参数并接受来自该调用的返回值。从html 上的js中调用flashplayer中的as 函数。
1 flash 调用 js:
flash部分--------------------------------------------------------
//应用命名空间;
import flash.external.*;
var greeting:String;
//调用createButton 生成一个按钮
var btn:MovieClip = createButton(100, 30, 0xCCCCCC);
btn.onPress = function() {
//调用js里的sayHello 函数并接受其返回值
greeting = String(ExternalInterface.call("sayHello", "browser"));
this.mcTxt.text = greeting; // >> Hi Flash.
}
function createButton(width:Number, height:Number, color:Number):MovieClip {
var depth:Number = this.getNextHighestDepth();
var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
var mcFmt:TextFormat;
mc.beginFill(color);
mc.lineTo(0, height);
mc.lineTo(width, height);
mc.lineTo(width, 0);
mc.lineTo(0, 0);
mcFmt = new TextFormat();
mcFmt.align = "center";
mcFmt.bold = true;
mc.createTextField("mcTxt", depth, 0, 0, width, height);
mc.mcTxt.text = "Call JS Function";
mc.mcTxt.setTextFormat(mcFmt);
return mc;
}
-------------------------------------------------flash结束
js部分--------------------------------------------------
<script>
function sayHello(name) {
alert(">> Hello " + name + ".");
return ">> Hi Flash.";
}
</script>
----------------------------js结束
2。js调用 flash
flash 部分-------------------------
import flash.external.*;
//这个参数是说js里调用as里的函数名
var methodName:String = "goHome";
//这个是在该方法中被解析的对象,就是函数里的this 指向谁
var instance:Object = null;
//这个是as里的函数名,这个参数就是gohome这个在js里调用的函数名 在as里对应的函数名
var method:Function = goTokb;
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
var txtField:TextField = this.createTextField("txtField", this.getNextHighestDepth(), 0, 0, 200, 50);
txtField.border = true;
txtField.text = wasSuccessful.toString();
function goTokb() {
txtField.text = "http://10kb.net";
getURL("http://www.10kb.net", "_self");
}
--------------------------------------------------flash 结束
js部分-------------------------------------------------------------
<form>
<input type="button" onclick="callExternalInterface()" value="Call ExternalInterface" />
</form>
<script>
function callExternalInterface() {
thisMovie("externalInterfaceExample").goHome();
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else {
return document[movieName]
}
}
</script>
--------------------------------js 部分结束
代码基本是帮助文档你的,我只是加了一点小注释,如果还是不懂给我留言吧!
posted @
2007-06-07 17:43 熊小明 阅读(269) |
评论 (0) |
编辑 收藏
由于大环境的影响,公司停止了这个项目。
做这个项目快一年了,我也是从这个项目起步开始学习as 学习fms滴!!可以说这个项目让我受益匪浅,也让我喜欢上了做flash ,做一名闪客!flash 也让我认识了很多的朋友。现在公司的这个项目结束了,我的flash 还需要继续吗?因为我可能要把我在flash 之前的东西重新拣起来。我早已熟悉了编写as的感觉。好像继续下去。
人生总是有很多的选择,此时我该选择什么,继续我的flash 路, 还是搞以前地东西业余的时候玩flash。。。。。
恍惚之间来公司已经一年了。。。。。也许。。。。。唉!
posted @
2007-06-07 15:50 熊小明 阅读(224) |
评论 (0) |
编辑 收藏
as3最突出的特点就是它是一个纯面向对象的语言,as2虽然也号称面向对象,但没有as3这样彻底,这样让人心情激荡!!接触as3是从学flex2开始,给我的感觉是让我觉得在写c# java 之类的语言一样,思路很清楚。
看到很多as3的教程,也想谢谢自己对as3的理解。
首先看看让人激动的Dictionary。c#里有HashTable,在as2里我一般都是用object做关联数组。现在as3里有Dictionary,任何类型来做键值。
var dict = new Dictionary();
var obj = new Object();
var key:Object = new Object();
key.toString = function() { return "key" }
dict[key] = "Letters";
obj["key"] = "Letters";
dict[key] == "Letters"; // true
obj["key"] == "Letters"; // true
obj[key] == "Letters"; // true because key == "key" is true b/c key.toString == "key"
dict["key"] == "Letters"; // false because "key" === key is false
delete dict[key]; //removes the key
以上是来自帮助文档的代码。
posted @
2007-06-07 15:27 熊小明 阅读(241) |
评论 (0) |
编辑 收藏