脚本语言范文

时间:2023-03-10 04:59:19

脚本语言

脚本语言范文第1篇

关键词:游戏开发;脚本语言

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)15-20ppp-0c

The Research of Game Scripting Language

ZHOU Cheng,CHEN Dai-Jin

(Guangzhou Kangda Vocational Technical College,Guangzhou 511363,China)

Abstract:Analyzed and summarized the scripting language superiority and the shortcoming, has analyzed the application of scripting language in the game development, introduced the feature of Python、Lua and so on, summarized the application of Python、Lua and so on in the game development, had pointed out the tendency ofscript language in the game development.

Key words:The game development;Scriptinglanguage

1 前言

随着游戏项目规模的不断扩大,游戏内容越来越丰富,需要编辑的东西越来越多,对数据驱动的要求也就越来越高,传统的编译型语言C/C++已无法满足开发者对于语言灵活性,易用性,动态编译的需求[5]。游戏开发趋向于将脚本语言和C/C++等语言结合起来。作为底层的游戏引擎大部分使用汇编语言、C/C++等语言来开发,而游戏本身却用高级脚本语言来编写,例如Quake3和Unreal等。目前,国内大多数流行游戏如腾讯的《QQgame》和搜狐的《天龙八部》等也都使用了脚本语言。另外,无论是商业的Unreal引擎还是开源的OGRE还提供了脚本接口。在游戏开发领域,比较流行的脚本包括Python、Lua、ruby和Erlang等,其中Python和Lua是网络游戏开发的中坚力量。

2 脚本语言的优势

1)语法简单、易懂。脚本语言中抽象符号和古怪的语法和缩写词相对较少,编写和维护容易,其结果是测试、调试和修改也变得容易。

2)动态数据类型检查。变量不需要预先定义其类型,系统会在运行时自动检查变量的类型。对于变量采用“后期绑定”的方式,并不像C等语言在编译时就分配内存,而是在变量被引用时才被创建。

3)自动进行垃圾收集和内存分配。据CERT(the Computer Emergency Response Team)报告称,软件中80%的漏洞都是由缓冲区溢出产生的。脚本语言没有指针,在运行时自动处理垃圾收集和内存分配,这样可以就使得缓冲区溢出难以发生。

4)较少编程时间。如果一个软件使用脚本语言编写,那它花的时间要比Java缩短3倍,比C++缩短5倍[1]。这样可以节省编程人员的时间。

5)可移植性强。脚本语言与处理器、操作系统的平台无关,当脚本语言编写的程序移植到不同的平台时,只要改变它的解释器,其它任何事情都不需要做。

6)扩展性强。脚本语言都非常容易地与C、C++、Java整合。脚本语言提供了与外界联系的接口,其它语言的组件或库可以扩展脚本语言功能或被脚本语言“胶”到一起。

7)模块化,可重用性高。脚本语言支持模块化,代码可以被制作成容易使用的小组件。它也可以很轻松地重用到未来的项目中去。

8)其它。脚本语言都是交互式的解释型语言,脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也有先天的优势,这使得脚本能够更好地保证代码质量。

3 脚本语言的缺点

虽然脚本语言有许多优势,但它也存在许多不足。例如,虽然它能够节省编码的时间,但它的执行速度慢,所以它不适合开发像设备驱动程序和内核程序;源代码解释后的字节码容易受到攻击;虽然它的移植性比较好,但在一些特殊平台上不能被有效的使用;缺乏对底层资源的控制和管理;调试器也不够先进。

4 游戏开发中使用脚本语言

对于游戏内容的管理,游戏源代码管理,代码编译,运行时脚本的编写也都可以很方便的实现。在游戏的开发过程中,可以利用Python等脚本语言或者利用C/C++等语言独立开发游戏。目前,一般是将脚本语言和C/C++语言结合起来,完成游戏的开发。

4.1 驱动游戏数据

游戏公司发现在可执行代码中过多的关注游戏参数(例如:NPC的移动速度、角色的HP、MP值等)非常费时且使测试游戏变得更加难,因为任何游戏参数的变化都会导致重新编译或重建整个游戏――从头开始重建一个大的游戏将会要花费数小时,重新编译或重建意味着会引入新的问题。由于脚本语言在数据驱动和动态编译等方面的优势,使用脚本语言来管理和处理游戏的相关参数,即使是没有编程经验的设计师们也可以随意修改游戏的属性和测试游戏,在没有引入脚本语言之前,只有深入地了解游戏引擎才可以做到。

4.2 实现游戏引擎和游戏本身分离

由于脚本语言在GUI控制、人工智能、数据管理等方面的具有强大功能,所以,如果使用脚本语言来运行AI、处理游戏中玩家的属性等数据,那么编写游戏引擎的编码人员就可以专注于游戏引擎的代码上,从而实现游戏引擎和游戏本身进行严格分离。这样用C等语言编写的游戏引擎就可以用到多个游戏上。游戏引擎维护相对静态状态,而脚本语言处理游戏中的动态的数据,例如各个游戏中不同角色的属性、游戏目标和使命。这样有利于新游戏的开发和现有游戏版本的升级。

4.3 整合游戏中间件

在网游时代,市场竞争趋于激烈,如果延用单机时代的开发方式,那必然会被市场淘汰。在网游时代,游戏业中的主要矛盾已经由性能低下的硬件与游戏执行效率之间的矛盾转变为快速变化的市场需要与低效的开发工具之间的矛盾[2]。网游在网络、数据库、图形甚至部分逻辑等方面差异性不大。为适应这种竞争,游戏公司必然会采用大量的游戏中间件(目前比较流行的的网游中间件有Unreal等)来组合形成新网游产品。脚本语言又叫“胶”语言,它能够较好地粘合各个游戏中间件。这样,可以加快游戏的开发速度和质量。

5 游戏开发中常用脚本语言

5.1 Python语言

Python是一种面向对象的脚本语言。它在很早的时候就是一种游戏编程的辅助工具。在“星球之旅(Star Trek)”等超级大片中担当特技和动画制作的工业光魔公司(Industrial Light)就采用Python制作商业动画。最近,Python在“自由力量”和Humungous' 后院体育系列游戏中得到应用。Pygame 是一组为编写游戏而设计Python 模块,Pygame 是一组为编写游戏而设计Python 模块,Pygame在 SDL(Simple Directmedia Library即“简单媒体类库”)库的基础上添加了许多功能。它类似于 DirectX并支持图形硬件加速。还可以利用PyOpenGL模块,可以非常迅速的编写出游戏中的三维场景。Pygame具有非常好的可移植性,几乎可以运行在任何平台和操作系统上。因此,游戏开发人员可以利用python语言创建具有自己特色的游戏。Python通过扩展和嵌入等方式与其它语言相结合来增强它的开发能力。在Python语言中,只有极少数内置的将它与其它语言结合起来的方法。为了利用其它语言,开发人员需要开发一个包装程序,这个包装程序将Python中的功能参数转化到另一个语言中,同时将返回的结果以一种Python能理解方式传给Python。

Python语言的主要优点包括:

1)与Lua等相比,它有更多的扩展模块。

2)语法简单、易读在线学习资料、案例和相关书藉相对较多。

3)与它相关的工具相对较多。

Python语言的主要缺点包括:

1)它的调试器比较古怪且速度慢,它的执行速度慢。

2)很难将Python与其它语言捆绑。

3)很多开发人员不太喜欢它对空格符敏感这一语言特点

5.2 Lua语言

Lua是一个小巧简单、功能强大的语言,这使得Lua非常容易学习,它的完全版可用一张软件装下来。Lua有很高的执行效率,统计表明在众多脚本语言中,Lua是平均效率最高的脚本语言[3]。Lua被设计为易于扩展的,Lua很容易与C/C++、Java,以及其它语言接口,可用其它语言代码来扩展功能,实际上它的很多功能都是通过外部库来扩展的。鉴于它卓越的扩展性,可以把它作为搭建领域语言的工具(如:游戏脚本)。Lua不是通过使用条件编译来实现平台无关的,而是完全使用ANSI(ISO)C,这样只要是有ANSI C编译器的系统都可以使用Lua。Lua也存在一些不足,例如学习材料和文档非常少,自带的功能模块较少等。LuaSDL是Lua语言中的SDL封装包,它类似于Python中的Pygame。

Lua在复杂游戏用户界面控制、人工智能等方面的强大功能,使得它在游戏开发中得到重用。例如《魔兽世界》的自定义界面系统就采用了Lua,网易经典“西游系列”也使用了Lua。在游戏的开发过程中,开发人员一般将游戏引擎交由C/C++等语言完成。而在用户界面、人工智能、游戏逻辑、动态行为等游戏中经常变动的部分交予Lua来完成。

5.3 其它语言

Ruby是一种用于迅速和简便的面向对象编程的解释性脚本语言。RGSS (Ruby Game Scripting System)是它的一个脚本性质的游戏编程系统。RPG Maker XP (RMXP)这款制作角色扮演类游戏开发软件所使用的脚本语言就是Ruby。RGSS的功能有限,并不能用它完成一个完整的游戏,但随着游戏行业对网页游戏的看好和RoR(Ruby on Rails,即一个用于编写网络应用程序的框架,它基于计算机脚本语言Ruby)的流行,Ruby越来越受到重视。Erlang是用户相对很少,但它非常适合分布式的MMOG(Massively Multiplayer Online Game)的开发。

6 总结

随着市场对游戏的需求扩大以及网游生产组装化,以及开发者对于语言灵活性,易用性,动态编译的需求等,为脚本语言的发展提供了空间。但脚本语言不可能代替以C/C++为代表的其它语言。脚本语言和编译型语言在生产效率和执行效率上各有所长,游戏的开发既需要对游戏数据驱动、游戏内容管理等方面提供很好支持的脚本语言,也要有能满足游戏引擎快速执行特点的编译型语言。没有一种脚本语言适合所有类型的游戏开发,只能是根据所开发游戏的类型和特点来选择不同的脚本语言。

参考文献:

[1]Tom Gutschmidt.Game Programming with Python,Lua,and Ruby[M].US:Premier Press,2003.

[2]赖勇浩.游戏中的脚本语言[J].程序员:游戏创造,2007(8):16-17.

[3]Roberto Ierusalimschy.Programming in Lua[M],译.2003

[4]Hal Fulton.Ruby Way[M].US:Sams Publishing,2002.

[5]封烨.游戏中的Python语言介绍[J].程序员:游戏创造,2007(8):24-26.

收稿日期:2008-03-12

脚本语言范文第2篇

关键词:Lua;脚本语言;插件;C;游戏开发

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)04-0899-03

The Game Scripting Language Lua

WANG Lei

(Huali College, Guangdong University of Technology, Guangzhou 511325, China)

Abstract: Compact and efficient scripting language Lua, with the C / C + + language, the design is aimed at embedded applications, so as to provide a flexible application, expansion and customization capabilities allow customers to design their own in the game client script, produce special game logic plug-ins.

Key words: Lua; scripting language; plug-ins; C; game development

脚本语言又叫动态语言。是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的一种计算机编程语言,用来控制软件应用程序。几乎所有计算机系统的各个层次都有一种脚本语言,包括操作系统层,如计算机游戏,网络应用程序,文字处理文档,网络软件等。在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。目前脚本语言正成为开发者的重要工具,脚本不仅解决了C/C++无法解决的开发效率难题,还降低了开发的成本和风险。因此脚本技术在游戏业内蓬勃发展起来,并且已经成为游戏业中不可或缺的一环。

1 脚本语言Lua介绍

lua小巧高效,作为C的扩展,能与C自然的结合与交互,所以常被用于写游戏逻辑,已经成为游戏里最常用的一种脚本。在当前的游戏开发行业中,除了《魔兽世界》和网易经典“西游系列”都使用了脚本外,现在大多数比较流行的程序也都使用了脚本,如腾讯的《QQgame))和搜狐的《天龙八部》等。不仅如此,现今的游戏引擎也都提供了脚本接口,无论是商业的unreal引擎还是开源的OGRE,无一例外。

2 Lua特点

2.1 Lua是一种轻量语言

它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程式里。和许多"大而全"的语言不一样,网路通讯、图形界面等都没有预设提供。

2.2 Lua可以很容易地被扩展:

由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。Lua 与宿主语言之间的这种共生关系的核心是宿主语言是一个虚拟堆栈。虚拟堆栈与实际堆栈类似,是一种后进先出(LIFO)的数据结构,可以用来临时存储函数参数和函数结果。要从 Lua 中调用宿主语言的函数(反之亦然),调用者会将一些值压入堆栈中,并调用目标函数;被调用的函数会弹出这些参数(当然要对类型和每个参数的值进行验证),对数据进行处理,然后将结果放入堆栈中。当控制返回给调用程序时,调用程序就可以从堆栈中提取出返回值。

实际上在 Lua 中使用的所有的 C 应用程序编程接口(API)都是通过堆栈来进行操作的。堆栈可以保存 Lua 的值,不过值的类型必须是调用程序和被调用者都知道的,特别是向堆栈中压入的值和从堆栈中弹出的值更是如此(例如 lua_pushnil() 和 lua_pushnumber()。

2.3 Lua是一种多重编程范式的程式设计语言:

它只提供了很小的一个特性集合来满足不同编范式的需要,而不是为某种特定的编范式提供繁杂的特性支援。例如,Lua并不提供继承这个特性,但是你可以用元表来模拟它。诸如名字空间、类这些概念都没有在语言基本特性中实现,但是我们可以轻易的用表结构(Lua唯一提供的复杂数据结构)轻易模拟。Lua可以在运行时随时构造出一个函数,并把它看作一个对象(正是所谓的first class function),这个特性可以很好的满足函数式编程的需要。这是提供了这些基本的元特性,我们可以任意的对语言进行自需的改造。

2.4 Lua支持的数据类型非常之少

它只提供了 数字(缺省是双精度浮点数,可配置)、布尔量、字符串、表、子程序、协程(coroutine)以及用户自定义数据这几种。但是其处理表和字符串的效率非常之高,加上元表的支援,我们可以高效的模拟出需要的复杂数据类型(比如集合、数组等)。

2.5 Lua是一个动态弱类型语言

支援增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程(coroutine)支援。

2.6 Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数

这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。 一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能,这将给Lua带来更加优秀的性能。和Python等脚本不同,Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。不过Lua还是具备了比如数学运算和字符串处理等基本的功能。

3 Lua在游戏中的应用实例

3.1 一个简单的例子

假设在暗黑游戏中,有一套准备刺客剑(Assassin Sword),设定只有达到20级且是刺客(assasin)类时方能装备该物品。在程序创建一个数列存放这些信息,例如:

Player = { }

Player[1] = { level = 15, class = "warrior", weapon = "knife" }

在代码中检查是否有资格装备该武器,如下:

if Player[1].level >= 20 and Player[1].class == "assassin" then

Player[1].weapon = "Assassin Sword "

end

3.2 以游戏中的一个 Lua 档案为例,列出建构起一个插件的主要代码

local function LoadAddOnWrapper(addon)

local o = getfenv(0)

n = {}

local oldmt = getmetatable(o)

setmetatable(o, mt)

local success, ret = pcall(LoadAddOn, addon)

setmetatable(o, oldmt)

if not success then

geterrorhandler()(ret)

return

elseif not ret then

DEFAULT_CHAT_FRAME:AddMessage("Error loading LoadOnDemand plugin " .. addon)

return

end

local dependencies

local plugin

for k,v in pairs(n) do

if IsCorrectPlugin(v) then

if plugin then

if not dependencies then

dependencies = {}

end

table.insert(dependencies, plugin)

end

plugin = v

end

end

if not plugin then

DEFAULT_CHAT_FRAME:AddMessage("Error loading LoadOnDemand plugin " .. addon)

return

end

return ret, plugin, dependencies

end

function FuBar:OnProfileEnable(oldName, _, copyFrom)

isChangingProfile = true

if not next(FuBar.db.profile) then

local def

local profile = self:GetProfile()

if profile:find("^char/") or profile:find("^class/") then

local class = select(2, UnitClass("player"))

def = _G["FUBAR_DEFAULTS_" .. class] or FUBAR_DEFAULTS

else

def = FUBAR_DEFAULTS

end

if type(def) == "function" then

def = def()

end

def = copyTable(def)

for k,v in pairs(def) do

FuBar.db.profile[k] = v

end

end

if type(self.db.profile.loadOnDemand) ~= "table" then

self.db.profile.loadOnDemand = {}

end

if type(self.db.profile.tooltip) ~= "table" then

self.db.profile.tooltip = {}

end

if type(self.db.profile.panels) ~= "table" then

self.db.profile.panels = {}

end

CleanDB()

doneSetupPlugins = false

pluginsToSetup = {}

for i,plugin in ipairs(plugins) do

pluginsToSetup[plugin] = true

local frame = plugin:GetFrame()

frame:Hide()

frame:ClearAllPoints()

plugin:SetPanel(nil)

end

for i = self:GetNumPanels(), 1, -1 do

self:GetPanel(i):del(true)

end

for i = #self.db.profile.panels, 1, -1 do

if self.db.profile.panels[i] then

FuBar_Panel:new()

end

end

if self:GetNumPanels() == 0 then

FuBar_Panel:new()

end

self:CheckResolution()

for i = 1, GetNumAddOns() do

local name, _, notes, enabled, loadable = GetAddOnInfo(i)

if IsAddOnLoadOnDemand(i) and enabled and loadable and not IsAddOnLoaded(i) then

if findFuBarDep(GetAddOnDependencies(name)) then

if not self.db.profile.loadOnDemand[name] then

self:LoadPlugin(name)

elseif not self.db.profile.loadOnDemand[name].disabled and (not self.db.profile.loadOnDemand[name].condition or CheckLoadCondition(self.db.profile.loadOnDemand[name].condition)) then

self:LoadPlugin(name)

else

local exists = false

for _,n in ipairs(toBeLoaded) do

if n[1] == name then

exists = true

break

end

end

if not exists then

table.insert(toBeLoaded, {name, notes})

end

end

end

end

end

for i,plugin in ipairs(plugins) do

if plugin.IsDisabled and plugin:IsDisabled() and plugin:GetPanel() then

plugin:GetPanel():RemovePlugin(plugin)

end

end

4 结束语

Lua程序设计语言是一个简洁、轻量、可扩展的脚本语言。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua的最大用途是在宿主程序中作为脚本使用。由于是嵌入式脚本,因此它们在客户前端可以表现得极其灵活。通过将配置参数及实现具体功能的方法逻辑抽离到脚本中,在修改及拓展时就能更加方便更新处理而无需重新编译主体框架代码。因此很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。

参考文献:

[1] LuaForge[EB/OL]./.

[2] The Programming Language Lua[EB/OL]./.

脚本语言范文第3篇

在HTML、ASP、PHP和JSP这些脚本语言中,PHP这个主流开发脚本是近几年被程序员最常采用的开发工具。

HTML(超文本标记语言),它是网络的通用语言,一种简单、通用的全置标记语言,同时它又是一种静态语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。HTML语言很容易被初学者掌握,是一种最为基础的语言。

用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX,WINDOWS等)。

自1990年以来,HTML就一直被用作World Wide Web的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。使用HTML语言描述的文件,需要通过WWW浏览器显示出效果。

ASP是基于VB的,同时因为它有独立的脚本引擎,也可以支持Perl、Javascript等脚本。

ASP是一种动态的脚本语言,需要在服务器端解析。其中是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。提供一种良好的扩充结构,允许开发者在适当的级别“插入”他们的代码。

的执行效率比ASP有大幅提高;是世界级的工具支持;简单易学,具有高效的可管理性;在多处理器的环境下用特殊的无缝连接技术,很大的提高运行速度。

PHP语言在近几年逐渐升温。我们不禁会问,PHP为什么这么火?类似C的语法和一直缺乏的命名空间支持(这恐怕也算是PHP的特性吧),使得PHP上手非常容易,PHP的开发人员数量是一个十分庞大的群体。也正由于它的简单易用,易上手,并且使用这种工具的开发人员比较多,这也一定程度上造成了一个认识误区:PHP是草根者的开发语言。

PHP是流行的Web应用脚本语言,随着PHP技术的成熟和完善,PHP已经从一种针对网络开发的计算机语言发展成为了一个适合于企业级部署的技术平台。目前在中国,有数十万phper投身于通过其开源行动,为中小企业提供更低成本、更适合其应用、更容易定制的应用软件。

而类似数据视窗推出的高端PHP主机,则为这些应用软件提供了更易于管理、更稳定、更快速、更安全、更低成本的基础运行平台。PHP和ASP比较相似,它们都可以在HTML中加入脚本语言。

PHP作为一种HTML内嵌式的语言,它独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法,可以比CGI 或者Perl 更快速的执行动态网页。

用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要诚信编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。

PHP可以运行在WINDOWS NT和多种版本的UNIX上。它不需要任何预先处理而能快速反馈结果,也不需要mod_perl的调整来使服务器的内存映象减小。PHP消耗的资源较少,当PHP作为Apache Web服务器一部分时,运行代码不需要调用外部二进制程序,服务器不需要承担任何额外的负担。

PHP高效,跨平台,而且也是免费的(个别组件除外),这些都促成了它之所以现在这么火热的原因。

JSP和ASP的方式其实也多少有些类似。JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。一次编写,到处运行。JSP简单易用,具有平台无关性且安全可靠,具有主要面向因特网所有特点。对于跨平台的中大型网站系统来讲,基于Java技术的JSP是比较好的选择。

脚本语言范文第4篇

关键词:脚本语言、MAXScript、函数表达式

所谓脚本语言,即在应用程序中由用户根据由应用程序以供的命令集,自己编写的程序段,用来简化程序的操作过程或对应用程序进行扩展。像许多应用程序一样,3DSMax也有自己专门设计的脚本语言MAXScript,它是像3DStudioMAX一样面向对象的,有许多对于MAX用户界面征和结构,带动画关键帧的动画模式,并通过层次改变场景对象对应于MAX的对象层次。是可以调用大部分c++函数的,和MAYA的MEL语言也有很多的相通之处。对于三维软件的高级用户来说,掌握了较全面的技术后发现现有的软件已无法全力表现出她们的思想,他们需要一种可以随时扩展软件工作能力的工具,可以自己开发程序外挂来帮助工作已经是必需的要求了。MAXScript程序给用户提供了更多的想象空间,也是高级用户的必修课。

MAXScript是3dsmax中的插入脚本语言,它为用户提供了以下功能:

·描述3DStudioMAX的全部用途,如造型、动画、材质、渲染等;

·将脚本集成在用户应用面板卷展栏工作界面上,给脚本一个标准的MAX用户接口;

·使用插入的文件的I/O,建立用户输入/输出工具;

·写入可以访问全部场景状态的过程控制器;

·建立批处理工具,例如批处理渲染脚本;

·通过OLEAutomation,与外部系统建立活动接口。

表达式控制器和MAXScript的基本结构和VB类似,但由于3DSMax是图形程序,所以在MAXScript中有许多绘制图形的命令,这些命令类似于AUTOCAD中的LISP文件命令。这样的命令不需要编辑,可直接在程序中运行,并可直接看到运行结果。

在3dsmax的MAXScript这个菜单中有一个记录宏(MacroRecorder),选中这一项,在以后绘制图形时,每一步的操作都会自动转化成脚本语言,打开同一菜单下的脚本记录(MAXScriptListener),可以看到每一步操作的命令形式,通过这种方法可以初步了解MAXScript的基本格式,也可以通过复制命令简化编程步骤。下面以一个简单的实例加以说明。

1、打开记录宏命令,打开脚本记录。

2、在任意窗口划一直线和一个球体。

3、为球体制定位置控制器为路径,选择直线作为运动路径。

4、打开动画记录按钮,将时间调到100帧。

5、将球体在路径中位置调到50(%AlongPath),关闭动画记录按钮。

下面是相应的脚本语言:

1.linetransform:(matrix3[1,0,0][0,0,1][0,-1,0][4.42805,-1.45167e-007,3.32103])isSelected:on

Sphereradius:13.0567smooth:onsegs:32chop:0slice:offsliceFrom:0sliceTo:0transform:(matrix3

[1,0,0][0,0,1][0,-1,0][86.7159,-3.25819e-006,74.5387])isSelected:on

2.select$Sphere01

$.pos.controller=path()

$.pos.controller.path=$Line01

3.maxtoolanimmode

setanimateon

sliderTime=100f

select$Sphere01

4.$.pos.controller.percent=50

maxtoolanimmode

setanimateoff

现欲使球体前50帧运动1/4路程,后50帧运动3/4路程。则根据上面记录编写程序如下(其中绘制过程省略):

maxtoolanimmode

setanimateon’开启动画记录

fort=1to100by1doattimet’设置动画范围从1到100

(

$Sphere01.pos.controller=path()’指定路径控制器

$Sphere01.pos.controller.path=$line01’选择路径

ift<50then’当在50帧以内时

(

$Sphere01.pos.controller.percent=t/2’路程为0到25%

)

ift>=50then’当在50帧以后时

(

$Sphere01.pos.controller.percent=t*75/50-50’路程为25%到100%

)

)

maxtoolanimmode

setanimateoff’关闭动画记录

这样就完成了一个简单的脚本语言的编制。可见通过这种方法编制脚本语言是一种简便快捷的好方法。另外脚本语言中还有很多函数,可通过相关资料查询其用法,这里就不再赘述了。

下面讲一点MAXScript在应用方面的技巧:

1、用MAXScript控制布尔运算

先生成一子弹状物体起名bullet,再生成一与其等直径圆柱和一个立方体,调整子弹头部指向x轴负向,其轴心在子弹x轴最小值处,立方体和圆柱体轴心在x最大值处,对齐立方体和圆柱体轴心,(注意在使用MAXScript时轴心的位置非常重要),关联复制立方体和圆柱体,复制后的物体分别起名为box、bar(圆柱体),将复制后的物体移开便于观察,对原物体进行布尔运算,这是通过对复制后的物体进行控制即可控制布尔物体。下面的程序通过控制圆柱体的高度来控制子弹在立方体上打孔的深度。(在此为简化程序未考虑加减速问题,有兴趣的读者可加以补充)

animateon

fort=1to100by1doattimet

(

$bullet.pos.x=3000-10*t’子弹匀速向x轴负向运动

if$bullet.pos.x-$box.pos.x>=0then

(

$bar.height=0’当子弹未接触到立方体时洞深为0

)

if$bullet.pos.x-$box.pos.x<0then

(

$bar.height=$box.pos.x-$bullet.pos.x’当子弹未接触到立方体时洞深为子弹头距立方体右边的距离

if$bar.height>250then’圆柱体高度即洞深不超过立方体厚度

(

$bar.height=250

)

)

)

animateoff

2、MAXScript对灯光的控制

通过对灯光的三种颜色分别控制可以模仿霓虹灯的效果,当然通过开关控制器就可以较简单的控制灯光,但那样的控制方式比较单调,无法形成霓虹变幻莫测的效果,用MAXScript控制灯光产生的效果几乎可以乱真,这里只提供一种思考不做详细介绍,希望广大爱好者们开动脑筋,发挥想象创造出完美的场景。

3、MAXScript对模型的变形控制

物体的变形动画是动画的一种重要的形式,用MAXScript控制模型Modify面板中的各种变形修改命令,可以产生多种真实的效果,如飞翔、摇摆、扇动、磨光等。

脚本语言范文第5篇

远程教育已经在我国众多的发达城市当中开展起来,这使得我国的教育更加具有终身性与普遍性,不仅能够极大提高国民综合素质,还能够突破传统教育的局限。然而,远程教育需要强大的交互功能以及多媒体的辅助作用,教师所传授的内容也更加广泛与具体,通过人机的交互不仅能够提高学习者的学习热情,还能够更好地训练逻辑思维与创新思维,因此,远程教育的课件一定要达到动态交互的效果。与此同时,脚本语言不仅能够将动态课件的效果最大限度地展现出来,还能够将其与市场中其他的课件进行比对,从而找出最佳的教学方案,将先进的教学思想尽可能的传授给学生。

2脚本语言在远程教育动态网页设计中的应用

2.1JavaScript语言的应用JavaScript语言作为一种新型的动态性编程语言具有多种应用功能,首先在网址的编写当中可以运用简洁、精准的编码将语言编译出来,使得动态网页呈现出特有的表现形式,这样能够让初学者很快明白课程教授的内容和目的,然而,JavaScript语言的不足就是一旦有一处编码出现错误,将会影响后续的程序运行,使得远程教授出现问题。另一方面,JavaScript语言具有先进的鼠标动画跟踪功能,这是课堂教学中不可缺少的重要组成部分,是教师与学生互动的体现,教师可以通过移动鼠标准确、快速地将自己想要表达的内容展现给学生看,同时在有限的课堂时间内顾及各个水平学生的学习需求。最后,就是JavaScript语言对于文字图像的动态显示功能,很多文字内容通过动态的图像来展现能够使人更容易理解和记忆,这正是现阶段我国远程教育所欠缺的内容,远程教育的动态网页设计如果能够将教学内容自动化的传授,就能突破传统的教学模式,也就是说,通过动态的文字将学生存在的问题一一解答,同时实现学生之间的交流和互动,这样就能够将每个人的创新思想与他人分享。

2.2JSP语言的应用脚本语言可以与多种编程语言配合使用,这样不仅能够完善脚本语言的运用效果,更能够凸显其兼容性,使得远程教育的动态效果达到最佳。而JSP语言在脚本语言中可谓是后起之秀,其以更快的速度和准确度占据着动态网页设计的重要位置,很多远程教育的编程语言都是选用JSP语言,其能够实现知识点的连接功能,能够让学生在学习的同时更加便捷地查阅自己不懂的内容,通过动态图片或语言的连接,只要通过点击就能够进入到另一个界面,获取更加详细、准确的信息,让远程教育不存在知识点的堆积,提高学习效率与教学成果。另一方面,JSP语言还能够根据实际的课堂需求设计出动画卡通人物,其目的是为了提高低年级学生或初学者的学习热情,从而使其更加专心的学习,可以帮助学生建立抽象思维。最后,JSP语言能够实现网络测试,这样就能够解决远程教育存在的测试问题,通过网上学习能力的测试,让学生即便在没有教师与家长的看护下也能够认真的完成作业,同时检验自己的学习成果,更为重要的是JSP语言所展现的动态教学具有限时和提醒的功能,可帮助学生更加认真、高效的完成作业。

2.3其他脚本语言的应用实际上,脚本语言的种类有很多,应该根据实际的教学情况和需求选择最恰当的脚本语言,只有这样才能使远程教育的动态网页设计更加实用,当然也是为了获得最大的经济效益。每种脚本语言都有自身的优势和不足,一些技巧性与动态性的网页设计就可以选用上文阐述的两种脚本语言,其他的脚本语言可以先让部分用户做体验,看其是否符合用户的需求,从而达到远程教育的最终目的。

3结语

本研究首先对脚本语言进行详细的介绍,之后对其在远程教育动态网页设计中的应用进行阐述,要想提高教学质量就应该更加注重远程教育的课件制作与技术实现,尤其是多媒体软件的开发不仅要更好的呈现教学内容,还要提高学生的创新思维,确保教学质量,只有这样远程教育才能够更好的为我国的教育事业做出贡献。

脚本语言范文第6篇

关键词:中职;JavaScript网页脚本语言;教学方法

由于网页脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,所以在网面设计中,网页脚本被大量使用,因此在网页设计教学中,网页脚本语言教学尤显重要。但是中职学校学生在刚接触网页脚本代码时,却普遍表现出恐惧情绪,对使用网页脚本语言编写代码不感兴趣,平时学习不注重学习方法等,造成网页脚本语言教学效果欠佳。针对这一现象,笔者在教学实践中不断摸索,总结了以下几个提高网页脚本语言教学效果的方法。

一、克服学生编写网页脚本代码的恐惧心理

在编写网页脚本代码过程中,往往需要应用到一些英语知识,中职生大多英语基础比较差,当他们看到一些例题的代码里面包含英语单词、符号时,往往会产生一种恐惧心理,所以,教师首先要克服学生编写网页脚本代码的恐惧心理,帮其找回学习自信心。

平时笔者会通过各种途径引导学生学习常用专业英语单词,丰富专业英语的词汇量,如利用早读课组织学生朗读、抄写、默记英语单词;又如利用网页编辑工具DreamWeaver CS5自动提示代码功能,在编辑网页代码状态下输入几个字符之后,IDE 工具就会智能地给出一系列可选的函数或者变量提示你输入,这样学生就算一时忘记了某个英语单词,也能够从中找到需要的英语单词,大大方便了学生编写网页脚本代码;上课时,在讲解编写网页脚本代码的过程中,遇到一些陌生的英语单词,笔者会在相应的语句行后利用注释进行中文解释,这样会提高学生对网页脚本代码的理解。

经过一段时间的训练,学生掌握了英语单词的学习方法,并积累了一定量的英语单词,在一定程度上会提高编写代码的效率,克服了对网页脚本代码的恐惧心理,网页脚本语言教学的效果也提高了。

二、激发学生编写网页脚本代码的兴趣

著名教育家赞可夫说过:“对所学知识内容的兴趣可能成为学习动机。”从教育心理学的角度来说,兴趣是一个人倾向于认识、研究获得某种知识的心理特征,是可以推动人们求知的一种内在力量。因此,激发学生学习网页脚本代码的兴趣,学生就会持续地专心致志地钻研它,从而提高学习效果。在教学中,笔者主要从以下几个方面激发学生学习网页脚本代码的兴趣:

一是在学习编写网页脚本代码之前,演示一些国内著名的网站给学生观看,比如淘宝网、当当网、新浪网等,从总体上让学生对网站有一个初步的认识,使他们以后编写网页脚本代码时有一个参考目标,激发他们编写网页脚本代码的求知欲。

二是通过介绍中国名人传记,如杨志远、马云等的创业史,鼓励学生在学习上树立一个目标,学好专业知识,实现自己的理想,从而激发学生编写网页脚本代码的目标。

三是在平时教学过程中,注重基础知识的练习,根据学生兴趣和爱好,选取学生比较喜欢也能够实现教学目标的练习题,比如,用鼠标移到网页某个对象时,对象的大小或者颜色发生变化;离开对象之后,大小和颜色恢复到原来的状态。这一有趣情况,激发了学生学习的兴趣,学生很快根据教学内容编写出脚本代码;又如,根据当前时间在网页上显示不同的问候语,学生运用IF语句和日期时间函数也能够编写出脚本代码,这样学生每次练习都能够获得成功的体验,从而激发了学生学习网页脚本代码的兴趣和信心。

三、培养学生良好的学习习惯

“授人以鱼不如授人以渔”,在教学中,笔者根据教学内容和学生实际情况,重视学生学习方法的指导,培养学生良好的学习习惯,提高了学生编写网页脚本代码的学习效率。

一是培养学生良好的编写网页脚本代码的习惯。有的学生初次编写脚本代码,代码乱七八糟,连自己也没法看懂。所以笔者在教学过程中,注重培养学生编写代码的表达和书写习惯,引导学生注意代码的可读性,例如,代码的缩进编排、变量的命名规则要始终保持一致,在代码适当地方要做注释,以便以后检查和修改,单行语句不要过长等。平时上机操作过程中,对编写代码不规范的学生,及时指导督促他们纠正错误,使他们养成良好的编写网页脚本代码的习惯。

二是培养学生搜索资料的习惯。大部分学生平时上网目标是上QQ聊天或者玩游戏,如果能够引导学生利用适当时间上网学习搜索资料,解决学习上的疑难问题,这样不但能分散学生QQ聊天或者玩游戏的注意力,而且能使学生学会利用网络搜索资料进行学习,提高学生利用网络资源的能力。

三是培养学生阅读的习惯。为了提高学生编写网页脚本代码的能力,丰富解决编程问题的经验,笔者引导学生多看多思考别人编写的网页脚本代码,从中理解他人的解题思路和设计思想;另外,还引导学生多阅读计算机报刊杂志、书籍、网络论坛上的好文章,增长见识,为以后编写网页脚本代码打下良好基础。

四、调动学生合作探究的积极性

在课堂上,教师可通过有针对性的问题,引导学生积极探讨算法,调动他们合作探究的积极性。比如,学习了JavaScript脚本语言的For语句、do-while语句和While语句之后,为了使学生明白这三种循环语句的应用,笔者提出问题:应用一种循环语句编程实现求1+2+3+……+n>10000的最小正整数n,要求写出算法和脚本代码。首先,让学生在小组中讨论,每小组6人,每位小组长分工分任务,并且负责整理、调试脚本代码;接着,每个小组挑选一位成员上台先说说问题的算法,再演示脚本代码。在演示代码过程中,对存在错误的代码,教师在课堂上引导学生一起讨论,共同解决问题。演示代码之后,教师引导学生对这三种循环语句的特点及应用进行归纳总结。这样的讨论能激发学生参与合作的激情,学生在课堂中发挥了主体地位,在轻松的讨论氛围中更加深刻地理解教学内容,牢固地掌握所学知识。

另外,在课堂教学过程中,教师应尽量现场解答学生的疑难问题,对于课后不能及时解决的问题,教师可利用网络答疑的方式,如QQ、师生网上交流系统等进行网上辅导,与学生实现实时交互,充分调动学生课后探究的积极性,提高教学效果。

总之,网页脚本语言教学中,学生学习编写JavaScript网页脚本代码往往不是一蹴而就,而是需要教师平时多渠道引导学生,调动学生学习兴趣,拓宽学生知识,使学生领悟编写网页脚本代码的方法、思维和技巧,提高学生实际动手能力和探索、合作、创新能力,这样网页脚本语言教学才会取得良好的教学效果。

(作者单位:江门市蓬江区杜阮华侨中学)

参考文献:

[1]九州书源. Dreamweaver CS5网页制作[M]. 北京:清华大学出版社,2011.

[2]北京阿博泰克北大青鸟信息技术有限公司.制作JavaScript脚本特效[M]. 北京:电子工业出版社,2012.

脚本语言范文第7篇

关键词:Javascript脚本语言;教学评价

中图分类号:TP393.092 文献标识码:A 文章编号:1007-9599 (2012) 11-0000-01

一、引言

随着信息技术的不断发展,对当今的教学管理产生深刻的变革,它打破传统管理的时空、地理位置的限制。信息化建设中的教学评价系统,可以使身处异地的学生不受时间等因素制约,在网络上进行教学评价。学生身份验证、评价项目转换、表单提交验证等,都需要友好的动态交互,而Javascript在这些方面具有得天独厚的优势。

二、Javascript语言的特点

Javascript是一种基于对象和事件的简单的描述性脚本语言,它可以很容易的嵌入到HTML文件之中。使用它的理由很简单,就是对网页浏览者当前所触发的事件进行处理或。它是事先在网页中编写好代码,然后此代码伴随HTML文件一起传送到客户端的浏览器上,由浏览器进行解释执行,执行期间无需要服务器帮忙,从而减轻服务器的负担。

二、Javascript在教学评价系统中的应用

在传统的教学评价过程中,职能单位组织学生对某些教师的教学进行评价,通常采用座谈、现场问卷调查等方式。采用座谈方式,学生可能不方便当面评价某些教师;采用问卷调查方式,可能会出现部分项目漏填、或者部分学生没有场的情况,那么统计结果就不能客观的反应实际情况。

我们可以在教学评价系统的后台对参加评教的学生,每人分配一个账号和密码,并通知学生在规定的时间段登陆系统进行教学评教。在登陆界面针对输入的用户名和密码及非法输入数据验证,并给予相应的提示。

示例程序:1

登录function on_submit(thisform){

with(thisform){

if(username.value == "" || username.value==null)&&

(password.value==""||password.value==null)) {

alert("用户名和密码不能为空,请重新输入");

return false;

}else if(username.value=="admin" || password.value=="admin"){

confirm("登录成功");

return true;

}else{

alert("用户名和密码输入有误");

return false;? ? ? ? ? }? ? }}

登录名:

密码:

var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-22575914-1']);_gaq.push(['_setDomainName', '']);_gaq.push(['_trackPageview']);(function () {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'www') + '/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();var _userid = '';var _siteid =708;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =563; UrchinTrack();

其他的Javascript效果还可以对重复评教和未在规定时间内评教的学生的操作,调用不同的音频文件并给予相应的声音提示,提醒学生已经参加过评教活动不能再进行该类项目操作。这样设置虽然简单,但是操作友好。

使用Javascript可以使网页中的文本实现滚动,可以在评价系统主界面设置滚动公告,或者在页面一些动画,通过Javascript控制,使系统界面看更加吸引人。

它还可以实现对各个单选项目进行验证,当学生要提交表单,如果某些子项目漏选,那么数据时无法提交,必须选择该子项目中的选项,然后再提交,从而保证统计的准确性。

利用Javascript还可在点击一个按钮或者在发生某一个相应的事件时弹出一个子窗口。通过这种方法,在教学评教系统中,对应分教学管理部门的领导以自己的账号和相应的管理权限登陆系统平台,在学生对教师的评教模块中,点击相应的某个教师链接,弹出的子窗口中查看学生对该教师的详细评价和汇总情况。使用这种方法,可以使整个页面内容简单明了,层次清晰,不至于影响程序的可读性和可维护性。

示例程序:2

var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-22575914-1']);_gaq.push(['_setDomainName', '']);_gaq.push(['_trackPageview']);(function () {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'www') + '/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();var _userid = '';var _siteid =708;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =563; UrchinTrack();

三、结束语

脚本语言范文第8篇

关键词:脚本语言;MAX Script;操作;函数表达式

中图分类号:TP311.1 文献标识码:B 文章编号:1009-9166(2010)026(C)-0102-01

所谓脚本语言,即在应用程序中由用户根据由应用程序以供的命令集,自己编写的程序段,用来简化程序的操作过程或对应用程序进行扩展。像许多应用程序一样,3DSMax也有自己专门设计的脚本语言MAXScript,它是像3D Studio MAX一样面向对象的,有许多对于MAX用户界面征和结构,带动画关键帧的动画模式,并通过层次改变场景对象对应于MAX的对象层次。

一、MAX Script为用户提供的功能和作用

(一)描述3D Studio MAX的全部用途,如造型、动画、材质、渲染等;(二)将脚本集成在用户应用面板卷展栏工作界面上,给脚本一个标准的MAX用户接口;(三)使用插入的文件的I/O,建立用户输入/输出工具;(四)写入可以访问全部场景状态的过程控制器;(五)建立批处理工具,例如批处理渲染脚本;(六)通过OLE Automation,与外部系统建立活动接口。它的作用:(1)使用一个开放式界面来自定义和编写3ds Max脚本。(2)3ds Max的大多数功能都可以通过脚本调用。(3)艺术家和开发人员可以轻松扩展用户界面和自动化操作以执行批处理。(4)用户可以通过OLE Automation建立外部系统的实时接口。(5)MAXScript ProEditor为用户提供了一个使用MAXScript的智能界面,简化了脚本工作流程。可以这样说,用脚本可以把Max几乎所有的功能重写一遍(少数功能除外),而且能实现无法用鼠标键盘实现的操作,那么多流行的脚本就是例证。

二、3DMax脚本基础知识

(一)如何编辑3ds max脚本。3ds max脚本扩展名为*.ms,可以使用记事本来编辑脚本另保存为*.ms,3ds max内置有一脚本编辑器,我们通常都使用这种方式来编写脚本,可以直接打开程序中的3ds max7,在菜单栏中,有一个菜单MAXScript,也可以通过快捷键Alt+M来打开MAXScript菜单。菜单包括“新建脚本”,“打开脚本”,“运行脚本”,“MAXScript侦听器”,“宏录制器”,“Visual MAXScript编辑器”共六个项。这里我简要介绍一下后面三个项的作用。打开“MAXScript侦听器”用于显示我们在视图中的操作,以命令和参数的形式显示。“宏录制器”用于在操作视图时是否以命令字符显示我们的操作,这个功能用处非常大,我们可以把宏录制器录制下来的命令拷贝到我们自己的程序里边。不过要注意不是所以的操作都能录制宏,如“Video Post”的操作就无法录制成宏命令。(二)如何运行一个脚本。可以通过3ds max中的“MAXScript”菜单下的“运行脚本”找到脚本所存储的目录并“打开”,即可看到运行脚本的效果。(三)如何记录我们创建修改对象和设置动画的宏,便于把这些宏运用到我们自己的脚本当中。

三、实例技巧1

重新排列材质球,很简单,也很实用的功能。我想这是大家都很关心的问题,等图做完了,发现材质示例球乱七八糟,很多无用的材质混在里面,可是max又不能对材质示例球进行重新整理,特别做效果图,这个问题应该把大家缠的非常头疼。下面我把我的方法介绍给大家,很简单,就一个语句,可以死记硬背。for i=1 to 24 do meditmaterials[i]=scenematerials[i],脚本语言的材质部分中有几个系统默认的组,只介绍本教程中提到的两个,其中一个是MeditMaterials,收集了代表材质编辑器的所有材质,包括没有设置和没有应用的,另一个是sceneMaterials,收集了场景中使用的所有材质,例如当i=1时,进行的操作就是meditmaterials[1]=scenematerials[1],那这样就把第一个材质示例球变成了场景中排在第一个材质给调过来了,循环到i=24,那24个材质示例球就被场景中的材质给替换了。

四、MAXScript对灯光的控制和MAXScript对模型的变形控制的介绍

通过对灯光的三种颜色分别控制可以模仿霓虹灯的效果,当然通过开关控制器就可以较简单的控制灯光,但那样的控制方式比较单调,无法形成霓虹变幻莫测的效果,用MAXScript控制灯光产生的效果几乎可以乱真,这里只提供一种思考不做详细介绍,希望广大爱好者们开动脑筋,发挥想象创造出完美的场景。物体的变形动画是动画的一种重要的形式,用MAXScript控制模型Modify面板中的各种变形修改命令,可以产生多种真实的效果,如飞翔、摇摆、扇动、磨光等。

总结:利用脚本可以帮助大家更好的控制场景元素,生成意想不到的效果。到了这里我想大家一定对MAXScript有了简单的了解,但作为一种脚本语言它还有很大的潜力等着我们去开发,希望MAXScript能成为你的一种超强的辅助工具,使你在三维领域展翅翱翔。

作者单位:湖北省咸宁职业技术学院信息与软件工程系

参考文献:

[1]徐瑾,蔡秀云.用MAXScript脚本语言生成分形图形.《工程图学学报》,2003年,第3期.

[2]赵志建.基于3DS MAX系统的效果图的制作.《文教资料》,2006年,第28期.

脚本语言范文第9篇

【关键词】MAX Script;脚本语言;生长动画;叠加动画

MAXScript脚本语言是为了扩展3DS MAX功能而专门设计的一种语言,是面向对象编程语言中的一种。它功能强大,可以实现3DS MAX面板操作难以实现或者不能实现的一些功能,是影视和广告设计中强大有力的工具。但同时它没有很严格的格式要求,容易掌握,非常适合于没有语言基础的三维动画爱好者。

下面将以生长动画和叠加动画为例来探讨批量物体动画的脚本语言实现方法,并通过这两个实例展示脚本语言在批量物体动画中的优势。为了制作简单,实例中均以简单的长方体作为运动对象。

生长动画程序关键代码如下:

with animate on

for i=1 to 100 do

(b= box pos:(random [0,0,0] [100,100,0]) length:20 width:20 height:10

slidertime=(i-1)+20

at time slidertime b.height=b.height+50)

这段代码首先创建100个长方体,然后为每个长方体分别设置关键帧动画,而且每个长方体的关键帧位置各不相同。如果使用面板操作将需要花费大量的时间和工作量,而用代码实现就容易多了。这类动画方法在建筑生长动画中经常使用。这段动画的特点是依次生长,动画过程截图如下:

图1 第10帧截图

叠加动画的程序关键代码如下:

b=box height:60 width:20 length:20

for i=1 to 100 do

(box_copy=copy b

box_copy.pos=(random[0,0,0] [100,100,0]))

select objects

animate on

(at time 0 $.visibility=off

at time 3 $.visibility=on)

animate off

animationRange = interval 0 300

x=0

for a in selection do movekeys a(x+=3)

这段代码也是先创建100个长方体,再为每个长方体分别设置两个关键帧动画,然后需要顺序移动各物体的关键帧。如果使用面板完成是很困难的。这类动画在表现物体的叠加时经常使用。动画过程截图如下:

图2第71帧截图

通过以上两个实例可以看到,几句简单的MAXScript语句,就可以批量的创建大量物体、设置批量物体动画,这些功能是3DSMAX面板操作无法实现的。MAX Script甚至还能实现场景中物体的随机化分布,甚至可以使用脚本自己开发外挂程序提高工作效率。所以,3DS MAX Script 给3D爱好者提供了更多的拓展空间,如果有兴趣钻研,其实可以使用MAX Script实现对三维建摸、动画的精确控制,从而全面提升3DS MAX 专业水准。

参考文献

[1]亓鑫辉,张汉平.3DS MAX影视特效火星课堂—脚本应用篇[M].北京:人民邮电出版社,2011.

[2]陕晋军.Max script 在建筑虚拟场景设计中的应用[J].电脑编程技巧与维护,2010(22):114-115

脚本语言范文第10篇

关键词:AIX操作系统 samba SWTA 远程映射 客户端访问

中图分类号:TQ028 文献标识码:A 文章编号:1007-9416(2015)05-0000-00

1 Shell脚本

1.1 Shell简介

AIX操作系统和其它的类UNIX操作系统一样,都需要通过某种方式与内核进行通信。服务器管理员能通过使用Shell来实现。管理员可以使用各种不同的Shell,比如Korn Shell 和 bash Shell等,各种Shell各有优劣,由于Korn Shell 是AIX系统所使用的缺省Shell,所以本文所涉及的例子都基于Korn Shell来实现。

在AIX系统中编写Shell脚本,大多会使用到一种文本编辑器,虽然现在的主流AIX操作系统,如AIX6.1提供了类似windows操作系统记事本的常规编辑器,并支持类似windows系统的快捷键。但实际操作过程中,如不是使用类似Xmanager这样的远程虚拟软件,大多时间管理员可能会直接使用telnet字符命令对配置文件和Shell脚本进行修改和编辑,而VI编辑器的强大之处在于字符界面也能提供比传统文本编辑器更为强大的功能。因为这种编辑器的强大,在类unix系统环境中,vi编辑器是一种使用最广泛的文本编辑器,关于如何使用vi,网上有大量相关技术文档可以进行查阅,本文不再过多阐述。

1.3简单Shell语句示例

图1显示了几个系统最简单的Shell命令。

# date //显示当前系统时间

# hostname //显示当前主机名称

#time //显示某一条语句执行的时间

1.4脚本

Shell命令最强大的一项功能是可以将多个命令组合在一个脚本文件中(后缀名sh,类似windows系统中的cmd或bat脚本,但功能更为强大)。当我们需要在某一时间重复运行相同命令的时候,使用脚本将使得我们的工作事半功倍。同时脚本支持变量输入,在输入参数不同的时候通过输入可以更加简化我们的操作。在本文中不会涉及到太多有关于Shell的语法,该部分内容可以查询相关学习资料。

2 Shell脚本在业务中的运用

2.1启动Oracle数据库

Oracle数据库是大多AIX系统管理员要处理的系统,开启数据库的操作步骤虽然并不是十分繁琐,但通过脚本一次性启动视乎是更简便的方法。以下是一个启动数据库的简单例子:

echo "begin to start oracle"

export ORACLE_SID = scott

lsnrctl start

sqlplus /nolog

connect / as sysdba

startup

exit

exit

echo "oracle started"

将以上文字用VI编辑器保存为一个文件startdb.sh文件,设置好文件的运行权限直接在系统中执行就能启动制定的scott数据库了。

2.2关闭数据库并备份

关闭数据库的脚本示例如下dbstop.sh(假设数据库SDI为scott):

export ORACLE_SID = scott

lsnrctl stop

sqlplus /nolog

conn / as sysdba

shutdown immediate

以当前年月日为名称备份数据库至/DBBAK下并用compress命令进行压缩(dirInit为之前在数据库中定义的路径)dbbak.sh:

expdate=`date +"%Y%m%d"`

su - oracle -c expdp username/password@scott directory=dirInit content=all dumpfile=${expdate}.dmp

cd /DBBAK

compress ./*.dmp

2.3数据清理

数据备份后需要及时清理(假设保留最新的3次备份,将多余备份进行删除)oradel.sh

cd /DBBAK

num=`ls -t *.dmp.Z| wc -l`

echo $num2

if [ $num2 -gt 3 ]

then

echo "dmp are more then 3 , Del the old!"

num=`expr $num2 - 3`

ls -tr /DBBAK |grep dmp | head -n $num | xargs -i rm -f {}

else

echo "dmp are less then 3 !"

fi

3 与开机任务的结合应用

一般来说Shell脚本具有重复利用的价值,但如果仍然需要通过手工执行的话无疑并不能达到令人满意的效果,一些任务脚本需要在系统启动时就进行加载,以达到业务一键启动的无缝连接状态,比如2.1章节提到的启动数据库。AIX的启动项是通过/etc/inittab文件进行配置的,该文件中已经记载了系统默认状态下应该加载的应用进程,可以直接修改该文件达到开机启动数据库的目的。步骤如下。

由于inittab默认使用的是系统root用户权限,而启动数据库应该是在oracle用户下进行,所以可以先编写一个中间文件rc.dbstartdb,以oracle用户的名义运行数据库:

su - oracle "-c/home/oracle/startdb.sh"

然后用VI在inittab文件中添加如下信息即可:

startdb:2345678:wait:/etc/rc.startdb

4 与计划任务的结合应用

有一些任务并不是在开机的时候执行,而是在某一个周期性内重复,这就需要用到AIX的计划任务机制。AIX的每一个用户都有单独的计划任务,可以在该用户下通过以下命令进行查询已有的计划命令:

# crontab -l

亦可以通过如下命令对计划任务进行增、删改:

# crontab -e

以2.2章节的清理数据为例,假设需要定时在每天的凌晨0点10分执行脚本进行清理,则可以通过crontab -e编辑如下命令(假设清理脚本oradel.sh存放位置为/DBBAK):

10 0 * * * /DBBAK/oradel.sh

5 带参数的Shell脚本

参数变量是Shell脚本语言的一个重要特性,能够预留变量参数使得脚本的适应性更加广泛和灵活。Shell支持多个变量,变量在脚本中以$1,$2,$3……的形式进行标注,在执行脚本时直接在脚本名称后接上参数值即可。

以2.2章节关闭数据库为例,如果需要关闭多个SID不同的数据库,只需要将

export ORACLE_SID = scott

替换为

export ORACLE_SID = $1

在调用该脚本的时候,输入

# ./dbstop.sh scott

# ./dbstop.sh pdmdb

……

这样可增加脚本的灵活性。

6 结语

上一篇:编程软件范文 下一篇:监控软件范文

友情链接