Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3如何根据键盘输入制作不同的动画?_Actionscript 3_Flash_Flash Cs5 - Fatal编程技术网

Actionscript 3 AS3如何根据键盘输入制作不同的动画?

Actionscript 3 AS3如何根据键盘输入制作不同的动画?,actionscript-3,flash,flash-cs5,Actionscript 3,Flash,Flash Cs5,我正在使用动作脚本3和CS5.5。我希望让我的角色根据键盘输入以不同的方式设置动画。比如说,如果我按下向右箭头键,我希望我的跑步动画开始,如果我按下向左箭头键,我希望反转相同的动画。然后,当没有输入时,我希望他只是站着,当按下向上箭头键时,我希望跳跃动画工作。在动作脚本3中执行此操作的最佳方法是什么?首先,您可以使用KeyboardEvent检查是否按下了箭头键。那么,您在事件侦听器函数中的具体操作取决于动画的创建方式。例如,如果您正在播放Flash中绘制的MovieClip,则在键盘事件侦听器

我正在使用动作脚本3和CS5.5。我希望让我的角色根据键盘输入以不同的方式设置动画。比如说,如果我按下向右箭头键,我希望我的跑步动画开始,如果我按下向左箭头键,我希望反转相同的动画。然后,当没有输入时,我希望他只是站着,当按下向上箭头键时,我希望跳跃动画工作。在动作脚本3中执行此操作的最佳方法是什么?

首先,您可以使用KeyboardEvent检查是否按下了箭头键。那么,您在事件侦听器函数中的具体操作取决于动画的创建方式。例如,如果您正在播放Flash中绘制的MovieClip,则在键盘事件侦听器中切换MovieClip。

使用帧标签以编程方式控制播放头在时间线上的移动

媒体

角色剪辑应具有以下结构:

-时间轴上有3层,每层共有9个关键帧

--帧标签层,为每个帧提供帧标签(“站立”、“向右行走”、“向左行走”)

--一个停止层使每个帧分离,因此帧之间的移动仅由代码控制

--子动画层,每个帧中有一个动画,所有动画循环并且没有停止

---向左行走动画剪辑

---向右行走动画剪辑

---站立动画剪辑

需要明确的是,这些嵌套动画中的每一个都占用一帧,但是如果将播放头移动到它上面,则看起来该动画是单独播放的,并且在代码移动播放头之前一直保持这种状态

编码

var character:MovieClip=new MyCharacterClass()
addChild(character);
character.gotoAndStop("standing") 
stage.addEventListener(KeyboardEvent.KEY_UP,keyUp); 

protected function keyUp(event:KeyEvent):void
{
   switch (event.keyCode)
{
    case Keyboard.LEFT:
        character.gotoAndStop("walkingLeft")
    break;

    case Keyboard.RIGHT:
        character.gotoAndStop("walkingRight")
    break;

    default:
        character.gotoAndStop("standing")
    break;
}
}

这是最简单的例子——单击左箭头,动画显示角色向左行走(尽管在一个点上,您需要添加实际的移动代码)。单击向右箭头,它将向右移动。按任何其他键,角色就会站立。

好的,但如果有意义的话,我所有的动画都在一个movieclip中。我有一个人站着。接着,他又跑了一个,又跳了一个。如何访问动画的不同部分?另外,如何反转动画?比如,如果他们按左键,我希望它面向左,如果按右键,它面向右。你能改变电影唇吗?如果是这样的话,将不同的动画分割成不同的movieclips比用代码体操来处理非理想的设置要简单。如果我这样做,在我进行碰撞检测时会不会变得更复杂?而且事实上,我需要为每一个动画创建一个新类。在我看来,应该有办法做到这一点。嗯。。。有点混乱的说明。你能不能解释得更深入一点,对于一个完全的初学者来说=D。我想我有点理解你的意思,但是我不习惯用时间线来输入代码。我可以在我的游戏构造函数中使用事件侦听器吗?示例已更新。对于传统的程序员来说,时间线非常奇怪。您只需要在时间线中编写一个“stop();”,但您必须对媒体进行结构化,以便它可以按照您的意愿进行操作。感谢您花时间解释这一点