<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[羽柴|鬼铃-blog]]></title>
  <subtitle type="html"><![CDATA[网页游戏开发,云南游戏开发,云南flash,昆明游戏开发,昆明flash,FMS3,FMS3教程,Flash Media Server]]></subtitle>
  <id>http://www.ycflash.com/</id>
  <link rel="alternate" type="text/html" href="http://www.ycflash.com/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.ycflash.com/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2010-12-02T10:21:38+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[[开源]一款flash AS2的 涂鸦板]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=2" label="AS2" /> 
	  <updated>2010-12-02T10:21:38+08:00</updated>
	  <published>2010-12-02T10:21:38+08:00</published>
		  <summary type="html"><![CDATA[早前做的昨天刚要有人需要就放上来开源了。<br/><br/><br/>源码下载<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/downs/tuyaban.rar" target="_blank">点击下载此文件</a><br/><br/><br/><br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/<br/>//<br/>//=====================================<br/><br/><br/><br/><br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=123" /> 
	  <id>http://www.ycflash.com/default.asp?id=123</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[FMS 安全性  【登录安全 视频安全 方法安全】]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=3" label="FMS" /> 
	  <updated>2010-11-15T18:52:51+08:00</updated>
	  <published>2010-11-15T18:52:51+08:00</published>
		  <summary type="html"><![CDATA[FMS主要考虑的安全性有以下3点：<br/>1 登录安全<br/>2 视频安全<br/>3 方法安全 用户分权限处理 (.call的安全性)<br/><br/>先说第1个。登录安全<br/>登录安全从2方面考虑。<br/>1 账号+密码<br/>2 域限制<br/><br/>//=====账号+密码===<br/>一般有2种，用户账号和密码 管理员账号和密码 如果从技术上说可以分为 数据库账号+密码&nbsp;&nbsp;定死的账号+密码<br/><br/>利用数据库账号+密码请访问我的另一篇博文 FMS异步与其他web语言达成异步验证<br/><a href="http://www.ycflash.com/article.asp?id=80" target="_blank" rel="external">http://www.ycflash.com/article.asp?id=80</a><br/><br/>那再来说下 定死的账号+密码。这个就比较简单，一般用来验证管理员登录<br/>application.onConnect = function(newClient, userType,userName, userPsd) {<br/>&#160;&#160;&#160;&#160;if(userType==&#34;admin&#34;){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(userName==&#34;yuchai&#34; &amp;&amp; userPsd==&#34;123456&#34;){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.acceptConnection(newClient);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{<br/> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var err = new Object();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp;err.message = &#34;管理员账号密码错误&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.rejectConnection(newClient, err);<br/><br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}&nbsp;&nbsp;&nbsp;&nbsp;<br/>}<br/>//=====域限制===<br/>域限制其实比较，FMS提供了一个采集访问来源的.swf域。根据域限制就能知道访问者的.swf是否是在你的合法域里面。如果不是则有可能是被别人破解并反编的.swf。那这样不让其访问就行了<br/><br/>方法：_newClient.referrer<br/>这样就获取到了来访域了。然后加于if+判断就行。<br/><br/><br/><br/>//=====视频安全===<br/>下面再来说视频安全，这可能也是很多人都想知道的。特别是现在网络上大部分情聊天室安全性都特差的。注册个账号登录进FMS，破解了FLASH客户端找到了视频的StreamsID 就能直接越过权限的调用视频了。那下面我们来说如何保证视频安全。<br/>其实就是防止StreamsID的泄露。 熟悉的人都知道视频采集是 视频流.publish(StreamsID,false) 关键就在于StreamsID。很多安全性差的就用 主播账号就来做StreamsID了，或有的更夸张直接取个字符串比如&#34;video&#34;就做StreamsID了，那这样破解了用户端的flash，那这个StreamsID当然就暴露了。安全的做法则是StreamsID应该由FMS服务端随机去生成，并且记录在FMS端。比如主播开始摄像时这时候应该先请求FMS (.call) 然后FMS随机生成StreamsID返回给摄像方，摄像方根据这个StreamsID再摄像。 当用户需要观看视频的时候同样也得请求FMS(.call)。 然后FMS判断该用户是否有权限观看，如果可以观看则发送StreamsID，反之则不发送。这样flash端就不能获取到StreamsID了。&nbsp;&nbsp;<br/>小问题：当然也有人会说那摄像端是flash啊，他的StreamsID是暴露的啊。 这是当然的，他要摄像他的StreamsID当然得暴露。这不是安全问题，至少没有人无聊到自己摄像，自己去偷自己摄的视频吧..那也是无意义的 当然在此说的是摄像（边摄边放不是录像）。如果是录像至FMS端，那就需要FMS端做处理了。录好后的视频流StreamsID得定时更换或按条件更换。<br/><br/><br/>//=====方法安全 用户分权限处理===<br/>之前写过一份相关的，简单来说就是不要把所有的call都写成Client.prototype.XXX=function(){}。因为这样就把该方法向所有的客户端公开了。正确的方法则是根据不同的权限用户开放相应的call方法。<br/>具体请看我另篇博文&nbsp;&nbsp;聊天室的多种实现原理和优缺点&nbsp;&nbsp;其中的(2).分组<br/><a href="http://www.ycflash.com/article.asp?id=70" target="_blank" rel="external">http://www.ycflash.com/article.asp?id=70</a><br/><br/><br/>//============请珍惜原创者的劳动=============<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//=====================================]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=122" /> 
	  <id>http://www.ycflash.com/default.asp?id=122</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[FMS 检查账号是否在线]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=3" label="FMS" /> 
	  <updated>2010-11-15T18:07:44+08:00</updated>
	  <published>2010-11-15T18:07:44+08:00</published>
		  <summary type="html"><![CDATA[今天有网友提出该问题，因为代码简单就抽空写了。<br/>//检查账号是否已经登录方法<br/>function testOnline(userName) {<br/>&#160;&#160;&#160;&#160;var iLength=application.clients.length<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;iLength; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (application.clients[i].userName == userName) {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return true<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;return false<br/>}<br/><br/>application.onConnect = function(newClient, userName, userPsd) {<br/>&#160;&#160;&#160;&#160;var onLine=testOnline(userName)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;if(!onLine){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//在此表示未在线<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.acceptConnection(newClient);<br/>&#160;&#160;&#160;&#160;}else{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var err = new Object();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;err.message = &#34;您的账号已在线，请尝试重新登录.&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.rejectConnection(newClient, err);<br/>&#160;&#160;&#160;&#160;}<br/>}<br/><br/><br/>//============请珍惜原创者的劳动=============<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//===================================== ]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=121" /> 
	  <id>http://www.ycflash.com/default.asp?id=121</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[AS3 鼠标双击 DOUBLE_CLICK无效 处理]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=5" label="AS3" /> 
	  <updated>2010-10-21T14:09:41+08:00</updated>
	  <published>2010-10-21T14:09:41+08:00</published>
		  <summary type="html"><![CDATA[当侦听鼠标双击无效将会是以下2点<br/>1 doubleClickEnabled 没有开启双击的侦听，默认是false <br/>解决方法：<br/>MC.doubleClickEnabled=true<br/><br/>2 要侦听的MC中嵌有子MC. <br/>解决方法：<br/>MC.mouseChildren=false&nbsp;&nbsp;//让子MC失去鼠标事件<br/><br/>这样在使用DOUBLE_CLICK 侦听鼠标双击就有效了]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=119" /> 
	  <id>http://www.ycflash.com/default.asp?id=119</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[flashplayer10.1.53.64 最新版无法连接FMS]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=3" label="FMS" /> 
	  <updated>2010-07-05T23:40:32+08:00</updated>
	  <published>2010-07-05T23:40:32+08:00</published>
		  <summary type="html"><![CDATA[今天刚升了flashplayer10.1.53.64 结果FMS的cal客户端，客户端无响应。。。 解决方法：未知 待查中。。<br/><br/>找到问题所在了，新版本FP 取消了对中文代码的解析。。。 像我这样用全中文写程的人 命苦。。。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=118" /> 
	  <id>http://www.ycflash.com/default.asp?id=118</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[开源]06年开发的FMS 在线换装聊天室游戏 ]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=4" label="游戏算法" /> 
	  <updated>2010-06-30T22:55:40+08:00</updated>
	  <published>2010-06-30T22:55:40+08:00</published>
		  <summary type="html"><![CDATA[[开源]06年开发的FMS 在线换装聊天室游戏 <br/><br/><img src="http://www.ycflash.com/attachments/month_0711/e2007114141652.jpg" border="0" alt=""/><br/><br/><br/><img src="http://www.ycflash.com/attachments/month_0711/j2007114141659.jpg" border="0" alt=""/><br/><br/>换装小游戏聊天室. <br/>带客房端及服务端。 06年开发的小游戏，目前开源。可能有很多纰漏。<br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/<br/>//<br/>//=====================================<br/><br/><br/><br/>忘了贴源码，现在补上<br/><br/>源码下载<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_1006/2010_6_30_01.rar" target="_blank">点击下载此文件</a><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=117" /> 
	  <id>http://www.ycflash.com/default.asp?id=117</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[【注意】AS3 与FMS call的失败原因之—参数不全]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=5" label="AS3" /> 
	  <updated>2010-06-19T23:39:00+08:00</updated>
	  <published>2010-06-19T23:39:00+08:00</published>
		  <summary type="html"><![CDATA[今天遇到这样的问题及解决方法如下： 也给各FMS配合AS3开发的人注意 <br/>----FMS端-<br/>newClient.call(&#34;客户端事件&#34;,null,参数1, 参数2,参数3)<br/><br/>---Flash端<br/>AS2：<br/>FmsNc.客户端事件=function(参数1, 参数2,参数3){<br/>}<br/><br/>AS3:<br/>public function 客户端事件(参数1, 参数2,参数3){<br/>}<br/><br/>当FMS端发送数据给客户端时，在某些情况下缺少了某个参数不发送。比如只发送了参数1及参数2 省略了参数3<br/>newClient.call(&#34;客户端事件&#34;,null,参数1, 参数2)<br/><br/>在AS2时完全正常。<br/>但AS3时，就有问题了，即不响应“客户端事件” 输入日志中也没有报错事件。结果找半天问题终于发现了，出在参数不全上。 <br/>在AS3修改为<br/>public function 客户端事件(参数1, 参数2,参数3=null){<br/>}<br/>即如果无参数即默认为null，这时候问题解决。 <br/>-_-! 奇怪的即然是因为缺少了参数FLASH也不报下错，让我找服务端问题找了好长时间....所以注意了。如果call没有响应，有可能是缺少参数引起的。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=116" /> 
	  <id>http://www.ycflash.com/default.asp?id=116</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[附图]用户列表的实现纠正[新手必看]]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=3" label="FMS" /> 
	  <updated>2010-06-12T17:31:18+08:00</updated>
	  <published>2010-06-12T17:31:18+08:00</published>
		  <summary type="html"><![CDATA[因为看到有人在群里面讨论用户列表的实现， 虽然一个简单的用户列表。但说法各异，在此就写一个简单的思路教程吧。推荐FMS应用的新手必看<br/><br/>用户列表，相信很多应用都会用到。像FMS经常做的聊天室， 网络游戏都有用户列表。虽然用户列表看似简单，但实现却不简单。 在此我先把错误的思路及方法说下吧<br/><br/>很多新手做用户列表都是用非常简单的方式。 建立一个数组 连入用户时.push这个数组并且把这个数组广播给客户端，断开用户的时候。找到数组中的位置splice掉。 然后又把这个数组广播给客户端。 这个方法虽然能行，但却是大错特错的方法。除非是小应用还可以用下，用这方法别想做大应用。问题在哪?&nbsp;&nbsp;我下面来分析<br/><br/>问题就出在数据量上面，这样来考虑。如果是一个2000人在线的应用，那这个用户列表就相当于长度2000的数组。如果随便1个人进进出出就相当于广播了2000次左右。如果这个数组记录的仅仅是人名还问题不大，但如果还有其他数据。那可想而知...一进一出就刷2000人的长度2000的数据量，是多么可怕的数据量....相当于发送了2000*2000的数据量<br/><br/>那如何解决呢？就是建立用户列表映射。看以下思路. 同样还是2000人的应用<br/>服务端同样用数组。 当用户登录时只向该用户发送长2000数组（在此分清，是只向登录者这1个人发送并不是向2000人广播这数组）&nbsp;&nbsp;这样就把用户列表映射到登录者客户端。服务端push后这时候再广播登录者信息（注意，在此指的是广播登录者的单独的单元信息比如用户名而不是广播整个数组。） 客户端在收到这个单独信息的时候也做push。 当用户退出的时候服务端做splice处理，处理完后记录splice的数组指针即可。 然后广播这个指针。客户端同步映射根据这个指针做splice处理。（而不是把整个数组的广播扔给客户端）&nbsp;&nbsp;这就是整个映射过程。<br/><br/>这样就相当于只向1个人（登录者）发送了2000长度的数组。而广播的仅仅是要push的信息和删除的ID 而不是向所有用户发送整个数组。这样2000人的应用效率就降低成了1/2000。 <br/><br/>我现在用FMS开发的RPG游戏及以之前开发IU富亨及IU猜谜屋。包括以前开发的14款棋牌游戏都是用的这方法。<br/>具体的代码开发工作比较忙就不再单独写了，只要看懂思路后会发现非常简单。 <br/><br/>同理在开发网络游戏中这样的情况很多见了，为了降低网络流量很多地方都得做数据印射（客户端和服务端各持一份）。比如游戏中的地图数据组，装备数据组等等。并且映射后不影响数据安全，客户端只管显示。核心判断还是在服务端。所以就算映射后在客户端被用户修改那也只是修改他自身的显示而不影响其他正常用户的显示。<br/><br/><br/><span style="color:Red">今天附上一张图片说明，如果图片过宽显示不完全。请另存后看。</span><br/><img src="http://www.ycflash.com/attachments/month_1007/4201072014047.jpg" border="0" alt=""/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=115" /> 
	  <id>http://www.ycflash.com/default.asp?id=115</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[AS3] 动画与程序结合 ENTER_FRAME 取代addFrameScript]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=5" label="AS3" /> 
	  <updated>2010-05-15T09:36:35+08:00</updated>
	  <published>2010-05-15T09:36:35+08:00</published>
		  <summary type="html"><![CDATA[addFrameScript 虽然方便但最大缺点在于调用方法时不能传入参数. <br/>所以推荐用ENTER_FRAME 来取代addFrameScript<br/>//演示源码在最下方可下载.<br/><br/>//----------方法如下----------<br/>package {<br/>&#160;&#160;&#160;&#160;import flash.display.FrameLabel;<br/>&#160;&#160;&#160;&#160;import flash.events.Event;<br/>&#160;&#160;&#160;&#160;public class 帧执行类 {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public var 对象;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public var 结束方法:Function;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;private var 结束帧:Number;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;private var 循环执行:Boolean;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public function 帧执行类(MC) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对象=MC;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public function 赋于方法(帧数,_结束方法=null,_循环执行=false) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//检测传来的帧数是否是标签<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (isNaN(Number(帧数))) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//传来的是标签<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 标签组:Array = 对象.currentLabels;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i:uint = 0; i &lt; 标签组.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 标签:FrameLabel = 标签组[i];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;frame &#34; + label.frame + &#34;: &#34; + label.name);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (标签.name==帧数) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//return label.frame<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;帧数=标签.frame;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;结束帧=帧数;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;循环执行=_循环执行;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;结束方法=_结束方法<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对象.addEventListener(Event.ENTER_FRAME, 实时检测);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;private function 实时检测(Evt:Event) {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (Evt.target.currentFrame==结束帧) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (!循环执行) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Evt.currentTarget.removeEventListener(Event.ENTER_FRAME, 实时检测);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;执行&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(结束方法!=null){<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;结束方法(Evt.target,结束帧)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>//<br/>//<br/>//==============源码下载============<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_1005/5201051593622.rar" target="_blank">点击下载此文件</a><br/><br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/<br/>//===================================== <br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=114" /> 
	  <id>http://www.ycflash.com/default.asp?id=114</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[[AS3] addFrameScript 添加至帧标签]]></title>
	  <author>
		 <name>admin</name>
		 <uri>http://www.ycflash.com/</uri>
		 <email>yuchaiyuwei@163.com</email>
	  </author>
	  <category term="" scheme="http://www.ycflash.com/default.asp?cateID=5" label="AS3" /> 
	  <updated>2010-05-09T19:26:47+08:00</updated>
	  <published>2010-05-09T19:26:47+08:00</published>
		  <summary type="html"><![CDATA[今天遇到这样的问题 添到方法至多个动画,但每个动画所需要触发的帧数不是同一个. 然后得用addFrameScript 把方法添加到帧上.但addFrameScript的参数只支持帧数. 这时候就需要用到在相应的帧标签上addFrameScript. 也就是得获取到帧标签所在的帧数<br/><br/>用下面方法:<br/><br/>import flash.display.FrameLabel;<br/>var labels:Array = MC.currentLabels;<br/>for (var i:uint = 0; i &lt; labels.length; i++) {<br/>&#160;&#160;&#160;&#160;var label:FrameLabel = labels[i];<br/>&#160;&#160;&#160;&#160;trace(&#34;frame &#34; + label.frame + &#34;: &#34; + label.name);<br/>}<br/>//这样就能获取到帧标签所在的帧数了. 然后再相应的addFrameScript ]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.ycflash.com/article.asp?id=113" /> 
	  <id>http://www.ycflash.com/default.asp?id=113</id>
  </entry>	
		
</feed>

