• 2008-04-05

    [Code]关于WeShot Demo - [Code]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/sgzxy-logs/18331806.html

          看了东东和HYPER的留言还是有点感动,毕竟这些天来一直有点后悔当初没选择让一个师兄带着做些应用型的东西,这样至少在架构、文档和开发规范方面都会得到直接的指导……虽然大家的称赞不一定中肯,但是至少让我感到这三个月没白过,真的谢谢你们。于是我决定谈谈这个Demo的实现,如果有正在学习Silverlight的人看到了那是最好的,因为有一点我可以自信的是,在Silverlight技术尚处于成长阶段时,这个Demo在一定程度上挖掘了以前许多人没看到的潜力。

         首先网上介绍Silverlight(以下简称SL)是啥和为啥出现的文章很多,我就不废话了,关于SL与Adobe的AIR技术掐架的讨论也很多,我可以简单参一脚。我学Flash很早,但没用过Flex和最新的AIR,而我用完SL的感受是,SL的架构思想很优秀,这种优秀是先天的、基于微软的特长的,Adobe把AIR开源是很聪明的做法,但是要与SL一较高下,SL绝对不是容易对付的。

          我个人认为SL有几个突出优点:

    (1)SL本质上是一个类库,而且是.NET的一个子集,这一点让SL的架构非常清晰,.NET平台开发者去使用SL绝对是顺水推舟之事,使SL比AIR那样大杂烩的架构更容易吸引人;

    (2)SL有非常优秀的多媒体内核,这一点建立在微软长期的开发经验上,因此像我这种老Flash用户就能体会到,先不说SL对视频的性能支持多么出色(Demo开头动画中地球转动模拟,虽然很难看,是用wmv的视频),在SL中使用位图动画也是方便和高效的事情(位图动画在Flash中的表现做过的都明白……),对于大页面动画的效率(比如全屏)SL也是得心应手。

    (3)SL开发的结构,即XAML+JS或.NET语言代码是一种很自然的结合,而且是一种很强大的结合。很多人把Adobe的ActionScript3.0与.NET语言相比,其实这完全是两个档次的东西,就像不可能把AS的编译器与C#的编译器相提并论一样。我没用过AIR也不敢多说啥,但我听说AIR中尽管也是相同的开发结构,但那种界面和逻辑开发的结合性并不像SL设计得那么本质和浑然天成(因为Flash不是那种开发结构,Flex又必须照顾Flash,于是……当然都是我猜测)。

          再说到这个Demo,虽然技术含量没什么,但制作的心血还是很多的,因为演示中所看到的稍微复杂一点的效果都是背后手写代码的结果,并没有什么现成的复杂控件之类的(我在里面所用到的最复杂的控件恐怕就是一个文本框了)。SL 2现在还不成熟,比如里面的密码框和鼠标双击检测都是自己想办法实现出来的,当然这里也显示了SL 2的潜力,就是即使很多东西没给你,你也可以自己动手做出来。

          然后,这个Demo得益于很多RIA应用示范的启发。最开始促使我产生WeShot灵感的是3D Mark的开发公司弄的一个Flash在线统计工具,一个非常好玩和有商业价值的东西,有兴趣可以看看:http://www.yougamers.com/benchmarkticker/。接着我看到了微软MIX 07大会上SOHU做的北京奥运火炬路线的SL 1.0应用,这个当时看来简直是惊人效果,虽然SOHU做了那个后纯粹Demo根本没去用,但是我通过反复地研究它的MIX 07的演示视频学到了不少技巧。然后我使用了微软的SL推广项目Tafiti搜索引擎(目前已开源,只不过我在CodePlex上怎么也找不到代码的下载),这个Tafiti中的收藏夹效果就是WeShot Demo中收藏夹效果的起源……当然我不是抄袭,我只是看着它的实现去模仿,还模仿得比它更漂亮罢了(恶笑中)……

          接着我说说开发WeShot的目的。目的有很多,赚比赛奖金也是其一(虽然现在看来是分文拿不到了),但最重要的目的是:好玩。所以我在做的时候尽量把自己想象的好玩的东西都做进去(当然还有一大批想法没来得及实现),比如右下角那个旋转按钮是我初学SL做出来的第一个有点炫的东西,虽然那看上去不太合理,但是为了好玩也没办法了。其中有很多好玩的东西这里一下子都说不完,就说说目前看来最好玩的一个,那就是WeShot Surface这个东东。

          如果有人看着Demo中的WeShot Surface效果就觉得惊人的话(虽然在SL中实现它绝非轻而易举,至少要先解决了鼠标双击检测和图片匀速伸缩的算法),那说明对微软好玩东西的了解太少了。关于WeShot Surface的灵感,完全地来自去年张宏江博士到华工演讲时演示的一个微软的超时代作品Microsoft Surface,在这里我废话不说,看这个YouTube上的视频你就明白我啥意思了:http://www.youtube.com/watch?v=Zxk_WywMTzc&feature=related。并且注意这已经不是实验室产品,这是商品,只是售价高了些。

          那么WeShot下面想做什么呢?Demo其实只是个学习SL过程的成果,只是在表达一个概念,而这一概念随着微软今后的野心可能会显得微不足道,但目前来说它是好玩的。这一概念就是:地理信息与图片\视频共享的无缝结合,图片\视频浏览方式的全新体验。这两句话说起来没啥好玩的,也概括不了所有好玩的东西,所以不如就着Demo演示的效果基础上,我举例说说我还想做出来的几个有意思的东西:

         视频浏览与Demo中的图片浏览一样自由(这是最基本的)、地图缩放和搜索功能、WeShot Surface中的鼠标手势识别、个人图片\视频空间的恰当结合、内置的IM系统……这些想法中很多目前都是空中楼阁,在不断思考并添加到设计文档中,像鼠标手势之类的我还可能构思了个算法,IM系统那些完全属于我的未知领域,所以大家也抱着乐一乐的心态看待这一作品,虽然我是会全力以赴把想象变成现实。

         WeShot没有什么超出想象的新鲜,说白了就是一RIA体验一流的交流平台,只不过比较好玩。

         最后说一点吧,由于我个人的性格,我很难忍受去做别人都做得出来的东西,因此我对网站开发这些东西是非常没有兴趣的,哪怕我啥都不懂。于是这导致我要做这个网络应用型的产品时要不断恶补网络方面的知识和技术,所以防止我成为这一方面的白痴,可能也要归功于WeShot。

          而我的根本兴趣与WeShot无关。我心目中的计算机领域是分为工具和思想的,无论是SL还是C#、.NET都只是工具,只是个用得熟练不熟练的问题。而要表达思想,对工具的熟练掌握也是必不可少的,所以WeShot只是学习工具的一个很好的台阶,因为它好玩,让学习工具的过程也充满挑战。我真正希望做的事不是沉迷在工具的摆弄中,而是像CZH那样去做自己思想上的探索,在思想探索者的眼中,摆弄工具炫耀技巧只不过是在摆弄玩具而已。可是我很明白自己离那个水平差多远,怎么着急也是没用,所以我说大二会全力以赴地做WeShot,因为我只有把这个简单的玩具做出来了,我才有可能继续往前走。

    分享到:

    评论

  • 我也有Q~ 留下了~ 308609639 ^_^
  • 嘿嘿~
    也看看了你以前的博哦~发现好多东西~呵呵
    我开始弄SL也是因为参加学校里的比赛,想到这个东西比较前沿,更容易拿奖~还有我也是SFW的Fans~
    看你的WeShot其实很多细节的地方也是很精致的呢,这样的效果,很多人想不到的,我能提的意见就是,界面布局有些紧凑,上面星空的那块过大了点~给人带来一种压迫感~
    现在我在做SL碰到好多问题的,但我又没有学过很多编程的东西,好多问题都不明白...真想向你请教下~
    希望能交流下呢~ ^_^
    回复Paidxp说:
    呵呵,上次忘了留Q了:32592713,Q里讨论会方便很多
    2008-04-22 10:59:48
  • ..找SL的Demo..偶然就闯入到了你的小站...
    看了看你最近的博~
    嘿嘿,被我无意找到个高手哈~
    我是学设计的~ 你做的WeShot整个界面都很不错哦~
    向你学习啊~
    回复Paidxp说:
    哇碰上专业的了……什么美工啊UI啊之类的我纯粹是个业余,自己做出来自己看着不会不顺眼就好,要向我学习真是不敢当的……
    嘿嘿我倒一直是想找专业人员给我做的设计挑刺,所以也请你把看着不顺眼的地方都告诉我(虽然有些地方我自己也意识得到,只是时间紧设计不出更好的方案),我尽量在下一个版本中做出改进,谢谢拉
    至于SL本身……我不懂的东西也是相当多的,现在做新的版本才在深入研究,所以大家一起交流探讨吧
    2008-04-20 23:10:14
  • 至少你晚上的梦是有关正常的电脑吧?呵呵~~
    回复佳佳说:
    我从来没梦到过什么电脑...
    2008-04-10 23:31:25
  • 那都比我好。晚上梦的全是恐怖画面。第一天好大的卵巢纤维瘤,安慰自己,还好那是良性。过几天乳腺癌,伴严重桔皮样变,这个就是恶性的了。昨天是全身寄生的一堆微生物。
    这段时间的梦真能让人疯掉了
    回复佳佳说:
    你光是说我都觉得恶心了...
    2008-04-10 23:31:49
  • 好强大,一句都不懂.
    不过下次如果说carcinoma,sarcoma或者DIC或许我能知道一些.
    回复佳佳说:
    - -有些文章不是给非计算机领域的人看的嘛……就像你届时用了那些词汇的文章也不是给我看的……
    当然我这篇文章没有任何高深可言……只有菜鸟才会写这种东西……
    2008-04-09 00:08:32
  • 那个……上次我说的是界面比Vista好……有Leopord的感觉……
    如果一个人写Vista……而且写完了还活着……还要比VISTA强大……那伟大的Linus一定会膜拜你的……
    -_-b
    仔细看完了两次,收获不少……

    于是继续我的“逐条评论”习惯……

    1、“最开始促使我产生WeShot灵感……”

    我看到Demo时觉得一个可能的方向是一个explorer.exe替代物的桌面套件,因为它的界面,而且实现的功能有点像(暂时是图像文件)文件预览和管理器……

    至于你真正想做的地图和照片结合,好像一些GPS附带的软件正在做这件事,原理是通过GPS和相机时间的一致,根据一天的GPS路点记载,推算出某照片的拍摄地点的绝对位置,然后可以在放在自己的电子地图上,或者上网放在公共的电子地图上……
    他们基于GPS,还有网络的共享,加上人多……也就是说可能会变成事实的标准……

    2、“关于WeShot Surface的灵感……”

    其实MS的Surface很早就有了,去年的《微机》登过,还有他们用三台红外线摄像机定位出放在上面的数码设备的型号的技术也很惊艳……

    IPhone之后多点触控流行,多点触控之父也早被Microsoft买去了,但是这些是基于人机互动的层面,甚至是硬件层的改动……

    我觉得有异议的是,用鼠标来实现这些,真正能给用户体验提升多少?毕竟一只鼠标比十只手指所能组成的动作少了太多……而且本质没有变……

    至于鼠标手势,小小的建议是充分利用左右键……或者像常用的三维设计软件一样,用Ctrl+鼠标拖动来空间旋转,用Shift+鼠标拖动来缩放等等……

    3、IM系统

    强烈建议你的IM系统加密传输内容……否则局域网内Sniffer会很开心……


    要准备回学校了……可能要下下个星期才有空上网……
    回复HYPER说:
    ER……要跟专业GPS服务比那也没意义,其实意义只是在于能用上GPS的人和能用上网络浏览器的人完全是两个数量级上的事……
    桌面套件倒是有可能,可能以后可以设法把WeShot做成一Gadget,不过跟explorer.exe也完全是两个层次的东西……
    MS Surface是蛮早就有(上市似乎还是去年),不过知道的人还是不多,而且看到实物演示的感觉还是很惊人的。这个MS Surface的多点触控MS走得比IPhone要早和要远些,当然Apple这方面也很NB,只不过还没有适当的产品Show出来(目前的产品没MS Surface那么Show)。
    鼠标实现能提升多少……呵呵这个我也很好奇,因为一切效果都还停留在我脑海。当然我必须先提一个,SL是以插件形式植入浏览器的,所以我目前所知鼠标右键是不能被用到的(SL内置不提供右键的事件),因为右键事件会先被浏览器给捕捉了(类似Flash中按右键,我不知道Flash有否可能解决,没研究过)。所以目前所能用的只是左键。键盘上我会提供相应功能,但是我也希望有完全不需要键盘的方式实现。因为就算在Demo中,按着Ctrl来旋转缩放图片和Double Press(a quick click + a quick press)来做是完全不同的体验,后者明显要爽要自由。就我目前的想象来说,鼠标手势能实现的感觉也是很爽的,我想这个在没有更爽的想象方案之前,只能努力把它实现了再评估吧。
    目前在做Beta1版本,而IM是Beta2版本的计划,这个等到时做些研究才知道……
    2008-04-06 23:16:20