今天是:
首 页信息查询网站SEO查询工具CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
软件新闻
操作系统
Vista Winxp Win2003 Linux Windows综合
工具软件
系统工具 媒体工具 网络工具 杀毒软件 聊天
软件开发
C教程 C++ Java C# ASP.NET JSP PHP
数据库
Oracle MySQL DB2 SQL Server Sybase
安全
网络 病毒
办公应用
Word Excel Powerpoint Outlook 其他
平面设计
Photoshop Fireworks Coreldraw Flash Illustrator 3dsmax
网站运营
网站运营 网站优化 网站策划 策划书下载 建站心得 站长故事 网站盈利 网页制作 网页特效 建站素材 免费资源 QQ频道
  当前位置:首 页 >> 网页制作 >> Javascript/Ajax >> 制作仿“QQ秀”的虚拟形象

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

  发布于2005-07-08 06:21 来源:网海拾贝

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


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

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

下面我们看看虚拟形象具体是如何实现的。演示中用了四层拼凑一个形象(其际上您可以用更用层):第一层裤子,第二层上衣,第三层发型,第四层帽子。各层供选图片都放在各自的目录中,目录名分别为1、、2、3、4,即和层数相同。另外列表中的图片和拼凑形象的图片不相同,列表中的只是缩略图。大图“1.gif”对应的缩略图是“1x.gif”,依此类推。另外每个目录都有一个图片“df.gif”,是该层的默认原始图片。
照此这安置好图片后,开始编写代码,为了便于理解,以下代码的顺序并不完全按照演示中的顺序:

=======================================================================

<!-- 在要显示形象预览的地方放置以下这句代码 -->
<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>

<script language="JavaScript">
<!--
var myequip="df>df>df>0"; //最初显示的配置码,可由服务器读取并输出。

function shoiwit(equip){ //这个函数由配置码为参数,显示虚拟形象
showlayers=equip.split('>'); //以“>”为分隔符,分配各层图片名到一个数组 showlayers[]
str="";
for(i=0;i<showlayers.length;i++){
if(showlayers!='0'&&showlayers!=''){ //如果图片名为0或空值则该层不显示。
str+="<img src='equipment/"+(i+1)+"/"+showlayers+".gif' style='padding:0;position:absolute;top:0;left:0;width:140;height:226;z-index:"+(i+1)+";'>";
}
}
//最后在最上一层覆盖一幅完全透明的图片,这样用户在上面右链>另存为也只能保存这幅图了:
str+="<img src='equipment/blank.gif' style='padding:0;position:absolute;top:0;left:0;width:140;height:226;z-index:100;'>";
if(equipform.userequip) equipform.userequip.value=myequip=equip; //把配置码赋值到隐藏域中
bodyshow.innerHTML=str; //显示各层图片。
}
//页面加载后先显示最初的虚拟形象:
document.body.onload=new Function("shoiwit(myequip)");

function dressit(layer,img){ //这个函数用于更换配置,参数为 层数,图片名
showlayers=myequip.split('>');
newequip="";
for(i=0;i<showlayers.length;i++){
if(i+1==layer){
if(img==showlayers) newequip+="df"; //如果该层已是这幅图片,则恢复为原始图片
else newequip+=img; //否则换为这幅图
}
else newequip+=showlayers; //其他层图片不变
if(i+1!=showlayers.length) newequip+=">";
}
shoiwit(newequip); //显示最新配置
}

-->
</script>

<!--
以下是供选图片列表,点击一幅图则更改相应的层的这幅图片
注意链接路径,javascript:dressit(4,1) 表示第4层换上/脱下图片"1.gif",依此类推;
不过要注意若要第4层换上/脱下图片“df.gif”,则应加引号,写成 javascript:dressit(4,'df')
-->
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="84"><a href="javascript:dressit(4,1)"><img src="equipment/4/1x.gif" width="84" height="84" border="0"></a></td>
<td width="84"><a href="javascript:dressit(4,2)"><img src="equipment/4/2x.gif" width="84" height="84" border="0"></a></td>
<td width="84"><a href="javascript:dressit(4,3)"><img src="equipment/4/3x.gif" width="84" height="84" border="0"></a></td>
<td width="84"><a href="javascript:dressit(4,4)"><img src="equipment/4/4x.gif" width="84" height="84" border="0"></a></td>
</tr>
<tr>
<td><a href="javascript:dressit(3,1)"><img src="equipment/3/1x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(3,2)"><img src="equipment/3/2x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(3,3)"><img src="equipment/3/3x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(3,4)"><img src="equipment/3/4x.gif" width="84" height="84" border="0"></a></td>
</tr>
<tr>
<td><a href="javascript:dressit(2,1)"><img src="equipment/2/1x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(2,2)"><img src="equipment/2/2x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(2,3)"><img src="equipment/2/3x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(2,4)"><img src="equipment/2/4x.gif" width="84" height="84" border="0"></a></td>
</tr>
<tr>
<td><a href="javascript:dressit(1,1)"><img src="equipment/1/1x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(1,2)"><img src="equipment/1/2x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(1,3)"><img src="equipment/1/3x.gif" width="84" height="84" border="0"></a></td>
<td><a href="javascript:dressit(1,4)"><img src="equipment/1/4x.gif" width="84" height="84" border="0"></a></td>
</tr>
</table>

=======================================================================

点击“保存形象”将向服务器提交配置码变量“userequip”,可用服务器端语言进行处理。要在其他地方显示该形象,则可根据注释选取上面代码中的部分代码就行了。

有兴趣的朋友可点击这里(注:将example.htm和equipment打包供下载,因为读者看不到图片放置格式)下载演示的源文件及图片。


中查找“制作仿“QQ秀”的虚拟形象”更多相关内容

中查找“制作仿“QQ秀”的虚拟形象”更多相关内容



上一篇:Javascript实例教程(20) OLE Automation(2)
下一篇:用JavaScrpt实现文件夹轻松加密
最近更新 赞助商
·javascript实现图片放大镜效果12-30
·图片代替提交和重置按钮12-11
·JavaScript教程:图片切割效果12-10
·JavaScript动态加载CSS的三种方法12-02
·JavaScript语言中的Literal Syntax特性12-02
·JavaScript模仿Apache的ObjectPool12-02
·关于JavaScript的执行域,标识符解析,闭包..12-02
·Javascript教程:拖拽效果研究12-01
·浏览器对Cookie的限制11-10
·JavaScript中的排序函数sort10-28
·初学Javascript的总结10-24

共有评论 2 条 网友评分 5分 查看所有评论

游客:qiancaoduwu
评分:5
不知道楼主你能不能告诉图片为什么要怎样设置,代码不复杂,为什么图片设置要那么多要求,如果是后台读取,图片的名字,大小什么的怎么处理?我的邮箱chendu666@126.com 谢谢!!
游客:qiancaoduwu
评分:5
其实这段代码是无价的!


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[新ICP备05003216号]. All Rights Reserved .