2011-03-27 37 views
1

我正在寻找这个旧的UFC效果的方向 - http://84.ufc.com/,它出现在主页上。它是基于鼠标位置在不同轴上旋转的动画片段。到目前为止,我已经发现这个脚本:在鼠标位置上的不同轴上旋转动画片段As3

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上旋转。什么是解决这个问题的方法?请任何建议。我已经搜索了几个月。

回答

1

如果您使用的是Flash CS4 +并且定位到Flash Player 10+,则可以使用3D DisplayObject API(又名“太空明信片”)来实现此效果!所有的DisplayObject将有x,y,z,rotationX,rotationYrotationZ属性,你可以调整。

创建一个动画片段并将其放置在舞台上。原点 - 选择剪辑时出现的十字线 - 应位于舞台中间。给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旋转,因为剪辑不会从后到前排序。对于更复杂的效果,您需要使用像Papervision3DFive3D这样的框架。

+0

哇迈克,我一直在寻找,因为我一年前开始AS3理解这种效果。尝试了几种不同的技术,但是这已经死了。 Papervision3D对我来说很晚。我对此仍然有点新,但是一旦我明白了这一点,就打算将OOP解决掉。在数学中,我只和大学水平的代数一样好,所以需要一些时间。非常感谢。 – Nerdysyntax 2011-03-27 14:13:22

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; 
} 
相关问题