Actionscript 3 在鼠标位置As3的不同轴上旋转movieclip

Actionscript 3 在鼠标位置As3的不同轴上旋转movieclip,actionscript-3,Actionscript 3,我正在寻找这个老的UFC效果的方向-出现在主页上。它是基于鼠标位置在不同轴上旋转的电影嘴唇。到目前为止,我发现了以下脚本: stage.addEventListener(MouseEvent.MOUSE_MOVE,EnterFrame); function EnterFrame(e:Event) { mc.rotation = (180*Math.atan2(mouseY-mc.y,mouseX-mc.x))/Math.PI + 90; } 但这只在x和y轴上旋转。怎样才能达到这种效果

我正在寻找这个老的UFC效果的方向-出现在主页上。它是基于鼠标位置在不同轴上旋转的电影嘴唇。到目前为止,我发现了以下脚本:

stage.addEventListener(MouseEvent.MOUSE_MOVE,EnterFrame);
function EnterFrame(e:Event)
{
    mc.rotation = (180*Math.atan2(mouseY-mc.y,mouseX-mc.x))/Math.PI + 90;
}

但这只在x和y轴上旋转。怎样才能达到这种效果?请提出任何建议。我已经找了好几个月了

如果您使用的是Flash CS4+并且目标是Flash Player 10+,那么您可以使用3D DisplayObject API(也称为“空间中的明信片”)来实现此效果!所有显示对象都将具有可调整的
x
y
z
rotationX
rotationY
rotationZ
属性

制作一个电影剪辑并将其放在舞台上。在剪辑被选择时出现的十字准线应该处于中间位置。为movieclip指定一个实例名
clip

双击movieclip,并将其他movieclip放置在其中。使用“三维旋转”和“平移”工具在父片段内以三维方式确定这些片段的方向。你可以在工具栏中找到3D工具——它有一个鸡蛋状的图标,或者按键盘上的W或G键

下面是一些简单的代码,可以根据鼠标位置调整父剪辑的方向:

import flash.events.Event;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
    clip.rotationX = (stage.mouseY - stage.stageHeight/2) * 0.1;
    clip.rotationY = (stage.mouseX - stage.stageWidth/2) * 0.1;
}
你可以利用这个来产生许多其他的效果。但是,请注意,您只能使用这些属性执行简单的3D效果。您无法进行全三维旋转,因为剪辑不会从后向前排序。对于更复杂的效果,您需要使用类似或的框架

我刚刚发现

import flash.events.Event;

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
    anim.rotationX += ((stage.mouseY - stage.stageHeight/2)-anim.rotationX*3)  * 0.05;
    anim.rotationY += ((stage.mouseX - stage.stageWidth/2)-anim.rotationY*5)  * 0.05;
}

哇,迈克,自从一年前我3岁开始,我就一直在寻找了解这种效应。尝试了一些不同的技术,但这是死路一条。Papervision3D更适合我。我对这一点还是有点陌生,但一旦我完全理解了,我确实计划把OOP搞出来。我的数学成绩和大学代数一样好,所以这需要一些时间。非常感谢。