存档

2009年3月 的存档

停止所有时间轴动画

2009年3月26日 admin 没有评论

游戏或者动画中使用到时间轴动画,在暂停时mc未必跟着主时间轴停下来,写个简单递归吧。
function stopAllAnimations( mc:MovieClip = null ):void
{
if( !mc ) mc = this as MovieClip;

for(var i:int = 0; i < mc.numChildren ; i++)
{
if( (mc.getChildAt( i ) is MovieClip) == false ) continue;

MovieClip( mc.getChildAt( i ) ).stop();
if( mc.numChildren > 0 )
stopAllAnimations( MovieClip( mc.getChildAt( i ) ) );
}
}

Popularity: 51% [?]

分类: flash&flex 标签:

as3移除匿名监听函数

2009年3月16日 admin 2 条评论

有时候写代码的时候图方便,比如在监听句柄中使用添加监听时的参数,在监听中直接用匿名函数,可以使用arguments.callee获得该匿名监听函数的引用,来移除,举个简单的例子
m_someBtn.addEventListener(MouseEvent.CLICK,function(e:MouseEvent):void{
(e.target).removeEventListener(MouseEvent.CLICK,arguments.callee);

})
arguments.callee 是as2时代就有的东西了,可以方便的引用当前执行的函数,引个例子吧
private var count:int = 1;

public function ArgumentsExample() {
firstFunction(true);
}

public function firstFunction(callSecond:Boolean) {
trace(count + “: firstFunction”);
if(callSecond) {
secondFunction(arguments.callee);
}
else {
trace(”CALLS STOPPED”);
}
}

public function secondFunction(caller:Function) {
trace(count + “: secondFunction\n”);
count++;
caller(false);
}

Popularity: 93% [?]

分类: flash&flex 标签: , ,

一点体会:反射是个好东西

2009年3月13日 admin 没有评论

最近一个项目中需要有个批量抓取网站特定内容的工作,流程大概是登陆->获取该用户文章列表->抓取文章。做起来很容易,就是post或者get数据,然后正则匹配,但是问题是需要做好几个网站的,这个功能是项目中的一个部分,就需要有可扩展,低耦。所以一开始的时候是想在主题程序实现通用程序,再用配置文件,把正则规则载入,一开始还行,但是后来发现了几个问题,1.所谓的通用的东西=兼容多种规则=体积庞大,这个很好理解,比如要兼容几个浏览器的js必然有多处hack。2.效率低下,本来抓取就是需要做很多字符串的处理,加上规则后必然导致多处判断,甚至处处判断。3.开发难度大,针对每个网站的规则很好写,但是通用的东西必定会一改再改,比如获取列表是get,偏偏有一家用post,还加了验证用的随机参数,那就必须在之前的一页把提出来,而这个并不具有普遍性,必须为它“个性化定制”。4.整个结构很ugly。
经过思考后,我改进了模型,还是提取出来操作的常规几步作为接口,每个网站用个类来实现它,提供统一的对外接口。生成文件A,而主文件中只需要加载它并反射出来,使用相同的方法来调用获取不同的网站数据,被抓取网站有更新或者需要添加新的网站时,只需要更新A即可,对主体是黑盒。整个结构看起来爽快明了,而且每个网站的抓取实现各不相同也罢,没有干扰的。
做好之后,再想想其实很简单,也许对于经验老到的玩家而言,这个应该是”下意识”的首选方案。:)

Popularity: 37% [?]

分类: flash&flex 标签: