推荐阅读

3DsMax制作“被束缚的花儿”实例教程
在这个教程中,我将告诉你们我是怎样制作这幅图片的,但我我不会按照细节一步一步地来说,我相信你们对3Ds Max都有基本的了解。这篇教程主要解释和描述有关建模、光照、纹理贴图和后期场景的制作等等,我一般都是按着这样的顺序来制作的,我觉得在现有的灯照下,这样做会使材料的设置更简单,因为我发现在材料编辑器中和在场景灯光下材料看起来的感觉是不一样的。可能这并不是最优方式,但是的确很适合我,我觉得你们也应该试着去找一种适合自己最好的方法,只有这样你才能提高你的工作效率。3DsMax制作“被束缚的花儿”作者:Nenad Tomic使用软件:3Ds Max不多说了,进入正题吧:场景中的几何体都是非常简单的。锁链:锁链只是用网格平滑建立的网格,制作中真的没有太多复杂的哲学概念。为了能把锁链放在我希望的位置中,我手动地将每一独立的链环进行位置设定,直到得到满意的结果。这样一来我可以轻松地创建一定的随机性以促成了一个感觉更真实的锁链,我也使用了路径变形插件,但我发现它不适合我当前的需要,因为它会让锁链弯曲,使它们产生曲线,这种曲线会导致一个不自然的效果。叶子和花瓣:

ps正片叠底图片就颜色变暗,如何恢复原色提亮
图片的混合,在ps设计中经常会被用到,正片叠底的使用更为频繁,那么正片叠底较为熟知的功能,就是自动去除白色背景,免去抠图的步骤,提高设计效率,不过也会有弊端,如果背景图偏暗,那么正片叠底的图片也会变暗,如何把图片的亮度提高或者还原,且看下面的图文教程。 1、ps软件打开背景图,以及一张白色背景的人像,人像图片需要使用正片叠底来完成背景的去除, 2、可以看到设置为正片叠底之后,人像的上半部分,处于背景图的亮部区域,相对而言,其原有亮度损失不大,但处与背景图暗部区域的下半端,明显变暗了,由此可见,想要把人像变暗的部分提亮,只需要把对应的背景区域提亮, 3、笔者使用的方法是,在背景图上面添加一个透明图层,切换至画笔工具,前景色设置为白色,更换柔边的笔刷,硬度为0,顶端的【不透明度】选项,可以酌情调整, 4、选中空白图层,画笔放在人像上进行绘制,注意不要超过人像边缘,可以看到人像提亮了, 5、对于想要提亮的区域,可以反复绘制,最后调整图层的【不透明度】,达到理想效果即可。 6、对比一下提亮前和提亮后,效果还是非常明显的,只需要控制好笔刷以及不透明度,就可以把正片叠底的图片提亮, 以上方法的原理也比较简单,正片叠底后的效果,与背景图的明暗有关系,添加一个图层绘制白色区域,也就相当于提亮了该部分的背景图,进而还原了图片的亮度。

在 Dreamweaver 中打开并编辑现有文档
您可以打开现有网页或基于文本的文档(不论是否是用 Dreamweaver 创建的),然后在“设计”视图或“代码”视图中对其进行编辑。 如果打开的文档是一个另存为 HTML 文档的 Microsoft Word 文件,则可以使用“清理 Word 生成的 HTML”命令来清除 Word 插入到 HTML 文件中的无关标记标签。若要清理不是由 Microsoft Word 生成的 HTML 或 XHTML,请使用“清理 HTML”命令。也可以打开非 HTML 文本文件,如 JavaScript 文件、XML 文件、CSS 样式表或用字处理程序或文本编辑器保存的文本文件。将在“文档”窗口中打开文档。默认情况下,在“代码”视图中打开 JavaScript、文本和 CSS 样式表。可以在 Dreamweaver 中工作时更新文档,然后保存文件中的更改。

利用Key对象来实现响应键盘的操作
利用按钮检测按键动作很有效,但是并不利于检测持续按下的键,所以不适合于制作某些通过键盘控制的游戏。这时,您就需要用到Key对象。Key对象包含在动作面板的“对象”/“影片”目录下面,它由Flash内置的一系列方法、常量和函数构成。使用Key对象可以检测某个键是否被按下,如要检测左方向键是否被按下,可以使用如下ActionScript:if (Key.isDown(Key.LEFT)) { trace("The left arrow is down");} 函数Key.isDown返回一个布尔值,当该数中的参数对应的键被按下时返回true,否则返回false。常量Key.LEFT代表键盘上的左方向键。当左方向键被按下时,该函数返回true。Key对象中的常量代表了键盘上相应的键,下面列出了一些基本的常量:一些功能键的表示:Key.BACKSPACE Key.ENTER Key.PGDN Key.CAPSLOCK Key.ESCAPE Key.RIGHT Key.CONTROL Key.HOME Key.SHIFT Key.DELETEKEY Key.INSERT Key.SPACE Key.DOWN Key.LEFT Key.TAB Key.END Key.PGUP Key.UP 以上是键盘上的功能键,那么如何表示键盘上的字母键呢?Key对象提供了一个函数Key.getCode来实现这一功能,如下所示:if (Key.isDown(Key.getCode("x"))) { trace("X is pressed");} 上面脚本的意思就是,利用Key.getCode函数来告诉系统你是否按下了x键,如果按下了x键以后,函数Key.isDown则会返回true,在输出窗口就会输出X is pressed。最后给出实例源文件:下载
最新发布

使用DW用ASP+ACCESS编写目录树
利用Access创建数据库listBase.mdb: 数据表:listTable 数据字段:listId listName listInfo parentId 连接方法:<% dim sConn,sConnStr,sSql sConnStr="DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("listBase.mdb") set sConn=server.createobject("adodb.connection") sConn.open sConnStr%> 把以上代码保存成文件:initialize.asp 下面这段程序代码是用来显示目录树用的,保存成文件:inc.asp<!--#include file="initialize.asp"--><script language=jscript><!--//此函数用来显示与关闭它的子菜单的,并切换其前面的小图片function showMenu(menuObj,isSub){if(menuObj.style.display=="none"){menuObj.style.display="";if(isSub==1){event.src="http://www.vipcn.com/InfoView/Element.srcimages/open.gif;}}else{menuObj.style.displaynone;if(isSub1){event.srcElement.srcimages/close.gif";}}}//--></script><!--下面这段蓝色的区域,是设置目录树的根,其中的内容非数据内的数据,数据库内的数据都附着在它的下面//--><%response.write("<table width='100%' border='0' cellspacing='0' cellpadding='0'>" & chr(13))response.write("<tr>" & chr(13)&"<td>" & chr(13) & "<table width='100%' border='0' cellspacing='0' cellpadding='0'>")response.write("<tr>" & chr(13) & "<td width='18' ><img src="http://www.vipcn.com/InfoView/images/root.gif" onclick='jscript:showMenu(subMenu0,0)' style='cursor:hand' alt='不可修改'></td>" & chr(13) & "<td width='100' class='menuPro' id='listName0'>根节点</td>" & chr(13))response.write("<td width='40' class='menuFont' align='center' style='cursor:hand' onclick=""jscript:showForm('add',0)"">添加</td>" & chr(13))response.write("<td width='40' class='menuFont' align='center' onclick=''></td>" & chr(13))response.write("<td> </td></tr></table></td></tr>" & chr(13))response.write("<tr id='subMenu0'>" & chr(13) & "<td colspan='2'>" & chr(13))'此处调用显示目录树的递归函数listChild(0)response.write("</td>" & chr(13) & "</tr>" & chr(13) & "</table>" & chr(13))'下面代码为显示目录树最关键的函数,使用了递归方法(很多象这样类型的都是用递归来做的。)function listChild(id)dim sRec,sSql,sNum,sTmpset sRec=server.createobject("adodb.recordset")sSql="select listId,listName,listInfo,parentId from listTable where parentId=" & idsRec.open sSql,sConn,3,1if not sRec.eof thensNum=1response.write("<table width='100%' border='0' cellspacing='0' cellpadding='0'>" & chr(13))while not sRec.eofsTmp=sConn.execute("select count(listId) as countSub from listTable where parentId=" & sRec("listId"))if sTmp("countSub")>0 thenresponse.write("<tr>" & chr(13))if sNum=sRec.recordcount thenresponse.write("<td width='18' valign='top'><img src="http://www.vipcn.com/InfoView/images/angel.gif"></td>" & chr(13))elseresponse.write("<td width='18' background='images/eline.gif' valign='top'><img src="http://www.vipcn.com/InfoView/images/t.gif" ></td>" & chr(13))end ifresponse.write("<td>" & chr(13) & "<table width='100%' border='0' cellspacing='0' cellpadding='0'>" & chr(13))response.write("<tr>" & chr(13) & "<td width='118' class='menuPro' id='listName" & sRec("listId") & "'><img id='img" & sRec("listId") & "' style='cursor:hand' src="http://www.vipcn.com/InfoView/images/close.gif" align='absMiddle' onclick='jscript:showMenu(subMenu" & sRec("listId") & ",1)' alt='" & sRec("listInfo") & "'>" & server.HTMLEncode(sRec("listName")) & "</td>" & chr(13) & "<td width='40' class='menuFont'><div align='center' style='cursor:hand' onclick=""jscript:showForm('add'," & sRec("listId") & ")"">添加</div></td><td width='40' class='menuFont'><div align='center' style='cursor:hand' onclick=""jscript:showForm('edit'," & sRec("listId") & ")"">编辑</div></td>" & chr(13))response.write("<td width='40' class='menuFont'><div align='center' style='cursor:hand' onclick=""jscript:window.location='disp.asp?disp=del&parentId=" & sRec("listId") & "'"">删除 </div></td>" & chr(13) & "<td> </td>" & chr(13) & "</tr>" & chr(13) & "</table>" & chr(13) & "</td>" & chr(13) & "</tr>" & chr(13))response.write("<tr id='subMenu" & sRec("listId") &"' style='display:none'>")if sNum=sRec.recordcount thenresponse.write("<td width='18' valign='top'")response.write("<img src="http://www.vipcn.com/InfoView/images/angel.gif" >")response.write("</td>" & chr(13))elseresponse.write("<td width='18' valign='top' background='images/eline.gif'>")response.write("</td>" & chr(13))end ifresponse.write("<td>" & chr(13))listChild(sRec("listid"))response.write("</td>" & chr(13) & "</tr>" & chr(13))elseresponse.write("<tr>" & chr(13))if sNum=sRec.recordcount thenresponse.write("<td width='18' valign='top'><img src="http://www.vipcn.com/InfoView/images/angel.gif"></td>" & chr(13))elseresponse.write("<td width='18' background='images/eline.gif' valign='top'><img src="http://www.vipcn.com/InfoView/images/t.gif" ></td>" & chr(13))end ifresponse.write("<td>" & chr(13) & "<table width='100%' border='0' cellspacing='0' cellpadding='0'>" & chr(13))response.write("<tr>" & chr(13) & "<td width='118' class='menuPro' id='listName" & sRec("listId") & "'><img id='img" & sRec("listId") & "' src="http://www.vipcn.com/InfoView/images/file.gif" align='absMiddle' alt='" & sRec("listInfo") & "'>" & server.HTMLEncode(sRec("listName")) & "</td>" & chr(13) & "<td width='40' class='menuFont'><div align='center' style='cursor:hand' onclick=""jscript:showForm('add'," & sRec("listId") & ")"">添加</div></td><td width='40' class='menuFont'><div align='center' style='cursor:hand' onclick=""jscript:showForm('edit'," & sRec("listId") & ")"">编辑</div></td>" & chr(13))response.write("<td width='40' class='menuFont'><div align='center' style='cursor:hand' onclick=""jscript:window.location='disp.asp?disp=del&parentId=" & sRec("listId") & "'"">删除</div></td>" & chr(13) & "<td> </td>" & chr(13) & "</tr>" & chr(13) & "</table>" & chr(13) & "</td>" & chr(13) & "</tr>" & chr(13))end ifsRec.movenextsNum=sNum+1wendresponse.write("</table>" & chr(13)) end ifsRec.close '关闭记录集set sRec=nothing '关闭记录集end functionsConn.close '关闭数据库链接set sConn=nothing '关闭数据库链接%>下面这是调用页代码,保存成index.asp<%@LANGUAGE='VBSCRIPT' CODEPAGE='936'%><html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><title>目录树</title><script language='JavaScript' type='text/JavaScript'><!--function MM_reloadPage(init) { //reloads the window if Nav4 resizedif (init==true) with (navigator) {if ((appName=='Netscape')&&(parseInt(appVersion)==4)) {document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();}MM_reloadPage(true);//--></script><script language="JScript"><!-- //此函数设置处理表单的内容//比如添加时,表单为空,并显示为什么节点添加子节点//比如修改时,表单内为相应节点的内容,并显示在修改什么节点

Dreamweaver MX 2004从零开始(1)
随着Internet的普及,很多人已经不满足于仅仅上网冲浪,而希望深入地参与其中。现在,拥有自己的Web网站已经成为一种潮流。虽然制作一个简单的网页并不困难,但是制作出超凡脱俗的网站就不那么容易了,因此我们特意为大家准备了最新网站设计软件Dreamweaver MX 2004的系列教程,希望对大家有所帮助。 通常在一个网站中会有几十甚至几百个风格基本相似的页面,如果每次都重新设定网页结构以及相同栏目下的导航条、各类图标就显得非常麻烦,不过我们可以借助Dreamweaver MX 2004的模板功能来简化操作。其实模板的功能就是把网页布局和内容分离,在布局设计好之后将其存储为模板,这样相同布局的页面可以通过模板创建,因此能够极大提高工作效率。 一、制作模板 制作模板和制作一个普通的页面完全相同,只是不需要把页面的所有部分都制作完成,仅仅需要制作出导航条、标题栏等各个页面的公有部分,而把中间区域用页面的具体内容来填充。 第一步:先在Dreamweaver MX 2004中运行“File→New”命令,接着从图1所示的窗口中依次选定“Template page→HTML template”选项,点击“Create”按钮之后即可创建一个模板文件。 小提示:可以先下载一个中意的网页,然后在Dreamweaver MX 2004中打开它,仅仅保留框架等元素之后通过“File→Save as Template”命令将其保存为模板,这样能够省去很多制作模板的时间。 为了避免编辑时候误操作而导致模板中的元素变化,模板中的内容默认为不可编辑,只有把某个区域或者某段文本设置为可编辑状态之后,在由该模板创建的文档中才可以改变这个区域。先用鼠标选取某个区域(也就是每个页面不同内容的区域),接着运行“Modify→Templates→New Editable Region”命令,并且在弹出的对话框中为这个区域设定一个名称,这样就完成了编辑区域的设置。 小提示:设定好编辑区域之后需要运行“File→Save”命令保存所做的修改。二、使用模板 有了模板之后,接下来就要在编辑网页时候使用它们了。只要在Dreamweaver MX 2004主窗口中运行“File→New”命令即可看见图1所示的新建窗口,接着进入“Templates”标签即可查看到已经保存的模板,从中选取一种还可以在右部的预览区进行预览(图3),最后挑选一款中意的模板并点击下部“Create”按钮打开这个模板。 在打开的模板中,无法编辑的区域将呈高亮状态显示,但是有些位置是锁定区域,却不是高亮显示,这主要是因为图片正好盖住了背景的颜色。对于这种情况,可以运行“Edit→Preferences”命令,在弹出窗口的“Category”列表中选取“Highlighting”一项,接着在右部区域中选取“Locked regions”旁边的“Show”选项(图4),并且设定高亮显示色为蓝色,这样就可以很清楚地分辨出模板中的锁定区域了。 小提示:如果仍然看不见高亮显示效果,还可以依次选中“View→Visual Aids→Invisible Elements”命令。 最后,我们只要在可编辑区域添加网页的内容就可以了,比如添加一些文字说明或者是插入相应的图片,最后通过“File→Save”命令保存页面即可。 三、修改和更换模板 在通过模板创建了若干个页面之后,如果需要更改页面或者增加栏目,再对所有的页面手工修改则非常麻烦,因此我们可以通过Dreamweaver MX 2004的模板修改功能来解决这个问题。比如我们对模板进行了修改之后,运行“File→Save”命令来保存模板,这时候会弹出提示框询问是否更新所有使用了该模板的页面(图5),确认之后就会显示出更新的页面总数以及更新的时间等信息。

Dreamweaver MX 2004从零开始(3)
用框架构建网页 我们登录一些论坛之后,可以看见左边是每个讨论区的名称,点击任意一个讨论区就可以在右部区域中看见相应讨论区的内容,不过左右部分是独立显示的,例如拖动左边的滚动条不会影响右侧的显示效果。其实这就是页面中利用了框架技术,因此可以把浏览器的显示空间分割为几个部分,每个部分都独立显示网页内容。而且把几个框架结合在一起构成框架集,能够让页面具有更为丰富的效果。 一、创建框架和框架集 第一步:在Dreamweaver MX 2004中新建一个页面,运行“View→Visual Aids→Frame Borders”命令之后可以看见编辑窗口中出现一个边框,用鼠标点击边框之后可以看见虚线框,说明新建的页面中已经附带了框架。 第二步:按下“Alt”按键,用鼠标拖拽边框,松开鼠标之后就可以把窗口一分为二,这样就把页面分为两个边框。比如拖拽左右边框可以把窗口分为左右两个部分,而拖拽上下边框可以把窗口分为上下两个部分。另外,窗口的四个角也可以拖拽,这样可以直接把窗口分为四个区域(如图1)。当窗口分割为几个框架之后,每个框架都可以作为独立的网页进行编辑,也可以直接把某个已经存在的页面赋给一个框架。

Dreamweaver MX 2004从零开始(4)
图层的使用 图层是网页的一个区域,在一个网页中可以有多个图层存在,它最大的魅力在于各个图层可以重叠,并且可以决定每个图层是否可见,同时也能够自定义各图层之间的层次关系。在熟练掌握了图层技术之后,就可以给网页提供强大的页面控制能力。 创建图层 为了说明图层的功能,我们先来制作图1所示的简单的实例效果(如图1)。 完成上述操作之后按下“F12”按键进行预览,就可以在IE浏览器中查看到图1所示的效果了。嵌套图层 所谓嵌套图层指的是一个图层创建在另外一个图层中,比如图3所示的就是一个典型的嵌套图层(如图3)。实际上制作这种嵌套图层很简单,只要创建了一个父图层之后用鼠标点击图层内部,并且再次插入一个图层即可。不过嵌套的图层并不意味着子图层必须要在父图层内部,它们之间存在着继承关系。 继承的作用是可以使子图层的可见性和父图层保持一致,由于很多动态网页的特效是通过控制图层的可见性来实现的,因此当父图层可见性改变时,子图层的可见性也随之改变。而且继承关系也可以让子图层和父图层的相对位置不变,比如我们拖拽父图层移动,此时子图层也会跟随着移动,这在制作动态网页的时候将显得非常有用。 图层的“Z-顺序” 和表格相比,图层最大的优势在于图层可以重叠,为了表示各个图层哪个在上面,哪个在下面,就要给每个图层设定一个序号,这个序号就是“Z-顺序”,它的意思就是除了屏幕的X和Y坐标之外,人为增加一个垂直于屏幕的Z轴。 如图4所示,左边区域的四个图层和右边区域的四个图层就有明显的不同,而调整图层的顺序也很简单,只要用鼠标依次点选放置在最下部、中部和最上部的图层即可。但是这种操作方式在图层很多的时候就显得有些麻烦了,后期调整也不便,因此我们可以通过图层面板进行调整。 先运行“Window→Layers”命令激活图层面板,此时可以看见图5所示的面板窗口(如图5),在这里只要选中需要改变序号的图层,按下鼠标之后向上或者向下拖拽,当拖拽到希望插入的两层之间出现一条横线时松开鼠标,这样就可以改变各个图层的“Z-顺序”了。

Dreamweaver MX 2004从零开始(5)
用行为丰富网页效果 行为可以说是Dreamweaver MX 2004中最有特色的功能,它可以让你不用书写一行JavaScript代码即可实现多种动态网页效果。行为的关键在于Dreamweaver MX 2004中提供了很多动作,其实就是标准的JavaScript程序,每个动作可以完成特定的任务。这样,如果你所需要的功能在这些动作中,那么就不要自己编写JavaScript程序了。 弹出消息框 如果希望别人进入网站首页的时候可以看见一个弹出的消息框来显示一些内容,则可以通过下述方法实现。 第一步 在Dreamweaver MX 2004主窗口中新建一个页面,接着运行“Windows→Behaviors”命令激活行为面板。 第二步 在行为面板中点击“+”按钮,并且从弹出菜单中选取“Popup Message”命令,这时可以看见图1所示的窗口,在其中可以输入诸如“欢迎光临中国电脑教育报网站!”之类的提示信息。

在 Dreamweaver 中设置本地或网络连接的选项
在连接到网络文件夹或在本地计算机上存储文件或运行测试服务器时使用此设置。 单击“添加新服务器”按钮,添加一个新服务器选择一个现有的服务器,然后单击“编辑现有服务器”按钮有关此选项的更全面的说明,请参阅“高级设置”类别。

在 Dreamweaver 中设置 WebDAV 连接的选项
如果使用基于 Web 的分布式创作和版本控制 (WebDAV) 协议连接到 Web 服务器,请使用此设置。 单击“添加新服务器”按钮,添加一个新服务器选择一个现有的服务器,然后单击“编辑现有服务器”按钮此 URL 包括协议、端口和目录(如果不是根目录)。例如,http://webdav.mydomain.net/mysite。这些信息用于服务器身份验证,与 Dreamweaver 无关。如果不能确定用户名和密码,请询问系统管理员或 Web 管理员。有关此选项的更全面的说明,请参阅“高级设置”类别。

在 Dreamweaver 中设置 RDS 连接的选项
如果使用远程开发服务 (RDS) 连接到 Web 服务器,请使用此设置。对于这种连接方法,远程服务器必须位于运行 Adobe® ColdFusion® 的计算机上。 单击“添加新服务器”按钮,添加一个新服务器选择一个现有的服务器,然后单击“编辑现有服务器”按钮输入安装 Web 服务器的主机的名称。主机名可能是 IP 地址或 URL。如果不能确定,请询问管理员。输入要连接的端口号。输入根远程文件夹作为主机目录。例如,c:\inetpub\wwwroot\myHostDir\。输入您的 RDS 用户名和密码。如果希望 Dreamweaver 记住这些设置,请选择“保存”选项。

在 Dreamweaver 中远程文件夹设置答疑
下表提供了有关设置远程文件夹时可能遇到的常见问题,以及如何解决这些问题的信息。 Adobe 网站上还有更详尽的技术说明,专门提供 FTP 疑难解答信息,网址:www.adobe.com/go/kb405912_cn。