如何使子弹移动 Actionscript 3.0
Posted
技术标签:
【中文标题】如何使子弹移动 Actionscript 3.0【英文标题】:how do I make the bullet move Actionscript 3.0 【发布时间】:2017-01-26 12:20:09 【问题描述】:我正在制作一个非常简单的 Flash 游戏来了解 AS3。我做了一个带有控件的圆环。当我按下空格时,我想发射子弹。我已经尝试过,while 循环和不同的教程,但我就是不知道如何做到这一点。 这是m代码:
import flash.net.drm.LoadVoucherSetting;
//controls
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
var dir:String = "default";
function reportKeyDown(event:KeyboardEvent):void
if (event.keyCode == Keyboard.LEFT)
ball_mc.x -= 10;
dir = "venstre";
if (event.keyCode == Keyboard.RIGHT)
ball_mc.x += 10;
dir = "hojre";
if (event.keyCode == Keyboard.UP)
ball_mc.y -= 10;
dir = "op";
if (event.keyCode == Keyboard.DOWN)
ball_mc.y += 10;
dir = "ned";
if (event.keyCode == Keyboard.SPACE)
shootBullet();
var speed1:int = 1;
function shootBullet():void
//instantiate your object
var bullet:Bullets = new Bullets ;
//add it to the stage
addChild(bullet);
//object will default to x=0 , y=0 so you can define that as well
bullet.x = ball_mc.x;
bullet.y = ball_mc.y +(ball_mc.width/2);
bullet.y += 10 * 2;
stop();
【问题讨论】:
【参考方案1】:要使其移动,您需要使用一些以一定间隔重复发生的事件。
一个Timer
:
var myTimer:Timer = new Timer(25);//interval, milliseconds
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
myTimer.start();
var speedX:int = 0;
var speedY:int = 1;
function timerHandler(event:TimerEvent):void
bullet.y += speedX;
bullet.x += speedY;
或ENTER_FRAME
事件:
addEventListener(Event.ENTER_FRAME, onFrame);
function onFrame(event:Event):void
bullet.y += speedX;
bullet.x += speedY;
【讨论】:
谢谢。我有一种感觉,我需要一些可以反复运行的东西。但是您如何将其合并到我的代码中。上面的计时器代码我试过了,但它不起作用,因为子弹是在按空格时首先创建的: @JohnDinh,您可以在shootBullet
函数之外声明var bullet:Bullets
,并在增加速度之前检查if(bullet)
,以避免在事件处理程序中出现Error # 1009 (Null object reference)
。另一种选择是将此代码移动到Bullets
类中并让它处理其坐标
无论如何,如果@www0z0k 是正确的,那么将 speedX 和 speedY 存储在单个变量上(在舞台上)不是一个好主意。如果您射出不止一颗子弹,所有子弹都将具有相同的 speedX 和 speedY 值。正如他所说,“另一种选择是将此代码移动到 Bullets 类中并让它处理其坐标”以及 speedX 和 speedY 值,因为它扩展了 MovieClip。您也可以考虑 TimerEvent,但如果您的 fps 较低,请不要忘记添加 timerEvent.updateAfterEvent 方法!以上是关于如何使子弹移动 Actionscript 3.0的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3.0 当你单击一个对象时,我如何使它进入下一个场景?
如何在 Adobe Flash Professional CS6 Action Script 3.0 中阻止可移动对象(通过箭头键移动)离开舞台
如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?