Archive for the '我的作品' 类别

04

《鸿门宴》的改编比较大胆,有新意。历史的真相只有一个,但猜测却又无限多种,让我们以阴谋论的眼光来看看这段传奇:

为什么让刘邦送虞姬?

项羽这个英雄确实没能过虞姬这个美人关。每天的枕边风让项羽自信心极度膨胀。范增看在眼里急在心里,自己从小培养大的苗子眼看就要闪着腰了,能不急么。但现在自己跟项羽谈工作交心的时间不足2小时/每天,哪抵得上虞姬白天5个小时,晚上4个小时的迷魂汤管用。范增知道“先入咸阳者封秦王”是楚怀王的离间计。但如果能借这个机会干掉虞姬,倒也不错。于是他让项羽安排刘邦来送虞姬。

范增早就看出虞姬是个祸害,不是美女间谍也是红颜祸水,所以借这个机会想打发掉虞姬。他预计如果虞姬不是间谍,那么这一趟孤男寡女,熟饭改成稀粥。让占了便宜的刘邦不好意思再去抢被自己扣了绿帽子兄弟的生意。如果虞姬是间谍,那么刘邦有可能假借送嫂子这个机会去抢咸阳。到时候让发怒的项羽灭了咸阳城,到时候用计在兵荒马乱中把虞姬快递到阴曹地府,既除掉了刘邦,又得了个耳根子清静。

范增的idea看似是一个地税不漏的计策。没想到的是冒出个抢饭碗的张良,所以后来他自己也感慨,敌人就像一面镜子,总能在对面找到个跟自己面对面较量的。张良让百姓上城墙,如果杀进去就等于屠城,落得个秦始皇二世的绰号的话,必然失了人心。后面才有了将计就计的鸿门宴。

虞姬到底是干嘛的?

刘邦出身平民,想与项羽攀上关系。于是挖掘了个歌女,安排了一出英雄救美+英雄救英雄的好戏。刘邦这招一方面可以拉近与项羽的关系,另一方面从长远看有希望让项羽爱江山更爱美人,成为为自己垫背的。
另一种可能是秦朝的人,他那儿部门庞大,挑出一个虞姬,集训一下再安排给项羽,干干无间道的工作。
最善良的一种猜测是,是一绝色美女,EQ高到侧漏,IQ低到秀逗。不用任何计策就把项羽迷得晕晕乎乎。

 范增是怎么死的?

史书记载是被离间后再回乡路上病死的,但我觉得很可能是被张良派人杀的。而锦囊,我觉得是不存在的。

 

13

在Flash中作视觉表现时,常常需要创建MovieClip的子类。下面是一个不错的框架:

Avatar子类:
class cn.adamstudio.Avatar extends MovieClip { //定义静态变量,用于初始化 public static var HAPPY:Number = 0; public static var SAD:Number = 1; public static var IDLE:Number = 2;

//定义静态方法,用于简洁地创建自己的instance
public static function createAvatar(name:String, target:MovieClip, depth:Number, x:Number, y:Number):Avatar
{
var av:Avatar = Avatar(target.attachMovie(“AvatarSymbol”, name, depth));
av.init(x,y);
return av;
}

//设置instance的坐标
public function init(x:Number, y:Number):Void
{
setState(Avatar.HAPPY);
this._x = x;
this._y = y;
}

//初始化instance
public function setState(newState:Number):Void
{
switch (newState) {
case Avatar.HAPPY :
this.gotoAndStop(“HAPPY”);
break;

case Avatar.SAD :
this.gotoAndStop(“SAD”);
break;

case Avatar.IDLE :
this.gotoAndStop(“IDLE”);
break;
}
}
}
注:其中的静态变量和静态函数是可选的,可以根据需求的不同而有所变化。

主文档中:
import cn.adamstudio.Avatar; var av:Avatar=Avatar.createAvatar("avatar",_root,0,200,200);

这种方法的特点和优点是用使用子类的静态方法来实例化MovieClip的子类,在主文档中非常简洁。
源文件下载

09

[kml_flashembed movie="http://www.adamstudio.cn/blog/wp-content/uploads/2008/03/XMLObject.swf" height="300" width="500" /]
在AS2中调用XML文档不如在AS3当中方便。还好有热心人写了个XMLBuildObj,使得我们可以在AS2当中用我们熟悉的”.”语法来调用XML中的内容,其语法是:
#include "XMLbuildObj.as" var myXML = new XML(); myXML.load("data.xml"); myXMLObject = myXML.buildObject();
值得注意的是,只有XML文档完全加载之后才能转换为XMLObject,所以需要对加载进行判断:
//----------------------- #include "XMLbuildObj.as" //----------------------- _root.myXML = new XML(); if(_root.XMLPath != null){ _root.myXML.load(_root.XMLPath); }else{ _root.myXML.load("content.xml"); } _root.myXML.onLoad = function(success){ if (success){ _root.myXMLObj = _root.myXML.buildObject(); loadingXML = true; } }this.onEnterFrame = function(){ part = this.getBytesLoaded(); total = this.getBytesTotal(); if (part == total && loadingXML == true && total != 0) { delete this.onEnterFrame; init(); _root.play(); } } function init(){ motion1_mc.copy_mc.text_txt.text= _root.myXMLObj.content.teaser.startline; motion2_mc.copy_mc.text_txt.text= _root.myXMLObj.content.teaser.headline; motion3_mc.copy_mc.text_txt.text= _root.myXMLObj.content.teaser.subheadline; motion4_mc.copy_mc.text_txt.text= _root.myXMLObj.content.teaser.copytext; motion5_mc.copy_mc.text_txt.text= _root.myXMLObj.content.teaser.linkText2; } stop();

核心文件下载:
XMLbuildObj下载

19

经过长时间的努力,终于用Flash CS3+AS3+AIR Beta2做出了RSSReader 2.0。
前一段时间用html+JS做了个WordpressReader, 虽然实现了自动升级,等很cool的功能,但界面还是比较简朴。
AIR读取Blog RSS – Adobe AIR Beta2 实践
WordPressReader 1.1 完成

这次做的RSSReader是基于ActionScript3的,界面漂亮了很多,而且用户体验也有了显著的提高。
程序下载:http://www.adamstudio.cn/blog/download/RSSReader.air
初始介面:
初始页面
文章阅读界面:
文章阅读界面
实现的功能:
1 读取服务器端XML文档;
2 将读取的XML文档储存到AIR的内建本地数据库SQLite !!!(太酷了!)
3 判断网络连接状况,如果网络畅通就读取并以动画的形式展示文章标题,同时用最新文章刷新SQLite中已有文章。如果网络不通,则读取并显示SQLite中储存的文章;
4 以动画形式展示动画文章标题;
5 自定义事件和文章标题与文章内容之间的切换。
 
多说也无用,试用一下你就知道Adobe AIR有多强了!
程序下载:http://www.adamstudio.cn/blog/download/RSSReader.air