制作仿“QQ秀”的虚拟形象
实际上,左边“形象预览”的形象是由多幅图片一层一层拼成的,呵呵,了解Photoshop的层技术就很轻易理解了。每层图片的大小一样,必要显示的地方都调整在特定范围,其他地方都是透明的。在换形象时,只要把相应层的图片替换掉就可以了。不难理解,演示中只有20幅用于拼凑形象的图片(原始的形象有4幅),却可以拼出54=625个形象!
copyright dedecms
我们用一个特定格式的字符串来记录用户的形象配置,也是根据该字符串来显示虚拟形象,该字符串暂且称为配置码。存取形象时,就存取该配置码即可。因为这十分简单,所以这里不讨论服务器端语言的操作。配置码的格式举个例子就轻易明白,例如“df>2>1>0”表示第一层图片名为“df.gif”,第二层名为“2.gif”,第三层名为“1.gif”,没有第四层。所以不要给图片起名为“0.gif”。
dedecms.com
下面我们看看虚拟形象具体是如何实现的。演示中用了四层拼凑一个形象(其际上您可以用更用层):第一层裤子,第二层上衣,第三层发型,第四层帽子。各层供选图片都放在各自的目录中,目录名分别为1、、2、3、4,即和层数相同。另外列表中的图片和拼凑形象的图片不相同,列表中的只是缩略图。大图“1.gif”对应的缩略图是“1x.gif”,依此类推。另外每个目录都有一个图片“df.gif”,是该层的默认原始图片。
copyright dedecms
照此这安置好图片后,开始编写代码,为了便于理解,以下代码的顺序并不完全按照演示中的顺序: dedecms.com
<!-- 在要显示形象预览的地方放置以下这句代码 -->
<div id="bodyshow" style="border:1px solid #000000;padding:0;POSITION: relative; Left: 0px; TOP: 0px; HEIGHT: 226px; WIDTH: 140px;"></div>
<!-- 这是提交表单,把代表用户形象的字符串赋到隐藏域 userequip 提交 -->
<form name="equipform" method="post" action="">
<input name="userequip" type="hidden" value="">
<input name="saveequip" type="submit" value="保存形象" >
<input name="toreequip" type="button" value="原始形象" onclick="shoiwit('df>df>df>0');return false;" >
</form> 内容来自dedecms
<script language="javascript">
<!--
var myequip="df>df>df>0"; file://最初显示的配置码,可由服务器读取并输出。 内容来自dedecms
function shoiwit(equip){ file://这个函数由配置码为参数,显示虚拟形象
showlayers=equip.split('>'); file://以“>”为分隔符,分配各层图片名到一个数组 showlayers[]
str="";
for(i=0;i<showlayers.length;i ){
if(showlayers[i]!='0'&&showlayers[i]!=''){ file://如果图片名为0或空值则该层不显示。
str ="<img src='equipment/" (i 1) "/" showlayers[i] ".gif' style='padding:0;position:absolute;top:0;left:0;width:140;height:226;z-index:" (i 1) ";'>";
}
}
file://最后在最上一层覆盖一幅完全透明的图片,这样用户在上面右链>另存为也只能保存这幅图了:
str ="<img src='equipment/blank.gif' style='padding:0;position:absolute;top:0;left:0;width:140;height:226;z-index:100;'>";
文章评论
共有位Admini5网友发表了评论 查看完整内容