2012-03-07 39 views
0

好了,所以我一直在過去一週左右的破壞在這個項目上我的OOP/AS3當然,我的駝峯和過去的這個星期天我意識到,我的做法是行不通的,所以我報廢了更好它的一部分,並開始了。介紹Flash/AS3課程;問題MVC模式

我們的任務是創建一個展示我們剛剛學到的OOP模式的理解基於XML的Flash菜單。這是一個'測試水域'項目,他給了我們大量的教程和信息,並告訴我們盡最大努力去理解它,所以我確信有更有效的方法來做我的東西這樣做,但這是一個有爭議的問題。

我們需要使用我們的菜單至少兩種模式,雖然此刻我只是專注於MVC,這樣我可以得到mainUI工作之前,我完成了UI的第二部分。它基本上像這樣流動:

  • MainUI有4個滑出的菜單。
  • 每個滑塊上都有3個縮略圖。
  • 點擊任何縮略圖將移動到用戶界面的下一部分。該功能目前被禁用。

該程序運行0編譯器錯誤,但圖像沒有正確放置在舞臺上,我不明白爲什麼。所有圖像路徑都正在從XML中拉出並存儲。主背景圖像被拖動一次,應該只放置一次(如果語句使用計數來確定是否運行佈局功能),但是它將與滑動菜單圖像放置4次。滑塊被放置在正確的位置(switch語句遍歷View類中的mainUI函數,併爲每個函數創建一個單獨的加載器),但縮略圖不會全部顯示出來。所以這裏是我正在尋求幫助:

  • mainPanel圖像應該只放置一次,而不是每個滑塊4次。
  • 滑塊,當被正確地放置,必須在不同的方向通過如(使用TweenMax)補間,但每個實例是不可識別從其他所以現在它們都有調用相同的方法吐溫一個事件監聽。我怎樣才能區分它們,讓我爲每個應用不同的補間(稍後,這可能是縮略圖功能的問題,因爲我需要根據點擊哪個拇指來加載不同的XML數據)。

我已經添加了我希望對每個腳本非常翔實的評論,所以希望人們可以提供幫助。還包括了我想讓mainUI最終看起來像以及它目前如何出現的圖像。

最後一個快速提示,舞臺當前設置爲黑色背景的600x480。理想情況下,爲了加強面向對象的原則,我們的教授希望我們儘可能避免使用時間表或圖書館。

任何建議都將不勝感激!謝謝!

回答

-1

安裝FlexPMD這是一個很好的補充(有時很難安裝)它基本上用來顯示你的代碼的領域,你不符合標準。例如,你的課程缺乏「this」的使用。你應該避免在構造函數中傳遞參數。在你還是新手的時候,開發標準化的寫作技巧是一種很好的做法。在你的代碼

的樣子,我看你是從一個循環中調用buildUI
buildUI正在爲mainUI分配MainView對象。
所以每次你經歷一個循環迭代時,你都要重新分配mainUI。
最後mainUI將只是該循環的最後一次迭代。
不確定這是你的問題,但是一個問題。


[編輯]
優秀辛格爾頓指南的Flex SDK
Part 1
Part 2

Some Good writing on pure AS3 Singletons.

+0

嗯,我想我明白了,請糾正我,如果我有這個錯誤,但由於循環最終調用buildUI(和隨後,menuView類)不會通過menuView函數運行之前,完成循環的下一個迭代?像這樣也許: Loop> if>調用到buildUI> buildUI證實mainUI作爲menuView類的一個實例,傳遞從上述函數拉取的參數> menuView class'構造函數使用來自循環的XML數據運行> switchUI()基於循環迭代的舞臺上的加載元素>循環再次運行 – ecarv141 2012-03-07 21:57:20

+0

請告訴我,如果這不是正確的事件順序。我還會看看你推薦的插件。 – ecarv141 2012-03-07 22:02:22

+0

使用「新建」的循環內部將創建一個對象的新實例,並將對象的引用加密,以使它具有2個對象,但是,在函數中,我不確定它將如何處理,可能一樣的方法。無論哪種方式,您仍然只保留對最後一次迭代的引用。就我個人而言,我會創建一個Menu類,它將是一個Singleton(用於您的一種模式)。讓Menu類加載將處理圖像的自定義類加載器的實例。與此關鍵字將封裝。 – 2012-03-07 22:37:43

-1

由於您的XML數據未格式化,我將無限期地從頭開始。

你的XML應該類似於這樣的東西。

<MainProject> 
<MainUI> 
    <Thumbnail Name="Spring"> 
     <Destination Name="Spring" Price="99" ratingPath="images/SP1/SP1rating.png" /> 
    </Thumbnail> 

    <Thumbnail Name="Winter"> 
     <Destination Name="Winter" Price="152" ratingPath="images/SP1/SP2rating.png" /> 
    </Thumbnail> 
</MainUI> 
</MainProject> 

然後,你應該在舞臺上有如下結構。這些影片剪輯應該是空的,並且已經放置在實例名稱的舞臺上。

Stage 
    MenuUI MovieClip 
     ThumbNail1 MovieClip <- feed it thumbnail from the XML 
     ThumbNail2 MovieClip <- feed it thumbnail from the XML 
     ThumbNail3 MovieClip <- feed it thumbnail from the XML 
     ThumbNail4 MovieClip <- feed it thumbnail from the XML 

這可能是有點太模糊,只是告訴我,如果你需要更多的細節。

希望這會有所幫助!

+0

對不起投票下來我看到的沒有錯,他的XML – 2012-03-07 20:48:42

+0

當然,他們沒有錯與你的XML不同的是,它的映射屬性作爲對象,反之亦然。投下你的唯一幫助。 – 2012-03-07 21:14:56

+0

我沒有投下任何東西......即使我想,我也不能,我太新了。 我試圖做到這一點,而不使用時間軸,庫,或直接在舞臺上放置任何movieclip。這一切都應該通過AS完成。我對AS和OOP也很陌生,所以我很抱歉,如果我不明白你的建議的額外效用,但我很感謝任何幫助! – ecarv141 2012-03-07 21:46:33