动画教程之AS3 socket解码计划时疏忽的成绩-Flash actionscript
使用AdobeActionScript3.0开发高级的交互式项目。设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。Poluoluo中心提醒:一个AS3socket解码计划的毛病思绪.
调试游戏的确是一项磨人的事情。难怪良多业内助都喜好说“好游戏是改出来的”。奇都基本平台今朝还在测试,陆陆续续收到了良多伴侣的反应(想介入测试的伴侣接待接洽我讨取激活码)。以是这段工夫的次要事情是在作美化和优化,新的竞技体系也在紧锣密鼓的筹办中。
这里次要想说一下socket解码在计划时疏忽的一个成绩。(感激Lite3的反应)。
关于客户真个Socket的数据基础读取体例一样平常来讲能够分为三种:
1、依照数据流的开头标志截取
2、依照包头纪录的包长度截取
3、依照包长度截取并考证开头标志。
第一种体例:如图,一般做发是每一个包开头发送一个 标志,暗示这个数据包发送完了。socket每次读取1个字节直到碰到开头符,停止读取将数据包传送到逻辑层。这类体例在xmlSocket时就已用了良多了。
第二种体例:如图包头用一个整型纪录完全包的长度。每次都先读取一个包长度,然后依照包长度读取指定长度的数据作为一个完全数据包传送到到逻辑层。
第三种体例:如图。这类体例把以上两种体例做了却合,读取的时分无需一个一个字节读,间接读取指定长度。开头符能够用来做校验判断,同时能够作为包长度字节的读取根据。(假如上一个包有成绩能够抛弃以后,以开头符为标志读取下一个包的包长度。)
先容了一点基础道理,上面说一下这个计划缺点。
成绩:
通信中我们利用的是第二种体例——包长读取。在通信类中创立一个一时存储变量_dataArray,供应一个getData():*公用办法,供内部掏出数据。每次读完一个完全包后压进_dataArray,同时触发"recievedData"事务。代码以下:
privatefunctionsocketDataHandler(event:ProgressEvent):void
{
//_readFlag:int;//0暗示全体读完了,1暗示长度读取终了2暗示正在读取数据
while(bytesAvailable)
{
if(_readFlag==0&&bytesAvailable>=4)
{
_length=Number(readInt());
_readFlag=1
}
if(_readFlag==1&&bytesAvailable>=_length)
{
vartemp:Object=readObject();
_dataArray.push(temp);
dispatchEvent(newEvent("recievedData"));//
_length=0;
_readFlag=0;
}
}
}
以上代码从布局上看是没有任何成绩的,并且在测试后期我们也一向用着没有任何成绩。逻辑相称分明:吸收到socket的事务后起首读取一个包长,然后依照包长读取数据。读取终了收回事务。。。
那末,成绩终究来了——网友Lite3呈现了。^_^
Lite3发来了一个堕落提醒:
Error:Error#1502:剧本的实行工夫已凌驾了15秒的默许超时设置。
atqdooo.net::mySocket/socketDataHandler()
信任人人一看就可以晓得成绩出在了那里——成绩就在while上。
while的轮回守候工夫由于某种缘故原由凌驾了15秒。这里所指的某种缘故原由就是网速,那天Lite3何处的网速十分慢。如许一来缩小了计划中一处缺点所照成的影响——必需比及可读数据的长度即是大概年夜于包长度的时分才入手下手读取,也就是上面这句:
if(_readFlag==1&&bytesAvailable>=_length)
恰是因为这个判别做了限制,假如数据长度不敷,那末他会在while中一向轮回守候。直到凌驾15秒报错。
办理:
剖析好了缘故原由那末就很好办理了,想举措读空流内里的数据让while跳出守候就好了。
“swf”这是一个完整的影片档,无法被编辑。swf在发布时可以选择保护功能,如果没有选择,很容易被别人输入到他的原始档中使用。 中坚的程序员趋向于嘲笑脚本语言,但是对于那些没有计算机科学学位的人来说,脚本语言可能使他们头疼。 随着动画的日益发展壮大,动画片在世界范围影响里越来越大,广告、网页、电影各个方面都应用到了动画。 flash制作的动画文件比较小,可以在网络上快速传播! FLASH动画的视觉观赏效果好,容易给民众留下深刻的印象,是动画行业从业者和动画创意设计制作机构的主要业务之一。 传播上的优势——无国界跨媒体;创作群体的形成;媒体及比赛的推进 缺点方面~有些技术不能实现,不过FLASH技术在发展在进步,相信在以后FLASH可以取代,大部分的视频编辑软件,视频制作软件。 所以不要使用不必要的高祯率 - 否则老的、慢的计算机在显示动画时会阻塞。
页:
[1]