2011-03-27 51 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; 
}