aw由Flash中的异步、同步想到setInterval的一些用法。

今天去了一趟书店,看了很多Flash的书,那叫一个[1b]垃圾[/1b]。倒不是说写得不好,而是有些地方明显回避。其实骂“垃圾”主要是因为看到一些立着“难点”、“高级”牌坊的书。一遇到真正麻烦的情况,就撤了。买“突破难点”就是为了了解难点如何突破嘛,那些众人皆知的事情本应该是另外相关入门书的任务。比如
[url=http://www.awflasher.com/blog/tag/setInterval]setInterval[/url]
,几乎没看到一本负责任讲得深入的。
当然,我并不是通过“贬低”这些不负责任的作者们来提高自己,在Flash中控制异步同步并非我的长处,所以肯定会存在一些问题!我也希望希望大家多多提出自己的评论、想法。
言归正传:其实异步、同步的问题在Flash开发中,似乎并没有引起太多人的关注。一来设计师们认为 loadMovie 这样的东西封装得很好了,根本不需要深入考虑其细节,即便是更加复杂一点的工程,用
[url=http://www.awflasher.com/blog/tag/MovieClipLoader]MovieClipLoader[/url]
来运筹帷幄,似乎在异步、同步的问题上也没有遇到什么麻烦。
异步、同步,并不能简单说哪个好,哪个不好。要是站在易用性、用户体验的角度来说,异步当然更好。每一次的操作不必等待其他请求就能直接给予用户反馈。当然,也不能完全异步操作。细节到一个集成电路的运作,大到使用某应用程序完成某一项工作,都不可能每次都在上一件任务都不做完的情况下就匆匆执行用户的下一个指令。特别是Windows图形界面的出现、网络通信工具的出现以及AJAX的大张旗鼓的宣传,人们似乎已经忘记了计算机内核最稳定以及最基本的同步运算原理。
当然,千万不要认为我又是在这里鼓吹同步如何好、如何稳定。只是最近做到的一些项目中对异步造成的麻烦有所感叹而已。要是只有同步,估计现在计算机只能计算加减乘除了。我只是想说,异步同步均有其使命,关键看人如何使用了。
不扯远了……说到Flash中的异步同步,不得不提及两条非常非常重要的语句:
loadMovie、
[url=http://www.awflasher.com/blog/tag/setInterval]setInterval[/url]
关于具体的使用,不想多说,到处都有,我这里也有一些
[url=http://www.awflasher.com/blog/tag/%E6%95%99%E7%A8%8B]教程[/url]
中有涉及。仅仅想啰嗦一下,不要用loadMovie了,改用MovieClipLoader(当然,无法兼容Player6.0以下)
不妨先结合一个具体的例子来说明一下setInterval和loadMovie(MovieClipLoader)中,有关同步异步的一些概念。
首先在同级目录下,建立两个fla文件,分别命名为loader.fla, loadee.fla
仅在第一帧分别写下(理解成伪码吧,毕竟只是为了帮助大家理解空写出的代码:我没有编译,不敢保证直接拿过去就没有问题,但是主要思想都是很清楚地。)
//这里是loader,用于加载loadee.swf的源码,以及自身设定的一些交互、流程,通过trace语句来进行试验
var myMCL:MovieClipLoader = new MovieClipLoader ();
var l:Object = new Object ();
l.onLoadStart = function (t)
{
trace ("start@: " + t);
};
l.onLoadComplete = function (t)
{
exeThis ();
};
l.onLoadInit = function (t)
{
trace (loadee); //结论1
};
myMCL.addListener (l);
myMCL.loadClip ("loadee.swf", _root.createEmptyMovieClip ("temp_mc", _root.getNextHighestDepth ()));
//loadMovie ("loadee.swf", _root.createEmptyMovieClip ("temp_mc", _root.getNextHighestDepth ()));
function exeThis ()
{
var intervalObj:Object = new Object ();
intervalObj.someInterval = setInterval (func1, 100, 1);
var intervalAnothoer:Number = setInterval (func2, 100, 1);
function func1 (q)
{
trace ("==Loader==Func1==");
trace (intervalObj.someInterval);
}
function func2 (q)
{
trace ("==Loader==Func2==");
trace (intervalAnothoer);
}
}
bb_btn.onRelease = function ()
{
bb = setInterval (exeThis, 1000); //setInterval中套setInterval
trace (bb);
};
stop ();
//这里是loadee.fla,发布成loadee.swf以供loader.swf加载。
_global.loadee = true; // 结论1
var _intervalObj:Object = new Object (); // 结论2
_intervalObj.someInterval = setInterval (func1, 100, 1);
var _intervalAnothoer:Number = setInterval (func2, 100, 1);
function func1 (q)
{
trace("==Loadee==Func1==");
trace(_intervalObj.someInterval);
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/348.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值