文档库 最新最全的文档下载
当前位置:文档库 › 林登脚本语言指南

林登脚本语言指南

林登脚本语言指南
林登脚本语言指南

1.导论

林登脚本语言(LSL)是一种简单易学,并能给Second Life中的物体赋予生命的强大语言。它的语法与C/JAVA语言的风格类似,每一个脚本中都有一个隐型状态机。

同一个物体可以被赋予多个不同的脚本,也允许利用一个只有简单函数功能的脚本来进行升级。这使得脚本会表现出特定的功能(如“漂浮”,“跟随”等等)也允许他们联合起来组成新的行为。

脚本语言会被编译成可执行的代码,就像JAVA一样,代码可以在仿真器的虚拟机上运行。所有脚本分享仿真器分配的时间片,所以一个有很多脚本的仿真器能允许每个脚本执行时间更短,而不会降低性能。另外,每一个脚本在其自己的内存空间中运行,以防止脚本对仿真器的保护内存或者对其他脚本进行改写,使得脚本程序很难影响仿真器。

这个指南为读者介绍了LSL语言的基本特征,如何编辑和应用你的脚本,如何完善的引用标准常量,事件和库函数。

2.现在开始

你可能很想知道你可以利用LSL做些什么,你多久能掌握它。我们要开始一些简单的例子,解剖他们,并在同时向你介绍一些脚本的开发过程。

2.1. Hello Avatar

按照惯例,程序语言的教程总是以“Hello”开始,我们也不改变这个惯例。虽然这个小程序没有什么特别的用处,但这个例子可以让我们知道以下几件事:

"创建一个基本脚本

"脚本状态

"调用函数

"脚本事件

"在物体上应用脚本

2.1.1. 创建脚本

打开你的“清单栏(Inventory)”,在下拉列表中选择“建立(Create)|新脚本(New Script)”。这时在你的“脚本”目录中会出现一个名为“新脚本”的空白文件。双击脚本的文件名或图标在编辑器中打开脚本文件。当你打开这个脚本的时候,窗口中会自动的插入一些基本的LSL 语言框架。会像下面这样:

default

{

state_entry()

{

llSay(0, "Hello, Avatar!");

}

touch_start(integer total_number)

{

llSay(0, "Touched.");

}

}

对这个脚本进行测试,当它进入某种状态,比如被触摸的时候。会显示“Hello, Avatar!”,和“Touched”。因为这也许是你第一次看到一个程序指令,让我们来分解这段小指令,一个小段一个小段地进行解释。

2.1.2. 默认状态

default

{

...

}

所有的LSL脚本都有一个简单的隐型状态机,它可以有一种或多种状态。所有的脚本必须有一个默认状态,所以如果脚本只有一个状态,那么它就会是“默认”状态。当一个脚本第一次启动或者重启时,它会从默认状态开始。

默认状态通过把default(默认)放在文档的最顶层,用花括号“{”开始,并以“}”结束。因为默认状态是一个特殊状态,你必须把它和其他状态区别开。

每次当你进入一个状态,脚本引擎会自动的调用state_entry()事件,从那里开始生成执行代码。当状态结束,脚本引擎会在调用下一个state_entry处理之前自动调用state_exit()事件。在上面的例子中,我们在state_entry()中调用了llSay()函数,而并没有定义一个state_exit()。进入(entry)和退出(exit)处理是一个初始化状态数据和清除诸如“listen”事件回调函数的地方。

在第五章中你能了解到关于默认状态,如何创建和利用其他状态的具体方法。

2.1.

3. 函数

LSL语言有超过200个内建函数,允许脚本和物体在环境中相互影响。所有的内建函数均以“ll”开头。

上面的例子中两次调用了llSay()函数,llSay()的作用是在特定信道中显示文字。

llSay( integer channel,string text );

Channel是信道的号,信道0是公共聊天信道,所有的人物都能够看到聊天信息。信道1到信道2147483648是专用信道,人们无法看到,仅供其它脚本从中获取信息。

你可以定义自己的函数,但函数名不能是保留字,内建常量,或者内建函数。

2.1.4. 触摸事件

touch_start(integer total_number)

{

llSay(0, "Touched.");

}

许多事件可以通过在你的脚本中声明一个事件处理程序来检测。touch_start()事件会在用户触摸到物体的时候发生。

2.1.5. 尝试

既然我们已经看过默认脚本,也解释了其中的一些细节,现在可以试着运行这个脚本。点击“保存”保存这个脚本。在保存处理中,编辑器会保存代码然后将代码编译成字节码然后再进行储存。当你在预览窗口中看到提示“编译完成(Compile successful)!”时,编译已经完成并保存。

为了测试这个脚本,你要把它应用到一个物体中。创建一个物体的方法是在主视窗中点击“创建”。当那个棒棒出现的时候,你能够在世界中创建一个简单的物体。当物体被创建时,你能把你新编写的脚本拖拽到物体上,运用这个脚本。

当你把脚本拖拽到物体上以后,你就能看到物体显示出“Hello Avatar!”的信息。

确保触摸事件能够在你点击的时候发生。当你点击物体时应该能在聊天历史中看到信息“Touched”。

2.2.使用内建编辑器

内建编辑器有着基本文本编辑器所具有的大多数功能。你可以用鼠标或shift键+方向键选中文本。你可以使用Ctrl+X, Ctrl+C,Ctrl+V对文本进行剪切,复制,和粘贴,或者在“编辑”下拉菜单中选择上述操作。

2.3.使用其他编辑器

因为内建编辑器支持从剪贴板粘贴,所以你可以用其他的编辑器进行脚本编辑,然后复制到Second Life中。

3.基础教程

既然我们已经看见一个简单程序的运行了,现在就看看如何自己编程吧.下面这些工具用来构架基本程序块从而编程,并且会在实际中应用到。

3.1.注释

为你的脚本加上注释是一个很好的习惯,在你更新、修改或者使用别人的脚本的时候,注释会很有帮助。除非脚本很容易懂,否则你应该加上注释。

1.在脚本的开始要注明脚本的功能

2.在每一个全局变量之前要注明它在哪一段是全局的

3.在每一个全局函数之前要注明它的功能

4.在你自己一眼看不出代码功能的地方,加些注释

LSL语言使用和Java/C++一样风格的单行注释。

// 这个脚本触发一个物体的旋转

// g_is_rotating 保存旋转的当前状态。TRUE 表示

// 正在旋转, FALSE 表示其他情况。

integer g_is_rotating = FALSE;

default

{

// 在触摸时触发状态

touch(integer num)

{

if(g_is_rotating)

{

// 关闭旋转

llTargetOmega(<0,0,1>, 0, 0);

g_is_rotating = FALSE;

}

else

{

// 绕Z轴正半轴旋转,向上方。

llTargetOmega(<0,0,1>, 4, 1);

g_is_rotating = TRUE;

}

}

}

3.2.算术操作

LSL中支持大多数算术操作,和C/JAVA语法相同。

3.2.1. 赋值

大多数的算术操作都是赋值,使用“=”表示。简单的说就是把等式右边的值赋予左边,但是左边只能是一般变量。

所有的基本类型支持赋值“=”,相等“==”,和不等“!=”操作。

// 保存目标物体信息的变量

key g_target;

vector g_target_postion;

float g_target_distance;

// 赋值函数范例

set_globals(key target, vector pos)

{

g_target = target;

g_target_position = pos;

// 利用函数返回值来赋值

vector my_pos = llGetPos();

g_target_distance = llVecDist(g_target_position, my_pos);

}

3.2.2. 十六进制的使用

整数会以十六进制的形式输入,例如:

integer Mask = 0xff; // 等于整数255;

integer Bit = 0x0100; // 等于整数256;

3.2.3. 二进制运算操作

二进制运算就像是一个有两个同类参数的函数,然后返回那个类型;然而语法有些不同。表3-1 二进制运算符

每一个运算符都有详细的解析,请参见类型章节获得详情。

3.2.

4. 布尔型操作

表3-2 布尔运算符

3.2.5. 位运算操作

表3-3 位运算符

3.3.类型

变量,返回值和变量都是有不同的类型的。LSL中提供了几种基本的数据类型。

LSL 类型

整型(Integer)

一个32位带符号的整型值的有效范围是从-2147483648到2147483647。

浮点(Float)

一个IEEE标准32位浮点型值得有效范围是从1.175494351E-38到 3.402823466E+38。

键值(Key)

键值是在SL中一个唯一的,可以用来引用物体的标识。

矢量(Vector)

矢量值中包括3个浮点值。矢量值可以用来指示3维位置,方向,速度,力量,脉冲,甚至颜色。每个部分可以通过…x?…y?和…z?来访问。

表3-4. 矢量算术运算符

旋转(rotation)

旋转型变量中有4个浮点型函数。成员可以通过…x?…y?…z?和…s?访问。

表3-5. 旋转运算符

列表(list)

列表是另外一种数据类型。列表用…[?…]?括起来,内部的各个值用逗号隔开。

string StringVar = "Hello, Carbon Unit";

list MyList = [ 1234, ZERO_ROTATION, StringVar ];

生成列表: [ 1234, <0,0,0,1>, "Hello, Carbon Unit" ]

列表可以和其他的列表进行组合。比如:

MyList = 3.14159 + MyList;

生成列表: [ 3.14159, 1234, <0,0,0,1>, "Hello, Carbon Unit" ]

更简单的:

MyList = MyList + MyList;

生成: [ 3.14159, 1234, <0,0,0,1>, "Hello, Carbon Unit", 3.14159, 1234, <0,0,0,1>, "Hello, Carbon Unit" ]

一些库函数可以从列表中拷贝数据,分类列表,和移除子列表。

3.3.1. 类型转换

类型转换分为明转换和暗转换。明转换使用类似C语言的语法:

float foo_float = 1.0;

integer foo_int = (integer)foo_float;

3.3.1.1.暗转换

LSL只支持两种暗转换:整型(integer)到浮点型(float)和字符串(string)到键值(key)的转换。因此,你可以在需要浮点量的地方使用一个整型,可以在需要键值的地方输入字符串。

3.3.1.2.明转换

LSL支持以下形式的转换

Integer to String (整型到字符串)

Float to Integer (浮点型到整型)

Float to String (浮点型到字符串)

Vector to String (矢量到字符串)

Rotation to String (旋转到字符串)

Integer to List (整型到列表)

Float to List (浮点型到列表)

Key to List (键值到列表)

String to List (字符串到列表)

Vector to List (矢量到列表)

Rotation to List (旋转到列表)

String to Integer (字符串到整型)

String to Float (字符串到浮点型)

String to Vector (字符串到矢量)

String to Rotation (字符串到旋转)

3.4.全局函数

全局函数的声明也和Java/C的风格相似,只是没有void返回值。也就是说,函数在没有返回值的时候不需要定义返回值(C语言中需要定义返回空值void):

make_physical_and_spin(vector torque)

{

// 扭矩变为2倍

vector double_torque = 2.0*torque;

llSetStatus(STATUS_PHYSICS, TRUE);

llApplyTorque(double_torque);

}

3.5.全局变量

全局变量在文件的各处都可以调用,全局变量的声明也和Java/C语言类似,但每一行只能声明一个变量:

vector gStartPosition;

如果需要,全局变量可以被初始化,没有初始化的全局和局部变量会被初始化成0值:vector gStartPosition = <10.0,10.0,10.0>

3.6.局部变量

局部变量要在它的声明下才可被使用(定义必须放在调用前)。在它们被定义的那个代码段中有效。下面这段合法代码就类似C语言:

integer test_function()

{

// 测试我们在函数中的任何地方都可以调用的向量

vector test = <1,2,3>;

integer j;

for (j = 0; j < 10; j++)

{

// 这个向量和上面定义的不同

// 这是不好的编程习惯

vector test = ;

}

// 测试失败

if (test == <9,9,9>)

{

// 无法达到

}

}

4.流控制

LSL有完整的处理条件问题的函数,比如循环或者从脚本的一点跳到另一点。

4.1.条件语句

if 状态操作符的语法和Java/C语言类似。

check_message(string message)

{

if(message == "open")

{

open();

}

else if(message == "close")

{

close();

}

else

{

llSay(0, "Unknown command: " + message);

}

}

当小括号里面的值为非0值时,花括号里面的表达式才会有效。当if后的括号中的值为真(不为零)时,else后的表达式就不再有效。无效符号NULL_KEY等同于假FALSE。

当if或者else if 后面的表达式都不是非零整型是,即执行else后面的语句。

括号中的表达式可以使用常用的整型运算符或者比较运算符。

//一个函数,如果收到了一些用来指导它下一步做什么的信息。这样的代码就像

//一个简单的块,一旦条件符合就会一下子被用到程序中。

assess_next_step(integer perm, integer attached, integer balance, float dist)

{

string msg;

if(!attached)

{

if((perm & PERMISSION_ATTACH) && (dist < 10.0))

{

attach();

}

else if((dist > 10.0) || ((dist > 20.0) && (balance > 1000)))

{

move_closer();

}

else

{

llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);

}

}

}

4.2.循环结构

循环是大多数程序语言都有的一种基本构件,LSL中的循环与Java/C的结构相似。

4.2.1. for语句

当你知道一个操作需要重复多少次的时候使用for语句就显得很有用了。就像Java或者C 中的循环,括号里共有三部分,初值,循环条件,和步长。循环在当中间的循环条件为真时运行,在循环结束时变量会自动增加。

//使一个非物理性的块延z轴向上做平缓的上移,移动的动作由许多次连续的移动组成move_up(float distance, integer steps)

{

float step_distance = distance / (float)steps;

vector offset = <0.0, 0.0, step_distance>;

vector base_pos = llGetPos();

integer i;

for(i = 0; i <= steps; ++i)

{

llSetPos(base_pos + i * offset);

llSleep(0.1);

}

}

4.2.2. do-while语句

当你想让一个操作不断循环但你又不知道应该循环多少次的时候do-while就显得十分有用。对do-while的一个简单描述就是:如果符合预先设置的条件,do-while后面括号里面的语句就会被执行,然后继续判断那个条件。

//输出附着在这个物体上的所有部件名称清单

talk_about_inventory(integer type)

{

string name;

integer i = 0;

integer continue = TRUE;

do

{

name = llGetInventoryName(type, i);

if(llStringLength(name) > 0)

{

llSay(0, "Inventory " + (string)i + ": " + name);

}

else

{

llSay(0, "No more inventory items");

continue = FALSE;

}

} while(continue);

}

4.2.3. while语句

While循环和do-while循环很像,不同的是do-while循环先执行代码,再判断下次是否需要继续循环,而while循环先判断,符合条件以后再执行代码。

mention_inventory_type(integer type)

{

integer i = llGetInventoryNumber(type);

while(i--)

{

llSay(0, "item: " + llGetInventory(i));

}

}

4.3.跳转

Jump语句用来从一个函数或者一个事件中跳到脚本中的其他地方。但不能跳到别的函数或者事件中。通常,你可以在用if...else条件语句过于复杂的时候使用它。

4.4.状态改变

状态改变允许你将你的脚本状态在默认状态和用户状态之间转变。你可以通过在事件处理程序的花括号(…{?和…}?)之前使用一个…state?关键字来定义你自己脚本的状态。你可以使用这样的语法来使用新的状态调用过程:…state <状态名>?。

default

{

state_entry()

{

llSay(0, "I am in the default state");

llSetTimer(1.0);

}

timer()

{

state SpinState;

}

}

state SpinState

{

state_entry()

{

llSay(0, "I am in SpinState!");

llTargetOmega(<0,0,1>, 4, 1.0);

llSetTimer(2.0);

}

timer()

{

state default;

}

state_exit()

{

llTargetOmega(<0,0,1>, 0, 0.0);

}

}

5.状态

所有的脚本必须有一个…默认(default)?状态,在脚本运行的时候会首先进入这个状态。状态包括由LSL触发的事件处理程序。所有的状态必须至少有一个事件处理程序——如果不包含任何事件处理程序,那将不是一个状态。

当状态改变时,所有的回调设置都会被保持,所有的未决事件都会被清除。

5.1. state_entry()函数

state_entry事件在进入一个新的状态时发生,在程序启动时,它总是作为程序的第一个事件来处理。这个事件处理程序没有数据的传输。

你有的时候可能会为了让你的物体起作用而在state_entry()中为定时器或传感器设置一个回调函数。

警告:这是一个常见的错误,出现这样的问题是因为假设了state_entry()会在你把一个物体从清单栏中拖出来的时候被调用。当你把一个物体放回清单栏中的时候,这个物体当前的状

态将被保存。所以,当你再次将这个物体拖出清单栏的时候,state_entry()并没有被调用。如果你想让每次这个物体被拖出来的时候都运行一个启动代码,你需要建立一个全局函数,并在state_entry()和on_rez()函数中都调用它。

//全局初始化函数。

init()

{

//为物体的拥有者设置一个listen函数。

key owner = llGetOwner();

llListen(0, "", owner, "");

}

default

{

state_entry()

{

init();

}

on_rez(integer start_param)

{

init();

}

listen(integer channel, string name, key id, string message)

{

llSay(0, "Hi " + name + "! You own me.");

}

}

5.2. state_exit()函数

如果你需要在进入一个新的状态之前清除当前状态的事件,你就需要一个state_exit()函数。default

{

state_entry()

{

state TimerState;

}

}

state TimerState

{

state_entry()

{

// 设置一个5秒钟的定时器。

llSetTimerEvent(5.0);

}

timer()

{

llSay(0, "timer");

state ListenState;

}

state_exit()

{

// 关闭定时器事件。

llSetTimerEvent(0.0);

}

}

integer g_listen_control;

state ListenState

{

state_entry()

{

// 监听公共通道上的信息。

g_listen_control = llListen(0, "", NULL_KEY, "");

}

listen(integer channel, string name, key id, string message)

{

llSay(0, "listen");

state TimerState;

}

state_exit()

{

// 关闭监听器。

llListenRemove(g_listen_control);

}

}

在物体被删除的时候,state_exit()处理不会被调用,所有的回调函数,处理进程,声音,或者其它都会被自动清除。

5.3.状态VS全局变量

状态和全局变量都能够达到相同的目的,每一个都能根据另一个进行表达。一般来说,推荐使用状态而不是全局变量,因为状态能让你快速实现脚本的状态而不用进行比较。更少的比较会形成更高效的代码。

6.数学

6.1. 数学函数表

表6-1. 三角函数

表6-2. 矢量函数

表6-3. 旋转函数

7. 字符串

7.1.字符串函数表

表7-1. 字符串函数

8. 列表

8.1.列表函数表

表8-1. 列表函数

9. 通信

9.1.通信函数列表

表9-1. 通信函数

表9-2. 消息函数

10. 清单

10.1.清单函数列表

表10-1. 清单函数

11.交通工具

用户制作的交通工具可以使用LSL来构造和控制。这一章将要介绍交通工具的基础知识,其中包括用来描述交通工具的术语,和更详细的API的使用。

让一个物体运动的方法有很多种,其中一条就是把这个物体变成一个“交通工具”。这种特性能让物体滑行,漂浮,飞行,和悬浮。一些可用的功能如下:

?线性和沿着轴线的旋转运动

?非线性和有角度的摩擦

?沿着地形/水面漂浮

?通过倾斜来转弯

?用线性和角度发动机来推动和旋转

11.1.概括

每一个有脚本的物体可以有一个交通工具的行为,可由以下库函数来定义:llSetVehic leType, llSetVehicleFloatParam, llSetVehicleVectorParam, llSetVehicleRotationParam, llSetVehicleFlags, and llRemoveVehic leFlags。

这些脚本函数将在下面进行详细说明,但最重要的是记住这些交通工具需要有很多参数来调整它的行为。通过对参数的选择,物体可以变成在水面上行驶的船,也可以变成在轨道上行

驶的雪橇。

设置交通工具的标志可以让你改变默认的状态。其中的一些标志只在某种行为激活的时候才起作用。举个例子,VEHICLE_FLAG_HOVER_WATER_ONLY让交通工具忽略地形的高度,然而,只有在交通工具悬浮的时候才能体现出来。

11.2.警告

交通工具的特性可能会在未来版本的Second Life中进行改变。一些交通工具的行为细节可能会为了确保用户安全而进行修改。特别的,附件中相关的函数描述将可能被改变。

不推荐你将交通工具和具有冲击或压力行为的物体进行混合,尤其是含有llSetBuoyancy, llSetForce, llSetTorque, 和llSetHoverHeight。

虽然以下的方法不会影响稳定性,它们的行为可能会和交通工具的行为相冲突而带来不确定的问题,所以当你在交通工具上使用llLookAt, llRotLookAt, llMoveToTarget, 和llTargetOmega时,你要自己承担风险。

如果你想找出交通工具运行中的bug,你可以发一个带有问题描述的交通工具和脚本给Andrew Linden。请给所提交的文件起名"Bugged Vehicle XX",XX是你在Second Life中的昵称。交通工具和脚本将尽快地得到检查。

11.3.定义

术语"roll(滚动)", "pitch(倾斜)", 和"yaw(侧转)"经常用来描述一个飞机或者船的模型的运动。它们分别相对于x、y和z轴运动。

Y-俯仰轴轴

X-翻滚轴

Z-偏航轴

右手定则,经常在物理课中被引入,它用来定义沿着任意轴的正向旋转方向。作为一个如何使用右手定则的例子,考虑沿着翻滚轴的正向旋转。为了帮助你想象旋转的方向,把你的右手拇指平行于飞机的翻滚轴,拇指指向x-轴的正向,然后其余四指握拳。你的手指将会指向飞机旋转的方向。

正向旋转

X-翻滚轴

许多控制交通工具行为的参数都是这样形态的:VEHICLE_BEHAVIOR_TIMESCALE。一个行为的“timescale(时标)”用来作为推,扭曲,或者其它的对于交通工具影响的时间,区分当前在做什么和将要做什么,比如把一个量改变为1/e大小所用的时间,这里的“e”是自然指数(大约是2.718281828)。换句话说,是它的行为会按照指数衰减到期望行为的时间。如果你想要交通工具很快的响应,就使用一个更短的时间尺度,比如一秒钟或者更少,如果你希望停用一个行为,可以设置时标到一个很大的值,比如300秒(5分钟)或更多。记住,出于稳定性的原因,一般对于时标的最小值有一个限制,一般为1/10秒。设置时标到0是

安全的,这和把它设定为最小值的意思相同。任何有时标的特性都能通过设置很大的时标来使之失效,比如让它要花一天的时间来改变状态。

11.4.设定交通工具类型

在任何交通工具能够设置参数之前,交通工具的行为必须先被激活。可以通过调用llSetVehicleType并使用VEHICLE_TYPE_*参数来激活(用来停用交通工具的

VEHICLE_TYPE_NONE除外)。在交通工具类型常数中选择正确的类型。以后将会有更多的类型可用。

设置交通工具类型对于激活交通工具的行为是必要的,它将把所有的参数设置为默认值。每种交通工具的类型列在相应的长长的等式中。要知道,默认的值不是最佳的参数,这些参数将在以后被改变。不要依赖这些初始值。

如果你想制造一个用来试验的交通工具,你仍需要使用默认类型来激活这个交通工具的行为。在那以后,你就能够在允许的范围内改变任何一个参数或者标志。

设置交通工具的类型后它并不会自己运动。然而,你应该让这个交通工具物体能自由运动,然后把它放到山顶,然后它会开始滑下。

我们正在寻找更好的定义交通工具的类型,如果你觉得你发现了建造更好的汽车、船、或者其它默认类型的交通工具的参数,你可以通过脚本或者卡片提交你的设置建议给Andrew Linden。

11.5.线性和角偏转

一个真正的交通工具的特性是他会沿着一个“特定的轴运动”。就是说,根据他们的车轮,机翼,外形或者推动力而改变到不同的轴,这个轴相对于交通工具本身是静止的。这个基本特征作为交通工具的一个类,拥有这个特性的物体就会变成一个“交通工具”:物体在背部有一个鳍,如果他在空中翻倒了,他会自动地校正他的方向—我们把这种校正称为角偏转。

不同的轮胎工艺会出现不同的效果,当把一个滑雪板向某个方向推,他会沿着能自由旋转的方向运动—我们把这种作用叫做线性偏转。

一个典型的Second Life交通工具会沿着选定的轴做线性和角度偏转。默认的运动轴是:本

地轴-X,向左-Y,向上-Z(这些轴参照的是交通工具中的“根部件”的轴线方向)。偏转行为参照了X-轴:线性偏转会使旋转的线速度变化,直至指向X轴的正向。而角度偏转会使X-轴向其转动方向旋转。与其他轴相关的行为比如“引力(让物体的Z-轴指向世界中的Z-轴)”将会在以后说明。交通工具的轴可以利用参数VEHICLE_REFERENCE_FRAME来改变为物体的本地轴,不过这是高级的操作,具体会在以后的章节中说明。

根据交通工具是否具有的线性或角度偏转。我们可以通过修改函数llSetVehicleFloatParam的参数来控制偏转的速度。每一种偏转都有一个用来衡量偏转需要花多少时间完成的“时标”。一般的,时标是全速偏转的指数衰减的时间系数。所以,一个快速偏转的交通工具就会有一个很小的时标。比如,一个投掷行为的角度偏转时标有一两秒,而线性偏转时标有十几秒,因为它在改变方向之前会自转。设置偏转时标可以使用以下的函数:llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 6.0);

每一种偏转都含有一个从0.0到1.0的“效率”参数。和其他的描述交通工具行为的参数不同,

脚本语言的发展

脚本语言的发展 主流的脚本语言 目前主流的脚本语言有以下几种: Groovy Ruby Python Groovy Groovy 是 JVM 的一个替代语言—替代是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用。 Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法 源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简 单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。) 许多 Java 开发人员非常喜欢 Groovy 代码和 Java 代码的相似性。从学习的角度 看,如果知道如何编写 Java 代码,那就已经了解 Groovy 了。Groovy 和 Java 语言的 主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。(有时候会少很 多!) Ruby Ruby,一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,在 20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发, 遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java 平台)、IronRuby(.NET 平台)等其他平台的 Ruby 语言替代品。 1

脚本语言和互动网页设计课程网上作业单选题答案

1: 下述选项中不属于JDBC基本功能的是:() 1.与数据库建立连接 2.提交SQL语句 3.处理查询结果 4.数据库维护管理 2:在page指令中,()属性是可以在页面中重复的的属性。 https://www.wendangku.net/doc/425070397.html,nguage 2.buffer 3.import 4.autoFlush 3:下面哪种数据类型是基本数据类型()。 1.class 2.interface 3.数组 4.char 4:下列哪种数据类型是引用类型()。 1.boolean 2.int 3.interface 4.long

5: 在JSP中使用标记时,不会出现的属性是:() https://www.wendangku.net/doc/425070397.html, 2.property 3.value 4.以上皆不会出现 6: 不能在不同用户之间共享数据的方法是() 1.通过cookie 2.利用文件系统 3.利用数据库 4.通过ServletContext对象 7:能够获取当前页信息并调用页面方法的对象是()。 1.request 2.page 3.pageContext 4.session 8: 可以取得用交提交的参数的所有记录值的方法是( ) 1.getParameter() 2.getAttribute()

3.getParameterValues() 4.getSession() 9:下面哪一个运算符有3个操作数()。 1.* 2.++ 3.&& 4.?: 10:以下文件名后缀中,只有()不是静态网页的后缀。 1..html 2..htm 3..jsp 4..shtml 11:以下选项中,哪一项不是JSP指令()。 1.page 2.import 3.include 4.taglib 12:实际开发中使用Session可以设置访问的安全性,请选择Session所设置的属性的数据类型( ) 1.String

HTML各种命令的代码

HTML各种命令的代码 跑马灯 ...普通卷动 ...滑动 ...预设卷动 ...来回卷动...向下卷动 ...向上卷动 向右卷动 向左卷动 ...卷动次数 ...设定宽度 ...设定高度 ...设定背景颜色...设定卷动距离...设定卷动时间 字体效果

...

标题字(最大)

...
标题字(最小) ...粗体字 ...粗体字(强调) ...斜体字 ...斜体字(强调) ...斜体字(表示定义) ...底线 ...底线(表示插入文字) ...横线 ...删除线 ...删除线(表示删除) ...键盘文字 ... 打字体 ...固定宽度字体(在文件中空白、换行、定位功能有效) ...</plaintext>固定宽度字体(不执行标记符号) <listing>...</listing> 固定宽度小字体 <font color=00ff00>...</font>字体颜色 <font size=1>...</font>最小字体 <font style =font-size:100 px>...</font>无限增大 <!>区断标记</p><h2>浅谈计算机编程语言的发展</h2><p>浅谈计算机编程语言的发展 信息学院103班潘红10263210 摘要:一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而在这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张的说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重。1.引言 在计算机科学中,编程语言是用来编写可被计算机运行的一系列指令(计算机程序)的人工语言,于英语等自然语言相类似,编程语言具有词汇、语法和句法。然而,自然语言不适合计算机编程,因为它们能引起歧义,也就是说它们的词汇和语法结构可以用多种方式进行解释。用于计算编程的语言必须具有简单的逻辑结构,而且它们的语法、拼写和标点符号的规则必须精确。 2.计算机编程语言的发展历史 二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(konrad zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着c,pascal,fortran,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型-----面向对象程 序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。 3.计算机编程语言的发展现 目前通用的编程语言有两种形式:汇编语言和高级语言。 2.1汇编语言 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。计算机编程人员用汇编语言使机器语言程序编写起来更简单一些。在汇编语言中,每条语句大致对应一条机器语言指令。汇编语言的语句是借助易于记忆的命令编写的。在典型的汇编语言</p><h2>HTML5代码大全</h2><p>一、HTML各种命令的代码: 1、文本标签(命令) <pre></pre> 创建预格式化文本 <h1></h1> 创建最大的标题 <h6></h6> 创建最小的标题 <b></b> 创建黑体字 <i></i> 创建斜体字 <tt></tt> 创建打字机风格的字体 <cite></cite> 创建一个引用,通常是斜体 <em></em> 加重一个单词(通常是斜体加黑体) <strong></strong> 加重一个单词(通常是斜体加黑体) <font size=?></font> 设置字体大小,从 1 到 7 <font color=?></font> 设置字体的颜色,使用名字或十六进制值2、图形(命令) <img src="name"> 添加一个图像 <img src="name" align=?> 排列对齐一个图像:左中右或上中下 <img src="name" border=?> 设置围绕一个图像的边框的大小 <hr> 加入一条水平线 <hr size=?> 设置水平线的大小(高度) <hr width=?> 设置水平线的宽度(百分比或绝对像素点) <hr noshade> 创建一个没有阴影的水平线 3、链接(命令) <a href="URL"></a> 创建一个超链接 <a href="mailto:EMAIL"></a> 创建一个自动发送电子邮件的链接 <a name="NAME"></a> 创建一个位于文档内部的靶位 <a href="#NAME"></a> 创建一个指向位于文档内部靶位的链接 4、格式排版(命令) 创建一个新的段落 <p align=?> 将段落按左、中、右对齐 <br> 插入一个回车换行符 <blockquote></blockquote> 从两边缩进文本 <dl></dl> 创建一个定义列表 <dt> 放在每个定义术语词之前 <dd> 放在每个定义之前 <ol></ol> 创建一个标有数字的列表 <li> 放在每个数字列表项之前,并加上一个数字 <ul></ul> 创建一个标有圆点的列表 <li> 放在每个圆点列表项之前,并加上一个圆点 <div align=?> 一个用来排版大块HTML 段落的标签,也用于格式化表二、HTML基本语法 文件格式<html></html>(文件的开头与结尾) 主题<title></title>(放在文件的开头)</p><h2>脚本语言和互动网页设计</h2><p>2016-2017学年第一学期期末考试《脚本语言和互动网页设计》大作业 一、编程题((每小题100分,共100分) 编写程序register.html和register.jsp。做一用户注册界面register.html,注册信息包括:用户名,年龄,性别,籍贯。然后提交到register.jsp进行注册检验,若用户名为admin,就提示“欢迎你,管理员!”,否则显示“注册成功”并显示出注册信息。 Register.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>用户注册</title> <script language="javascript"> function checkpassword() { if(document.form1.password.value != document.form1.password2.value) { alert("两次密码输入不一致"); return; } } function checkname() { if(https://www.wendangku.net/doc/425070397.html,.value !="") {return;} else {alert("用户名为空!"); return;} } </script> </head> <body> <div align="center" ><strong><u>用户注册<br><br></u> </strong></div> <form align ="center" name ="form1" action = "register.jsp" method = "get"> <table align ="center"> <tr> <td align="center">用户名:</td> <td><input type = "text"name = "name"value = "" onBlur = "checkname()"/></td> </tr> <tr> <td align="center">密码:</td> <td><input type = "password" name = "password" value = "" /></td> </tr></p><h2>ASP脚本语言</h2><p>第3章ASP脚本语言—VBScript 吴运明 信息技术与传播学院3.1 VBScript概述 3.1.1 VBScript用途 ●Microsoft公司脚本语言,属Basic语法体系 ●用途: (1)客户端脚本编程 (2)服务器端动态脚本编程 用途(1):客户端脚本编程 ●基本格式: <script language=“VBScript”> 程序语句 </script> 例:1.html <html> <head> <title>VBScript客户端应用</title> </head> <body> <script language=“VBScript”> for i=1 to 100 sum=sum+i next document.write("1+2+3+...+100=" & sum) </script> </body> </html> 用途(2):服务器端脚本编程 ●基本格式: <script language=“VBScript” runat=“server”> 程序语句 </script> ●改进: <%@Language="VBScript"%> asp页面第一行 页面的其他地方使用 <% ... %> 用途(2):服务器端脚本编程 例:2.asp <%@Language="VBScript"%> <html> <head> <title>VBScript服务器端应用</title> </head> <body> <% for i=1 to 100 sum=sum+i next response.write("1+2+3+...+100=" & sum) %> </body> </html> 3.2 VBScript数据类型及运算符 3.2.1 数据类型 ●Variant:变体类型,根据用途选择最合适的子类型来存储数 据 ●Variant包含的子数据类型:P31 表3-1 3.2.2 VBScript中的运算符 (1)算术运算符 (2)逻辑运算符 (3)比较运算符 (4)字符串连接符 (1)算术运算符 (2)逻辑运算符 用于判断表达式是否成立,其返回值为真或假 与:And 或:Or 非:Not (3)比较运算符 用于将表达式两边的值做出比较,返回值为True或False = <> < > <= >= (4)字符串连接符 ●& :连接字符串、不同类别的数据 ●例如: “abc” & “123” “abc123” <script language="vbscript"> s1="Today is:" D=#2010/10/25# s2=s1&D document.write(s2&"<br>") x1="123." & 25 document.write(x1) </script> ●+ :字符串与字符串的串接运算 First="Peter" Last="Wang" document.write(first+""+last) 3.3 VBScript变量和常量 3.3.1 变量的声明与赋值 ●声明变量:Dim 变量名 如:dim x, y ●变量赋值:变量名=值 如:x=10 ●强制声明变量 ●Option Explicit ●例:4.html 课本P33 3.3.2 数组的定义 1.定义一维数组:Dim 数组名(最大下标) 如:dim x(4) …定义了x(0)~x(4)共5个数组元素 ●说明:数组下标从0开始,元素个数为最大下标值+1 2.定义二维数组:Dim X(M,N) 例如:Dim X(2,2) X(0,0)=85 X(1,1)=88 定义多维数组: Dim 数组名称(M,N,L....) 3.数组与For-Next循环的搭配 (1) 读取数组数据 ●x=array(“word”, “excel”, “powerpoint”, “access”) for i=0 to 3 document.write x(i)&“” next (2)Ubound函数:读取数组中最大的下标。</p><h2>JAVASCRIPT脚本编程 带答案</h2><p>1、JavaScript是什么_______。 A)客户端脚本语言√ B)客户端标记语言 C)服务器端脚本语言 D)服务器端标记语言 2、关于JavaScript的作用说法正确的是_______。(选三项) A)JavaScript即面向过程又面向对象√ B)实现客户端表单验证√ C)制作网页特效√ D)JavaScript语言属于低级语言 3、关于JavaScript编程工具的说法,正确的是_______。 A)只能使用DreamWeaver B)只能使用记事本 C)只能使用EditPlus D)一切文本编辑器皆可√ 4、完整的JavaScript实现包括三个部分,除了_______。 A)ECMAScript B)BOM C)COM√ D)DOM 5、JavaScript脚本文件的后缀名是_______。 A)*.jsp B)*.js√ C)*.java D)*.asp 6、将JavaScript脚本文件导入到HTML页面所对应的标记是_______。 A)<import> B)<embed> C)<link> D)<script>√ 7、JavaScript中,下列注释语句正确的是_______。(选两项) A)/这里是注释 B)//这里是注释√ C)/*这里是注释*/√ D)--这里是注释 8、JavaScript语言中声明变量的关键字是_______。 A)dim</p><p>B)variant C)var√ D)varchar 9、在JavaScript中,声明一个变量而未对该变量赋初始值,则该变量对应的数据类型是_______。 A)Number B)Undefined√ C)String D)Boolean 10、在JavaScript中,下列说法中,错误的是_______。 A)JavaScript中不区分大小写√ B)在JavaScript中用//表示注释 C)在JavaScript中,字符串即可以用单引号引用,也可以用双引号引用 D)JavaScript语言属于弱类型编程语言 11、分析下面的JavaScript语句:str="This apple costs"+5+0.5;执行后str的结果是_______。 A)"This apple costs"5.5 B)This apple costs50.5√ C)"This apple costs"50.5 D)This apple costs5.5 12、JavaScript的表达式parseInt("8")+parseInt('8')的结果是多少_______。 A)8+8 B)88.0 C)16.0√ D)"8"+'8' 13、分析下面的JavaScript代码段: var a=[2,3,4,5,6]; sum=0; for(i=1;i<a.length;i++) sum+=a[i]; document.write(sum); 输出结果是_______。 A)18.0√ B)12.0 C)20.0 D)14.0 14、下列语句中,_______语句是根据表达式的值,进行匹配,然后执行其中的一个语句块,如果找不到匹配项,则执行默认的语句块。</p><h2>HTML标签代码大全(DIVCSS前端开发者的福音)</h2><p>HTML代码大全免费下载 (在…里加入你要的文字即可) <!>忽视右键 <body oncontextmenu="return false"> 或 <body style="overflow-y:hidden"> <!>文字特效 移动模板:<MARQUEE scrollAmount=3 direction=up>..........</MARQUEE> 例子a.<marquee hspace=20 vspace=20 width=150 bgcolor=ffaaaa align=middle>啦啦啦,我会移动耶!</marquee> b.<marquee direction=left>啦啦啦,我从右向左移!</marquee> 啦啦啦,我从右向左移! c.<marquee behavior=scroll>啦啦啦,我一圈一圈绕着走!</marquee> 啦啦啦,我一圈一圈绕着走! d.<marquee behavior=alternate>啦啦啦,我来回走耶!</marquee> 啦啦啦,我来回走耶!</p><p>e.<marquee scrolldelay=500 scrollamount=100>啦啦啦,我走一步,停一停!</marquee> 啦啦啦,我走一步,停一停! <marquee>…</marquee>普通卷动 <marquee behavior=slide>…</marquee>滑 <marquee behavior=scroll>…</marquee>预设卷动 <marquee behavior=alternate>…</marquee>来回卷动 <marquee direction=down>…</marquee>向下卷动 <marquee direction=up>…</marquee>向上卷 <marquee direction=right></marquee>向右卷动 <marquee direction=left></marquee>向左卷动 <marquee loop=2>…</marquee>卷动次数 <marquee width=180>…</marquee>设定宽 <marquee height=30>…</marquee>设定高度 <marquee bgcolor=FF0000>…</marquee>设定背景颜色 <marquee scrollamount=30>…</marquee>设定卷动距离 <marquee scrolldelay=300>…</marquee>设定卷动时间 <!>区断标记 <hr>水平线 <hr size=9>水平线(设定大小)</p><h2>html特效代码大全精美免费下载</h2><p>html特效代码大全精美免费下载.txt每天早上起床都要看一遍“福布斯”富翁排行榜,如果上面没有我的名字,我就去上班。谈钱不伤感情,谈感情最他妈伤钱。我诅咒你一辈子买方便面没有调料包。 HTML代码大全免费下载 HTML特效代码1。忽视右键 <body oncontextmenu="return false"> 或 <body style="overflow-y:hidden"> 2。加入背景音乐 IE:<bgsound src="*.mid" loop=infinite> NS:<embed src="*.mid" autostart=true hidden=true loop=true> </embed> *.mid你的背景音乐的midi格式文件 3。简单的window.open方法 <a href="#" onclick="javascript :window.open(文件路径/文件名,newwindow, toolbar=no,scrollbars=yes,resizable=no,top=0,left=0, width=400,height=300);">文字或图片</a> 参数解释: <SCRIPT LANGUAGE="javascript"> js脚本开始; window.open 弹出新窗口的命令; 文件路径/文件名弹出窗口的文件名; newwindow 弹出窗口的名字(不是文件名),非必须,可用空代替; width=400 窗口宽度; height=300 窗口高度; top=0 窗口距离屏幕上方的象素值; left=0 窗口距离屏幕左侧的象素值; toolbar=no 是否显示工具栏,yes为显示; menubar,scrollbars 表示菜单栏和滚动栏。 resizable=no 是否允许改变窗口大小,yes为允许; location=no 是否显示地址栏,yes为允许; status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; </SCRIPT> js脚本结束 4。简单的页面加密 <script LANGUAGE="javascript"> <!-- function loopy(){ var sWord ="";</p><h2>计算机程序设计语言的发展历程</h2><p>1.概论自从世界上第一台电子计算机ENIAC于1946年问世以来,伴随着计算机硬件的不断更新换代,计算机程序设计语吉也有了很大的发展.至今已有四代语言问世。 在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。 尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。 程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。 1.机器语言电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。 计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。 使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。 而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。 但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。 机器语言,是第一代计算机语言。 2.汇编语言为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进: 用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。</p><p>然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。 汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。 3.高级语言从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。 第一个高级程厅设计语著诞生严50年代。 当时的计算机非常昂贵,而月功量非常之少,如问有效地使用计算机足一个相当重要的问题。 另一方面,计算机的执行效率也是人们追求的r1你。 为了有效地使用汁算机.人们设计出了高级语言,用以满足用户的需求。 用商级语言编写的程序需要经过翻译,计算机才能执行。 虽然,程序翻译占去了一些计算机时间,在一定程度上影响了计算机的使用效率。 坦是实践证明。 高级语言是有效地使用汁算机与计算机执行效率之间的一个很好的折中手段。 经过努力,1954年,第一个完全脱离机器硬件的高级语言—FORTRAN问世了,40多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASI C、LISP、SNOBOL、PL/ 1、Pascal、</p><h2>一些网页设计小代码</h2><p>一些网页设计小代码 1. oncontextmenu="window.event.return value=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"></script> 9. 防止被人frame <SCRIPT LANGUAGE=javascript></SCRIPT> 10. <noscript><iframe src=*.html></iframe></noscript> 网页将不能被另存为 11. <input type=button value=查看网页源代码 onclick="window.location = 'view-source:'+ 'https://www.wendangku.net/doc/425070397.html,/&#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;</p><h2>Sub Station Alpha v4.00+ (ASS、SSA特效代码全解全指令指令大全,包含了所有的指令)</h2><p>Sub Station Alpha v4.00+脚本格式 圣诞重校译本 翻译 Magics Translated from english by Magics 重要订正:绘图命令中04-04译本将b样条(b-spline)曲线与贝兹(Bezier)曲线混淆。现已更正,向各位读者致歉(12-24-04) 0翻译词汇表 1概要 2Sub Station Alpha脚本中的各节 3Sub Station Alpha 脚本中的各种类型的行 4标题行,[Script Info]节 5样式行,[v4+ Styles]节 6对话事件行,[Events]节 7注释事件行,[Events]节 8图像事件行,[Events]节 9音频事件行,[Events]节 10Movie event line, [Events] section 11Command event lines, [Events] section 附录A:样式替换代码 附录B:嵌入式字体/图像编码 (译者注:以下内容中ssa(小写)指Sub Station Alpha 脚本,SSA(大写)指Sub Station Alpha 软件。ass/ASS无论大小写均指Advanced Sub Station Alpha 脚本) 本文档原为SSA的脚本格式说明(能在https://www.wendangku.net/doc/425070397.html, 找到)。更新 或改动了的部分被标记成红色。</p><p>0. 翻译词汇表 英文常用中文翻译(加粗为本文中所用翻译)抱歉,其中可能错误较多,修订完成前不再提供,取有需要请查阅04-04版译本。</p><p>1. 概要 本文是假定你对SSA使用的术语和概念已经熟悉的情况下提供相关信息的。这些内容同时储存在SSA的帮助文档,随SSA一起分发的或者从https://www.wendangku.net/doc/425070397.html, 单独下载的ssa.hlp 文档中。 1ssa v4.00与先前的版本格式不同。 SSA v4.00 是向下兼容的。 一些ssa格式的改动就是为了让v4.00及其后续版本能读取现在甚至将来新的ssa。尤其是,新增加的“Format”行使得SSA能只读取它支持的信息,而忽略新版的脚本中增加的信息。(译者注:这就是下文将介绍的“Format”行的用途,详细的内容请见下文。) 2脚本是普通的DOS格式文本文件。 (译者注:文本文件常见的有DOS、MAC、UNIX。另外ass/ssa支持以Unicode字符集的文本文件储存,因此强烈建议你以此字符集储存,尤其是在你的字幕文件同时包含了多种语言的字幕时,此字符集能提供最好的兼容性。) 这也就意谓着,脚本能“手工”使用任何的本文编器编辑,但是当这样做的时候小心请仔细检查语法,当脚本被载入SSA的时候,任何的错误都可能导致不可预期的结果。 3脚本是按.ini文件的样式分成节(sections)书写的。 如果你对 .ini比较熟悉的话你会发现上手是一件很容易的事。当然,ass脚本并不是真正的ini文件,它不能象ini文件一样工作。 4脚本中大多数行都以行描述符(line descriptor)开始。 行描述符表示了这行包含的信息的类别。冒号表示行描述符结束。 5各个字段(information fields)间用“,”隔开。 因此,在角色名称(译者注:即下文中的Dialogue: 行中Name 字段、Actor 字段)和样式名称(译者注:即下文中的Style: 行的Name 字段;Dialogue: 行中Style 字段)中不允许使用逗号。 (在SSA中,软件会阻止你在其中键入逗号。)这同时使得你能很方便的把大块的ssa导入到电子表格软件中,再分栏将信息输出以便用于其他字幕软件。 6SSA不关心记录事件的各行的顺序。 你甚至可以用完全相反的顺序来录入,SSA仍能按正确的顺序来执行这些事件,因此,脚本中的各个事件并不一定都是以时间为序记录的。 7格式错误的行将会被忽略。 SSA会删除所有它不能理解的行,然后在载入脚本后给出一个警告,告诉你总共有多少行被删除了。 8一行的内容不能折行书写。 每一行必须是完整的一行,不能分行书写。 9字幕中没有定义的样式将用默认样式(*Default)代替。</p><h2>计算机程序设计语言发展史和对程序设计语言未来的看法</h2><p>计算机程序设计语言发展史和对程序设计语言未来的看法信息科学与工程通信一班比拉力江·买买提20104055049 【摘要】 本文以自然辩证的观点探讨了计算机语言的发展历程,运用自然辩证法的基本理论、基本方法,系统分析了计算机语言的发展历史、现状和未来。并对其的发展趋势和未来模式做了探索性研究和预测,同时以哲学的观点阐述其发展的因果关系,揭示其事物发展的共性问题;最后文章介绍了在计算机语言发展历程中做出杰出贡献的科学家,以其在计算机事业中的突出表现来折射出人类智慧的伟大,以其不平凡的一生来激励和指导我们在计算机语言的发展中向着正确的方向前进。 【关键字】 自然辩证法计算机语言计算机技术编程语言因特网面向对象 一、引言 一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而在这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张的说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重;以自然辩证法的观点认识和分析计算机语言的发展历程,将有助于更加全面地推动计算机技术的发展,有助于更加准确地掌握计算机语言发展趋势。 二、科学认识大门的钥匙--当代自然辩证法 自然辩证法,是马克思主义对于自然界和科学技术发展的一般规律以及人类认识自然改造自然的一般方法的科学,是辩证唯物主义的自然观、科学技术观、科学技术方法论。它主要研究自然界发展的总规律,人与自然相互作用的规律,科学技术发展的一般规律,科学技术研究的方法。 马克思、恩格斯全面地、系统地概括了他们所处时代的科学技术成功,批判吸取了前人的合理成分,系统地论述了辩证唯物主义自然观、自然科学发展过程及其规律性,以及科学认识方法的辩证法,以恩格斯的光辉著作《自然辩证法》为标志,创立了自然辩证法继续发展的广阔道路。</p><h2>脚本语言和交互网页设计复习题</h2><p>脚本语言和交互网页设计复习题 一、单项选择题 假设在应用中有一个,它的文件路径如下: ,那么在浏览器端访问的是什么? ( ) 下面对动作描述正确的是( ) 在页面被请求的时候引入一个文件。 寻找或者实例化一个。 把请求转到一个新的页面。 输出某个的属性。 在体系架构中,承担显示功能(层)的组件是( ) . 在页面中的输出语句是( ) () . () () () 对象的作用是( ) 针对错误网页,未捕捉的例外 用来传送回应的输出 正在执行的内容 用户端请求,此请求会包含来自请求的参数 下面哪一个不是本身已加载的基本类?() 、.* 、.* 、.* 、.* 对于预定义<!预定义>的说法错误的是:() 、一次可声明多个变量和方法,只要以“;”结尾就行 、一个声明仅在一个页面中有效 、声明的变量将作为局部变量 、在预定义中声明的变量将在页面初始化时初始化 从“员工” 表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条语句正确:()、* 员工姓名’玛丽’ 、* 员工姓名’玛丽’ 、* 员工姓名‘玛丽’ 、* 员工姓名‘玛丽’ 下述选项中不属于基本功能的是:() . 与数据库建立连接.提交语句 .处理查询结果. 数据库维护管理 在中使用<>标记时,不会出现的属性是:() . . 以上皆不会出现 . 下面哪个不是操作的属性()。 .. . . . 以下方法中,哪一个方法不是类的方法()。 .. . .</p><p>关于正确的说法是:() 、文件与所定义的类名可以不同,但一定要注意区分字母的大小写 、在文件中引用,其实就是用<>语句 、被引用的文件的文件名后缀为 、文件放在任何目录下都可以被引用 程序的入口点是:() 、()、()、()、() 不能在不同用户之间共享数据的方法是() 、通过、利用文件系统 、利用数据库、通过对象 .下面对动作描述正确的是( ) 在页面被请求的时候引入一个文件。 寻找或者实例化一个。 把请求转到一个新的页面。 输出某个的属性。 在安装完服务器后,需要配置运行环境,增加的环境变量属性是( ) . 实际开发中使用可以设置访问的安全性,请选择所设置的属性的数据类型( ) 可以取得用交提交的参数的所有记录值的方法是( ) () () () () 下列哪些不是的特点:() 将内容的生成与显示分离 使用可重用的组件 采用标记简化开发 对这样的图形界面程序的支持 .以下文件名后缀中,只有()不是静态网页的后缀。 . . . . . 下列描述中,只有()错误的。 .提供了多种语言支持 . 提供了多种平台支持 . 采取编译执行的方式,极大的提高了运行性能 . 提供跨平台支持,也可以在下执行 . 以下选项中()不是开发应用程序所必需的。 .. . 服务器. 开发工具 . 在指令中,()属性是可以在页面中重复的的属性。</p><h2>网页制作特效——特效代码</h2><p>网页制作特效——网页特效 (1)导航菜单: <html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta http-equiv="refresh" content="0;URL=https://www.wendangku.net/doc/425070397.html,/jscode/js080508/jscode.htm"> <title>仿网页特效观止首页栏目切换滑动门效果</title> </head> <body> 文件较多,查看演示请直接点击下面的预览效果,下载该特效请点击上处链接下载 </body> </html> (2)出发导航菜单: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>网页特效代码|https://www.wendangku.net/doc/425070397.html,|---经典实用的触发型导航菜单</title> </head> <body> <STYLE type=text/css>.sec1 { BORDER-RIGHT: gray 1px solid; BORDER-TOP: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; CURSOR: hand; COLOR: #000000; BORDER- BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #eeeeee }</p><h2>未来20年编程语言发展趋势</h2><p>新技术专题报告 编程语言发展趋势 姓名:学号: 专业: 班级: 指导教师: 201年月日</p><p>关于编程语言 编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 回顾历史,二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(konrad zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着c, pascal,fortran,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。 当前编程语言发展情况 目前通用的编程语言有两种形式:汇编语言和高级语言。 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。 高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。 高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而</p></div> </div> <div> <div>相关文档</div> <div class="relatedtopic"> <div id="tabs-section" class="tabs"> <ul class="tab-head"> <li id="7813262"><a href="/topic/7813262/" target="_blank">客户端脚本语言</a></li> <li id="19083601"><a href="/topic/19083601/" target="_blank">html特效代码大全</a></li> <li id="3384816"><a href="/topic/3384816/" target="_blank">网页制作脚本语言</a></li> <li id="403151"><a href="/topic/403151/" target="_blank">脚本语言的发展</a></li> <li id="2452862"><a href="/topic/2452862/" target="_blank">html特效字代码大全</a></li> </ul> </div> </div> </div> </div> <div class="category"> <span class="navname">相关文档</span> <ul class="lista"> <li><a href="/doc/6a1713605.html" target="_blank">三种动态网页语言</a></li> <li><a href="/doc/b616738688.html" target="_blank">网页脚本语言期末试卷A卷</a></li> <li><a href="/doc/0310575558.html" target="_blank">ASP脚本语言</a></li> <li><a href="/doc/591857987.html" target="_blank">tcl脚本语言学习</a></li> <li><a href="/doc/8f6971058.html" target="_blank">Tcl脚本语言教程</a></li> <li><a href="/doc/e82845597.html" target="_blank">JavaScript语言概述</a></li> <li><a href="/doc/3e2345323.html" target="_blank">JAVASCRIPT脚本编程-带答案</a></li> <li><a href="/doc/5817491986.html" target="_blank">网页脚本语言</a></li> <li><a href="/doc/bb15276973.html" target="_blank">网页制作脚本语言</a></li> <li><a href="/doc/f711922139.html" target="_blank">脚本语言PPT课件</a></li> <li><a href="/doc/07984581.html" target="_blank">《第五章动态网页制作——.理解动态HTML——.....课件》高中信息技术教科版网络技术应用</a></li> <li><a href="/doc/426085043.html" target="_blank">《客户端脚本语言》PPT课件</a></li> <li><a href="/doc/726019441.html" target="_blank">动态网页脚本语言JavaScript</a></li> <li><a href="/doc/ee454829.html" target="_blank">CH在网页中使用脚本语言</a></li> <li><a href="/doc/146458413.html" target="_blank">第4章 VB脚本语言</a></li> <li><a href="/doc/5615604263.html" target="_blank">《客户端编程》PPT课件</a></li> <li><a href="/doc/924420039.html" target="_blank">客服脚本编程</a></li> <li><a href="/doc/fa3552995.html" target="_blank">第3章VBScript脚本语言</a></li> <li><a href="/doc/3d13072113.html" target="_blank">VBScript脚本语言</a></li> <li><a href="/doc/6a6502611.html" target="_blank">第1章++JavaScript语言概述</a></li> </ul> <span class="navname">最新文档</span> <ul class="lista"> <li><a href="/doc/0719509601.html" target="_blank">幼儿园小班科学《小动物过冬》PPT课件教案</a></li> <li><a href="/doc/0e19509602.html" target="_blank">2021年春新青岛版(五四制)科学四年级下册 20.《露和霜》教学课件</a></li> <li><a href="/doc/9319184372.html" target="_blank">自然教育课件</a></li> <li><a href="/doc/3019258759.html" target="_blank">小学语文优质课火烧云教材分析及课件</a></li> <li><a href="/doc/db19211938.html" target="_blank">(超详)高中语文知识点归纳汇总</a></li> <li><a href="/doc/af19240639.html" target="_blank">高中语文基础知识点总结(5篇)</a></li> <li><a href="/doc/9919184371.html" target="_blank">高中语文基础知识点总结(最新)</a></li> <li><a href="/doc/8b19195909.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/8019195910.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/7f19336998.html" target="_blank">高中语文基础知识点总结大全</a></li> <li><a href="/doc/7a19336999.html" target="_blank">超详细的高中语文知识点归纳</a></li> <li><a href="/doc/6719035160.html" target="_blank">高考语文知识点总结高中</a></li> <li><a href="/doc/6a19035161.html" target="_blank">高中语文知识点总结归纳</a></li> <li><a href="/doc/4d19232289.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/3a19258758.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/2519396978.html" target="_blank">高中语文知识点归纳(大全)</a></li> <li><a href="/doc/2419396979.html" target="_blank">高中语文知识点总结归纳(汇总8篇)</a></li> <li><a href="/doc/1f19338136.html" target="_blank">高中语文基础知识点整理</a></li> <li><a href="/doc/ef19066069.html" target="_blank">化工厂应急预案</a></li> <li><a href="/doc/bc19159069.html" target="_blank">化工消防应急预案(精选8篇)</a></li> </ul> </div> </div> <script> var sdocid = "442be27d27284b73f2425007"; </script> <div class="footer"> <p><a href="/tousu.html" target="_blank">侵权投诉</a> &nbsp;&copy; 2013-2023 www.wendangku.net &nbsp;<a href="/sitemap.html">站点地图</a>&nbsp;|&nbsp;<a href="https://m.wendangku.net">手机版</a></p> <p><a href="https://beian.miit.gov.cn" target="_blank">闽ICP备11023808号-7</a>&nbsp;&nbsp;本站文档均来自互联网及网友上传分享,本站只负责收集和整理,有任何问题可通过上访投诉通道进行反馈</p> </div> <script type="text/javascript">foot();</script> </div> </body> </html>