2011-04-30 105 views
0

按照要求,我給這個問題的更詳細的說明...Flex中添加精靈到畫布

首先,我有這樣的MXML:

<mx:Panel x="270" y="10" width="690" height="680" id="mainContainerPanel"> 
    <mx:Canvas x="270" y="10" width="670" height="640" id="canvas" initialize="onInit()"> 
     <mx:Script> 
      protected function onInit():void 
      { 
       spiro = new Spirograph(canvas);   
      } 
     </mx:Script> 
    </mx:Canvas> 
</mx:Panel> 

這通過標記對象我的主要AS3類文件的構造函數。這工作得很好,其中在構造函數中我有:

function Spirograph(canvas:Canvas):void 
{ 
    mainContainer = canvas; 
    mainContainer.graphics.beginFill(0xFFFFFF); 
    mainContainer.graphics.drawRect(0, 0, 670, 640); 
    mainContainer.graphics.endFill(); 
} 

目前,我正在使用被稱爲SpriteUIContainer一個包裝類將所有Sprite對象的mainContainer上:

package includes 
{ 
    import flash.display.Sprite; 

    import mx.core.UIComponent; 

    public class SpriteUIContainer extends UIComponent 
    {  
     public function SpriteUIContainer(sprite:Sprite) 
     { 
      super(); 
      this.explicitWidth = sprite.width; 
      this.explicitHeight = sprite.height; 
      this.x = sprite.x; 
      this.y = sprite.y; 
      addChild(sprite); 
     } 
    } 
} 

這是在使用採用以下方式:

private var circCentre:Sprite = new Sprite(); 
circCentre.x = mainContainer.width/2; 
circCentre.y = mainContainer.height/2; 
circCentre.graphics.lineStyle(3, 0xD0B917); 
circCentre.graphics.beginFill(0xF2DF56, 0.2); 
circCentre.graphics.drawCircle(20, 20, 50); 
circCentre.graphics.endFill(); 
mainContainer.addChildAt(new SpriteUIContainer(circCentre), 1); 

circCentre Sprite從不出現在屏幕上,我不明白我如何才能讓它出現。

任何幫助非常感謝!

回答

1

「附加」是否意味着您正在使用addChild方法向UIComponent添加新的精靈?

如果是這樣;您必須添加代碼來確定新的「精靈」的大小並將其放置在容器中的其他對象的相對位置。你的例子中沒有這樣的代碼。我建議在updateDisplayList()中實現此代碼。

有關updateDisplayList()的更多信息,請參閱Flex Component Lifecycle文檔。

如果您需要更多幫助,您必須展開如何向UIComponent實例添加新的精靈;並且可能會顯示一個您添加多個的示例。

+0

嘿,我現在已經重寫了這個問題,我希望它有幫助,因爲我現在對Flex感到困惑。真的很欣賞一些指針。 – Alex 2011-05-01 00:10:44

+0

我已經放棄了Flex,回到我所瞭解和喜歡的狀態:Flash – Alex 2011-05-01 20:22:20

+0

@AlexW我很抱歉聽到這個消息。我不知道你的技能/知識在哪裏;但是,Flex絕對是針對與Flash Pro不同的市場。 Flex有很多移動部件;所以如果你不熟悉Java,.NET或者其他一些編程語言(以及相關的概念),那麼學習曲線就會變得很難。 – JeffryHouser 2011-05-02 02:30:37