Re: [问题] 游戏中 子弹发射的间隔

楼主: weirdfoot (ユニライト)   2013-10-02 22:56:12
※ 引述《KawasumiMai (闇に沈んだ刃)》之铭言:
: ※ 引述《weirdfoot (怪脚之哈比)》之铭言:
: : 各位大大好
: : 小的最近在构思一个小游戏
: : 想先写几个小程式 来试试看顺畅度
: : 今天试的是子弹发射
: : http://www.mediafire.com/download/d4y5gryixgaovpy/ShootTest_2013.fla
: : (家里只有CS3 如有不便我可以只贴AS...)
: : 左右键可以移动 空白键发射子弹
: : 我的问题是
: : 我按下空白键后会连发
: : 可是我想要发射第一发后 间隔一段时间再发射下一发
: : 可是我没有学过 家里有的书也找不到相关的写法..
: : 想问问有没有办法做到
: : 1.不连发 一下空白键发射一发 or 2.隔一段时间一发
: : 这样不知道会不会太伸手..
: : 麻烦各位大大了(跪
: 游戏中,建议用一个变量去判断影格同步
: 以下描述逻辑,这是我比较常用的作法
: var shoot_delay:Number=new Number(0)
: Keydown{
: if(shoot_delay==0){
: 发射
: shoot_delay=30
: }
: }
: Keyup{
: shoot_delay=0 //可以不要,否则连按就可以拼命射
: }
: EnterFrame{
: if(shoot_delay>0){
: shoot_delay
作者: zpl   0000-00-00 00:00:00
你写的好复杂... 因为KeyDown事件的特性, 按下按键后的第二次触发时间间隔会较长 ,所以处理逻辑建议都不要放在KeyEvent就像是你方向移动的写法那样就好了至于为何移动就不能连发也是同个问题,连续触发只限于最后按键另外,Array.splice后要注意index的改变
楼主: weirdfoot (ユニライト)   0000-00-00 00:00:00
嗯…有点不太懂“跟移动一样的写法”什么意思 我目前子弹的写法跟移动的不一样吗?
作者: KawasumiMai (さあ、死ぬがいい)   0000-00-00 00:00:00
KEY_DOWN事件,第一次是DOWN第二次以后是PRESS所以会有很明显落差,这在AS3是个问题,比AS2麻烦所以另外先用KEY_DOWN事件去注册布林在另外写一个仿AS2的isDown函式去判断布林有点像是你设定left=true up=true的方法但是你这样太多自订var,每个按键都要一个所以可以试着利用Array/Object/Dictionary作一串布林并且直接以keyCode去作索引参照,会比现在好很多另外移动就会停止射击的问题很简单,Switch造成的Switch是单选,并不是多选,你必须要一串非else的if只要符合条件都处理,而不是有高低权限的顺序可以去google一下 ActionScript3 isDown 会有sample里面就有很多人写出来些微差异版本的Key Class
楼主: weirdfoot (ユニライト)   0000-00-00 00:00:00
嗯..K大的意思是 设Array keydown后用for跑过每一个keycode 侦测到按下变成true 然后Enterframe再用一个for*打错没有for再用我原本的方式去跑 这样子逻辑OK吗?
作者: KawasumiMai (さあ、死ぬがいい)   0000-00-00 00:00:00
为何要跑过每一个?他有index可用吧?if(keyArray[38] ==true){ 38是你要的keycode当然在下建议用Object. 不用开range

Links booklink

Contact Us: admin [ a t ] ucptt.com