<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[羽柴|鬼铃-blog]]></title>
<link>http://www.ycflash.com/</link>
<description><![CDATA[网页游戏开发,云南游戏开发,云南flash,昆明游戏开发,昆明flash,,fms,as2,flash游戏开发]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[yuchaiyuwei@163.com(羽柴|鬼铃)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>羽柴|鬼铃-blog</title>
	<url>http://www.ycflash.com/images/logos.gif</url>
	<link>http://www.ycflash.com/</link>
	<description>羽柴|鬼铃-blog</description>
</image>

			<item>
			<link>http://www.ycflash.com/article.asp?id=111</link>
			<title><![CDATA[关于FMS广播broadcastMSG致死问题纠正]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[FMS]]></category>
			<pubDate>Tue,16 Feb 2010 12:05:52 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=111</guid>
		<description><![CDATA[前段时间有人向我问起FMS中的 broadcastMSG，一直认为是bug。还找来了网上的贴子说其他人也认为是bug。但我不这样认为，那是在误导。我平时应用广播都是几百线程都没发现有问题过。于是又写了一个简单的测试broadcastMSG的实例，用服务器同时广播万条压测正常。<br/><br/>当然如果用 broadcastMSG去广播NC，那肯定挂。那本来就是错误的应用方法。不光是用broadcastMSG如果用单call也是很占资源。所以在编写代码时应该考虑什么数据该发，什么数据不该发.而不是为了一个变量而把整个obj或数组发出。<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_1002/3201021612357.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=110</link>
			<title><![CDATA[神奇的AS2 组件焦点]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[AS2]]></category>
			<pubDate>Fri,24 Jul 2009 00:19:14 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=110</guid>
		<description><![CDATA[今天用到组件的时候发现这样一个问题. 在B.swf中用了组件.&nbsp;&nbsp;A.swf加载了b.swf 这时候只要点过那个组件,那组件的焦点框(绿色的)就会一直存在. 查了帮助里面半字没提..经过.net虫的方法.<br/>原来在A.swf库中也要放入相同的组件就行...]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=109</link>
			<title><![CDATA[跨层级加载时 相对路径的问题]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Wed,15 Jul 2009 17:38:16 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=109</guid>
		<description><![CDATA[今天刚好在做多层级加载时发现了这个问题.就把解决方法贴出来了<br/>问题描术:<br/>路径结构是：根级：A.swf&nbsp;&nbsp;data(文件夹)&nbsp;&nbsp;&nbsp;&nbsp; data文件夹中有 B.swf&nbsp;&nbsp; c.swf<br/>在B的代码中有加载C.swf 单独运行B时正常。&nbsp;&nbsp;用A加载B的时候，问题就出现B不会加载c.swf了。<br/>得把c.swf移到和A.swf同级别。<br/><br/>问题原因:<br/>所有加载的swf都是以最外层swf所在目录为根目录<br/>被网页加载的swf都是以网页所在目录为根目录<br/><br/>解决方法:<br/>function 计算文件目录() {<br/>&#160;&#160;&#160;&#160;var 目录索引 = _url.lastIndexOf(&#34;/&#34;);<br/>&#160;&#160;&#160;&#160;var 目录 = _url.substring(0, 目录索引);<br/>&#160;&#160;&#160;&#160;var 文件名 = _url.substring(目录索引+1);<br/>&#160;&#160;&#160;&#160;return [目录, 文件名];<br/>}<br/>trace(_url)<br/>trace(计算文件目录())<br/><br/>//*****重点. 以上函数并把目录和文件名分离了. 所以返回值的[0]是目录 [1]是文件名.这样用起来就更方便了<br/><br/>利用上面的函数,先分析得到主加载器的绝对目录.&nbsp;&nbsp;这时候不论下级载体 或下下级载体. 再调用一次该函数<br/>得到下下级载体的绝对目录.<br/><br/>这样就能得到2个绝对地址&nbsp;&nbsp;然后用字符串分析方法(IndexOf) 找出相同的部分.去掉, 剩下的就是需要的相对路径了. 这样在加载时把这个路径追加上.就能正常的加载N级关系的文件了.<br/><br/>本教程为本人原创，只供学习 如转载教程请注明出处：www.ycflash.com/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----羽柴<br/><br/>//再把对比方法也补充上吧. 比较简单.<br/>//========计算自己的相对路径=========<br/>var 目录索引=文件目录[0].indexOf(_root.文件目录[0])<br/>var 相对路径=文件目录[0].substring(目录索引+_root.文件目录[0].length+1)<br/>trace(&#34;相对路径=&#34;+相对路径)<br/><br/><br/>//=====trace环境===解析成功.<br/>主文件目录=file:///F|/制作/A<br/>子文件目录=file:///F|/制作/A/data<br/>相对路径=data<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=108</link>
			<title><![CDATA[循环的优化]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[FMS]]></category>
			<pubDate>Sat,27 Jun 2009 22:52:19 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=108</guid>
		<description><![CDATA[//在写程的时候遇到较大较多数数据用循环处理时,注意优化.做了这样一个测试.<br/>特别是针对数组,我们经常见到 for(var i=0;i&lt;xxx.length;i++)这样的方法.<br/>当然如果该数组长度小,套用的循环层级不深次数少时可以用这样的方法.而遇到数量多时推荐用个变量来存放.<br/>var iLength = 数组.length;<br/>for (var i = 0; i&lt;iLength; i++) {<br/>}<br/>这样的方法可以大大优化代码运算可用我下面的测试代码可以看出,特别是针对服务端的运算,更是推荐.<br/>不要小看那么的几毫秒,但针对的用户运算成千上万次运算时就知道优化的重要性了<br/>(注意:此方法只限用于在循环中数组长度不改变的前提下.)<br/><br/>测试数组 = new Array(10000);<br/>开始时间 = getTimer();<br/>for (var i = 0; i&lt;测试数组.length; i++) {<br/>&#160;&#160;&#160;&#160;测试数组[i] = i;<br/>}<br/>结束时间 = getTimer();<br/>时间差 = (结束时间-开始时间);<br/>trace(时间差);<br/>//<br/>开始时间 = getTimer();<br/>测试数组 = new Array(10000);<br/>var iLength = 测试数组.length;<br/>for (var i = 0; i&lt;iLength; i++) {<br/>&#160;&#160;&#160;&#160;测试数组[i] = i;<br/>}<br/>结束时间 = getTimer();<br/>时间差 = (结束时间-开始时间);<br/>trace(时间差);]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=107</link>
			<title><![CDATA[五子棋算法 + 五子棋AI 估价算法(含源码)]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Mon,01 Jun 2009 20:50:08 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=107</guid>
		<description><![CDATA[今天有人提起五子棋的算法问题，就把以前开发的源码直接贴出来了。大家去看源码学习吧<br/><br/>因为五子棋算法如果要写说明可能会写非常大一贴。所以在此就只做简单的原理说明，具体的下载源码研究吧。<br/><br/>很多人第1步肯定会问起五子棋如何判断5子相连。基本只要熟悉2维数组应用的程序员就比较容易理解了。<br/>在此用2维数组 白字为0&nbsp;&nbsp;黑子为1 用数组判断，很快就能判断出是否五子相连<br/><br/>比如用这样的小数组表示棋盘：<br/><br/>arr[0]=[0,0,0,0,1]<br/>arr[1]=[1,1,1,1,1]<br/>arr[2]=[0,1,1,1,0]<br/>arr[3]=[0,0,1,0,0]<br/>arr[4]=[1,0,0,0,1]<br/><br/>上图是一个2维数组。&nbsp;&nbsp;&nbsp;&nbsp;用肉眼很简单就能判断出 arr1这一行5个1。存在，同理。只要从一点出去（最后下的那步）进行8方面5个点的延伸出去，如果这5个点数值都一样则表示相连了<br/><br/><br/><br/>再来就是AI（机器人），先从最基本的AI谈起。 <br/>五子棋如何做机器人呢？&nbsp;&nbsp;简单的方法就是估价。什么是估价，就是当对手每走一步。就对整个棋牌每个点做估价。然后找出价值最高的点那就是机器人要走的点。我写的AI估价表如下，当然越详细的估价及棋路判断最多那机器人就越强。<br/><br/>估价表(空值)<br/><br/>当前玩家&#160;&#160;&#160;&#160;连成的子数&#160;&#160;&#160;&#160;权值<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活2 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;5<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;6<br/><br/><br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;7<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;8<br/><br/><br/>估价表(全值)<br/><br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;5<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;6<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;7<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;8<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;9<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;10<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;11<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;12<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;14<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;15<br/><br/>棋子数&#160;&#160;&#160;&#160;2 3 4&#160;&#160;&#160;&#160;5<br/>倍率&#160;&#160;&#160;&#160;1 2 2.5&#160;&#160;&#160;&#160;3<br/><br/>PC&#160;&#160;&#160;&#160;4 8 12<br/>对手&#160;&#160;&#160;&#160;3 7 11<br/>PC&#160;&#160;&#160;&#160;2 6 10&#160;&#160;&#160;&#160;15<br/>对手&#160;&#160;&#160;&#160;1 5 9&#160;&#160;&#160;&#160;14<br/><br/><br/>公式<br/>对手空&#160;&#160;&#160;&#160;子数*倍率+2<br/>PC空&#160;&#160;&#160;&#160;子数*倍率+1<br/>对手挡&#160;&#160;&#160;&#160;子数*倍率<br/>PC挡&#160;&#160;&#160;&#160;子数*倍率-1<br/><br/><br/>可能一开始看上表完全不理解，这很正常。不过在此只说原理，至于实现方法看源码就行。 <br/>用如下例子来说明什么是估价，如何做估价。<br/>最基本的就是：用一开始的判断输赢的方法，能取到1个点延伸8方向所得到8个方向8种排列的棋子情况。然后找出这8个方向中棋子拥有最多的数量就是这个点的估价。用通俗的话来解释下。<br/>比如一开始那个数组：<br/><br/>arr[0]=[0,0,0,0,1]<br/>arr[1]=[1,？,1,1,1]<br/>arr[2]=[0,1,1,1,0]<br/>arr[3]=[0,0,1,0,0]<br/>arr[4]=[1,0,0,0,1]<br/><br/>大家看arr[1]这列，？处的估价是多少呢？ 首先从这点出发，8方向找出子最多的一条则是估价。从肉眼上看一看就明白了那就是？处的右边。有3个1。子越多，表示他的价值最高。取出子最多的一方向就是这个点的估价。<br/><br/>这时候大家应该知道1个点的价价了。但这是不够的，省下的就是用同样的方法，找出整个棋盘里面没有下棋子的地方，然后用同样的方法计算它们的估价。价值最高的点。就是AI要走的点。 <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_0906/y200961204920.rar" target="_blank">点击下载此文件</a><br/><br/><br/><br/>本源码入教程为本人原创，只供学习，如用至违法用途与作者无关。 <br/>如转载教程请注明出处：www.ycflash.com/ycblog&nbsp;&nbsp;<br/><br/> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;----羽柴<br/><br/>功能说明：<br/>五子棋 AS2版。开发环境flash8 开发时间2006年7月<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=106</link>
			<title><![CDATA[Flash Media Server_2 中文帮助]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[FMS]]></category>
			<pubDate>Mon,25 May 2009 13:37:07 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=106</guid>
		<description><![CDATA[上传了一份FMS2的中文帮助，给需要的人下载吧<br/><a target="_blank" href="http://www.ycflash.com/down/Flash_Media_Server_2_Help.rar" rel="external">点击此处下载</a><br/><br/><br/>上面那个链接是包含PDF阅读器的，近40M。如果有PDF阅读器的请下载下面的。3M<br/><a target="_blank" href="http://www.ycflash.com/down/FMS2HelpJJ.rar" rel="external">点击此处下载</a>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=105</link>
			<title><![CDATA[骰子游戏根据总数随机显示骰子值[反算法]]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Fri,01 May 2009 17:38:45 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=105</guid>
		<description><![CDATA[在开发网络版关于 1-2颗骰子游戏过程中，经常会出现这样的情况。服务端随机取了骰子的总数，在客户端得根据这个骰子总数随机分配。1颗骰子当然就没必要了。 主要是2颗骰子<br/>比如： 服务端发来骰子和： 8点&nbsp;&nbsp; 客户端的2颗骰子就要随机显示，&nbsp;&nbsp;有可能1,7&nbsp;&nbsp;2,6&nbsp;&nbsp;&nbsp;&nbsp;3,5&nbsp;&nbsp; 4,4&nbsp;&nbsp; 5,3&nbsp;&nbsp;6,2&nbsp;&nbsp; 7,1 这样的结果。现在把算法列出来。<br/><br/>//==============算法如下====================<br/>function 计算骰子值(总值, 骰子数) {<br/>&#160;&#160;&#160;&#160;var 骰子值 = new Array();<br/>&#160;&#160;&#160;&#160;if (骰子数 == 1) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [总值, 0];<br/>&#160;&#160;&#160;&#160;} else if (骰子数 == 2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (总值&gt;6) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最小值 = 总值-6;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最大值 = 6;<br/>&#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;var ran值 = 6;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [ran值, 总值-ran值];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var ran值 = random(6-随机最小值)+随机最小值;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [ran值, 总值-ran值];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最小值 = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最大值 = 总值;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (总值 == 6) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;随机最大值 = 5;<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;//trace(&#34;随机最小值=&#34;+随机最小值) <br/>&#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;//trace(随机最大值-随机最小值+1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var ran值 = random(随机最大值-随机最小值)+随机最小值;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [ran值, 总值-ran值];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//trace(&#34;骰子值=&#34;+骰子值);&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#160;&#160;&#160;&#160;return 骰子值;<br/>}<br/>//========================调试方法======================<br/>for (var i = 0; i&lt;1000; i++) {<br/>&#160;&#160;&#160;&#160;var 总值 = random(11)+2;<br/>&#160;&#160;&#160;&#160;var 骰子值 = 计算骰子值(总值, 2);<br/>&#160;&#160;&#160;&#160;var OK = &#34;不成立&#34;;<br/>&#160;&#160;&#160;&#160;if (总值 == 骰子值[0]+骰子值[1] &amp;&amp; 骰子值[0]&gt;0 &amp;&amp; 骰子值[0]&lt;7 &amp;&amp; 骰子值[1]&gt;0 &amp;&amp; 骰子值[1]&lt;7) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;OK = &#34;成立&#34;;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;trace(&#34;总值=&#34;+总值+&#34; 骰子值=&#34;+骰子值+&#34; &#34;+OK);<br/>&#160;&#160;&#160;&#160;if (OK==&#34;不成立&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;总值=&#34;+总值+&#34; 骰子值=&#34;+骰子值+&#34; &#34;+OK);<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//===================================== <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=104</link>
			<title><![CDATA[AS2中神奇的setInterval]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[AS2]]></category>
			<pubDate>Fri,01 May 2009 02:08:50 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=104</guid>
		<description><![CDATA[AS2中的setInterval计时执行方法经过多次使用发现问题却真多.并且在帮助上也没有注明。全靠实践中才发现<br/>相信很多人开发中也遇到同样setInterval不好使的情况吧。<br/>经常出现的肯定就以下2种情况<br/><span style="color:Red">1 明明已经clearInterval的怎么却还执行<br/>2 如果是在子MC中使用了 setInterval 如果unloadClip这个MC 怎么还会执行setInterval 中的事件。</span><br/><br/>经过多次实践终于解决了以上2问题。方法如下：<br/><br/><span style="color:Red">1 明明已经clearInterval的怎么却还执行</span><br/>出现原因：因为在未执行clearInterval时如果又再执行一次 index=setInterval()那此时index不会被复盖，而是却生出另一个对应index的序号。这时候用trace(index)就发现了， 每执行一次index=setInterval()&nbsp;&nbsp;index就会递增1.<br/>解决方法：先初始一个index=-1 在每执行index=setInterval()前先执行一次clearInterval.如果中间需要中断时在调用的函数中根据情况执行clearInterval即可<br/>如下：<br/>var index=-1<br/>clearInterval(index);<br/>index=setInterval(xxx,1000)<br/><br/><span style="color:Red">2 如果是在子MC中使用了 setInterval 如果unloadClip这个MC 怎么还会执行setInterval 中的事件。</span><br/>出现原因：在调用的函数中用trace(this) 就发现trace出来的结果是 主场景... 原来是把该脚本赋在了_root上面了。并且都已经unloadClip了该方法还存在...(真奇怪...)<br/>解决方法：<br/>调用时用index=setInterval(赋于该方法的MC,&#34;移动&#34;, 100); 而不是用 index=setInterval(移动, 100);<br/>可能大家看到此时很奇怪。平时用时2种方法都生效啊。<br/>setInterval 为什么要在第1参数写 赋于路径...第2参数才写方法名.<br/>经测试才知道setInterval它的执行原理是把 调用的方法脚本复制到某个地方。然后开始执行。<br/>在用index=setInterval(赋于该方法的MC,&#34;移动&#34;, 100);<br/>比如：赋于该方法的MC（第1参数） 填this&nbsp;&nbsp;这时候AS把“移动”这个脚本复制一份至 this上面开始调用。所以在用了unloadClip后，该方法也跟着删除了。就正常了<br/>而用了 index=setInterval(移动, 100);&nbsp;&nbsp;这时候AS是把“移动”复制到了默认的_level0上（_root），所以unloadClip含有setInterval的MC，该方法还会执行。（原因就是脚本被复制了。经过测试，我是这样理解的）<br/><br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//===================================== <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=94</link>
			<title><![CDATA[FMS录像小程序[源码]]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[FMS]]></category>
			<pubDate>Wed,08 Apr 2009 16:15:17 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=94</guid>
		<description><![CDATA[今天群里面有人问起FMS录像. 3年前写过一份小程序。现在扔出来给大家研究吧，不过当时是用MX2004写的。如果是用FLASH8打开得另存一下。压缩包里面我另存了一份flash8版的 <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_0904/u200948161429.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=91</link>
			<title><![CDATA[数独递归AI算法[含源码下载]]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[AS2]]></category>
			<pubDate>Tue,03 Mar 2009 16:11:48 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=91</guid>
		<description><![CDATA[今天在群里面谈到数值的遍历 想起了早前写的一个数独小程序,在此连码一起发上来吧.<br/><br/>//=========核心处理方法========<br/>//==================处理函数====================<br/>取字符数组 = function (文本) {<br/>&#160;&#160;&#160;&#160;var 返回值 = new Array();<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;文本.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;返回值.push(文本.charAt(i));<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;return 返回值.sort();<br/>};<br/>//this[字符数组.join(&#34;&#34;)] = new Object();<br/>拆出名字 = function (字符数组) {<br/>&#160;&#160;&#160;&#160;var 对象名 = new Array();<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;字符数组.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对象名.push(字符数组.join(&#34;&#34;));<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;字符数组.push(字符数组.shift());<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;return 对象名;<br/>};<br/>生成对象 = function (对象:Object, 字符数组:Array) {<br/>&#160;&#160;&#160;&#160;var 对象名表 = 拆出名字(字符数组);<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;对象名表.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对象[对象名表[i]] = new Object();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对象[对象名表[i]].名字 = 对象名表[i];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对象[对象名表[i]].前名段 = 对象名表[i].charAt(0);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 取后名字符 = 对象[对象名表[i]].名字.substr(1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 拆名数组 = 取字符数组(取后名字符);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;原名=&#34;+对象[对象名表[i]].名字+&#34; 取出后=&#34;+取后名字符+&#34; 处理结果=&#34;+拆名数组);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对象[对象名表[i]].名字.length&gt;2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;生成对象(对象[对象名表[i]], 拆名数组);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;del&#101;te 对象[对象名表[i]].名字;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;del&#101;te 对象[对象名表[i]].前名段;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//目前可删&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>//<br/>//<br/>//用于结束最后的2位数互换<br/>取名字 = function (对象:Object, 前段名) {<br/>&#160;&#160;&#160;&#160;for (var i in 对象) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (typeof (对象[i]) == &#34;object&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对象[i].前名段 != undefined) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (名字.charAt(名字.length) != 对象[i].前名段) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;名字 += 对象[i].前名段;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;取名字(对象[i], 名字);<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;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;未加前=&#34;+前段名+&#34; 追加名字=&#34;+对象[i].名字+&#34; 结束名=&#34;+前段名+对象[i].名字);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;结果数组.push(前段名+对象[i].名字);<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/>&#160;&#160;&#160;&#160;//trace(&#34;名字=&#34;+名字);<br/>&#160;&#160;&#160;&#160;名字 = substring(名字, 0, 名字.length-1);<br/>};<br/>组成名字表 = function (主对象) {<br/>&#160;&#160;&#160;&#160;for (var i in 主对象) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;名字 = 主对象[i].前名段;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;前字段=&#34;+名字);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;取名字(主对象[i], 名字);<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>//<br/>//=============================================<br/>//<br/>//===========执行函数=======<br/>//执行原理:字符串-&gt;数组-&gt;结构对象-&gt;归类追加到结果数组<br/>function 递归求可能() {<br/>&#160;&#160;&#160;&#160;结果数组 = new Array();<br/>&#160;&#160;&#160;&#160;var 数值 = [1, 2, 3, 4, 5, 6, 7, 8, 9];<br/>&#160;&#160;&#160;&#160;//找出推理参数值，去掉<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;数值.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (数值[i] == Number(推理参数)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;数值.splice(i, 1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//添加递归字符串<br/>&#160;&#160;&#160;&#160;var 字符串 = &#34;&#34;;<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;数值.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;字符串 += 数值[i];<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;trace(&#34;递归字符串=&#34;+字符串);<br/>&#160;&#160;&#160;&#160;var 字符数组 = new Array();<br/>&#160;&#160;&#160;&#160;字符数组 = 取字符数组(字符串);<br/>&#160;&#160;&#160;&#160;//生成主对象<br/>&#160;&#160;&#160;&#160;var 主对象 = new Object();<br/>&#160;&#160;&#160;&#160;生成对象(主对象, 字符数组);<br/>&#160;&#160;&#160;&#160;组成名字表(主对象);<br/>&#160;&#160;&#160;&#160;return true;<br/>}<br/>thisObj = this;<br/>for (var i = 1; i&lt;9; i++) {<br/>&#160;&#160;&#160;&#160;thisObj[&#34;题目&#34;+i].onRelease = function() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var ID = Number(this._name.substr(2));<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;gotoAndStop(ID+1);<br/>&#160;&#160;&#160;&#160;};<br/>}<br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<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_0903/r200933161248.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
</channel>
</rss>
