日历

« 2008-09-08  
 123456
78910111213
14151617181920
21222324252627
282930    

统计信息

  • 访问量: 1137
  • 日志数: 6
  • 涂鸦数: 16777215
  • flash数: 1
  • 建立时间: 2007-02-07
  • 更新时间: 2007-11-23

RSS订阅

我的最新日志

  • 巧妙完美解决FLEX的SWFLoader组件重新load时无法去处声音的问题~

    2007-11-23

      其实就是在被Load的SWF中加一个什么都没有的空帧,然后在load之前让播放中的swf停止到该帧就可以了,如果这个SWF不是以MC中MC播放的话直接STOP()也可以停止声音。
       虽然真正原因是由于主swf中仍然有对这个被导入的swf有引用,而导致垃圾处理器没把它删除。真正正确的做法是切断一切对他的引用,这样垃圾处理器自然的就会把它清除。知道这点后我做很多测试。尝试过把它的上一级容器清除,甚至是清除上一级的上一级容器,但是貌似没什么作用。因为并不了解整个SWF中有多少引用。

  • 游戏用基础按键侦听完成

    2007-11-15

      一共2个类实现了基本的按键侦听和简单分析功能。可以正确输出方向单击,轻击,双击,三击,蓄力,蓄力变向。攻击键则只做了5段蓄力判断。
      测试品中,方向按键为 A,S,W,D  攻击按键为 J K L ; 如果出现按下不显示的BUG一般是由于FLEX的组件问题拦截了按键侦听。
      由于高速刷新组件显示内容,所以电脑比较慢的朋友小心... 别卡死了,还有下载后用PLAYER播放速度会提升很多。
      有任何BUG或者好的建议请发表回复,感激不尽。

    Flash: LiiFTGkeyTest 全屏浏览

  • AS3反射类

    2007-11-14

      刚开始学AS3的时候就看到闪吧论坛里详细的一篇讲述反射法替代原来FOR IN的文章,学到了很多。但是文中并没有把这个程序工具化,照搬用起来还是有点不方便。由于遍历属性用的还算比较频繁,所以自己把代码改进了一下写成一个类方便使用。顺便也在排版上人性化了一下,自动对齐,并且标注行号,可以直接输出到文本对象中等功能。

      以下是类包和使用方法,希望给学习AS3的朋友们带来方便。
      下载类包

    使用方法:
    1.先将类包目录Lii放到硬盘任意位置。
    2.打开FLASH CS3按ctrl+U打开首选参数设置,并且选择Actionscrīpt项。


    3.选择Actionscrīpt3.0设置。


    4.点“+”添加一个类路径项。


    5.点浏览路径按钮。


    6.选择类包所在文件夹。然后一路确定。

    7.类包路径设置完成,现在可以使用咯。
    8.使用方法,先导入类包。
    import Lii.tools.ransack
    9.然后就可以开始遍历属性了。格式如下。
    ransack.traceWith(target:*,outTarget:*)


    traceWith()是这个类的唯一方法,同时也是一个静态方法,所以不需要new就可以直接使用。
    参数:
    target:
    你要遍历属性的目标,类型任意。
    outTarget:遍历出来的信息输出目标,可以是任何含"text"属性的文本显示对象,如果设置为false则直接输出到输出面板。
    例子:

    import Lii.tools.ransack;
    ransack.traceWith(this,false);

  • 关于FLASH键盘侦听(二)

    2007-11-04

      花了一整天的时间来解决这个游戏的键盘监听和输出程序。难点逐一的被攻克,最后终于只剩下“蓄力”部分的解决方案。结果在多次尝试在原有代码上改进都无法达到理想的效果。原因就是上次提到的按键粘连后的第2个DWON事件是个200毫秒的停顿,而我设定的指令粘连时间差是100毫秒以内。于是像“蓄力转向”这种问题就无法完美的解决,非常的影响手感觉。

      一般我们玩的2D格斗游戏中角色一般分“搓招”类、“蓄力”类、“攻击指令”类和“复合”类。其中以“搓招”类和“蓄力”类最为常见,也是各种格斗类游戏的必有类型。回想起来确实没在FLASH的动作类游戏中看到有完美解决蓄力和挫招的存在。原因在于监听的不精确。相对的“搓招”类比较好做,“蓄力”看似简单其实并不简单。顺便解释一下“蓄力转向”这个东西。我们在操纵一个“蓄力”类的角色时,如果一直按住“左下”,那么之后输入“右”或者“上”回分别成立“后蓄力+前”和“下蓄力+上”的效果。再者假如我们按住“左”不放,然后以不规则频率点击“下”和“上”,最终按“右”那么“后蓄力+前”是绝对成立的。这个就是在按住一个方向的情况下只要按下包含这个按键的其他方向都不会打断这个“蓄力”效果。所以在程序上很难判断这个不“规则蓄力”。

      不过最终的最终,由于我采用数组采集按键情况的特点,竟然简单而且完美的解决这个问题。真是...饶了个大圈子...。估计这两天就可以把这个组件做完。做这个组件并不是单单为了自己的游戏,做完之后只要是和键盘控制有关的FLASH都可以通过简单设置来实现复杂键盘指令判断,希望可以给那些想做FLASH游戏又被键盘侦听搞的焦头烂额的朋友带来方便。

  • 关于FLASH键盘侦听

    2007-11-03

      说起做FLASH游戏那么就不得不说说FLASH的键盘侦听或者说键盘控制方面的东西。控制系统的灵敏与否直接影响到游戏的手感,格斗游戏和动作游戏尤其如此。

      大概今年1月离开WOW后实在比较空于是用FLASH编写了一个格斗游戏的引擎。虽然最终没有全部完工,但是积累了不少经验,也发现AS2的很多不足。其中键盘控制上获得了不少经验也是这个引擎完成度最高的部分。

      如今在学习FLASH CS3和FLEX的同时打算用AS3来重新完成这个格斗梦。

      在FLASH8时代,由于FLASH PLAYER8的键盘侦听有重大BUG无法正确侦听KEYUP事件,所以在PLAYER 9出来之前几乎所有制作格斗游戏的都使用PLAYER 7来制作。但是7也有问题,那就是键盘假死。实际例子就是在你按下一个键不放然后再去同时按下其他几个按键后再放开会发现第1个按下的按键的持续KEYDOWN事件被打断了。解决的方法就是用一个setInterval来时刻检测按键历史,如果发现按键停止则去检测是否所有按键都UP过。如果有按键没松开的话就代替KEYDOWN的侦听器触发事件。于是乎几乎完美的按键侦听和指令检测就这么诞生了。

      如今AS3和PLAYER9的出现,10倍于原来的运算速度,更多的类包更多功能和信息让制作一款精良的个格斗游戏成为可能。开始动手当然是按键侦听和搓招系统首当其冲。由于半年多来自己AS水平有所提高,在系统要求上更比原来苛刻复杂。在原来正确侦听的基础上还要正确判断“轻击”“多段蓄力”“双击”“三击”等功能。原本做的非常顺利几乎2天就把系统搞定,但是偏偏在后来加入的“三击”事件上卡住了。经过1天时间的推敲终于可以基本检测出所有状态。但是~在其中发现了更多的问题,比如在按下一个按键不放时,按下的瞬间会触发一次KEYDOWN事件,然后在200毫秒左右后触发第2次DOWN事件,随后就会以10毫秒左右的频率连续触发DOWN事件。也就是说在按下的瞬间开始的3次DOWN事件中时间的间隔是有一个停顿的,而正是这个停顿会影响到“双击后不放”和“三击后不放”的正确判断。加入放宽了时间间隔则另外一个新问题就暴露出来了。那就是,在持续按住一个键的情况下那个以10毫秒频率连续触发的DOWN事件。加入在按住的情况下“半松”这个键则会停止触发DOWN事件,但是不触发UP事件,那么当我们按键的时候难免会出现按的比较快出现似松非松的情况,而如果前面没有放宽时间间隔判断的话这个时候由于没有连续触发DOWN事件程序会立刻判断是断开的指令,反之则无法灵敏的判断这个微弱的伪UP事件。

    下图是测试出停顿的数据:

      这次做这个侦听系统,发现了这2个比较麻烦的问题,给程序增加了大量额外的检测语句真是伤透了脑筋。一个大停顿和一个伪UP.... 希望键盘假死别再给我找麻烦了....

Open Toolbar