Actionscript 3 as3空格键功能不工作F
我已经写了一个代码来移动按下空格键的电影剪辑。因此,如果有人按下空格键,它会激活一个布尔变量,从false变为true,如果为true,对象会移动,但它不起作用。能找个人帮忙吗。多谢各位Actionscript 3 as3空格键功能不工作F,actionscript-3,flash,actionscript,flash-cs5,flash-cs4,Actionscript 3,Flash,Actionscript,Flash Cs5,Flash Cs4,我已经写了一个代码来移动按下空格键的电影剪辑。因此,如果有人按下空格键,它会激活一个布尔变量,从false变为true,如果为true,对象会移动,但它不起作用。能找个人帮忙吗。多谢各位 var rope = MovieClip(this.root).boat_mc.rope_mc.fishyrope_mc.hitbox_mc; var ropeMove:Boolean = false; stage.addEventListener(Event.ENTER_FRAME, ropeCo
var rope = MovieClip(this.root).boat_mc.rope_mc.fishyrope_mc.hitbox_mc;
var ropeMove:Boolean = false;
stage.addEventListener(Event.ENTER_FRAME, ropeCode);
stage.addEventListener(KeyboardEvent.KEY_UP, onSpacebarUp);
function onSpacebarUp(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.SPACE)
ropeMove = !ropeMove; // toggles ropeMove (i.e. if it's true, sets it to false, and vice versa)
}
function ropeCode(e:Event):void
{
// move the rope
if( ropeMove )
{
rope.y += xSpeed;
// stop moving if we've gone too far
if( rope.y > 600.0 )
{
rope.y = 600.0;
ropeMove = false;
}
}
}
这应该行得通
var ropemove:Boolean = true;
var xSpeed = 5;
var once:Boolean=false;
stage.addEventListener(Event.ENTER_FRAME,ropeCode);
stage.addEventListener(KeyboardEvent.KEY_UP,onSpacebarUp);
function onSpacebarUp(e:KeyboardEvent):void
{
if (e.keyCode == 32)
{
if (ropemove==true)
{
if(once==false)
{
ropemove = false;
once=true
}
}
if(ropemove==false)
{
ropemove==true
}
}
if (rope.x >= stage.stageWidth )
{
ropemove = false;
}
trace(ropemove)
}
function ropeCode(e:Event):void
{
if (ropemove == true)
{
rope.x += xSpeed;
}
}
我可以在您的代码中发现两个问题: 一,。所有内容都在事件中。请输入\u帧事件处理程序。这意味着每一帧代码都将被运行:包括添加键盘事件侦听器的位置。1秒后,假设您以每秒30帧的速度运行,当您按空格键时,onSpacebarUp将触发30次,并持续增加。可能不是个好主意,你肯定只想添加一次 二,。布尔值将导致movieclip移动的部分位于一个方法中:dropRope。但这并没有在任何地方被称为,所以它实际上什么也没做。也可能不需要事件参数e:event部分,因为您既没有使用它,也没有从事件调用它
BennettLiam的代码应该做一些更接近您想要做的事情,我只是添加这个答案来解释为什么您的代码不起作用。在他们的回答中,他们已经解决了我提到的上述问题:将键盘的事件侦听器代码移到事件框架处理程序循环之外,因此只添加一次,并更改了enter frame事件处理程序,以调用dropRope o every frame,以便它正在做一些事情。实际上,它确实存在于AS3中。但这并不是一种优雅的方式来指代主课。哦,你说得对“根”确实存在。从我的帖子中删除。非常感谢你的解释,我真的很感激。如果我听不懂的话,简单地从别人那里获取代码是没有意义的。嗨,贝内特利亚姆,非常感谢你的帮助,我真的很感激。如果你查看我的帖子,你会发现我已经根据你所说的内容编辑了我的代码。然而,现在发生了一件奇怪的事情。当电影加载时,movieclip开始自行移动,如果我打开空格键,它就会停止:/。我在做什么?感谢快速浏览,这可能是因为ropemove在startok是真的,现在它再次编辑了我的代码,就像它下降了,但到达某个点后没有停止一样。所以我对x和y都做了跟踪,即使物体在移动,y也不会改变。因此他们不会停止。知道为什么吗?
var rope = MovieClip(this.root).boat_mc.rope_mc.fishyrope_mc.hitbox_mc;
var ropeMove:Boolean = false;
stage.addEventListener(Event.ENTER_FRAME, ropeCode);
stage.addEventListener(KeyboardEvent.KEY_UP, onSpacebarUp);
function onSpacebarUp(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.SPACE)
ropeMove = !ropeMove; // toggles ropeMove (i.e. if it's true, sets it to false, and vice versa)
}
function ropeCode(e:Event):void
{
// move the rope
if( ropeMove )
{
rope.y += xSpeed;
// stop moving if we've gone too far
if( rope.y > 600.0 )
{
rope.y = 600.0;
ropeMove = false;
}
}
}