一、需求分析: 1:全屏页面分辨率需为 1024*768 假如低于此分辨率,画面精细的效果得不到体现。所以应该限制此分辩率以下的操作系统访问此界面。 2:打开的全屏窗口应该右上角有最小化、关闭按扭。 3:每个载入的窗口应该可以移动、关闭、最小化。 4:桌面上的图标可以拖动,双击。 5:屏幕底部有一个任务栏,当鼠标移至屏幕底部,任务栏从底部弹出。可以用一个按扭使其退回屏幕底部。
二、技术要点:
Java Script: Screen 对象 (object): 该对象具有以下属性(Properties): availHeight [有效高度], (有效高度=高度-任务栏高度) availWidth [有效宽度], bufferDepth [缓冲区大小], colorDepth[颜色深度], height [高度], width [宽度], updateInterval [更新间隔],
Window 对象 (object): 该对象具有以下属性(Properties): clientInformation[客户端信息], closed [已关闭], defaultStatus[默认状态],
dialogArguments [会话框返回数组], dialogHeight [会话框高度], dialogLeft [会话框距屏幕左], dialogTop[会话框距屏幕顶], dialogWidth[会话框宽度], (以上5 个属性只适用于己于人showModalDialog() 创建的形式会话框) document[文档], event[事件], history[历史], length*[长度], location[位置], name[名称], navigator[浏览器], offscreenBuffering [关闭屏幕缓冲 Y/N ], opener [script 开窗口都有opener 指向开这个的窗口 你自己开的浏览器就是空的 window.close 根据这个判定的是否提示] parent*,[父窗口] returnValue[返回值], screen[屏幕], self[自身], status[状态], top* [是否顶窗口]
*An asterisk indicates properties not applicable to modal dialogs. 带*号的属性不可用于 modal dialogs (由 showModalDialog() 创建的形式会话框).
Collections (集合)
frames* [框架]
方式(Methods):
alert[警告], blur[最小化], clearInterval [取消间隔], clearTimeout[清除超时设置], close[关闭], confirm [确定] (object.confirm([message]) 是否确定?此函数将返回一个逻辑值 ), execScript[执行代码], focus[聚焦], moveBy[相对移动], moveTo[移动到], navigate[导航 =window.location.href 本地URL ], open* [打开], prompt [提示], resizeBy [相对缩放], resizeTo [缩放到], scroll[卷动], scrollBy[相对卷动], scrollTo[卷动到], setInterval[设置间隔], setTimeout[设置超时], showHelp[显示帮助], showModalDialog* [显示形式会话框]
*An asterisk indicates properties not applicable to modal dialogs. 带*号的属性不可用于 modal dialogs (由 showModalDialog() 创建的形式会话框).
事件(Events):
onbeforeunload[关闭前], onblur[最小化], onerror[错误], onfocus[得到焦点], onhelp[帮助], onload[载入], onresize[缩放], onscroll[卷动], onunload [关闭]
flash Action Script:
on (press [按], release [释放], releaseOutside [外部释放], rollOver [滑过] , rollOut [滑离], dragOver [拖过], dragOut [拖离], keyPress "" [按键])
GetUrl [转到连接] ("javascript :self.close()"); StratDrag("MovieClip"); [开始拖曳] StopDrag("MovieClip"); [停止拖曳] loadMovie("*.swf", "MovieClip"); [加载影片到MovieClip] LoadmovieNum ("*.swf",n); [加载影片到第n层] UnLoadmovie("*.swf"); [卸载影片] play()[播放]; stop()[停止];
pc_today=new Date();[新建日期对象] pc_today.getHours();[时] pc_today.getMinutes();[分] pc_today.getTime();[秒]
.getBytesLoaded();[已载入字节数] .getBytesTotal();[需载入的字节总数] _root.getBytesTotal 表示当前SWF文件的字节数.
on(release){ getURL("javascript :self.close()"); // [转到连接] } 执行JS代码,关闭当前窗口,同样的 getURL("javascript :self.blur()"); 可以使当前窗口最小化.
三、程序代码 1,控制在1024*768 分辨率以上可以打开全屏的 JS代码。 将此代码放入 <Body></Body> 区。 <script language="JavaScript" type="text/JavaScript"> <!-- function cc_openBrWindow(theURL,winName,features) { //v2.0 if(screen.width>=1024 && screen.height>=768) { window.open(theURL,winName,features); } else { alert("请将分辨率调至 1024 * 768 以上获得最佳显示效果.^_^!") } } //--> </script> <a href="#"><IMG SRC="image/index_06.gif" ALT="Enter The Flash SITE! Best View Mode 1024*768*24 bit." WIDTH=209 HEIGHT=53 border="0" onClick="cc_openBrWindow(\\'\\'flash/index.html\\'\\',\\'\\'full\\'\\',\\'\\'fullscreen=yes\\'\\')"></a>
2,Flash 中测试mp3 载入百分比的 AS: 说明:主场景中有一名为loadmp3 的 MovieClip .用于载入 mp3 转成的SWF 文件,也可直接载入mp3.
做一个 100 帧的 loading MovieClip 名为loading_mv . 做一个两帧的无图象的MovieClip 名为loading_mv_test .
第一帧代码如下: mp3loaded = _root.loadmp3.getBytesLoaded(); mp3total = _root.loadmp3.getBytesTotal(); mp3percent = 0; if (mp3total>1000 && mp3loaded>10) { //当主场景中的 loadmp3 没有载入影片 mp3loaded的值为1 ,而不为0 ; //因为有一个字节来表示这个 MovieClip mp3percent = int (mp3loaded/mp3total*100); _parent.gotoAndstop(mp3percent); } else { _parent.gotoAndstop(1); } pctoday = new Date(); pctime = pctoday.getHours() add ":" add pctoday.getMinutes() add ":" add pctoday.getSeconds(); //在场景中建立一个动态文本对象,变量名为pctime, 就可以实时显示系统时间了。
第二帧代码如下: gotoandplay(1);
3,桌面图标的主要代码:
on (press) { startDrag(""); } on (release) { stopDrag(); frame = time._currentframe; if (settime == 0) { //settime ==0 表示还没有开始计时。settime ==1 表示已经开始计时。 time.gotoandplay(1); settime = 1; } //开使记时,设置记时位 settime . if (settime == 1 && frame<=6) { //开始计时的6帧以内,(0.5S) 再次释放鼠标。 loadMovie("000.jpg", "_root.picback.bak"); //也可以换成其他动作。 } else { settime = 0; //计时位复位。 } }
//time 为一个二十帧的 MovieClip, //在二十帧的as 为 stop();
四、原文件
点击浏览该文件 ******************************** 自己日常收集的和自己做的,给大家分享! 部分没有自己考究过,假如有错,请指出!
设置首页代码:
on (release) { geturl("javascript :document.body.style.behavior="url(#default#homepage)";document.body.sethomepage("http://www.flash8.net ")", "_self"); }
加为收藏代码:
on (release) { geturl("javascript :window.external.addfavorite("http://www.flash8.net")", "_self"); }
判定输入是否为数字的函数:
on(release){ if(Number(pass)==NaN){//判定输入是否为数字 pass=""; }
检查E-MAIL的函数:
function checkemail(email) { var str = new String(email); var arr_email = str.split("@"); if ((arr_email.length != 2) || (arr_email[1].indexOf(".")<1)) { return (false); } else { return (true); } }
延时函数:
function showTime(second, option) { //延时函数 this.createEmptyMovieClip("t_mc", 9999); t = getTimer(); f = false; if ((getTimer()-t)>(second*1000)) { option(); } } function go() { //加入效果 jpg2._y = jpg2._y+77; jpg2._alpha = jpg2._alpha-15; } fscommand("fullscreen", "true"); createEmptyMovieClip("jpg1", 1); createEmptyMovieClip("jpg2", 2); jpg1.loadMovie("1.jpg"); jpg2.loadMovie("2.jpg"); i = 0; while (i<=100) { showTime(0.1, go); i = i+20; }
FLASH中的保留小数的函
int(你的数*10)/10; 这样是保留一位 乘上100就是两位。以此类推
FLASH脚本实现关机
flash5: fscommand ("exec","rundll"+chr(9)+"user.exe,exitwindows");
鼠标双击问题!
lsn_DbClick = new Object(); lsn_key = new Object(); lsn_DbClick.onMouseDown = function() { clickTime = getTimer(); if (clickTime-lastClickTime<=300) { trace("双击了鼠标"); } lastClickTime = clickTime; }; Mouse.addListener(lsn_DbClick); time = getTimer()-down_time; if (time<300) { //双击后的代码部分 } down_time = getTimer(); 怎样在从另一个swf中获取变量
loadMovieNum("vars.swf", 1["POST"]); _root.onEnterFrame = function() { trace(_level1.myvab); }; //当加载完毕后,输出就有值了...
鼠标右键及滚轮的代码
if Key.isDown(2){},(左键的代码是1)
左键:Key.isToggled(1) 右键:Key.isToggled(2) 滚轮:Key.isToggled(4) 滚轮1:Key.isToggled(4) PC机上用 滚轮2:Key.isToggled(3) MAC机上用 未知:Key.isToggled(3) this.onEnterFrame = function() { if (Key.isDown(2)){ trace("asdfjsdjkf"); } }
实现TAB功能
获得焦点 使用Selection.setfocus()函数 举个例子: 例如你在主影片中有N个文本框,变量分别为text1,text2.....你想使影片一播放就把焦点落到第一个 文本框你就在第一FRAME 加AS如下: Selection.setfocus("_root.text1");
我们可以举一反三
实现TAB功能 二
把这个N个文本框做组成一个数组 numarray=new array("_root.text1","_root.text2",....................."_root.textn"); 首先获得鼠标焦点 x=Selection.getfocus();/* x 获得鼠标焦点的一个字符串 for(i=0;i<=n;i++) { if(numarray[i]==x){ num=i; /*获得当前焦点在数组中的位置 } 然后编写TAB键功能 on (keyPress "<TAB>") { if (num==n){num=0;} else{num++;}
Selection.setfocus(numarray[num]);
} 按钮能像window那样用Tab键来转变选择 用button.onKillFoucus
*两点间画直线 *画螺旋线 *画正方形、圆、椭圆 *抛物线 *正弦、余弦线
使用方式:加到帧中就可
// 画直线 // / x1, y1: 起点坐标 // x2, y2: 终点坐标 // k是层次 Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) { this.linestyle(1); this.moveTo(x1, y1); this.lineTo(x2, y2); }; // 从(0,0)到(100,100)画一条线 _root.createEmptyMovieClip("mc", 10); mc.drawline(0, 0, 100, 100); // 画螺旋线 // w、h为宽和高 // f控制线的长短,用弧度表示 Movieclip.prototype.drawhelix = function(w, h, f) { for (var i = 0; i<f; i += 0.05) { this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h); this.linestyle(1); } }; // 以(100,100)为中央画螺旋线 _root.createEmptyMovieClip("luo", 1); with (luo) { drawhelix(5, 5, 13); _x += 100; _y += 100; } ,; // 多功能函数,可画圆,椭圆,正多边形等 // n为边数 Movieclip.prototype.drawmany = function(w, h, n) { f = 2*Math.PI; for (var i = 0; i<=f/n*(n+1); i += f/n) { this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h); this.linestyle(1); } }; // 画一正五边形 _root.createEmptyMovieClip("duobian", 2); with (duobian) { drawmany(50, 50, 5); _x += 250; _y += 100; // 5为多边形的边数,6.3为2pai } // 画一椭圆 _root.createEmptyMovieClip("tuo", 3); with (tuo) { drawmany(25, 50, 100); _x += 400; _y += 100; } // 圆 _root.createEmptyMovieClip("yuan", 4); with (yuan) { drawmany(50, 50, 100); _x += 400; _y += 300; } // 抛物线 Movieclip.prototype.drawparabola = function(l, r, k) { for (var i = -l; i<=r; i += 1) { this.lineTo(x=i, y=k*i*i); this.linestyle(1); } }; // 调用 _root.createEmptyMovieClip("parabola", 100); with (parabola) { drawparabola(50, 50, 0.05); _x += 200; _y += 200; // 顶点坐标 } // 正弦线,余弦类似 Movieclip.prototype.drawsin = function(n, k) { for (var i = 0; i<=90*n; i += 1) { this.lineTo(x=i, y=k*Math.sin(i*Math.PI/180)); this.linestyle(1); } }; _root.createEmptyMovieClip("sin", 101); with (sin) { drawsin(4, 50); _x += 200; _y += 200; // 顶点坐标 } Movieclip.prototype.drawwave = function(w, h) { for (var i = 0; i<=6.3; i += 0.01) { this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i)); this.linestyle(1); } }; _root.createEmptyMovieClip("wave", 105); with (wave) { drawwave(100, 100); _x += 200; _y += 200; // 顶点坐标 }
一个动态文本设置alpha函数。
function setAlpha(obj,alpha){ var rgb="0x"+(255*(100-alpha)/100).toString(16); rgb=rgb<<16|rgb<<8|rgb; obj.backgroundColor|=rgb; obj.borderColor|=rgb; obj.textColor|=rgb; }
一个遍历level0中所有MC的instance name的函数。(可以修改一下用在其他范畴)
function readAllMC(){ this.MCitem ; for(what in _level0){ if(typeof(_level0[what])=="movieclip"){ this.MCitem[what] = _level0[what]; } } }
设置MovieClip颜色:
MovieClip.prototype.setColor = function(c_color) { var mycolor = new Color(this); mycolor.setRGB(c_color); }; //调用: yourMovieClip.setColor(0xff0000);
怎样设as,拒绝影片被人用loadMovie导入
以下as一定要设在最上层桢动作第一行有效 _root._name = "nn"; this.onEnterFrame = function() { if (this._name != "nn" || _root.getDepth() != -16384) { this.unloadMovie(); } }; |