<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[自然卷]]></title>
<link>http://www.adobeas.com/</link>
<description><![CDATA[]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[liulinsp27@163.com(大鱼)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>自然卷</title> 
	<url>http://www.adobeas.com/images/logos.gif</url> 
	<link>http://www.adobeas.com/</link> 
	<description>自然卷</description> 
</image>

			<item>
			<link>http://www.adobeas.com/default.asp?id=62</link>
			<title><![CDATA[FlashCom 连接器]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[FMS]]></category>
			<pubDate>Wed,15 Aug 2007 17:04:16 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=62</guid>	
		<description><![CDATA[本连接器代码是可支持Flashcom多端口(1935,443,80),多协议(rtmp,rtmps,rtmpt)扫描.<br/>以下是Connector.as代码片段：<br/>//======================================;&nbsp;<br/>//&nbsp;Name:Connector.as&nbsp;<br/>//&nbsp;Auther:Kinglong&nbsp;<br/>//&nbsp;Email:kinglong@gmail.com&nbsp;<br/>//&nbsp;Date:2005-06-29&nbsp;<br/>//&nbsp;Desc:FCS连接器;&nbsp;<br/>//=======================================;&nbsp;<br/>import&nbsp;mx.events.EventDispatcher;&nbsp;<br/>//=======================================;&nbsp;<br/>class&nbsp;com.klstudio.fcs.Connector&nbsp;extends&nbsp;Object{&nbsp;<br/>&nbsp;//======================================;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;dispatchEvent:Function;&nbsp;<br/>&nbsp;public&nbsp;var&nbsp;addEventListener:Function;&nbsp;<br/>&nbsp;public&nbsp;var&nbsp;removeEventListener:Function;&nbsp;<br/>&nbsp;public&nbsp;var&nbsp;target:Object;&nbsp;<br/>&nbsp;public&nbsp;var&nbsp;index:Number;&nbsp;<br/>&nbsp;//======================================;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connectListArray:Array;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__host_name:String;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__app_name:String;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connected:Boolean;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connect_list_point:Number;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connection_num:Number;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connection_max_num:Number;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connection:NetConnection;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__connection_params:Object;&nbsp;<br/>&nbsp;//=======================================;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__mar_next_connect:Number;&nbsp;<br/>&nbsp;private&nbsp;var&nbsp;__mar_all_failed_connect:Number;&nbsp;<br/>&nbsp;//=======================================;&nbsp;<br/>&nbsp;function&nbsp;Connector(host:String,app:String){&nbsp;<br/>&nbsp;&nbsp;if(arguments.length&gt;1){&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.__host_name&nbsp;=&nbsp;host;&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.__app_name&nbsp;=&nbsp;app;&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;this.initConnector();&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//========================================;&nbsp;<br/>&nbsp;//&nbsp;初始化对象;&nbsp;<br/>&nbsp;//========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;initConnector():Void{&nbsp;<br/>&nbsp;&nbsp;//=======================================;&nbsp;<br/>&nbsp;&nbsp;EventDispatcher.initialize(this);&nbsp;<br/>&nbsp;&nbsp;//=======================================;&nbsp;&nbsp;<br/>&nbsp;&nbsp;this.__connected&nbsp;=&nbsp;false;&nbsp;<br/>&nbsp;&nbsp;this.__connection_num&nbsp;=&nbsp;0;&nbsp;<br/>&nbsp;&nbsp;this.__connection_max_num&nbsp;=&nbsp;3;&nbsp;<br/>&nbsp;&nbsp;this.__connection&nbsp;=&nbsp;null;&nbsp;<br/>&nbsp;&nbsp;this.__connection_params&nbsp;=&nbsp;null;&nbsp;<br/>&nbsp;&nbsp;//=======================================;&nbsp;<br/>&nbsp;&nbsp;this.__connectListArray&nbsp;=&nbsp;new&nbsp;Array();&nbsp;<br/>&nbsp;&nbsp;this.__connectListArray.push({protocol:&nbsp;&#34;rtmp&#34;,&nbsp;port:&nbsp;1935});&nbsp;<br/>&nbsp;&nbsp;this.__connectListArray.push({protocol:&nbsp;&#34;rtmp&#34;,&nbsp;port:&nbsp;443});&nbsp;<br/>&nbsp;&nbsp;this.__connectListArray.push({protocol:&nbsp;&#34;rtmpt&#34;,&nbsp;port:&nbsp;80});&nbsp;<br/>&nbsp;&nbsp;this.__connectListArray.push({protocol:&nbsp;&#34;rtmps&#34;,&nbsp;port:&nbsp;443});&nbsp;<br/>&nbsp;&nbsp;//=======================================;&nbsp;&nbsp;&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//========================================;&nbsp;<br/>&nbsp;//&nbsp;启动连接表;&nbsp;<br/>&nbsp;//========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;doActualConnect():Void{&nbsp;<br/>&nbsp;&nbsp;this.removeAllTimeOut();&nbsp;<br/>&nbsp;&nbsp;this.__connection_num&nbsp;++;&nbsp;<br/>&nbsp;&nbsp;if(this.__connection_num&nbsp;&gt;&nbsp;this.__connection_max_num){&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.myTrace(&#34;总共尝试&#34;+this.__connection_max_num+&#34;次&nbsp;都失败!&#34;);&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.dispatchEvent({type:&#34;failed&#34;,data:&#34;服务器连接失败!&#34;});&nbsp;<br/>&nbsp;&nbsp;&nbsp;return;&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;this.__connect_list_point&nbsp;=&nbsp;0;&nbsp;<br/>&nbsp;&nbsp;var&nbsp;i:Number;&nbsp;<br/>&nbsp;&nbsp;for(i=0;i&lt;this.__connectListArray.length;i++){&nbsp;<br/>&nbsp;&nbsp;&nbsp;this[&#34;temp_nc_&#34;+i]&nbsp;=&nbsp;new&nbsp;NetConnection();&nbsp;<br/>&nbsp;&nbsp;&nbsp;this[&#34;temp_nc_&#34;+i].index&nbsp;=&nbsp;i;&nbsp;<br/>&nbsp;&nbsp;&nbsp;this[&#34;temp_nc_&#34;+i].target&nbsp;=&nbsp;this;&nbsp;<br/>&nbsp;&nbsp;&nbsp;this[&#34;temp_nc_&#34;+i].onStatus&nbsp;=&nbsp;this.doStatus;&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;var&nbsp;connection_uri:String&nbsp;=&nbsp;this.__connectListArray[this.__connect_list_point].protocol+&#34;://&#34;+this.__host_name+&#34;:&#34;+this.__connectListArray[this.__connect_list_point].port+&#34;/&#34;+this.__app_name;&nbsp;<br/>&nbsp;&nbsp;this.myTrace(&#34;[尝试&#34;+this.__connection_num+&#34;/&#34;+this.__connection_max_num+&#34;]连接到&nbsp;&#34;+(this.__connect_list_point+1)+&#34;/&#34;+this.__connectListArray.length+&#34;:&nbsp;&#34;+connection_uri);&nbsp;<br/>&nbsp;&nbsp;this.dispatchEvent({type:&#34;connect&#34;,data:this.__connectListArray[this.__connect_list_point]});&nbsp;<br/>&nbsp;&nbsp;this[&#34;temp_nc_&#34;+this.__connect_list_point].connect(connection_uri,this.__connection_params);&nbsp;<br/>&nbsp;&nbsp;this.__mar_next_connect&nbsp;=&nbsp;setInterval(this,&#34;nextConnect&#34;,3000);&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//========================================;&nbsp;<br/>&nbsp;//&nbsp;下一个连接;&nbsp;<br/>&nbsp;//========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;nextConnect():Void{&nbsp;<br/>&nbsp;&nbsp;clearInterval(this.__mar_next_connect);&nbsp;<br/>&nbsp;&nbsp;this.__connect_list_point&nbsp;++;&nbsp;<br/>&nbsp;&nbsp;if(this.__connect_list_point&lt;this.__connectListArray.length){&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;var&nbsp;connection_uri:String&nbsp;=&nbsp;this.__connectListArray[this.__connect_list_point].protocol+&#34;://&#34;+this.__host_name+&#34;:&#34;+this.__connectListArray[this.__connect_list_point].port+&#34;/&#34;+this.__app_name;&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.myTrace(&#34;[尝试&#34;+this.__connection_num+&#34;/&#34;+this.__connection_max_num+&#34;]连接到&nbsp;&#34;+(this.__connect_list_point+1)+&#34;/&#34;+this.__connectListArray.length+&#34;:&nbsp;&#34;+connection_uri);&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.dispatchEvent({type:&#34;connect&#34;,data:this.__connectListArray[this.__connect_list_point]});&nbsp;<br/>&nbsp;&nbsp;&nbsp;this[&#34;temp_nc_&#34;+this.__connect_list_point].connect(connection_uri,this.__connection_params);&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.__mar_next_connect&nbsp;=&nbsp;setInterval(this,&#34;nextConnect&#34;,3000);&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;下一个连接;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;allFailedConnect():Void{&nbsp;<br/>&nbsp;&nbsp;clearInterval(this.__mar_all_failed_connect);&nbsp;<br/>&nbsp;&nbsp;this.doActualConnect();&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;取消所有线程;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;removeAllTimeOut(ncIndex:Number):Void{&nbsp;<br/>&nbsp;&nbsp;if(arguments.length&nbsp;==&nbsp;0){&nbsp;<br/>&nbsp;&nbsp;&nbsp;ncIndex&nbsp;=&nbsp;-1;&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;clearInterval(this.__mar_next_connect);&nbsp;<br/>&nbsp;&nbsp;clearInterval(this.__mar_all_failed_connect);&nbsp;<br/>&nbsp;&nbsp;var&nbsp;i:Number;&nbsp;<br/>&nbsp;&nbsp;for(i=0;i&lt;this.__connectListArray.length;i++){&nbsp;<br/>&nbsp;&nbsp;&nbsp;if(i&nbsp;==&nbsp;ncIndex){&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.myTrace(this.__connectListArray[ncIndex].protocol+&#34;://&#34;+this.__host_name+&#34;:&#34;+this.__connectListArray[ncIndex].port+&#34;/&#34;+this.__app_name+&#34;&nbsp;连接尝试成功!&#34;);&nbsp;<br/>&nbsp;&nbsp;&nbsp;}else{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this[&#34;temp_nc_&#34;+i].close();&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;del&#101;te&nbsp;this[&#34;temp_nc_&#34;+i];&nbsp;<br/>&nbsp;&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;doStatus(ncInfo:Object):Void{&nbsp;<br/>&nbsp;&nbsp;this.target.onStatus(this.index,ncInfo);&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;onStatus(ncIndex:Number,ncInfo:Object):Void{&nbsp;<br/>&nbsp;&nbsp;switch(ncInfo.code){&nbsp;<br/>&nbsp;&nbsp;&nbsp;case&nbsp;&#34;NetConnection.Connect.Success&#34;:&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.removeAllTimeOut(ncIndex);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.__connection&nbsp;=&nbsp;this[&#34;temp_nc_&#34;+ncIndex];&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.__connected&nbsp;=&nbsp;true;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.dispatchEvent({type:&#34;success&#34;});&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;break;&nbsp;<br/>&nbsp;&nbsp;&nbsp;case&nbsp;&#34;NetConnection.Connect.Failed&#34;:&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.myTrace(this.__connectListArray[ncIndex].protocol+&#34;://&#34;+this.__host_name+&#34;:&#34;+this.__connectListArray[ncIndex].port+&#34;/&#34;+this.__app_name+&#34;&nbsp;连接尝试失败!&#34;);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(ncIndex==this.__connectListArray.length-1){&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.myTrace(&#34;所有连接尝试失败!&#34;);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.removeAllTimeOut();&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.__mar_all_failed_connect&nbsp;=&nbsp;setInterval(this,&#34;allFailedConnect&#34;,5000);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;&nbsp;break;&nbsp;<br/>&nbsp;&nbsp;&nbsp;case&nbsp;&#34;NetConnection.Connect.Closed&#34;:&nbsp;<br/>&nbsp;&nbsp;&nbsp;case&nbsp;&#34;NetConnection.Connect.AppShutdown&#34;:&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.dispatchEvent({type:&#34;closed&#34;});&nbsp;<br/>&nbsp;&nbsp;&nbsp;break;&nbsp;<br/>&nbsp;&nbsp;&nbsp;case&nbsp;&#34;NetConnection.Connect.Rejected&#34;:&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.removeAllTimeOut();&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.myTrace(&#34;FlashCom服务器不接收连接尝试!&#34;);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.dispatchEvent({type:&#34;failed&#34;,data:ncInfo.application.message});&nbsp;<br/>&nbsp;&nbsp;&nbsp;break;&nbsp;<br/>&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;调试;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;private&nbsp;function&nbsp;myTrace(msg:Object):Void{&nbsp;<br/>&nbsp;&nbsp;trace(&#34;#Connector#:&nbsp;&#34;+msg);&nbsp;<br/>&nbsp;&nbsp;getURL(&#34;FSCommand:log&#34;,&nbsp;&#34;#Connector#:&nbsp;&#34;+msg);&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;设置连接参数;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;public&nbsp;function&nbsp;setConnectParams(param:Object):Void{&nbsp;<br/>&nbsp;&nbsp;this.__connection_params&nbsp;=&nbsp;param;&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;设置连接表;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;public&nbsp;function&nbsp;setConnectListArray(arr:Array):Void{&nbsp;<br/>&nbsp;&nbsp;this.__connectListArray&nbsp;=&nbsp;arr;&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;设置最大尝试连接资料;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;public&nbsp;function&nbsp;setConnectMaxNum(num:Number):Void{&nbsp;<br/>&nbsp;&nbsp;if(num&gt;1&nbsp;&amp;&amp;&nbsp;num&nbsp;&lt;11){&nbsp;<br/>&nbsp;&nbsp;&nbsp;this.__connection_max_num&nbsp;=&nbsp;num;&nbsp;<br/>&nbsp;&nbsp;}&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;连接FCS服务器;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;public&nbsp;function&nbsp;connect():Void{&nbsp;<br/>&nbsp;&nbsp;if(this.__connected)&nbsp;return;&nbsp;<br/>&nbsp;&nbsp;this.__connection_num&nbsp;=&nbsp;0;&nbsp;<br/>&nbsp;&nbsp;this.doActualConnect();&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;检查是否连接成功;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;public&nbsp;function&nbsp;isConnected():Boolean{&nbsp;<br/>&nbsp;&nbsp;return&nbsp;this.__connected;&nbsp;&nbsp;<br/>&nbsp;}&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;//&nbsp;获取主连接NC;&nbsp;<br/>&nbsp;//=========================================;&nbsp;<br/>&nbsp;public&nbsp;function&nbsp;getConnection():NetConnection{&nbsp;<br/>&nbsp;&nbsp;return&nbsp;this.__connection;&nbsp;&nbsp;<br/>&nbsp;}&nbsp;&nbsp;<br/>}]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=60</link>
			<title><![CDATA[面向对象的模型设计-创建一个蚂蚁部落]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[ActionScript]]></category>
			<pubDate>Fri,20 Jul 2007 11:56:43 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=60</guid>	
		<description><![CDATA[先来介绍一个作者：Milan&nbsp;Toth,他是Jasmin&nbsp;媒体集团Flash开发组的主要成员，他开发过世界上最大的Flash媒体服务系统，看一下<a href="http://livejasmin.com" target="_blank">http://livejasmin.com</a>&nbsp;。他喜欢Eclipse和OS&nbsp;X,AS3和Java,恐怖科幻小说，重金属和电子。<br/><br/>第一部分：搭建模型<br/>如果你从来没有听说过面向对象，你应该看一下sun&#39;s&nbsp;summary对于面向对象的一些解释。我创建了一个简单但是十分有趣的模拟器来模拟一个简单的蚂蚁群的行为。一个蚂蚁群有很多的蚂蚁，但是他不是那么简单的，他们具有不同种类的蚂蚁；在最顶层是皇后。在他的下面有工人和雄蚂蚁，工人从外界来获得食物，而雄蚂蚁则喂养幼虫，同其他的蚂蚁群对抗。<br/>我们如何来模拟他呢？基本上，有部落，蚂蚁和食物。部落是由皇后来表现，因此是没有必要来创建一个群的实例。只剩下了蚂蚁和食物。我们应该模拟什么样的蚂蚁呢？我们需要一个皇后，工人和对于一个真实的模拟，可以这样雄蚂蚁是战士，只有他们才能同其他的蚂蚁战斗，但是他们不能获得食物，只有工人才能获得食物，但是他们不能战斗。<br/>现在，我们可以开始了，我们最重要的类是Ant类。他应该包含什么文件和方法呢？一个蚂蚁的公用属性又是什么呢？好！一个蚂蚁应该具有位置和健康。我们通过颜色来区分他们，所以我们需要一个颜色文件。我将会像一个国家机器一样来执行他们，所以一个状态属性是必需的。最后，我们的蚂蚁还要和外界进行交流，我一个world文件是必需的。<br/>那么我们执行什么方法呢？在这三个类型的蚂蚁中的唯一的公用方法是&#34;receiveHit&#34;，因为所有的蚂蚁都有可能被其他的蚂蚁伤害到。对于一个国家机器，step函数也是必需的，以下是ant类的UML图表。<br/><img src="http://www.adobeas.com/attachments/month_0707/w2007720115215.jpg" border="0" alt=""/><br/>但是我们需要三个不同类型的蚂蚁。皇后能够直接从该类中继承，对于他，只是另加了一个食物文件，来存储他所消耗的食物。我们必须代理Ant的step函数，不同的类型做不同的事情。一个reciveFood方法也是必需的。<br/><img src="http://www.adobeas.com/attachments/month_0707/u2007720115230.jpg" border="0" alt=""/><br/>下面来看一下工人和雄蚂蚁，但是我们首先想到的是，他们是不同的，但是他们具有一些皇后所没有的公用的东西：皇后不能：他们能够移动，寻找食物和敌人。他们能够到达一个目标。所以，一个中级的子类是一个不错的想法，我们能够继承这些类。称该类为MovinigAnt。一个MovingAnt能够搜索，能够到达目标，能够移动。文件中对他们的操作是&nbsp;turn&nbsp;angle&nbsp;speed&nbsp;target。<br/><br/><img src="http://www.adobeas.com/attachments/month_0707/d200772011544.jpg" border="0" alt=""/><br/>现在，我们可以从那里继承Drone类，Drone将是一个战士，他具有攻击力和代理step函数。<br/><img src="http://www.adobeas.com/attachments/month_0707/a2007720115422.jpg" border="0" alt=""/><br/><br/>工人也是比较简单的，他有一个power文件，来描述蚂蚁所运输的食物的数量，一个queen文件，因为我们需要知道我们的皇后是谁她在那里。还有一个代理的step函数。<br/><img src="http://www.adobeas.com/attachments/month_0707/u2007720115515.jpg" border="0" alt=""/><br/>接下来就是食物了，它是一个非常简单的类，他有一个位置和能量和外界对他的影响。如果有谁找到他，方法cleanUp就执行。<br/><img src="http://www.adobeas.com/attachments/month_0707/22007720115527.jpg" border="0" alt=""/><br/>只剩下了main类。外界。我们将会看到两个或者更多不同的类使用它，如果我扩展我们的代码，他能够迅速的在开发中改变，所以我最好作为一个接口来定义他。他应该包含的方法又是什么呢？我们已经知道的有addQueen,addDrone,addWorker,和AddFood方法来建造我们的舞台。那就是为什么removeAnt和removeFood的方法是必需的。为了帮助蚂蚁搜索这个世界,getVisibleFood和getvisibleEnemy的方法是必需的。<br/><br/><img src="http://www.adobeas.com/attachments/month_0707/6200772011562.jpg" border="0" alt=""/><br/>模型准备好了，我所设计的两个附加的类都是必需的，main类用来控制和开始游戏和acts和world。所以他必须继承IWorld接口，一个类用来存储静态的属性，最终的UML图表是：<br/><img src="http://www.adobeas.com/attachments/month_0707/c2007720115636.jpg" border="0" alt=""/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=59</link>
			<title><![CDATA[简单应用LOMO风格PS图片]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[Life]]></category>
			<pubDate>Fri,20 Jul 2007 10:00:59 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=59</guid>	
		<description><![CDATA[原图<br/><img src="http://www.adobeas.com/attachments/month_0707/v200772095730.jpg" border="0" alt=""/><br/>效果图<br/><img src="http://www.adobeas.com/attachments/month_0707/l200772095811.jpg" border="0" alt=""/><br/>首先用套索，选择羽化50PX，也可以自己决定，画个圈圈，然后按ctrl+shift+i反选<br/><img src="http://www.adobeas.com/attachments/month_0707/8200772095841.jpg" border="0" alt=""/><br/>选择色介，可以如图调节，&nbsp;0，0.5，255，可以根据自己喜欢调节。然后按ctrl+shift+e合并图层<br/><img src="http://www.adobeas.com/attachments/month_0707/a200772095914.jpg" border="0" alt=""/><br/><img src="http://www.adobeas.com/attachments/month_0707/3200772095939.jpg" border="0" alt=""/><br/>选择曲线，可以如图调节，也可以根据自己喜欢调节。然后按ctrl+shift+e合并图层<br/><img src="http://www.adobeas.com/attachments/month_0707/o20077201008.jpg" border="0" alt=""/><br/>然后可以选择新建图层，浇成黑的，图层选择成色相，不透明40%，这样看起来会暗一点，可以自己选择，然后按ctrl+shift+e合并图层<br/><br/>然后选择图像，模式，LAB颜色，点通道，选择明度，进行滤镜，USM锐化。我的参数是50，50，0，可以根据自己喜好调节，最后选择RGB颜色，就可以输出了。<br/><img src="http://www.adobeas.com/attachments/month_0707/6200772010033.jpg" border="0" alt=""/><br/><br/>随便写点教程，希望喜欢手机拍照，LOMO的朋友可以试试。很简单吧？效果也不错，很有LOMO的感觉。哈哈&nbsp;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=58</link>
			<title><![CDATA[Flex- 将Sprite控件添加到FLEX UI中 ]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[Flex]]></category>
			<pubDate>Tue,12 Jun 2007 08:43:06 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=58</guid>	
		<description><![CDATA[&nbsp;现在一直在用flex，积攒了一些经验和不少代码，开始写写。<br/>&nbsp;&nbsp;&nbsp;&nbsp;在Flex的帮助文档里，有很多例子都是扩展Sprite类的。如果想把这些实例添加到你的mx:Application中，如:addChild(DisplayObject&nbsp;)，肯定会出错。错误的大致意思是:flash.display::Sprite没有实现mx.core.IUIComponent接口。<br/>&nbsp;&nbsp;&nbsp;&nbsp;Sprite-&gt;DisplayObjectContainer&nbsp;-&gt;InteractiveObject&nbsp;-&gt;DisplayObject&nbsp;-&gt;EventDispatcher&nbsp;-&gt;Object<br/>从Sprite的继承关系来看，它虽然是DIsplayObject但是它没有实现IUIComponent，不能直接添加到Flex组件里是当然的了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;Flex文档上指出所有的可视化控件都继承自UIComponent&nbsp;而它自己是实现了IUIComponent&nbsp;接口的。UIComponent&nbsp;允许添加Sprite和MovieClip。<br/>经常使用到的做法是：<br/>&nbsp;&nbsp;&nbsp;var&nbsp;comp:&nbsp;UIComponent&nbsp;=&nbsp;new&nbsp;UIComponent();<br/>&nbsp;&nbsp;&nbsp;comp.addChild(sprite);<br/>&nbsp;&nbsp;&nbsp;cavas1.addChild(comp);<br/>这样flash控件就能正常在flex组件里显示了。<br/><br/><br/><br/>Trackback:&nbsp;<a href="http://tb.blog.csdn.net/TrackBack.aspx?PostId=1534649" target="_blank">http://tb.blog.csdn.net/TrackBack.aspx?PostId=1534649</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=57</link>
			<title><![CDATA[Flex的Loading显示更换]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[ActionScript]]></category>
			<pubDate>Mon,11 Jun 2007 15:25:40 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=57</guid>	
		<description><![CDATA[如何更改Flex默认的Loading画面呢，ERIC的这篇文章说的比较清楚了～<br/>Preloader&nbsp;in&nbsp;Flex<br/>Tips:是否显示Loading画面可以使用usePreloader属性，以及使用自定义的Loading类的方式类似于<br/><br/>&nbsp;&lt;mx:Application&nbsp;xmlns:mx=&#39;<a href="http://www.macromedia.com/2003/mxml" target="_blank">http://www.macromedia.com/2003/mxml</a>&#39;&nbsp;usePreloader=&#39;true&#39;&nbsp;preloader=&#39;CustomBar&#39;&nbsp;&gt;&nbsp;<br/>&nbsp;<br/><br/>下面是英文的原文：<br/><br/>December&nbsp;05,&nbsp;2004<br/>Preloader&nbsp;in&nbsp;Flex<br/>A&nbsp;number&nbsp;of&nbsp;people&nbsp;have&nbsp;asked&nbsp;about&nbsp;ways&nbsp;to&nbsp;customize&nbsp;the&nbsp;‘Initializing…’&nbsp;message&nbsp;that&nbsp;the&nbsp;Flex&nbsp;preloader&nbsp;component&nbsp;displays&nbsp;when&nbsp;an&nbsp;application&nbsp;starts&nbsp;up.&nbsp;The&nbsp;way&nbsp;to&nbsp;do&nbsp;this&nbsp;is&nbsp;by&nbsp;authoring&nbsp;a&nbsp;custom&nbsp;preloader.&nbsp;There&nbsp;are&nbsp;some&nbsp;basics&nbsp;to&nbsp;implementing&nbsp;a&nbsp;preloader&nbsp;successfully.&nbsp;The&nbsp;Flex&nbsp;docs&nbsp;provide&nbsp;an&nbsp;example,&nbsp;but&nbsp;it&nbsp;doesn’t&nbsp;exactly&nbsp;work&nbsp;(we&nbsp;forget&nbsp;to&nbsp;cr&#101;ate&nbsp;a&nbsp;visual&nbsp;object&nbsp;for&nbsp;the&nbsp;preloader&nbsp;label).&nbsp;So,&nbsp;below&nbsp;is&nbsp;a&nbsp;functional&nbsp;preloader&nbsp;example.&nbsp;<br/><br/>CustomBar.as<br/><br/><br/><br/>class&nbsp;CustomBar&nbsp;extends&nbsp;MovieClip<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;static&nbsp;var&nbsp;symbolName:String&nbsp;=&nbsp;&#34;CustomBar&#34;;<br/>&nbsp;&nbsp;&nbsp;static&nbsp;var&nbsp;symbolOwner&nbsp;=&nbsp;CustomBar;<br/>&nbsp;&nbsp;&nbsp;var&nbsp;className:String&nbsp;=&nbsp;&#34;CustomBar&#34;;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;var&nbsp;progressText&nbsp;:&nbsp;TextField;<br/>&nbsp;&nbsp;&nbsp;var&nbsp;debugText&nbsp;:&nbsp;TextField;<br/>&nbsp;&nbsp;&nbsp;var&nbsp;__label&nbsp;:&nbsp;String&nbsp;=&nbsp;&#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;var&nbsp;__indeterminate&nbsp;:&nbsp;Boolean&nbsp;=&nbsp;false;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;CustomBar()&nbsp;{<br/>&nbsp;&nbsp;&nbsp;//this.cr&#101;ateTextField(&#34;progressText&#34;,&nbsp;this.getNextHighestDepth,&nbsp;0,&nbsp;0,&nbsp;100,&nbsp;22);<br/>&nbsp;&nbsp;&nbsp;this.cr&#101;ateTextField(&#34;progressText&#34;,&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;250,&nbsp;22);<br/>&nbsp;&nbsp;&nbsp;trace(&#34;Change&nbsp;SWC&nbsp;CustomBar&nbsp;constructor&nbsp;progressText&nbsp;=&nbsp;&#34;&nbsp;+&nbsp;progressText&nbsp;+&nbsp;&#34;&nbsp;h&nbsp;=&nbsp;&#34;&nbsp;+&nbsp;_height);<br/>&nbsp;&nbsp;&nbsp;_visible&nbsp;=&nbsp;true;<br/>&nbsp;&nbsp;&nbsp;display(&#34;Starting&nbsp;CustomBar&#34;);<br/>&nbsp;&nbsp;&nbsp;_visible&nbsp;=&nbsp;false;<br/>&nbsp;&nbsp;&nbsp;if&nbsp;(__indeterminate)<br/>&nbsp;&nbsp;&nbsp;progressText.text&nbsp;=&nbsp;&#34;Loading&nbsp;Your&nbsp;Application&nbsp;View&nbsp;.&nbsp;.&nbsp;.&nbsp;&#34;;&nbsp;<br/><br/><br/>&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;display(val&nbsp;:&nbsp;String)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;trace(&#34;Calling&nbsp;display&nbsp;debugText.text&nbsp;=&nbsp;&#34;&nbsp;+&nbsp;debugText.text);<br/>&nbsp;&nbsp;&nbsp;debugText.text&nbsp;+=&nbsp;&#34;\n&#34;&nbsp;+&nbsp;val;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;set&nbsp;label(val:String)&nbsp;:&nbsp;Void&nbsp;{<br/>&nbsp;&nbsp;&nbsp;__label&nbsp;=&nbsp;val;<br/>&nbsp;&nbsp;&nbsp;display(&#34;Set&nbsp;Label&nbsp;to&nbsp;&#34;&nbsp;+&nbsp;val);<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;get&nbsp;label():String&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return&nbsp;__label;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;setProgress(loaded:Number,total:Number)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;progressText.text&nbsp;=&nbsp;&#34;LOADED:&nbsp;&#34;&nbsp;+&nbsp;loaded&nbsp;+&nbsp;&#34;&nbsp;TOTAL:&nbsp;&#34;&nbsp;+&nbsp;total;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;set&nbsp;indeterminate(val:Boolean)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;__indeterminate&nbsp;=&nbsp;val;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;get&nbsp;indeterminate()&nbsp;:&nbsp;Boolean&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return&nbsp;__indeterminate;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;set&nbsp;visible(val:Boolean)&nbsp;{<br/>&nbsp;&nbsp;&nbsp;_visible&nbsp;=&nbsp;val;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;function&nbsp;get&nbsp;visible()&nbsp;:&nbsp;Boolean&nbsp;{<br/>&nbsp;&nbsp;&nbsp;return&nbsp;_visible;<br/>&nbsp;&nbsp;&nbsp;}&nbsp;<br/>&nbsp;&nbsp;&nbsp;}<br/><br/><br/>newpreloader.mxml<br/><br/><br/><br/>&lt;?xml&nbsp;version=&#34;1.0&#34;&nbsp;encoding=&#34;utf-8&#34;?&gt;<br/>&nbsp;&lt;mx:Application&nbsp;xmlns:mx=&#34;<a href="http://www.macromedia.com/2003/mxml" target="_blank">http://www.macromedia.com/2003/mxml</a>&#34;&nbsp;usePreloader=&#34;true&#34;&nbsp;preloader=&#34;CustomBar&#34;&nbsp;&gt;<br/>&nbsp;&lt;mx:Label&nbsp;text=&#34;this&nbsp;is&nbsp;for&nbsp;perloader&#34;&nbsp;/&gt;<br/>&nbsp;&lt;/mx:Application&gt;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=56</link>
			<title><![CDATA[轻松搭建Flash Media Server聊天室]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[ActionScript]]></category>
			<pubDate>Mon,04 Jun 2007 16:39:16 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=56</guid>	
		<description><![CDATA[这个模型比前面的超级HelloWorld稍微简单一点。客户端预定义talk函数响应来自服务器端的消息，服务器端用application.broadcastMsg来广播客户端用户的someoneTalk。换句话说，客户端的someoneTalk实际上是触发了服务器端的application.broadcastMsg，同时再回调客户端预定义的talk函数并显示消息，便搭成了聊天室。<br/>服务器端代码如下：<br/><br/>function&nbsp;broadcast&nbsp;(msg)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//trace(msg);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;application.broadcastMsg(&#39;talk&#39;,&nbsp;msg);&nbsp;<br/>}&nbsp;<br/>&nbsp;&nbsp;<br/>application.onConnect&nbsp;=&nbsp;function&nbsp;(client)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;this.acceptConnection(client);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;broadcast(&#39;__&nbsp;&#39;&nbsp;+&nbsp;client.ip&nbsp;+&nbsp;&#39;&nbsp;进来了&nbsp;__&#39;);&nbsp;<br/>}&nbsp;<br/>&nbsp;&nbsp;<br/>application.onDisconnect&nbsp;=&nbsp;function&nbsp;(client)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;broadcast(&#39;__&nbsp;&#39;&nbsp;+&nbsp;client.ip&nbsp;+&nbsp;&#39;&nbsp;出去了&nbsp;__&#39;);&nbsp;<br/>}&nbsp;<br/>&nbsp;&nbsp;<br/>Client.prototype.someoneTalk&nbsp;=&nbsp;function&nbsp;(n,&nbsp;w)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;broadcast(n&nbsp;+&nbsp;&#39;(&#39;&nbsp;+&nbsp;this.ip&nbsp;+&nbsp;&#39;)&nbsp;说道:&nbsp;&#39;&nbsp;+&nbsp;w);&nbsp;<br/>}<br/>客户端代码如下：<br/><br/>_nc&nbsp;=&nbsp;new&nbsp;NetConnection();&nbsp;<br/>_nc.talk&nbsp;=&nbsp;function(msg)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;msg_txt.text&nbsp;+=&nbsp;msg&nbsp;+&nbsp;&#39;\n&#39;;&nbsp;<br/>};&nbsp;<br/>_nc.connect(&#39;rtmp://x/chat&#39;);&nbsp;<br/>&nbsp;&nbsp;<br/>talk_btn.onRelease&nbsp;=&nbsp;function()&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;_nc.call(&#39;someoneTalk&#39;,&nbsp;null,&nbsp;name_txt.text,&nbsp;send_txt.text);&nbsp;<br/>};&nbsp;<br/>&nbsp;&nbsp;<br/>onKeyDown&nbsp;=&nbsp;function&nbsp;()&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(Key.isDown(Key.ENTER)){&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nc.call(&#39;someoneTalk&#39;,&nbsp;null,&nbsp;name_txt.text,&nbsp;send_txt.text);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br/>}&nbsp;<br/>Key.addListener(this);<br/>源文件打包下载download<br/>ps:&nbsp;也可以用SharedObject的send方法向所有订阅此so的客户端发送消息以达到聊天的效果，但她无法有效地将当前聊天者的ip地址等信息广播出去。我已经试过了，谁要有兴趣的话也不妨试一试。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=55</link>
			<title><![CDATA[[转]最近整理的碰撞函数]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[ActionScript]]></category>
			<pubDate>Fri,01 Jun 2007 12:06:33 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=55</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;球碰撞球后的速度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;speed&nbsp;移动球的速度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;moveBall&nbsp;移动的球<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;staticBall&nbsp;静止的球<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;Vector&nbsp;&nbsp;&nbsp;{x:0,y:0}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;public&nbsp;function&nbsp;getAfterBallHitBallSpeed(speed&nbsp;:&nbsp;Vector,&nbsp;moveBall&nbsp;:&nbsp;Vector,&nbsp;staticBall&nbsp;:&nbsp;Vector)&nbsp;:&nbsp;Vector{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;v&nbsp;:&nbsp;Vector&nbsp;=&nbsp;new&nbsp;Vector(0,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;vc&nbsp;:&nbsp;Vector&nbsp;=&nbsp;moveBall.minusNew(staticBall);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;vh&nbsp;:&nbsp;Vector&nbsp;=&nbsp;vc.getClone();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vh.setLength(speed.dot(vc)/vc.getLength());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;vi&nbsp;:&nbsp;Vector&nbsp;=&nbsp;speed.minusNew(vh);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v=vi.minusNew(vh);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;v;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;球碰撞线后的速度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ballSpeed&nbsp;&nbsp;碰撞前的速度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveBall&nbsp;&nbsp;&nbsp;球圆心的位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linePoint1&nbsp;挡板或线的一个端点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linePoint2&nbsp;挡板或线的另一个端点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;&nbsp;&nbsp;Vector&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speed={x,y}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;public&nbsp;function&nbsp;getAfterBallHitLineSpeed(ballSpeed&nbsp;:&nbsp;Vector,&nbsp;moveBall&nbsp;:&nbsp;Vector,&nbsp;linePoint1&nbsp;:&nbsp;Vector,&nbsp;linepPoint2&nbsp;:&nbsp;Vector)&nbsp;:&nbsp;Vector{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;v&nbsp;:&nbsp;Vector&nbsp;=&nbsp;new&nbsp;Vector(0,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//线或挡板的向量<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;panelVector&nbsp;=&nbsp;linePoint1.minusNew(linepPoint2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//dot=|v|*|u|*cos(a)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;cos&nbsp;=&nbsp;ballSpeed.dot(panelVector)/(ballSpeed.getLength()*panelVector.getLength());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sin&nbsp;=&nbsp;Math.sin(Math.acos(cos));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;speedH&nbsp;=&nbsp;panelVector.getClone();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speedH.setLength(ballSpeed.getLength()*cos);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;speedV&nbsp;=&nbsp;ballSpeed.minusNew(speedH);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v=speedH.minusNew(speedV);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;v;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;返回球碰撞线后刚好相切的圆心的位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;球的半径<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ballSpeed&nbsp;&nbsp;球的速度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ball&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;球圆心的位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linePoint1&nbsp;&nbsp;挡板或线的一个端点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linePoint2&nbsp;&nbsp;挡板或线的另一个端点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;&nbsp;&nbsp;Vector&nbsp;&nbsp;&nbsp;&nbsp;{x:number,y:number}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;public&nbsp;function&nbsp;getAfterBallHitLinePoint(radius&nbsp;:&nbsp;Number,&nbsp;ballSpeed&nbsp;:&nbsp;Vector,&nbsp;ball&nbsp;:&nbsp;Vector,&nbsp;linePoint1&nbsp;:&nbsp;Vector,&nbsp;linePoint2&nbsp;:&nbsp;Vector)&nbsp;:&nbsp;Vector{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;prevPoint&nbsp;:&nbsp;Vector&nbsp;=&nbsp;ball.minusNew(ballSpeed);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;v&nbsp;:&nbsp;Vector&nbsp;=&nbsp;new&nbsp;Vector(0,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//运动轨迹的线的角度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;angle&nbsp;=&nbsp;Maths.angleOfLine(prevPoint.x,prevPoint.y,ball.x,ball.y);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//线或挡板的向量<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;panelVector&nbsp;=&nbsp;linePoint1.minusNew(linePoint2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;point&nbsp;=&nbsp;Maths.get2LineIntersectionPoint(ball,prevPoint,&nbsp;linePoint1,&nbsp;linePoint2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;cos&nbsp;=&nbsp;ballSpeed.dot(panelVector)/(ballSpeed.getLength()*panelVector.getLength());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sin&nbsp;=&nbsp;Math.sin(Math.acos(cos));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;len&nbsp;=&nbsp;radius/sin;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//求得的相切时候的圆心的点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;x&nbsp;=&nbsp;point.x&nbsp;+&nbsp;len*Maths.cosD(angle);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;y&nbsp;=&nbsp;point.y&nbsp;+&nbsp;len*Maths.sinD(angle);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v.reset(x,y);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;v;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=53</link>
			<title><![CDATA[用Flash9/as3跟踪音频波形]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[ActionScript]]></category>
			<pubDate>Wed,23 May 2007 08:38:48 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=53</guid>	
		<description><![CDATA[Actionscript&nbsp;3.0提供的新功能，其中用到了ByteArray、SoundMixer。<br/>代码如下：<br/><br/>function&nbsp;func(a:Number)&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;num&nbsp;*&nbsp;Math.sin(a);&nbsp;<br/>}&nbsp;<br/>function&nbsp;drawFunction(func:Function,&nbsp;thickness:Number,&nbsp;color:Number)&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;graphics.lineStyle(thickness,&nbsp;color,&nbsp;100);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;graphics.moveTo(30,&nbsp;stage.stageHeight&nbsp;/&nbsp;2&nbsp;-&nbsp;func((30&nbsp;+&nbsp;t)&nbsp;/&nbsp;20)&nbsp;*&nbsp;20);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;30;&nbsp;i&nbsp;&lt;=&nbsp;stage.stageWidth&nbsp;-&nbsp;30;&nbsp;i++)&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;fi&nbsp;=&nbsp;stage.stageHeight&nbsp;/&nbsp;2&nbsp;-&nbsp;func((i&nbsp;+&nbsp;t++)&nbsp;/&nbsp;20)&nbsp;*&nbsp;20;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.lineTo(i,&nbsp;fi);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br/>}&nbsp;<br/>function&nbsp;spectrum(event:Event)&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;graphics.clear();&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;SoundMixer.computeSpectrum(ba,&nbsp;true,&nbsp;0);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;=&nbsp;ba.readFloat()&nbsp;*&nbsp;10;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;drawFunction(func,&nbsp;1,&nbsp;0x0066cc);&nbsp;<br/>}&nbsp;<br/>var&nbsp;sound:Sound&nbsp;=&nbsp;new&nbsp;Sound();&nbsp;<br/>var&nbsp;sound_channel:SoundChannel;&nbsp;<br/>var&nbsp;ba:ByteArray&nbsp;=&nbsp;new&nbsp;ByteArray();&nbsp;<br/>var&nbsp;num:Number;&nbsp;<br/>var&nbsp;t:Number&nbsp;=&nbsp;0;&nbsp;<br/>sound.load(new&nbsp;URLRequest(&#34;test.mp3&#34;));&nbsp;<br/>sound_channel&nbsp;=&nbsp;sound.play();&nbsp;<br/>this.addEventListener(Event.ENTER_FRAME,&nbsp;spectrum);]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=52</link>
			<title><![CDATA[超有用的Flex Component Kit for Flash CS3]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[Flex]]></category>
			<pubDate>Wed,25 Apr 2007 09:06:59 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=52</guid>	
		<description><![CDATA[真是不可不介绍啊。<br/>有了这个东东，Flash&nbsp;CS3中任意一个MovieClip都可以轻松输出成SWC文件，在Flex中使用。<br/>省时省力！有了这个，炫目的Flex应用程序指日可待！<br/>原理：实际上是将选定的MovieClip编译成UIMovieClip的一个子类，从而与Flex完全兼容，和Flex里面的容器类一般。<br/><br/>页面：<a href="http://labs.adobe.com/wiki/index.php/Flex_Component_Kit_for_Flash_CS3" target="_blank">http://labs.adobe.com/wiki/index.php/Flex_Component_Kit_for_Flash_CS3</a><br/>下载：<a href="http://download.macromedia.com/pub/labs/flex_flash_integrationkit/flex_component_kit_042307.mxp" target="_blank">http://download.macromedia.com/pub/labs/flex_flash_integrationkit/flex_component_kit_042307.mxp</a>]]></description>
		</item>
		
			<item>
			<link>http://www.adobeas.com/default.asp?id=51</link>
			<title><![CDATA[FMS里删除FLV流文件]]></title>
			<author>liulinsp27@163.com(admin)</author>
			<category><![CDATA[FMS]]></category>
			<pubDate>Tue,24 Apr 2007 11:25:37 +0800</pubDate>
			<guid>http://www.adobeas.com/default.asp?id=51</guid>	
		<description><![CDATA[//声明一个流对象stream对应要删除的flv文件&nbsp;<br/>var&nbsp;stream&nbsp;=&nbsp;Stream.get(&#34;flvName&#34;);<br/>//用clear()方法删除flv文件&nbsp;<br/>stream.clear();<br/>//遍历该对象&nbsp;<br/>if&nbsp;(stream)&nbsp;{<br/>&#160;&#160;&#160;&#160;//获取stream状态，检验是否删除成功&nbsp;<br/>&#160;&#160;&#160;&#160;stream.onStatus&nbsp;=&nbsp;function(info)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&nbsp;(info.code&nbsp;==&nbsp;&#34;NetStream.Clear.Success&#34;)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;Stream&nbsp;cleared&nbsp;successfully.&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&nbsp;(info.code&nbsp;==&nbsp;&#34;NetStream.Clear.Failed&#34;)&nbsp;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;Failed&nbsp;to&nbsp;clear&nbsp;stream.&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;};<br/>}<br/>]]></description>
		</item>
		
</channel>
</rss>