让 Flash 广告具有记忆功能
要实现的效果:
刷新或关闭页面的时候记住上次的播放头位置.
下一次打开页面动画接着上一次的位置继续播放.
应用:效果可以看经典论坛的 Banner 广告.
http://bbs.blueidea.com 实现代码如下(发布成AS1/AS2):
var deng = SharedObject.getLocal("remember");
if (deng.data.pos != undefined) {
gotoAndPlay(deng.data.pos);
}
this.onEnterFrame = function () {
deng.data.pos = _currentframe;
};
deng.flush();
FLASH 监视客户端分辩率
var displayX:Number = System.capabilities.screenResolutionX;
var displayY:Number = System.capabilities.screenResolutionY;
trace(displayX+","+displayY);
更多信息请查看 FLASH 帮助:capabilities (System.capabilities)
Flash作品的播放保护
如果实现swf文件不能在本地或者非法url中播放,就可以达到一定程度的保护效果。下面来讲一下实现的大致思路,
代码如下:
var this_url = _root._url;
if (substring(this_url,1,4) == 'file'){
//如果在硬盘上播放,作出处理
trace('对不起,禁止在本地播放!');
}else{
//表示在网页中播放,则检查是否是合法的URL地址
urlArray = this_url.split("/"); //对url地址分割
if (urlArray[2]!='yourweb.com'){
getURL("javascript:alert('访问被禁止!')");
}else {
getURL("javascript:alert('欢迎光临YourName!')");
}
}
注意:该段代码必须写在开头,具体的处理控制还需要细化才行。
因为客户端的安全性不并是很好,所以建议在服务器端作保护控制,下面的方法采用了服务器端的实现:
//访问保护
application.onAppStart = function (info){
this.domainList = new Array("http://210.64.45.41";,"http://210.64.45.38";,"http://vid
eo.idv.to";);
this.domainLength = this.domainList.length;
};
application.onConnect = function(client_obj) {
//限制访问
trace("user trying to connect from:" + client_obj.referrer);
var theReferrer = client_obj.referrer.toLowerCase();
for(i=0; i<this.domainLength; i++) {
var challenge = theReferrer.indexOf(this.domainList[ i ]);
if (challenge == 0) {
acceptit = 1;
break;
}
}
if (acceptit) {
trace ("correct domain, accepting connection");
application.acceptConnection(client_obj)
} else {
trace ("Sorry wrong domain, rejecting connection");
application.rejectConnection(client_obj)
}
}
关于跨域调用变量
System.security.allowDomain("www.zhugao.cn");
//要允许多个域,请用","隔开,例如("www.zhugao.cn", "zhugao.cn")
var mother:String = "mother";
loadMovieNum("http://www.zhugao.cn/son.swf", 2);
//允许www.zhugao.cn下的son.swf调用此影片(mother.swf)中的对象和变量
//反过来,如果要允许此影片(mother.swf)调用son.swf中的变量,则应该在son.swf中allowDomain
//没有allowDomain,将引起 *** 安全沙箱冲突 ***
//son.swf中的测试代码:sonTxt.text = _level0.mother;
保持加载swf原来的帧频
用setInterval:
function setFps()
{
nextFrame();
}
intervalID = setInterval(setFps,1000/20); //帧速率就是20了
加在movieclip后
clearInterval(intervalID );
intervalID = setInterval(setFps,1000/30);//帧速率就是30了
让 Flash 按钮实现双击
on(release){
time=new Date();
se=time.getSeconds();
mi=time.getMilliseconds();
t=Math.round(se*1000+mi);
b=a;
a=t;
c=a-b;
if(c<300&&c>0){
trace("双击成功")
a=b=c=0;//清零,以便下一次计算
}
}