我正在寻找主页上显示的旧UFC效果 - http://84.ufc.com/的方向。它是基于鼠标位置在不同轴上旋转的动画片段。到目前为止,我找到了这个脚本:
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上旋转。有什么方法可以达到这个效果?请提出任何建议。我已搜索了好几个月。
答案 0 :(得分:1)
如果您使用的是Flash CS4 +并定位Flash Player 10+,则可以使用3D DisplayObject API(又名“空间明信片”)来实现此效果!所有DisplayObject都将具有您可以调整的x
,y
,z
,rotationX
,rotationY
和rotationZ
属性。
创建一个movieclip并将其放在舞台上。原点 - 选择剪辑时出现的十字准线 - 应位于舞台的中间位置。为movieclip提供实例名称clip
。
双击动画片段,并在其中放置其他动画片段。使用“3D旋转”和“平移”工具在父剪辑中将这些剪辑定向为3D。您可以在工具栏中找到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效果。您无法进行完整的3D旋转,因为剪辑不会从后向前排序。对于更复杂的效果,您需要使用Papervision3D或Five3D等框架。
答案 1 :(得分:1)
我刚刚发现......
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;
}