首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3无键盘输入注册

AS3无键盘输入注册
EN

Stack Overflow用户
提问于 2014-05-03 08:52:49
回答 2查看 71关注 0票数 0

所以我想让一个物体围绕另一个物体旋转,但我想让它只在按下向右箭头键的时候才这样做。当我运行这个程序时,轨道器根本不会移动,即使按下了右箭头键,它也不会跟踪!

任何帮助都是非常感谢的!

PS我必须在KEY_DOWN中使用事件侦听器吗?或者我可以返回一个数字并检查它吗?

代码语言:javascript
复制
var orbiter:Orbiter = new Orbiter();
var origin:Origin = new Origin();
var angle:Number = 0;
var speed:Number = 1.5;
var radius:Number = 75;
origin.x= 100;
origin.y =100;
addChild(orbiter);
addChild(origin);

stage.addEventListener(Event.ENTER_FRAME, Orbit_Brah);
function Orbit_Brah(event:Event):void
{
    var nLeftOrRight = CheckKeyDown;
    if (nLeftOrRight == 1)
    {
    angle += speed;
    var rad:Number = angle * (Math.PI / 180);
    orbiter.x = origin.x + radius * Math.cos(rad);
    orbiter.y = origin.y + radius * Math.sin(rad);
    orbiter.rotation = (Math.atan2(orbiter.y-origin.y, orbiter.x-origin.x) * 180 / Math.PI);
    }
}

function CheckKeyDown(event:KeyboardEvent):int
{
    if (event.keyCode == Keyboard.RIGHT)
    {
        trace ("Key Press Registered");
        return 1;
    }
    return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2014-05-03 14:17:54

您需要添加一个侦听器来从KeyboardEvents获取信息。将信息存储在一个变量中,并在更新循环中使用它。您可能还希望使用KeyboardEvent.KEY_UP来检查按键何时释放。就像这样。

代码语言:javascript
复制
stage.addEventListener(Event.ENTER_FRAME, Update);
stage.addEventListener(KeyboardEvent.KEY_DOWN, OnKeyboardDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, OnKeyboardUpHandler);

function Update(pEvent : Event) : void
{
    // update code here using stored info
    if(_isMovingRight)
    {
        //
    }
}

function OnKeyboardDownHandler(pEvent : KeyboardEvent) : void
{
    switch(pEvent.keyCode)
    {
        case Keyboard.RIGHT:
            _isMovingRight = true;
            break;
    }
}

function OnKeyboardUpHandler(pEvent : KeyboardEvent) : void
{
    switch(pEvent.keyCode)
    {
        case Keyboard.RIGHT:
            _isMovingRight = false;
            break;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-05-03 14:52:59

你太努力了。在声明之后,您需要做的就是:

代码语言:javascript
复制
stage.addEventListener(KeyboardEvent.KEY_DOWN, Orbit_Brah);


function Orbit_Brah(e)
{
    if (e.keyCode == Keyboard.RIGHT) 
    {
    angle += speed;
    var rad:Number = angle * (Math.PI / 180);
    orbiter.x = origin.x + radius * Math.cos(rad);
    orbiter.y = origin.y + radius * Math.sin(rad);
    orbiter.rotation = (Math.atan2(orbiter.y-origin.y, orbiter.x-origin.x) * 180 / Math.PI);
    }
}

这仍然给您留下了一个小的数学问题,当您运行代码时,这个问题将是显而易见的,但是您可以解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23439010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档