电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

制作仿“QQ秀”的虚拟形象


发布日期:2020/10/24
 

不知大家有没有玩过QQ秀?玩过的话一定会想自己也做一个类似的功能不过没有玩过也没关系你可以看看下面的演示用户可以在列出的图片中自由定制自己的形象用在论坛社区留言本等地方的形象显示可是个不错的主意哦!怎么样?心动了吧?那让我们看看这东西到底是怎么回事吧

演示

实际上左边形象预览的形象是由多幅图片一层一层拼成的呵呵了解Photoshop的层技术就很容易理解了每层图片的大小一样必要显示的地方都调整在特定范围其他地方都是透明的在换形象时只要把相应层的图片替换掉就可以了不难理解演示中只有幅用于拼凑形象的图片(原始的形象有幅)却可以拼出=个形象!

我们用一个特定格式的字符串来记录用户的形象配置也是根据该字符串来显示虚拟形象该字符串暂且称为配置码存取形象时就存取该配置码即可因为这十分简单所以这里不讨论服务器端语言的操作配置码的格式举个例子就容易明白例如df>>>表示第一层图片名为dfgif第二层名为gif第三层名为gif没有第四层所以不要给图片起名为gif

下面我们看看虚拟形象具体是如何实现的演示中用了四层拼凑一个形象(其际上您可以用更用层)第一层裤子第二层上衣第三层发型第四层帽子各层供选图片都放在各自的目录中目录名分别为即和层数相同另外列表中的图片和拼凑形象的图片不相同列表中的只是缩略图大图gif对应的缩略图是xgif依此类推另外每个目录都有一个图片dfgif是该层的默认原始图片

照此这安置好图片后开始编写代码为了便于理解以下代码的顺序并不完全按照演示中的顺序

<! 在要显示形象预览的地方放置以下这句代码 >

<div id=bodyshow ></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>);return false; >

</form>

<script language=JavaScript>

<!

var myequip=df>df>df>; //最初显示的配置码可由服务器读取并输出

function shoiwit(equip){ //这个函数由配置码为参数显示虚拟形象

showlayers=equipsplit(>); //以>为分隔符分配各层图片名到一个数组 showlayers[]

str=;

for(i=;i<showlayerslength;i++){

if(showlayers[i]!=&&showlayers[i]!=){ //如果图片名为或空值则该层不显示

str+=<img src=equipment/+(i+)+/+showlayers[i]+gif style=padding:;position:absolute;top:;left:;width:;height:;zindex:+(i+)+;>;

}

}

//最后在最上一层覆盖一幅完全透明的图片这样用户在上面右链>另存为也只能保存这幅图了

str+=<img src=equipment/blankgif style=padding:;position:absolute;top:;left:;width:;height:;zindex:;>;

if(equipformuserequip) equipformuserequipvalue=myequip=equip; //把配置码赋值到隐藏域中

bodyshowinnerHTML=str; //显示各层图片

}

//页面加载后先显示最初的虚拟形象

documentbodyonload=new Function(shoiwit(myequip));

function dressit(layerimg){ //这个函数用于更换配置参数为 层数图片名

showlayers=myequipsplit(>);

newequip=;

for(i=;i<showlayerslength;i++){

if(i+==layer){

if(img==showlayers[i]) newequip+=df; //如果该层已是这幅图片则恢复为原始图片

else newequip+=img; //否则换为这幅图

}

else newequip+=showlayers[i]; //其他层图片不变

if(i+!=showlayerslength) newequip+=>;

}

shoiwit(newequip); //显示最新配置

}

>

</script>

<!

以下是供选图片列表点击一幅图则更改相应的层的这幅图片

注意链接路径javascript:dressit() 表示第层换上/脱下图片gif依此类推

不过要注意若要第层换上/脱下图片dfgif则应加引号写成 javascript:dressit(df)

>

<table border= cellspacing= cellpadding=>

<tr>

<td width=><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td width=><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td width=><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td width=><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

</tr>

<tr>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

</tr>

<tr>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

</tr>

<tr>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

<td><a javascript:dressit()><img src=equipment//xgif width= height= border=></a></td>

</tr>

</table>

src=http://imgeducitycn/img_///gif width=>点击保存形象将向服务器提交配置码变量userequip可用服务器端语言进行处理要在其他地方显示该形象则可根据注释选取上面代码中的部分代码就行了

有兴趣的朋友可点击这里(注将和equipment打包供下载因为读者看不到图片放置格式)下载演示的源文件及图片 END NNR Site Census V >

上一篇:通用上载组件的原理及实现

下一篇:背景音乐每次刷新都可以自动更换