2013-10-06 172 views
1

在Main.as我有以下幾點:共享變量

package { 

    import flash.display.MovieClip; 

    public class Main extends MovieClip { 

     public var damage:Number; 

     public function Main() { 
      // constructor code 

      var char:Character = new Character(); 
      addChild(char); 
     } 
    } 
} 

而且我還有一個包稱爲Character.as

package { 

    import flash.display.MovieClip; 

    public class Character extends MovieClip{ 

     public function Character() { 
      trace(damage); 
     } 
    } 
} 

我需要能夠分擔傷害集與主角一樣。有什麼辦法讓速度更全球化嗎?

回答

2

你爲什麼不做出傷害你的角色的公共屬性,然後它會通過您的主類這樣的方便:

char.damage = 100; 
trace (char.damage); 

要做到這一點,僅僅是屬性添加到您的角色類像這樣:

public class Character extends MovieClip { 

    public var damage:Number; 

    public function Character() { 
     trace(damage); 
    } 
} 

但考慮您的意見,我想你寧願一切都只是是全球性的,併到處訪問,而不是應用OOP概念。

如果是這樣的...只是把它定義爲在主類中的公共靜態這樣的:

public static var damage:Number; 

和訪問它的任何地方你這樣做:

Main.damage = 100; 
trace(Main.damage); 
+0

我需要能夠通過其他類編輯它 – lededje

+1

因此,您的方法不是很OOP。使其成爲一個公共靜態變量。 – prototypical

+2

更新了我的答案。如果您想要使用面向對象編程,則應該退後一步並學習一些基本的面向對象編程概念/模式。 – prototypical

0

還有另一種方式通過包發送值(這種方式並不真正共享變量,但它可能對你有用)。這段代碼確實是類的角色創造一個變量,這個變量會從主包裝中的值:

更改character.as這樣:

package { 

import flash.display.MovieClip; 

public class Character extends MovieClip{ 

    public function Character(a:int) { 
     //output will be the integer 10 
       trace(a); 
    } 
} 
} 

和main.as到:

package { 

import flash.display.MovieClip; 

public class Main extends MovieClip { 

    private var damage:int = 10; 

    private var char:Character = new Character(damage); 

    public function Main() { 

    } 
} 
} 
  • 編輯:實時應用程序沒有什麼用處,因爲private var damage值將只對private var char:Character = new Character(damage)初始化時發送。
+1

這是行不通的,因爲你正在他的角色類中創建一個Main類的'新'實例,我假設它是他的文檔類。 – prototypical

+0

你說得對。在Charater包中聲明私有var _main:Main = New Main()不起作用。我現在更新了它。 – Julian

+1

你當前的代碼將允許他在創建'Character'實例時將損傷值傳遞給構造函數。如何在創建實例後想要利用損害?構造函數完成後,'a'不再存在,因爲它是一個參數,並且不會存儲在構造函數的屬性中。還要記住,原始類型是作爲值而不是引用傳遞的。所以即使你將這個值存儲在一個屬性中,如果在創建實例後損害發生了變化,'Character'實例只會具有傳遞給構造函數的初始損壞值。 – prototypical