2011-08-25 35 views
0

AS3的新手,長時間的程序員。本質上,我創建了無數的對象,所有這些對象都具有相同的功能,但屬性在每個對象(包括藝術品)之間會有所不同。我相信他們都將成爲影片剪輯,因爲他們將會互動,我相信他們將會移動。如何實例化具有相似/相同功能但屬性不同的對象?

我想知道什麼是創建這些對象的最佳方法。我假設我創建了一個具有功能和屬性的對象類,我只是不確定如何實例化具有不同屬性的多個副本,如果這是有道理的。

對不起,我可以幫忙詳細說明,如果有必要,並提前感謝您的幫助! :)

回答

3

創建一個班級。

package { 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip { 
    } 
} 

添加可能會有所不同的屬性。

package { 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip { 
     private var _borderColor : uint; 
     private var _artWork : DisplayObject; 
    } 
} 

增加修改屬性的可能性。你可以使用構造函數參數或明確的getter/setter,或者你可以聲明你的屬性是公開的。

package { 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip { 
     private var _borderColor : uint; 
     private var _artWork : DisplayObject; 

     // using constructor parameters 

     public function MyMovieClip(borderColor : uint, artWork : DisplayObject) { 
      _borderColor = borderColor; 
      _artWork = artWork; 
     } 

     // using setter/getter 

     public function set borderColor(borderColor : uint) : void { 
      _borderColor = borderColor; 
     } 

     public function get borderColor() : uint { 
      return _borderColor; 
     } 

     public function set artWork(artWork : DisplayObject) : void { 
      _artWork = artWork; 
     } 
     public function get artWork() : DisplayObject { 
      return _artWork; 
     } 

    } 
} 

創建類的實例,並使用不同的值設置它們:

package { 
    import flash.display.Shape; 
    import flash.display.Sprite; 

    public class Main extends Sprite { 
     public function Main() { 
      var myMc1 : MyMovieClip = new MyMovieClip(0xFF0000, new Shape()); 
      var myMc2 : MyMovieClip = new MyMovieClip(0x0000FF, new Shape()); 
      var myMc3 : MyMovieClip = new MyMovieClip(0x00FF00, new Shape()); 

      myMc1.borderColor = 0xFF0000; 
      myMc3.artWork = new Shape(); 
     } 
    } 
} 
+0

嗯我懶得打開這個編輯器這是一個更好的答案 – shaunhusain

+0

只是編輯器打開。 2分鐘的事情。 –

+0

延斯,謝謝你的時間!這絕對會讓我想要做的更清楚,但也讓我有更多的問題。 1.我如何/在哪裏定義應該用於實例的藝術作品/動畫片段? 2.如果我有50個對象,我會在哪裏存儲每個對象的數據?正在使用數據庫和AMF調用是否正確?再次感謝你! – PaleAilment

1

在AS3中,Object類在其修飾符中標記爲動態,隨後可以動態添加任何您想要的屬性。此外,類似地,您可以製作自己的類,並將其標記爲動態,然後爲其添加屬性,以便正確評估如何使用這些屬性,儘管可能不值得複雜化,但最好是使不同不同類型的對象的類。如果他們共享一些基本功能,那麼您可以先創建一個基類併爲每個特定類型的對象擴展它。

瞭解更多關於動態的關鍵字: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#dynamic

但是正如我所說以上,我認爲延長可能是一個更好的方法來實現你想要做什麼......而且我是一個大的倡導者使用Flex框架使AS3更容易,無論如何更多的OOP與AS3在這裏: http://www.adobe.com/devnet/actionscript/articles/oop_as3.html

讓我知道這是否有幫助,或者你正在尋找別的東西。

+0

值得一提的是,動態類和對象來創建更多的工作編譯器比定製類與定義的屬性和方法,所以應該謹慎使用,如果有的話。 – shanethehat

+0

感謝您的迴應! :) – PaleAilment

+0

@shaunhusain感謝感嘆。這個項目將成爲一個Facebook應用程序,是一個遊戲。我不太清楚你的狀態商店URLs到其他swfs的含義。我可以看到每個級別都是獨立的SWF。如果我將圖像/藝術作品存儲在數據庫中,我將如何將藝術品附加到對象實例? – PaleAilment

相關問題