首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >旋转对象的问题

旋转对象的问题
EN

Stack Overflow用户
提问于 2011-04-12 18:15:27
回答 2查看 859关注 0票数 1

我遇到这个问题已经有一段时间了,如果有人能帮上忙就太好了。:)

http://img31.imageshack.us/i/problemsc.jpg/ (问题的图解)

所以,我有一个对象,注册点在中间底部。我希望这个对象跟随鼠标,但在旋转时保持在屏幕的中心。下面是我使用的代码:

代码语言:javascript
运行
复制
dx = mouseX - this.x ;
dy = mouseY - this.y ;

radians = Math.atan2(dy, dx);
angle= radians * 180/Math.PI;

this.rotation = angle + 90;
this.y = mouseY + this.height; 

此代码的问题是,当您将鼠标从中心移开时,例如角度不是90度,鼠标光标和对象之间会有偏移。通过跟踪,我发现它会像它应该的那样跟随鼠标的y位置,但通过旋转对象,它的高度和宽度会发生变化,所以对象并没有指向光标的右边。

有没有办法补偿这个偏移量?或者是另一种方法?提前谢谢。

更新:好的,看起来我没有正确解释这个问题,对不起,英语不是我的母语。我需要对象跟随光标,但对象的前端要与光标在同一位置,对象的后端要在屏幕的中间,恰好在中心x轴上。因此,当您移动鼠标时,对象的前端将始终指向并位于鼠标位置。后端应该保持在相同的位置,但要旋转。

EN

Stack Overflow用户

发布于 2011-04-12 19:19:41

下面的方法适用于我(与你的基本相同)

代码语言:javascript
运行
复制
import flash.events.MouseEvent;

const RAD_TO_DEG:Number = 180/Math.PI;
const OFFSET:Number = 90;

var angle:Number;
var radians:Number;

stage.addEventListener(MouseEvent.MOUSE_MOVE, moveIt, false, 0, true);

function moveIt(e:MouseEvent):void {
    radians = Math.atan2(mouseY - mc.y, mouseX - mc.x);
    angle = radians * RAD_TO_DEG;

    mc.rotation = angle + OFFSET;
}

只需确保注册点设置正确(见下图)

我还上传了一个SWF

http://megaswf.com/serve/1054550

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5633636

复制
相关文章

相似问题

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