2013-10-06 145 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