传奇脚本语言粗解

传奇脚本语言粗解
传奇脚本语言粗解

第一节:序言

很多人都或多或少的接触过传奇服务器端脚本文件,也很想自己制作一点脚本来试试,但又不敢乱碰生怕改坏一点东西造成不能运行服务器端,其实“脚本语言“(我们暂且称他为一种语言)和C语言等等程序语言比起来那真是不值得一提。看完我给大家写的这篇文章后,你就自己偷着做吧...

可以说传奇服务器端所有的重点都集中在\mir200\envir\中,这里面记载着所有服务器要在游戏中表现的东西。在游戏中的npc信息也在其中,npcs.txt文件和merchant.txt文件中记载着npc的名称、出现的地图、坐标、范围和形象代码。你要问两个记载的npc有什么不同?为什么不和在一起算了?我来告诉你,npcs.txt中记载的npc是对话型npc,在进入游戏后,不能够使用@reloadnpc刷新信息的npc。而merchant.txt是交易型和任务型npc,可以使用@reloadnpc刷新信息。但我也做过试验,两种npc互换后也可以使用,好像没有太大的限制。

npcs.txt对应的文件在.\npc_def\文件夹中,merchant.txt对应的文件在.\market_def\文件夹中。你如果要添加npc的时候,要注意npc的文件名,例如你要创建一个超级商人的npc要他出现在比奇省330:330的坐标。首先你要在.\market_def\文件夹中创建一个文本文件命名为“超级商人-0“(这里你可以使用英文,也可以使用中文,但后面的数字必须要是这个npc出现的地图代码!),然后把你写好的脚本粘贴在里面。再打开merchant.txt文件,添加以下信息:

;调用的文件地图坐标x 坐标y 范围人物代码刷新时间

超级商人0 330 330 0 5 0

相信大家可以看懂吧,这里面的空格不要紧,没有规定信息之间必须空几格。人物代码自己换吧,现在的npc有46种模样。

和脚本的规则一样,这两个文件里面以;开头的行就当作注释部分不做编译。

第二节

现在步入正题,谈谈脚本的制作。

npc脚本分为两种,一种是不做交易的npc,一种是与之交易的npc。我们先来讲不做交易的npc

这类脚本的开头一般以[@main]开头,但并不是必须以他开头,main的英文意思是“主体,主要部分”的意思,所以用他这是个好习惯。

接着就是条件语句#if,和他对应的#act,就是说如果...那么...,我在之前的《脚本语言之不完全公略》一文中提到了一系列的测试语句。#if后面可以跟这个测试语句,比如测试金钱checkgold,测试级别checklevel等等,这些测试语句可以连用,挑选满足这所有值的人。如果你想不要任何条件的话就把他留空,后面直接接#act.

接着就是#act,如果有人满足了上述条件,那么...我们可以使用一些命令应用于他,比如take拿走他身上的什么东西,mapmove把他移动到什么地图,set赋予他什么函数值等等。这些语句你也可以连着使用。后面也可以跟文字,那么就在传奇里面显示为对话。

下面是#ELSEACT,如果没有满足#if条件的,就不再运行#act后面的指令,直接运行#ELSEACT后面的指令。后面也可以跟文字,那么就在传奇里面显示为对话。

#say和#elsesay的用法和#act#elsesay的用法相同。

范例:

----------------------------

;传送猪7的npc脚本

[@main]

#if

checkgold 10000

checklevel 30

#act

take 金币10000

map d717

break

#elsesay

你有10000个金币吗?要不然就是你没有30级。我不能把你传送到猪7了!自己跑吧。<关闭/@exit>

----------------------------

这就是一个极其简单的传送脚本。我们下一节讲稍微复杂的段落脚本。

第三节

这一节我们来讲段落脚本。

复杂的脚本需要有数个[@main][@main-1]等等组成,从[@main]到[@main-1]之间称为一个段落,他们之间是由goto命令来衔接的,#if满足条件的话,#act就执行goto @main-1命令,转向[@main-1]段落。值得一提的是goto是脚本自动做出转换段落的命令,还有一种转换段落的方式,那就是要玩家自己选

择段落,7k7k小游戏。这部分将在游戏中显示为黄色可以点选的信息,玩家鼠标选择后转向main-1段落。

范例:

----------------------------

;赠送回城卷脚本

[@main]

#if

checkpkpoint 2

#act

goto @main-1

#elseact

give 回城卷1

[@main-1]

你是红名啊!别想让我可怜你,你是个十足的恶魔!什么?怒视着我干吗?信不信我现在就让你去死?<相信,我很害怕,我现在就走./@exit><不信,我杀人不眨眼,还怕你?/@main-2>

[@main-2]

#if

#act

Param1 t131

Param2 10

Param3 10

MonGen 弓箭守卫10 10

mapmove T131

;T131这个地图是赌场的审判间,20*20的房间内有10个弓箭手。50级的红名进去也是死...

-----------------------------

这个脚本如果不是红名的话就会得到一个回城卷,是红名的话就会有上述对话,选“相信”就关闭窗口

离开,选“不信”就被传送到t131地图,受到10个弓箭手的优待,HOHO~~~

这一节我们接触了“<>”和“\”符号,如果是“<选择/@xu anze>”定义了要指向的段落,在游戏中就显示黄色可点选的“选择”字样,如果“<选择>”没有定义要指向的段落,在游戏中就显示红色的“选择”字样。“\”是换行符号,文本文件和可以在游戏对话框中显示的信息都可以用“\”符号来换行。不可以用回车来代替。

第四节

这一节我们来研究一下设置函数的属性和概率问题

我觉得脚本里面最难的也就是这个啦,其实我也没有真正搞清其中的奥秘,只知道其中的一些使用的方法。

现在如果想制作脚本最主要的也就是做任务了吧,我看了盛大的命运之刃和制作炼狱的任务,其中都要定义一些函数值,就拿肉店任务来说,check [301] 1如果测试到某人[301]函数的值是1的话,那么#act goto @Q301否则#elseact goto @normal,那么如何定义某人[301]函数呢?用set [301] 1命令。但是现在我还没有弄清楚[]中所能定义的数字到底都有多少个,也不能乱定义数字的值,那样将会打乱原有任务。而且在盛大取消的赌场脚本里面有equal、mov好像也是检查函数定义函数的命令,但是只有在玩骰子的npc里面出现,像是专么测试骰子点数的函数,有待研究。

还有一种概率命令,那就是random,我们来看一个范例。

范例:

----------------

[@main]

#IF

random 2

#ACT

goto @QUEST

#ELSEACT

goto @normal

[@normal]

你好,欢迎你来自由自在论坛<关闭/@exit>

[@quest]

我们的网址是:https://www.360docs.net/doc/6713475740.html,<关闭/@exit>

----------------

这样一个脚本就牵扯一个概率问题,你在和这个npc对话的时候,看到2种信息的几率各有百分之50,也就是说每次你看到的信息都是随机的其中一个。注意这里面是2选1的时候,random的值就取2。

在显示文本的时候,还存在一些随服务器或不同玩家而自动变换的信息,这里我们就不得不提起沙巴克城。我们知道,沙巴克的npc总要显示“该城堡的主人是***,我们对***行会的成员提供20%的折扣”

那么不可能在每次沙巴克换主人后更改npc脚本,于是就有了这些随服务器变换的文本信息,<$LORD>显示为沙巴克城主的姓名,<$OWNERGUILD>显示为占领沙巴克的行会名称,<$CASTLEGOLD>显示沙巴克城堡的金钱,<$TODAYINCOME>显示为沙巴克今天的收入,<$CASTLEDOORSTATE>沙巴克城门的状态等等...另外还有现实不同玩家信息的命令<$USERNAME>,你手中的兵器<$USERWEAPON>。这些都用于加载在文本信息当中显示。

第五节

这一节我们来介绍交易类型npc

交易类型的npc于普通npc脚本大同小异,但是文件头部需要定义npc的属性。拿土城武器店npc做例子。

开头有个%100的字样,在石墓阵武器店的开头是%200,有什么区别呢?原来这是定义这个npc物价的语句。%200就是普通物价的2倍。那么接下来的+5、+6、+43是什么意思呢?这就定义了这个npc

只能和你交易武器,也就是说你在铁匠那里不能卖手镯。具体什么数字的组合代表什么npc,我在先前的《脚本语言之不完全公略》一文中有详解。你要是想要npc万能的话,可以在开头把要+的数字都给它+

上好了。

接下来就是脚本正文,和我们前几讲的差不多,但其中用到了一些固定含义的语言,不能当作他用。

@s_repair 特殊修理

@buy 购买东西

@sell 出售东西

@repair 普通修理

@makedrug 制作毒药

@storage 保管物品

@getback 取回物品

@exit 关闭窗口

@upgradenow 升级武器

@getbackupgnow 取回武器

交易型npc的结尾会有[goods]段落,这就是npc库存物品的显示栏,下面的写物品有一定的规则: ;名称数量时间

木剑10 10

八荒10 10

凝霜10 10

炼狱10 10

;屠龙10 10

还是那句话,不想显示的物品前面你就打上";"号。如果你想让武器店里面卖药,不改上面"+数字"的情况下,强行在[goods]里面加强效金创药10 10 反正我没有试过,刷不刷的出来你自己试喽...

范例:

;武器店,带特修,带仓库

%100

+5

+6

+43

; -------------(这里必须空一行)

[@main]

#if

#act

hello,<$USERNAME>,欢迎光临自由自在论坛我们将提供给你最优惠的服务。<买/@buy><卖

/@sell><修理/@repair><特殊修理/@s_repair><保管/@storage>东西<找回/@getback>东西<关闭

/@exit>

[@buy]

您想买些什么武器?\ \ <返回/@Main>

[@sell]

给我您要卖的武器.\ \ <返回/@Main>

[@repair]

您要修理武器吗?给我您要修理的武器.\ <返回/@Main>

;物品修理前的对话框

[~@repair]

看起来修好了,欢迎下次再来.\ <返回/@Main>

;物品修理后的对话框,注意这里的[~@repair]

;特修不需要添加类似对应段落,只在开头有<特殊修理/@s_repair>就可以,其对应段落写在

m2server.exe中。

[@storage]

需要保管什么东西?\ \ <返回/@Main>

[@getback]

请看目录决定找什么东西。\ \ <返回/@Main>

[goods]

;名称数量时间

炼狱10 10

银蛇10 10

魔杖10 10

无极棍10 10

井中月10 10

血饮10 10

命运之刃10 10

裁决之杖10 10

龙纹剑10 10

骨玉权杖10 10

赤血魔剑10 10

嗜魂法杖10 10

屠龙10 10

超级银蛇10 10

第六节

谈到交易类型npc脚本,我们不得不提仓库捆东西的脚本,看了才知道如此简单,就是用到了checkitem、take、give这几个命令。先检查你的包裹里面是否有这类物品,有了就拿取它们,给你一样东

西。捆金条和现在很多人自己制作的"武器升级"脚本也是这种原理,我看过一些"武器升级"的脚本,她和盛大的武器升级系统相比简直就是小儿科的玩艺,就是你拿一些东西去换另一种东西的脚本。我们来看个范例。

范例:

------------------

%100

[@main]

你好,欢迎光临自由自在论坛,我们会竭诚为您服务。您想<捆/@mbind>东西<关闭/@exit>

[@mbind]

#if

#say

你具体想捆什么东西?目前我能捆的就这些啦,捆一次手工费100块。<捆/@ch_bind1>强效金创药<返回/@main>

[@ch_bind1]

#if

checkitem 强效金创药 6

#act

goto @ch_bind1_1

#elsesay

你没有带齐东西啊,我没有办法帮你捆。<离开/@exit>

[@ch_bind1_1]

#if

checkgold 100

checkitem 强效金创药 6

#ACT

take 金币100

take 强效金创药6

give 超级金创药1

#SAY

已经捆好了... 我的技术不错吧.. 还有要捆的就拿给我吧.. <继续捆/@mbind> <离开/@exit>

#ELSESAY

你都没有钱捆东西,还捆什么? 快走吧.... <离开/@exit> [@main]

#if

check [099] 1

#say

<$USERNAME>如果你刚才已经下过线了,\那请到

监狱长那里重新登记吧!\要不你是出不去的!

<好的/@cxsz> 我喜欢<呆在这里/@exit> <我

没有下过线/@exit>

#elseact

goto @cd

[@cd]

<$USERNAME>你是来看望你朋友的吗?你要回去

了?<回土城/@yes> <再等会吧/@exit>

[@cxsz]

#act

set [099] 0

mapmove 0128

break

[@yes]

#act

mapmove 3 320 320

break

监狱长-0128.txt内容如下:

[@main]

#if

check [099] 0

#say

<$USERNAME>你将被重新送往监狱!\时间将重新开始计算!谁叫你中途下线的呀,活该!

<好的/@cxsz> 我喜欢<呆在这里/@exit>

[@cxsz]

#act

set [099] 1

timerecall 120

mapmove 0162

break

#elseact

goto @cd

[@cd]

<$USERNAME>希望下次不要再见到你了哦<回土城/@bye> 我还想<再呆会儿/@exit> [@bye]

#act

set [099] 0

mapmove 3 320 320

break

再在Npcs.txt里加入两行:

监狱长0 0128 3 5 0 8

地牢看管员0 0162 6 15 0 15

Flash中的动作脚本

Flash中的动作脚本 1.1什么是ActionScript ActionScript是Flash的脚本语言。可以使用ActionScript控制Flash中的对象,创建向导和交互元素,也可以扩展Flash,制作高级交互影片和Flash交互网站。 1.2动作脚本所附加的位置 1.附着在按钮实例上 方法:选择场景中的按钮,单击鼠标右键,从弹出的快捷菜单中选择“动作”(Action),在打开的“动作”面板中添加ActionScript脚本。 使用:在动画播放时,发生按钮事件时,即会触发附着在其上对应事件的捕捉函数并运行该函数或指令。 2.附着在关键帧上 方法:在想要附着动作脚本的关键帧上单击鼠标右键,从弹出的快捷菜单中选择“动作”,在打开的“动作”面板中添加动作脚本。 使用:在动画播放时,只要该关键帧被播放一次,附着在它上面的脚本就执行一次。 显示:附着有动作脚本的关键帧会显示一个a。 3.附着在影片剪辑上 方法:在场景的影片剪辑上单击鼠标右键,从弹出的快捷菜单中选择“动作”,在打开的“动作”面板中添加动作脚本命令,该脚本就附着在影片剪辑上。 使用:当对影片剪辑发生各种事件时,就触发了附着在其上的捕捉函数,开始运行捕捉函数中的脚本命令。 1.3ActionScript相关述语 1.实例:属于某个类的对象,同类对象的实例具有该类对象的所有共同特性。例如每一个影片剪辑都是MovieClip类的一个实例,它们都具有_x、_y、_alpha 等属性。每个实例都对应着一个标识该实例的标识符,称为实例名称。要用程序控制或使用某个实例,就需要用到实例名称。例如,要让影片剪辑实例(名称为myCan)中的动画播放,可以使用如下脚本程序:“myCar.play();”。其中,myCar 表示实例名称,play()是MovieClip类的方法,它们之间用(.)连接起来。 2.对象:特定类的实例,是属性和方法的集合。按钮是对象,影片剪辑是对象。 3.事件:是SWF文件播放时对象所发生的动作。例如,单击按钮,按下键盘上的键,动画播放到某一帧等都是事件。 1)按钮事件 a)onDragOut:当在按钮上按下鼠标,只要按住左键移到按钮外,就会开始执行 相应的动作。 b)onDragOver:在按钮上按下鼠标,并按住移开按钮,然后又移到按钮上,并 且在些过程中一直没有释放,则开始执行相应的动作。

flash动画代码中的flash动作代码大全

flash动画代码中的flash动作代码大全 一、几种Action命令 1.影片的播放与停止: Play( );//播放命令 stop( );//停止命令 2.改变Frame流向命令 gotoAndPlay(frame) //跳到指定的画面并连续播放。 gotoAndStop(frame) //跳到指定的画面并停止播放。 gotAndplay(“场景名称”,frame)//跳到指定场景帧并连续播放。 gotoAndStop(“场景名称:,frlme)//跳到指定场景帧并停止播放。 nextFrame( );//跳到下一帧播放; PrevPrame( );//跳到上一帧播放。 3.控制影片剪辑的播放与停止:tellTarget命令 如:tellTarget(“C1”) {gotoAndStop(2);}//跳影片剪辑实例C1的第2帧并停止。 二、几种功能元件的制作方法 1.计时器的制作 单击菜单Insert/new symbol,在弹出的对话框中输入插入的符号名称(如:计时器),确定后选择文字工具,属性为动态(Dynamic text),在第一帧中画两个文本框。分别设置变量名为munite和timer,在两个文本框之间画一个形如冒号的圆点(这两个圆点可以做成一个符号,类型为电影片段,每秒闪动一次.然后拖入到两文本框之间。在第二帧插入帧。在第一帧输入动作脚本(Action)如下: //设置时间的初值 if(!started) { start_time=getTimer(); started=true; timer=0; i=o; munite=0; } x=getTimer()-start_time;//计算时间的变化 x=int(x/1000); //时间的单位为1000分之一秒 y=x-60*i if (y>59) {i=i+1;munite=munite+1 timer=timer+1: } else {timer=y} 该符号制作完毕后。将其拖入主场景中即可。 2.智能判断选择题,并作正误提示 单击菜单Insert/new symbo1,在弹出的对话框中输入插入的符名称。如:“对错提示”。 符号类型为“电影片段”。在第一帧输入文本“在括号内输入答案,按enrer键确定“在 该帧上输入动作脚本: _root.flah=false;_root.ans=" ";gotoAndStop(1);在第16帧插入空关键帧。在该帧上 画一个形如“x”的图或输入文本“x”,在第30帧插入关键帧,帧AAction为_root.ans=" ":gotoAndStop(31);在第31帧插人空白关键帧,在该帧上输人静态文本“请重作,按e nter键确定。“在该帧输入脚本:“stop();”至此,该符号制作主或:例如:

vbscript基本语法

什么是VBScript?VBScript的全称是Visual Basic Script,有时也简称为VBS。VBScript是微软开发的一种脚本语言,可以看作是Visual Basic的简化版,目前这种语言广泛应用于网页和ASP程序。与VB不同,VBScript不能生成独立的exe可执行文件,需要由其它软件解释才能运行。有许多软件支持VBScript,比如微软IE浏览器和Office等。VBScript的局限是只能运行于Windows操作系统和基于IE的浏览器,而JavaScript则受到所有网页浏览器的支持,因此JavaScript用的比较多 运算符号 运算符 求幂 ^ 负号 - 乘 * 除 / 整除 \ 求余 Mod 加 + 减 - 字符串连接 & 逻辑运算符 逻辑非 Not 逻辑与 And 逻辑或 Or 逻辑异或 Xor 逻辑等价 Eqv 逻辑隐含 Imp 比较运算符 等于 = 不等于 <> 小于 < 大于 > 小于等于 <= 大于等于 >= 变量 VBScript中变量可以不声明,直接使用。但有时不声明会出错,所以建议养成声明变量的好习惯。变量声明有两种方式——显式与隐式,显式使用Dim、Public、Private语句进行声明,隐式直接使用变量名。使用隐式声明方式的习惯不好,因为这样有时会由于变量名拼错而导致程序运行出现意外,因此,最好在每个脚本开始第一行使用Option Explicit语句强制显式声明所有变量。声明示例如下: Option Explicit Dim i, conn '声明多个变量时用逗号隔开 Public UserName, Password

FLASH动作脚本基本知识

FLASH动作脚本基本知识 第一讲动作脚本基本知识 一、动作脚本概念动作脚本就是Flash MX 为我们提供的各种命令,运算符以及对象,使用动作脚本时必须将其附加在按钮、影片剪辑或者帧上,从而使单击按钮和按下键盘键之类的事件时触发这些脚本。以便实现所需的交互性。 学习动作脚本的最佳方法是对其进行实际操作,即使对动作脚本没有完全理解,也不影响对其控制功能的使用,一样能够实现简单的交互性操作,经过一段时间的实践对基本的动作(如play 和stop)运用自如,对动作脚本略知一二后,就可以开始学习关于此语言的更多知识了。 二、动作脚本面板当我们为帧,按钮或影片剪辑指定动作时必须使用动作面板,动作面板的结构如示例1.1 三、基本动作控制命令 1 停止命令格式; stop(); 说明动作;停止播放头的移动 2 播放命令 格式;play(); 说明动作;在时间轴中向前移动播放头。 3 转移命令gotoAndPlay(scene, frame) 参数scene 播放头将转到的场景的名称。frame 播放头将转到的帧的编号或标签。 动作;将播放头转到场景中指定的帧并从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。以上三个命令是动作脚本中最常用的基本动作,它们通过对时间轴上播放头的控制实现的特定功能,在对播放头实施控制时一般有多种方法可供选择,但最常用的是在坐标系内部实施控制和在不同坐标系之间实施控制,前者直接使用命令就可以实现目的(见示例1.2和示例1.3),后者则必须使用目标路径才能实现控制功能(见示例1.4和示例1.5) 四按钮 使用按钮元件可以在影片中创建响应鼠标点击、滑过或其它动作的交互式按钮。可以定义与各种按钮状态关联的图形,然后指定按钮实例的动作。请参阅为按钮指定动作。在单击或滑过按钮时要让影片执行某个动作。您必须将动作指定给按钮的一个实例;该元件的其它实例不受影响。 当为按钮指定动作时,必须将动作嵌套在on 处理函数中,并指定触发该动作的鼠标或键盘事件。当在标准模式下为按钮指定动作时,会自动插入on 处理函数,然后您可从列表中选择一个事件。您也可用动作脚本Button 对象的事件在发生按钮事件时执行脚本。************************************************ 注释1:命令中的圆括号(1) 圆括号一般用来放置函数的参数以便传递这些参数,我们所学习的各种命令,也都可以称为函数.

flash动画脚本实例

按钮AS的编写 AS 脚本可以写在时间轴的关键桢上,也可以写在对象本身上面。按钮也既可以写在时间轴上,也可以写在按钮本身上面,这两种编写规则都要遵循一定的规矩。第一种:把脚本写在按钮本身 一、在舞台上绘制一个矩形, F8将这个矩形转换成按钮元件。 二、编写动作脚本: 选中按钮, F9打开动作面板,在专家模式下输入以下脚本: on(release){ getURL("https://www.360docs.net/doc/6713475740.html,/","_blank") } 现在这个按钮就实现了一个打开网页的功能。通过例子你应该注意到,按钮的 AS 书写规则就是: on(事件){ //要执行的脚本程序,刚才的例子是用 getURL 来打开一个网页。你也可以使用脚本程序来 执行其他功能,例如跳转到某一个桢,或载入外部一个动画文件。 } 其实就一个 on语句,这个 on语句就是按钮的 AS 编写规则了。需要注意的是on 里面的事件,这个事件你可以理解为是鼠标或键盘的动作。刚才的例子我们使用的事件是 release(按一下鼠标)我现在把常用的按钮事件列出来: 事件名字说明 Press 发生于鼠标在按钮上方,并按下鼠标 Release发生在按钮上方按下鼠标,接着松开鼠标时。也就是“按 一下”鼠标 Releaseoutside发生于在按钮上方按下鼠标,接着把光标移动到按钮之 外,然后松开鼠标 Rollover当鼠标滑入按钮时 Rollout当鼠标滑出按钮时 Dragover 发生于按着鼠标不放,光标滑入按钮 Dragout发生于按着鼠标不放,光标滑出按钮 Keypress发生于用户按下特定的键盘按键时 第一种:把脚本写在时间轴上 一、选中按钮,在下面的属性面板中为按钮起一个名字bt 二、选中时间轴的第一桢,按 F9 打开动作面板。输入如下脚本: bt.onrelease = function() { getURL("http:// https://www.360docs.net/doc/6713475740.html,/", "_blank"); }; 这种编写 AS 的方法要遵循的规则就是下面的公式而已: 按钮实例的名字.事件名称=function(){ //要执行的脚本程序。 } 大家只要记住这个公式就可以套用了。

实验6 VBScript脚本语言编程练习

实验六VBScript脚本语言编程练习 【实验目的】 通过本实验,学会使用VBScript脚本语言中的自定义函数、过程、分支语句和循环语句,编写嵌入VBScript代码的ASP程序和HTML程序。 【实验题目】 1、设PI=3.14,分别用两种方式实现,第一种,定义一个求圆面积的函数,调用它求任意 半径的圆面积;第二种,定义求圆面积的过程,调用半径为6的圆面积;(2个题目) 2、用for—next循环语句,实现1到100的平方和; 3、应用Rnd函数和Select Case语句,实现网页每刷新一次,背景色在四种颜色中随机改 变。代码提示:randomize ChangeColor=int((4*rnd())+1) ‘产生四个随机整数 4、练习使用循环语句的嵌套,编写程序在网页上显示要求的图形; 【实验内容及步骤】 提示:(1)在wwwroot文件夹下利用“记事本”应用程序新建一个空白文本文档,双击打此文档后输入相应代码。 (2)输入完毕后点击“文件”—选择“另存为”选项,在弹出的对话框中“文件名” 处输入“area.asp”,再单击“保存”按钮,在wwwroot文件夹下就出现了一个新的文件area.asp。 (3)按照上个实验介绍的方法浏览网页。 6、练习使用JavaScript脚本语言,编写网页特效程序。 1. 水中倒影.htm


2. 文字变色.htm(VBScript特效) 变色的文字 这里,是文本啦,但不支持超连接 你有多少文本他都变色 你把我这些文本换掉吧 只把那些代码按照格式照做就是 3. 地震特效.htm 地震特效

flash常用脚本代码

一、play命令(播放) 1、使用格式 play() 该命令没有参数,功能是使动画从它的当前位置开始放映。 二、stop命令(停止播放) 1、使用格式 stop() 该命令没有参数,功能是停止播放动画,并停在当前帧位置。 三、gotoAndPlay命令(跳至…播放) 1、使用格式 gotoAndPlay(frame) 参数说明: frame:跳转到帧的标签名称或帧数。 该命令用来控制影片跳转到指定的帧,并开始播放。 2、用法举例 gotoAndPlay(10) 以上动作代码的作用是:让播放头跳转到当前场景的第10帧并从该帧开始播放。 四、gotoAndStop命令(跳至…停止播放) 1、使用格式 gotoAndStop(frame) 参数说明: frame:跳转到帧的标签名称或帧数。 该命令用来控制影片跳转到指定的帧,并停止在该帧。 2、用法举例 gotoAndStop(10) 以上动作代码的作用是:让播放头跳转到当前场景的第10帧并停止在该帧。 五、stopAllSounds命令(停止所有音轨) 1、使用格式 stopAllSounds() 该命令没有参数用来停止当前FlashPlayer中播放的所有声音。 六、if...else语句(条件语句) 1、使用格式 if (条件) { 语句1; } else { 语句2; } 当条件成立时,执行“语句1”的容。当条件不成立时,执行“语句2”的容。2、用法举例

if(a>b) { //判断a是否大于b trace("a>b"); //若成立,则输出a>b } else { trace("b>=a"); //若不成立则输出b>=a } 七、switch...case...default语句(条件语句) 1、使用格式 switch (表达式) { case值1: 执行语句1; break ; case值2: 执行语句2; break ; …… default: 语句; } 先计算表达式的值,然后去各个case子句中寻找对应的执行语句。如果找不到对应的执行语句,就执行default后面的语句。 2、用法举例 var n:Number = 25; switch (Math.floor(n/10)) { case 1 : trace("number=1"); break; case 2 : trace("number=2"); break; case 3 : trace("number=3"); break; default : trace("number=?"); } 输出结果:number=2 八、while语句(循环语句) 1、使用格式 while (条件) { 执行的代码块;

VBScript脚本语言讲义

. TypeName及VarType函数介绍,示例程序如下: 可用VarType 函数来返回某个数据的Variant 子类型,如下面的代码: Dim strInput,strVarType,strTypeName strInput="hello world" MsgBox strInput strVarType=VarType(strInput) MsgBox "VarType:"&strVarType strTypeName=TypeName(strInput) MsgBox "TypeName:"&strTypeName 问题:如下三段语句,结果分别是什么? Dim VarTypeCheck VarTypeCheck = VarType(300) MsgBox VarTypeCheck VarTypeCheck = VarType(#10/19/62#) MsgBox VarTypeCheck VarTypeCheck = TypeName("VBScript") MsgBox VarTypeCheck

. Option Explicit 声明,如果变量没有定义就使用要报错: Option Explicit Dim MyDate MyDate = "October 19, 1962" If IsDate(MyDate) then MyShortDate = CDate(MyDate) End if MsgBox MyShortDate 变量的作用域与存活期: Dim strMain Call ChangeValue Sub ChangeValue() Dim strSub strMain="hello world!" MsgBox "strMain InSub:"&strMain strSub="hello liuxiaolin" MsgBox "strSub InSub:"&strSub End Sub MsgBox "strMain in Main:"&strMain MsgBox "strSub in Main:"&strSub 数组的定义: Dim 数组名(n)实际上数据会有n+1个元素,下标从0到n Dim MyArray(10),i For i=0 To 10 MyArray(i)=i MsgBox MyArray(i) Next MsgBox "min is "&LBound(MyArray) '返回数组的最小可用下标 MsgBox "max is "&UBound(MyArray) '返回数组的最大可用上标 利用Redim重新定义数据的大小,加上preserve关键字保存原来数组的内容: Dim MyFamily() ReDim MyFamily(1) MyFamily(0)="0" MyFamily(1)="1" ReDim MyFamily(2)

flash 动画代码中的flash动作代码大全

flash 动画代码中的flash动作代码大全flash动画代码中的flash动作代码大全 一、外部调用swf 代码 on (release) { loadMovieNum("service.swf", 1); } 二、音乐代码外部调用数据loadVariablesNum("about.txt", 0); https://www.360docs.net/doc/6713475740.html,eCodepage = true;//中文 音乐加入 mySound = new Sound(); mySound.attachSound("1"); mySound.start(); 关闭指定音乐 mySound.stop("1"); 外部调用音乐 mySound=new Sound(); mySound.loadSound("music.mp3",true); mySound.start(0,100) 关闭音乐 mySound.stop(); 三、flash动画代码中的flash动作代码大全 链接场景: on (release) { gotoAndStop("猫的历史",1); } 外部调用 on (release) { loadmovienum("a.swf",1) } 清空文本框 _root.text="" On(Release)

Set Variable:"input" = "" Set Variable:"output" = "" End On 轻松实现Flash的全屏播放flash动画代码中的flash动作代码大全 许多人都看过这样的效果:把光盘放入光驱后,光盘自动运行,接着便是一段Flash制作的开 场动画,动画是全屏播放的,且右键点击无效,动画播放结束后,出现“关闭”按钮,单击该按 钮后,全屏动画关闭。 其实上面提到的全屏播放以及取消右键菜单等效果都是靠Fscommand指令在发挥作用。Fscommand指令主要是用来控制Flash影片播放器的,但也可以用来打开其它的应用程序。Fscommand指令只有在Flash影片播放器执行时才有效(.swf和.exe),在Flash制作过程中,按“Ctrl+Enter”预览动画,以及把动画发布成网页文件时,此指令无法发挥它的功能 。 Fscommand指令使用的语法是:Fscommand("command","arguments") Command是指令的相关命令,arguments是命令的参数。 下面我们就来讲讲如何通过Fscommand指令来实现全屏播放、取消Flash播放时的右键 菜单以及关闭Flash动画。 1、全屏播放Flash “Fullscreen”是全屏的意思,在默认的情况下,Flash动画不是以全屏播放(false ),如果需要让动画以全屏状态播放,就必须把Fullscreen命令设置为True,写为:Fscommand ("Fullscreen","True"); 根据需要,我们可以把它写到帧、按钮、MC(Movie Clip)中。 2、取消右键菜单 Showmenu命令是用来设置是(True)否(false)显示Flash动画播放器的快捷菜单的 全部指令,即右击鼠标时弹出的菜单,默认为True,如果要取消弹出的菜单,必须在第一 帧这样设置: Fscommand ("showmenu","false"); 3、关闭动画 quit命令是用来关闭播放器的.swf和.exe文件,该命令没有参数,写为: fscommand ("quit"); 如果你想在flash动画结束时出现一个关闭动画的按钮,可以按下面的步骤做。 执行“Insert”下的“New Symbol”(或按Ctrl+F8),在弹出的窗口中选Button,然 后制作一个简单的按钮,回到场景中,选中最后一帧,从“Library”中把刚刚建立的按钮 拖到场景中,因为该按钮在动画的最后才显示。

HTML语言与VBscript语言

HTML语言与VBscript语言 一HTML语言 大体结构如下: 内容 内容 例子L2-2.html 无标题文档 全套DREAMWEAVER的常用的HTML标签和属性解释.

基本结构标签: ,表示该文件为HTML文件 ,包含文件的标题,使用的脚本,样式定义等 ---,包含文件的标题,标题出现在浏览器标题栏中 ,的结束标志 ,放置浏览器中显示信息的所有标志和属性,其中内容在浏览器中显示. ,的结束标志 ,的结束标志 其它主要标签,以下所有标志用在中: ,链接标志,"…"为链接的文件地址 ,显示图片标志,"…"为图片的地址
,换行标志

,分段标志 ,采用黑体字 ,采用斜体字


,水平画线
,定义表格,HTML中重要的标志 ,定义表格的行,用在
中 ,定义表格的单元格,用在中 ,字体样式标志 属性: 属性是用来修饰标志的,属性放在开始标志内. 例:属性bgcolor="BLACK"表示背景色为黑色. 引用属性的例子: 表示页面背景色为黑色; 表示表格背景色为黑色. 常用属性: 对齐属性,范围属性: ALIGN=LEFT,左对齐(缺省值),WIDTH=象素值或百分比,对象宽度. ALIGN=CENTER,居中,HEIGHT=象素值或百分比,对象高度. ALIGN=RIGHT,右对齐. 色彩属性: COLOR=#RRGGBB,前景色,参考色彩对照表. BGCOLOR=#RRGGBB,背景色.
表示绝对居中.
表格标识的开始和结束.

flash动画脚本

1.控制类动作,这些动作是在FLASH 最常用到的动作:gotoAndPlay (x)跳转并播放,他的作用是跳转的指定的影格并播放。参数X为要跳至的影格,如gotoAndPlay (1)就是跳至第一个影格并播放。Play () :开始播放影片。stop () :停止播放影片。getURL ("x"):通过浏览器或者其他程序调用参数X的url,如getURL ("mail tg@https://www.360docs.net/doc/6713475740.html,")--就是给我写信了。stopAllSounds ():停止所有声音。toggleHighQuality ():将画质切换到高品质。print ( target, type ):打印影片剪辑,其中target为内容名称,type 为类型。fscommand ( command, arguments ):发送FS command 到影片中,如fscommand ( "quit" )就是退出影片播放。load/unloadMovieNum ("", 0):加载/卸载影片。tellTarget ( target ) :通知目标,用来控制以定义名称的影片播放,(target) 为目标。setProperty ( target, property, value ):设定目标对象属性值,property 为属性名,value为属性值。在ActionScript中包含的属性是很丰富的,我们在下面的属性篇有专门的介绍。delete :删除变量或者对象set ( name, value ):定义value 为变量值loadVariables ( url, target, method ):从URL中接受数据,一般用在读取外部的ASP、CGI、PHP程序。(我们做聊天室或者论坛就是靠的他了) 2.判断类动作if (<表达式>):假设...则....(基本上在什么语言里都有的语句。如果你连这个都看不懂的话,最好还是去看看编程的书) else:与if联用,如果表达式正确则执行if 后面的语句,如果表达式不正确则运行else后面的语句。ifFrameLoaded ():判断动画是否已经加载return ():在循环函数中返回值 3 函数类动作function name ():定义一系列的子程序,可以在其他的地方调用call ( frame ):调用指定的影格的子程序var :对本地变量进行定义 4 循环类动作while 、for、do....while :反复执行循环体内的程序continue :在嵌套循环中跳过终止循环,继续下一个循环break :终止循环二、运算符篇ActionScript 中为我们提供了大量的运算符,方便了我们程序的编写。其中包括算术运算符、逻辑运算符、字符串运算符、位运算符和混合运算符。算术运算符:+(加)、-(减)、*(乘)、/(除)、=(等于)。例如a= 10 ,b= 4 ,c= a*b ,c的值就是40 逻辑运算符:==(等于)、<> (不等于)、!>(不等于)、<(小于)、>(大于)、<=(小于或者等于)、>=(大于或者等于)、--(变量值减1)、++(变量值加1)、%(取余)、typeof(返回表达式类型)、void(返回不确定值)、and、(逻辑与运算)、&&(逻辑与运算)、||(逻辑或运算)、!(逻辑否运算)、not(逻辑否运算)。在算术运算符中的等于是赋值,在逻辑运算符中的等于是判断是否相等。例如if (i==1) {play ();},就是判断i是否等于1。递增运算符++和递减运算符--可以放在变量前后使用并且放在变量前后使用效果并不一样,放在变量前使用时表示变量在使用前+/-1,放在变量后使用表示变量在使用后+/-1。(如果还是不太明白,你只好去翻C语言书看看吧) 字符串运算符:add (连接前后两字符串)、eq(判断两字符串是否相等)、ne(判断两字符串是否不等)、lt(小于)、gt(大于)、le(小于或者等于)、ge(大于或者等于)。在表达式中被" "包含起来的符号就被认为是字符串,如a=\'123\'add"abc" ,a的值就是"123abc"。在字符串运算中ActionScript会自动把数字转化为字符串,同样在算术运算中ActionScript一样能把包含数字的字符串转化为数字。位运算符:%(按位与符号)、<<(左位移数字位)、>>(左位移数字位)、>>>(无标记右移)、^(按位异或))、|(按位或) 位运算在实际使用中并不常见,大家可以参考C语言手册进行学习。混合运算符:&=(字符连接后赋值)、%=(除法取余后赋值)、*=(乘法后赋值)、+=、-=、/=、<<=、>>=、>>>=、^=、|=与之类似。看完上面的介绍后,大家可以很清楚的看到,ActionScript中的运算符与其他的编程语言(C、BASIC等)极其类似,熟练掌握这些运算符对我们后面的制作是十分用帮助的。三、函数篇在任何一种编程语言中函数都是不可缺少的部分,在ActionScript也不例外,我们一起来看一下ActionScript所包含的函数。一般函数Boolean:转换及传回布尔值;escape:转换URL码符号成十六进制字符并以%区分显示;eval :将参数运算并回传值为变量;getProperty:取得对象参数;getTimer:取得影片开始播放的时间(以毫秒为单位);getVersion:取得系统FLASH 播放器的版本号;

FLASH AS动作脚本语言的语法规则

1.动作脚本语言的语法规则的操作技巧详解。 (包括点语法、大括号、括号、分号、//注释、常数、字符串、实例名称等语法规则的操作技巧详解)。 教学目的:使学员全面快速掌握编写动作脚本语言的语法规则和专业词语的真正含义作用功能等。 技巧经验 知识要点 1、要想学好FLASH的动作脚本语言,我们必须要掌握它的常见的语法规则。 2、点语法:用"."表示对象或者影片剪辑元件的相关属性、方法、路径、变量、函数等。 例1:表示一个影片剪辑元件的X坐标属性,它的语法是:ball_mc._x 其中ball_mc是一个影片剪辑元件,_x是该元件的X坐标属性。 例2:表示一个影片剪辑元件的方法,它的语法是:ball_mc.play() 其中ball_mc是一个影片剪辑元件,play()是该元件的方法,表示对该元件进行播放。 3.另外点语法还有几个重要的别名,必须要掌握: A:_root表示绝对路径,它指的是时间主轴(场景中的时间轴是主轴,影片剪辑元件等中的时间轴是子轴)。 例如:_root.play() 表示要时间主轴进行播放。 B:_parent表示当前影片剪辑的上一级时间轴(如:一级子轴的上一级时间轴是主轴,二级子轴的上一级时间轴是一级子轴)。例如:在当前影片剪辑的内部时间 轴上写入代码是,_parent.play() 表示当前影片剪辑内部的时间轴的上一级时间轴进行播放。C:this表示当前时间轴,可以操控当前时间轴上的对像等。 例如:this.play() 表示要当前时间轴进行播放。 4.大括号:用"{ }"表示把动作脚本语言组合成块(一个完整的语句)。 5.括号:用"()"表示放置函数的参数,要注意的是参数都必须放在括号内。 6.分号:用";"表示1行语言代码的结束。 7.大小写字母:在动作脚本语言中,除了关键字以外是不区分字母的大小写的。 8.注释:用"//"表示注释。注释中的内容不影响程序的运行,目的是更好的理解和备忘自己的程序。它要求单独放在一行。如:// 定义对象属性。 9.关键字:在动作脚本语言中,像break、for、if、this、new、delete、while、whith等,它们本身是语言命令,不能用作变量、自定义函数或其他的标签名称,它们也称为保留关键字。 10.常数:指值始终不变的属性。如backspace、enter、space、tab等,它们是KEY对象的属性,指代键盘的按键。 11.数据类型:包括8大类型,分别是字符串、布尔值、对象、未定义等。 12.字符串:是由字母、数字、空格、标点符号等组成的字符的序列。可以用双引号("")来定义字符串,字符串区分大小写。如:text1="welcome",其中双引号中的welcome是字符串。 13.布尔值:是逻辑变量,它的值是true(真)或false(假)。 14.对象:是属性的集合,可以互相包含和嵌套,每个属性都有自已的名称和值。 如:https://www.360docs.net/doc/6713475740.html,c,它表示ccc是bbb的属性,而bbb又是aaa的属性。 15.为规范和方便动作脚本语言的编写,最好能够给实例名称加上一个后缀,表示它的对象类型。 如:ball_mc ,其中后缀mc表示影片剪辑类。ball_btn ,其中后缀btn表示按钮类。等等.... 16.下面是常用后缀和其相应的对象类型。 后缀所属的对象类型

关于flash动作脚本

关于Flash动作脚本--ActionScript ActionScript即动作脚本,简称AS。在Flash动画中,使用AS 可以使动画实现交互或完成某些特效。 一、AS要写在什么地方,什么时候AS被触发执行? 1、关键帧: 写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,写在这个帧上面的AS就被触发执行了。 例如要让影片播放完成后停在最后一关键帧,操作方法就是点选最后一帧关键帧,然后打开动作面板,在面板中输入stop()。 2、按钮: 不同于关键帧上面的AS,按钮上面的AS要有触发条件。要把AS 写在按钮上,操作方法是点选目标按钮,然后打开动作面板。 例如:假设有个按钮,效果是按下按钮后停止播放,那么步骤如下:做一个按钮,放到主场景,点选按钮,然后打开AS面板。现在如果也在按钮上写: on(release){ stop(); } //这里要比帧的动画多这些代码: on(release){} 其中release是鼠标的触发事件事件之一,作用是松开按钮,按钮的常用事件:

写在按钮上面的AS的格式:on(事件){要执行的代码} ,即按钮上的3、MC(影片剪辑) 写在影片剪辑上的AS和写在按钮上的大同小异。操作方法就是点选影片剪辑,然后打开动作面板。看个例子: onClipEvent(load){ stop(); } 这里load代表一个事件。影片剪辑的事件有下面这些: 写在MC上的代码格式: onClipEvent(事件){代码}

二、AS中的对象和方法 虽然AS不是真正的面向对象的编程,但它的概念贯穿整个AS的始终。 1、AS中的对象 新建一个Flash文件,先创建一个命令按钮,然后创建一个影片剪辑,将命令按钮拖到影片剪辑中,命名为“myBtn”。将影片剪辑拖到主场景中,命名为“myMC”。现在如何表示主场景、影片剪辑、和按钮呢?方法如下: _root――主场景(主时间轴) _root.myMC ――主场景中的剪辑myMC _root.myMC.myBtn ――主场景的剪辑myMC中的按钮myBtn 这里的_root是Flash的关键字,表示主场景的 Timeline (时间轴)。 2、AS中的方法 当你找到这个对象后,才能对对象进行操作,才能给对象施加方法。比如要主场景停止播放,就是使用 _root.stop(); 主场景中的影片剪辑停止播放,就是 _root.myMC.stop(); 3、点语法和路径

flash动作脚本详解(免费)

详解 一、FLASH脚本基础入门讲解 (1) 二、按钮AS的编写 (4) 三、影片剪辑的AS编写 (5) 四、动态文本框 (6) 五、影片剪辑的拖拽 (8) 六、流程控制与循环语句 (10) 七、绘图及颜色的AS的编写 (12) 八、声音AS 的编写与控制 (14) 九、时间日期的AS编写 (17) 十、点语法以及路径 (18) 十一、深入了解时间控制 (20) 十二、无条件转移 (25) 十三、变量 (29) 十四、运算符(一) (35) 十五、变量(二) (39) 十六、影片剪辑的属性 (43) 十七、再讲循环语句 (49) 十八、影片剪辑处理函数 (55) 十九、复制影片剪辑 (60) 二十、深入startDrag()与stopDrag() (63) 二十一、for循环 (67) 二十二、while与do while循环 (71) 二十三、循环语句的嵌套 (75) 二十四、组件 (77) 二十五、播放器控制与网页连接以及动画发布输出 (80) 二十六、loadV ariables命令 (81) 二十七、影片剪辑的深度 (82) 二十八、文本框 (84) 二十九、超文本标签 (85) 一、FLASH脚本基础入门讲解 认识“动作”面板 在Flash中,动作脚本的编写,都是在“动作”面板的编辑环境中进行,熟悉“动作”面板是十分必要的。 按【F9】键调出“动作”面板,可以看到“动作”面板的编辑环境由左右两部分组成。左侧部分又分为上下两个窗口。。

左侧的上方是一个“动作”工具箱,单击前面的图标展开每一个条目,可以显示出对应条目下的动作脚本语句元素,双击选中的语句即可将其添加到编辑窗口。 下方是一个“脚本”导航器。里面列出了FLA文件中具有关联动作脚本的帧位置和对象;单击脚本导航器中的某一项目,与该项目相关联的脚本则会出现在“脚本”窗口中,并且场景上的播放头也将移到时间轴上的对应位置上。双击脚本导航器中的某一项,则该脚本会被固定。 右侧部分是“脚本”编辑窗口,这是添加代码的区域。可以直接在“脚本”窗口中编辑动作、输入动作参数或删除动作。也可以双击“动作”工具箱中的某一项或“脚本编辑”窗口上方的【添加脚本】工具,向“脚本”窗口添加动作。 在“脚本”编辑窗口的上面,有一排工具图标,在编辑脚本的时候,可以方便适时的使用它们的功能。 在使用“动作”面板的时候,可以随时点击“脚本”编辑窗口左侧的箭头按钮,以隐藏或展开左边的窗口。将左面的窗口隐藏可以使“动作”面板更加简洁,方便脚本的编辑。 好了,动作面板就介绍这些,有个印象,不要求记住,工具栏上每个工具的作用和功能将在以后的课程中边用边熟悉。 如何编写flash中的脚本 首先,要知道编写脚本,不需要用户对AS有完全的了解! 现在要考虑的问题是,如何在你的flash中添加编写脚本?简单的说,添加脚本可分为两种:一是把脚本编写在时间轴上面的关键桢上面(注意,必须是关键桢上才可以添加脚本)。二是把脚本编写在对象身上,比如把脚本直接写在MC(影片剪辑元件的实例)上、按钮上面。 此外,大家也需要简单理解一下flash是如何执行你编写的脚本的。当你在时间周的关键桢上添加了脚

flash中的as脚本语言基本教程

flash中的as脚本语言基本教程 flash中的as脚本语言基本教程(1) https://www.360docs.net/doc/6713475740.html,/eschool/video/flashas/【21视频之Flash as脚本视频教程】 https://www.360docs.net/doc/6713475740.html,/s/blog_4cc2bbc0010008r1.html【flash中的as脚本语言基本教程(1)】 写的这些教程,目的是希望初学flash的爱好者们能多动手,少提问。我下面这些教程面象有flash(mx) 基础操作知识的读者。在看我的教程的同时,希望也能打开flash,边看边做,这样你的印象会更加深刻一点,顺便也看看我哪里写错了:) as基础 做过flash动画的flash爱好者们都知道,要做好一个flash动画,as是必不可少的,即使只是很简单的几句代码也能起到整个flash画龙点睛的作用。这里我只简单的介绍一下as的基本常识。 首先我们要了解as要写在什么地方,什么时候as会被触发执行。 1、帧: 写在关键帧上面的as,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的as就被触发执行了。常见的例子有在影片结尾的帧写上stop() 等。操作方法就是点选关键帧,然后打开as面板。 2、按钮: 不同于帧上面的as,按钮上面的as是要有触发条件的。要把as写在按钮上,僮鞣椒ㄊ堑阊∧勘臧磁ィ缓蟠蚩狝s面板。举个例子能说的更明白。 假设有一个动画,要让它在播放完同时停止,那么,你要做的就是在这个动画的最后一帧写as: stop(); 再假设有个按钮,效果是按下按钮后停止播放,那么步骤如下。 做一个按钮,放到主场景,点选按钮,然后打开as面板。现在如果也在按钮上写:stop(); 那么,输出的时候就会提示错误。正确的应该这样写: on(release)< stop(); >这里要比帧的动画多这些代码: on(release)<> , 整个代码翻译过来就是: 当(松开)<

相关文档
最新文档