领导为了省钱,赶鸭子上架,硬让做一flash,唉,愁啊。
慢慢摸索着终于给做完了,说说遇到的问题吧。
1、碰撞问题
最开始用的hit和hitTest,都太粗糙了,没办法,只能按照坐标一点一点算了。
2、flash与js交互的问题
用的callBack和addcallBack来完成,首先是在ie下出问题了,把flash代码直接写form里了,结果直接不调用。终于从网上搜了一段代码加上后,ie好使了,结果火狐下js调用as的方法老提示找不到,无奈,搜了一天。有一篇文章是被疯狂转载的,我开始以为也是addcallback注册时间的问题,后来好好想了一下,好像不是,因为我不是一开始js就调用as,而是在flash之行一段时间后通过按钮来触发,所以应该不是注册时间的问题。后来又搜啊搜,都怪自己太不认真的,最终还是在那篇转载最多的文章里解决问题了。
我原来插入flash的代码
function cEMedia(id,res,width,height){
var width = parseInt(width),height = parseInt(height);
var object = '';
object = '<object id="'+ id +'" name="'+ id +'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="'+ width +'" height="'+ height +'" align="middle">';
object += '<param name="allowScriptAccess" value="always" />';
object += '<param name="movie" value="'+ res +'" />';
object += '<param name="wmode" value="transparent">';
object += '<param name="quality" value="high" />';
object += '<param name="bgcolor" value="#ffffff" />';
object += '<embed id="'+ id +'" name="'+ id +'" src="'+ res +'" quality="high" wmode="transparent" width="'+ width +'" height="'+ height +'" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
object += '</object>';
return object;
}
这样子的话object和embed的id和name都一样,这样子的话ie下能执行,火狐下虽然能获取到对象,但是就是找不到方法。
后来的代码:
function cEMedia(id,res,width,height){
var width = parseInt(width),height = parseInt(height);
var object = '';
object = '<object id="'+ id +'_ob" name="doubleGame" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="'+ width +'" height="'+ height +'" align="middle">';
object += '<param name="allowScriptAccess" value="always" />';
object += '<param name="movie" value="'+ res +'" />';
object += '<param name="wmode" value="transparent">';
object += '<param name="quality" value="high" />';
object += '<param name="bgcolor" value="#ffffff" />';
object += '<embed id="'+ id +'_em" name="doubleGame" src="'+ res +'" quality="high" wmode="transparent" width="'+ width +'" height="'+ height +'" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
object += '</object>';
return object;
}
将object和embed的id名字加以区分,就可以了
获取flash对象的代码
function getFlashMovieObject(movieName){
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName+"_ob"];
} else {
return document[movieName+"_em"];
}
}
浏览器兼容问题愁啊