一、需求分析:
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();
}
};
来源: 闪吧