一直没去深入研究下AS3与JS的交互开发也就是SWF在html中的通信,最近出于项目要求被迫投入了,也在这里做个汇总
一:HTML中最快速的传值方式
在HTML中插SWF时,可以跟个参数,比如:
files/home.swf?id=”21″
在AS3里可以这样去接收
var
id:String=stage.loaderInfo.parameters["id"]
这种传值方式其实AS2的时候也是这样做的,到AS3时使用parameters 属性替换了AS1.0 和2.0
提供SWF文件参数作为主时间轴的技术,所以我们改用一下AS3的取值方式就行了.
这种方式只能是单边一次性传值,有时候会用得到,但需要与JS相互通信就不行了,还有,只能接收字符串.
二:使用外部通信接口ExternalInterface
这也是AS2时代进化来的,目前公认的最靠谱的通信方式.
使用方法:
1.JS调用AS3的函数
确定JS调用AS3之前,要在AS3中绑定调用函数,也就是说,只有AS3答应给的方法JS才能调用.
使用:ExternalInterface.addCallback(functionName:String,
closure:Function):void有两个参数:
functionName:String —
容器可用于调用函数的名称。
closure:Function — 要调用的 closure 函数。 这可能是一个独立的函数,或者可能是引用对象实例方法的
closure 方法。通过传递 closure 方法,回调实际上可以定向到特定对象实例的方法。
ExternalInterface.addCallback("getASVars",getASFun)
private function
getASFun(value:String):void {
//得到JS传来的值:value
}
好了,可以在JS中去调用这个方法了,调用前还要先取得插进HTML的SWF的ID,我们在HTML中不管用什么方式插都可以设置ID
例如先通过id为”mov”来获取对象,再调用上面绑定的方法:
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft")
!= -1) {
return window[movieName]
} else {
return
document[movieName]
}
}
thisMovie("mov").getASVars(value)
2.AS3调用JS的函数
AS3调JS直接使用call就行了
使用:ExternalInterface.call(functionName:String,
… arguments):*
这个方法有两个参数:
functionName:String — 要在容器中调用的函数的名称。
…
arguments — 传递到容器中的函数的参数。 您可以指定零个或多个参数,参数之间用逗号分隔。 这些参数可以是任何 ActionScript 数据类型。
当调用 JavaScript 函数时,ActionScript 类型自动封装到 JavaScript 类型中;当调用其它某个 ActiveX
容器时,将在请求消息中对参数进行编码。
例如:
ExternalInterface.call("setToJS","paramTest")
在JS中编写这个setToJS的函数
function
senToJS(value){
alert(value)//输出:paramTest
}看起来很爽,但也不是完全靠谱,这个接口还是会挑食的,只有在以下浏览器中才支持:
浏览器 操作系统 操作系统
Internet Explorer 5.0 及更高版本 Windows
Netscape 8.0 及更高版本
Windows Macintosh
Mozilla 1.7.5 及更高版本 Windows Macintosh
Firefox 1.0 及更高版本
Windows Macintosh
Safari 1.3 及更高版本 Macintosh
还有个安全沙箱的问题,如果出现安全沙箱警报,可以使用以下两种修正方法:
1.在包含 HTML 页中的 SWF 文件的 object
标签中,设置以下参数:
2.在 SWF 文件中,添加以下
ActionScript:
Flash.system.Security.allowDomain(sourceDomain)
function showTime() {var now = new Date()
var nowTime = now.toLocaleString()
var date = nowTime.substring(0,10)//截取日期
var time = nowTime.substring(10,20) //截取时间
var week = now.getDay() //星期
var hour = now.getHours() //小时
//判断星期几
var weeks = ["日","一","二","三","四","五","六"]
var getWeek = "星期" + weeks[week]
var sc
//判断是AM or PM
if(hour >= 0 && hour < 5){
sc = '凌晨'
}
else if(hour > 5 && hour <= 7){
sc = '早上'
}
else if(hour > 7 && hour <= 11){
sc = '上午'
}
else if(hour > 11 && hour <= 13){
sc = '中午'
}
else if(hour> 13 && hour <= 18){
sc = '下午'
}
else if(hour > 18 && hour <= 23){
sc = '晚上'
}
document.getElementById('time').innerHTML ="当前时间:" + date+" " + getWeek +"&nbsp"+" "+sc+" "+time
setTimeout('showTime()',1000)
}
</script>
调用方法:
<body onload="showTime()">
<div id="time"></div>
</body>
2.简洁的办法: 显示格式: 当前时间: 2010年6月1日 10:00:00 星期一
<htmtl>
<head></head>
<body>
<div id="linkweb" style=" display:inline"></div>
<script>
setInterval("document.getElementById('linkweb').innerHTML=new Date ().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay ())",1000)
</script>
</body>
</html>
在国内大家玩FC机器的时代,最早引人注目的文字 游戏 是霸王的大陆,吞食天地诸葛孔明传和圣火徽章外传。要知道早期FC文字 游戏 大家都不会去细分种类。诸如SLG,RPG,SRPG这些分类是当时的《电子 游戏 软件》早年叫《 游戏 集中营》中普及开来的叫法。
最早大家上手的文字 游戏 是我说的这三款为主。主要原因有两部是三国题材,大家对人物、剧情比较熟悉和热衷,霸王大陆的指令选项完全可以摸索出来。吞食天地2也很早出了盗版商的汉化版,而且质量很高。圣火徽章是走格子的SRPG,这个玩法比较新颖。指令的日文不是太难确认。所以这三部作品是诸多大陆文字 游戏 玩家的启蒙 游戏 。
最终幻想,勇者斗恶龙,重装机兵这些正统RPG剧情中全部是日文平假名片假名,大家看不懂剧情,导致一开始很少有玩家能够通关,直到专业杂志作出攻略本后大家才勉强上手。再到后期有很多盗版商做了汉化,大家终于看懂了剧情。
所以经历过的都知道,大陆最早风靡的FC文字 游戏 是霸王大陆,吞食天地2,和圣火徽章外传日本叫火炎纹章外传。
另外外星 科技 在FC末期开发过不少中文RPG让人映像深刻。
说到FC时代,那真是百家争鸣,在那个天马行空,没有参照物,摸着石头做 游戏 的时候,任何差错都有是炮灰,但是可以冲出来都是精品中的精品,这些 游戏 经过30多年的沉淀,一直来都是 游戏 的标杆,特别是RPG,这样讲究剧情的 游戏 ,更是不得了。
重装机兵
重装机兵在日本不是很火,但是在中国全是有着国民RPG的 游戏 ,主要是中文汉化,其次是可以开坦克,这个坦克的设计也符合许多人调性,特别是平衡上的社交,可以说是 游戏 一大亮点,其次 游戏 的剧情,可以说是沙箱 游戏 鼻祖,在世界末日的荒凉时代,主角跟红狼的剧情深入人心,音乐上也是一大亮点
吞食天地
你没有想到动作天尊CAPCOM,也能造出一款三国RPG 游戏 , 游戏 的剧情大家都懂,小爱同学就不说, 游戏 最大特色就是玩法上,在8位数字年代,就是简单的数值变化,也能让许多玩家玩的激动人心,心情澎湃,给许多人增加家人们很多回忆,这个 游戏 最经典地方就是,时间已经过去了30年,关于他的民间重制版,致敬版,还是层出不穷。你不得不说,这个 游戏 是多么伟大。
三国志2-霸王大陆NAMCO
别以为NAMCO只会做动作 游戏 ,其实他跟CAPCOM认真起来做RPG 游戏 是很可怕,三国虽然看上去跟普通战略 游戏 没什么区别,但是它是一款披着战略 游戏 的RPG, 游戏 里面加入经验系统,练级是这个 游戏 里面最让人开心地方。
勇者斗恶龙3ENIX
勇者斗恶龙在FC上到底出了几代,反正笔者是不知道,而且勇者斗恶龙,因为没有中文,所以在国内的欢迎程度,没有重装机兵好,所以勇者斗恶龙的局限在日本上, 游戏 素质是不错的,不然就不叫什么国民 游戏 ,但是是 游戏 一个最大特点就是容易遇敌,勇者斗恶龙的遇敌率是笔者玩过所有 游戏 中最高, 虽然不说明什么问题,但是一步一个敌人,真是一种可怕的回忆,而且还有这么多喜欢跟着玩,这个回忆真是有点太可怕了
FC时期的四大RPG,这个好像从来都没有评选过吧,都是玩家们自己心目中的看法,那个时候的中文 游戏 太少太少了,一开始一个都没有,我也是从快上高中时候才玩到的,以下说说我心目中的四大RPG 游戏 吧。
勇者斗恶龙
这里不分几代几代了,除了1代画面我看不了没玩以外,234代我都玩了,难度是越来越简单的,早期的RPG 游戏 系统设定还不够合理,练级练的人头疼,也就那时候能玩的下去,放现在估计是没有市场的,枯燥的刷怪一会就烦了,但当年勇者斗恶龙确实开辟了一个全新的 游戏 领域,RPG 游戏 真正的框架缔造者就是它了,等级系统,装备系统,迷宫,剧情套路,现在的RPG也依然是按着这个框架走的,勇者斗恶龙系列最著称的一点就是剧情了,这么老的 游戏 剧情是做的真好,越后面越好,FC上面我最喜欢的是4代,各方面都比较成熟了,特别是分章节分主角的玩法非常新鲜,不愧是RPG的鼻祖。
最终幻想
和勇者斗恶龙系列齐名的RPG 游戏 ,甚至比勇者斗恶龙出的系列都多,但它比勇者斗恶龙稍微晚了一年才出现,所以很多方面应该都是借鉴了勇者斗恶龙的玩法,但它仍然是有着自己独特的特点的,否则单纯的模仿是不可能和勇者斗恶龙齐名的,在FC时代,实现不了多好的 游戏 画面,所以重点也是放在了剧情和系统上面,玩起来和勇者斗恶龙还是挺有区别的,特别是背景的设定,勇者斗恶龙大多的设定是勇者,中世纪,欧洲,魔法,巨龙和各种怪物,而最终幻想的背景大多是 科技 和魔法并存的时空,这个设定持续了很久,最终幻想最频繁出现的就是飞船啦飞艇之类的设定。
重装机兵
这个 游戏 不知道在国外怎么样,但在国内绝对是RPG大佬之一,因为它算是FC偏末期的作品了,各方面表现都比较优秀,最重要的是这个 游戏 当年就有汉化版,时间是1996年,电脑还没有普及的年代,想玩个中文 游戏 还是很难的,所以这个 游戏 才有这么庞大的受众群体, 游戏 本身素质也特别高,它跳出了老套RPG的一些设定,加入了自己全新的理念,这里没有魔法只有 科技 和战车,时间也不再是什么中古时期而且现代或者说是未来的末世世界,由于战斗采用的是战车,所以不需要频繁的去练级了,不过刷钱还是必要的,这个 游戏 还是我人生中玩的第一款RPG 游戏 ,意义比较特殊。
吞食天地2
吞食天地一共也只出过两部作品,而且都是在FC上面,官方并没有发布任何续作或者复刻版,这个中国三国 历史 题材的RPG做的非常棒,应该是史上最好的三国RPG 游戏 了,不说什么续作,干嘛不给高清复刻一下呢?这么好的 游戏 真是浪费了,但是民间有不少复刻版和改版,还有蹭热度的一些所谓续作,其实都不是真的,可能卡普空的大IP太多了不稀罕这个吧 ,如今还有玩家在鼓捣这些改版 游戏 ,修改的都还不错,各种主角和故事情节,可以体验到不同三国角色的 游戏 故事。
刚好囧王者最近在写RPG编年史,刚好来写一下RPG的问题。任天堂的FC时代,其实距离现在大概有30多年了,已经非常遥远了。FC时代奠定了现在 游戏 的种类的雏形,现在流行的超级IP大多能在那个年代找到鼻祖。
而且在FC时代,由于机能的限制,动作 游戏 都相对简单,做得最好的 游戏 类型要数RPG,SLG类型的 游戏 了。那么在FC时代,有哪些RPG 游戏 能当得上FC上RPG的四大天王呢?
JRPG的鼻祖,日本国民RPG,DQ系列
最近囧王者在写《RPG编年史:DQ系列》的长篇文章,有兴趣的小伙伴,可以点进去看看。如果要说到RPG 游戏 ,无论是那个平台,都逃不过DQ系列的身影。在FC上呢,DQ可谓是代表了JRPG的精髓,一共出了4作,每一作都堪称RPG的里程碑。里面的各种系统和设定,也深渊的影响到日后RPG 游戏 的发展。所以DQ系列必定是FC时代RPG四大天王之一。
FF系列,一切幻想从这里开始---与DQ系列分庭抗礼的存在
如果说艾尼克斯的DQ系列是日本JRPG的代表作,是日本国民级的RPG的话。那么史克威尔的FF系列,就是与DQ系列分庭抗礼的存在。FF1是当时在FC上唯一能和DQ系列叫板的RPG 游戏 。特别是当年国内的JS们在引进的时候,不知道为什么把这么明显的FinalFantasy翻译成太空战士,搞的当年一大帮子人糊里糊涂的跟着叫了许多年。
在日本冷门,在中国大火的RPG大作,重装机兵
在FC辉煌的后期,在国内出现了一款RPG的神作-重装机兵。坦率的说,这款RPG在日本其实知名度并不是太高,至少是远远不如上面说到的DQ和FF的。但是这款RPG在国内的名气丝毫不弱于DQ和FF,这一切都得益于《重装机兵》的汉化版,感谢先锋卡通完成框架性汉化过程,也感谢 doubledr 大神的汉化修正版本。由于他们的努力,让我们玩到了一款原汁原味的汉化RPG大作。红狼的死,让囧王者当年很是伤心。
封神榜,第二次机器人大战,吞食天地
坦率的是说,除了上述三款RPG之外,其他的RPG 游戏 ,难分伯仲。例如国内在FC后期,涌现出了大量的RPG 游戏 ,霸王的大陆,圣火徽章(其实这俩应该叫SLG 游戏 ),封神榜,吞食天地,第二次机器人大战等,都是非常优秀的RPG 游戏 。但是他们和DQ,FF还有MM(重装机兵)比起来,还是差了那么点意思。也就不排个先后,都算成第四极吧。
每个人都有心中FC最佳RPG的排名,唯一不变、铁定能进前三的必有《重装机兵》,就冲这一点,足见其优秀
就我玩过的FC,RPG前五,七龙珠系列,吞食天地系列,封神榜,魔神英雄传,重装机兵。
封神榜,吞食天地,重装机兵,第二次机器人大战,霸王的大陆
过去年轻时候啥都好
重装机兵,吞食天地,哪吒三太子,最终幻想
其他不敢肯定,但是可以肯定的是必定有重装机兵和吞食天地