flash 怎样制作可以用鼠标拖动旋转的转盘

我想做一个可以用鼠标击拖动,围绕中心点任意旋转的转盘现在自己弄出来了一个,但是有问题,就是好像鼠标可以拖动的点总是固定的总是固定到紫色我点击黄色拖动,会自动跳到紫色;别的... 我想做一个可以用鼠标击拖动,围绕中心点任意旋转的转盘 现在自己弄出来了一个,但是有问题,就是 好像鼠标可以拖动的点总是固定的 总是固定到紫色 我点击黄色拖动,会自动跳到紫色;别的颜色也一样 代码在下面 求各位大神 帮忙看看 到底应该怎么改。。。。最好给出完整的没有问题的代码。。。感激不尽

circle_mc.buttonMode=true;circle_mc.rotation=0var dx:Number;var dy:Number;var angle:Number;
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,cirDown);
function cirDown(e) { circle_mc.addEventListener(MouseEvent.MOUSE_MOVE,cirMove); stage.addEventListener(MouseEvent.MOUSE_UP,upHandler);}
function cirMove(e) { dx=mouseX-circle_mc.x; dy=mouseY-circle_mc.y; angle=180*Math.atan2(dy,dx)/Math.PI; circle_mc.rotation=angle ;}
function upHandler(e) { circle_mc.removeEventListener(MouseEvent.MOUSE_MOVE,cirMove);}
展开
 我来答
Keensb
2013-08-08 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:727万
展开全部

你需要一个隐形的参照点,用它来计算圆形的下一步的角度增量,然后再把新的角度赋予圆形。

import flash.display.Shape;

var sp:Shape = new Shape();

sp.x = circle_mc.x;
sp.y = circle_mc.y;

var spRot:Number;
var circle_mcRot:Number;

circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,onSelected);

function onSelected(e:MouseEvent)
{
circle_mcRot = circle_mc.rotation;
onMove(null);
spRot = sp.rotation;
circle_mc.addEventListener(MouseEvent.MOUSE_MOVE,onMove);
stage.addEventListener(MouseEvent.MOUSE_UP,onStop);
}

function onMove(e:MouseEvent)
{
var a:Number = mouseX - sp.x;
var b:Number = mouseY - sp.y;
if(a > 0)
{
sp.rotation = Math.atan(b/a) * 180 / Math.PI;
}
else if(a < 0)
{
sp.rotation = Math.atan(b/a) * 180 / Math.PI + 180;
}

if(e)
{
circle_mc.rotation = circle_mcRot + sp.rotation - spRot;
e.updateAfterEvent();
}
}

function onStop(e:MouseEvent)
{
circle_mc.removeEventListener(MouseEvent.MOUSE_MOVE,onMove);
stage.addEventListener(MouseEvent.MOUSE_UP,onStop);
}
一诺动画
2024-10-27 广告
Flash动画制作在北京一之诺文化传媒有限公司是一项创意与技术并重的服务。我们团队精通于利用Flash或兼容技术,将客户的想象转化为生动、流畅的动画作品。从概念设计到分镜脚本,再到精细的绘制与后期特效处理,每一步都力求完美呈现。无论是广告动... 点击进入详情页
本回答由一诺动画提供
tcjinr20
2013-08-08 · TA获得超过211个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:181万
展开全部
dx=mouseX-circle_mc.x;
dy=mouseY-circle_mc.y;
angle=180*Math.atan2(dy,dx)/Math.PI;

这个计算错误。

1,记录点击时的位置p(x,y),该点与圆点连线的角度P(A);
2,移动时的鼠标与圆点连线的角度p(b);
angle = p(b) -p(a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式