2010-07-09 111 views

回答

2

Flex是AS3。 Flex編譯到actionscript。通常,這只是一種聲明(而不是必要)的方式來完成任務。

這樣例子的肉中的代碼片段:

 private function playEffect(target:Animate, angle:Number):void { 
      if (!target.isPlaying) { 
       rotY += angle; 
       target.play(); 
      } 
     } 

//snip... 

<fx:Declarations> 
    <fx:Number id="rotY">0</fx:Number> 
    <s:Rotate3D id="fxRotate3DNeg" target="{image}" angleYTo="{rotY}" 
       autoCenterTransform="true" /> 
    <s:Rotate3D id="fxRotate3DPos" target="{image}" angleYTo="{rotY}" 
       autoCenterTransform="true" /> 
</fx:Declarations> 

什麼做的工作是與兩個「ROTATE3D」對象一起在「動畫」對象。所以爲了讓這個工作在純粹的AS3中,唯一需要的難題就是鏈接到flex庫。根據你的IDE,這很容易做到。

從那裏你所要做的就是創建你想要的對象,強制性地而不是聲明性地。因此,而不是做這樣的事情:

<fx:Number id="rotY">0</fx:Number> 

你需要做的:

var rotY:Number = 0; 


一旦你知道,把從Flex中AS3,反之亦然是非常簡單的。翻譯的Flex代碼看起來像在ActionScript如下:

import spark.effects.Rotate3D; 

var rotY:Number; 
var fxRotate3DNeg:Rotate3D; 
var fxRotate3DPos:Rotate3D; 

rotY = 0; 

fxRotate3DNeg = new Rotate3D(image);; //the constructor sets the "target" property 
fxRotate3DNeg.angleYTo = rotY; 
fxRotate3DNeg.autoCenterTransform = true; 

fxRotate3DPos = new Rotate3D(image); 
fxRotate3DPos.angleYTo = rotY; 
fxRotate3DPos.autoCenterTransform = true; 

現在,這把我的頭頂部,在這個文本編輯器在the Rotate3D API和打字一眼,所以我敢肯定,它不是完美的,但它應該給你一個關於如何前進的清晰思路。如果您需要更多幫助,請告訴我,我可以翻譯更多示例。

我希望幫助,

--gMale

編輯: 正如我在看代碼,一個棘手的其他點是,angleYTo屬性綁定到ROTY。所以爲了真正做到這一點,你必須在playEffect函數中明確地設置這些屬性。如在:

 private function playEffect(target:Animate, angle:Number):void { 
      if (!target.isPlaying) { 
       rotY += angle; 
       //manually set properties 
       fxRotate3DNeg.angleYTo = fxRotate3DPos.angleYTo = rotY; 
       target.play(); 
      } 
     } 

或者,你可以imperatively create the data binding,這很容易做到。然後,playEffect函數將不需要修改。

1

它就像您通常那樣旋轉物體。但是,在3D空間中,您將不得不使用: sprite.rotationY

請確保您正在爲Flash 10或更高版本導出,因爲3d功能在早期版本中不存在。