Actionscript 3 在OOP AS3中共享变量
总的来说,我有以下几点:Actionscript 3 在OOP AS3中共享变量,actionscript-3,oop,scope,encapsulation,Actionscript 3,Oop,Scope,Encapsulation,总的来说,我有以下几点: package { import flash.display.MovieClip; public class Main extends MovieClip { public var damage:Number; public function Main() { // constructor code var char:Character = new Charact
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);
}
}
}
我需要能够与角色分享主要的伤害集。有什么方法可以使速度更全球化吗?为什么不将损坏作为角色的公共财产,然后通过主类轻松访问它,如下所示:
char.damage = 100;
trace (char.damage);
public static var damage:Number;
为此,只需将属性添加到角色类中,如下所示:
public class Character extends MovieClip {
public var damage:Number;
public function Character() {
trace(damage);
}
}
但鉴于你的评论,我认为你宁愿一切都是全球性的,到处都可以访问,而不是应用面向对象的概念
如果是的话。。。只需在主类中将其定义为公共静态,如下所示:
char.damage = 100;
trace (char.damage);
public static var damage:Number;
要在执行此操作的任何位置访问它:
Main.damage = 100;
trace(Main.damage);
还有另一种通过包发送值的方法(这种方法并不是真正共享变量,但对您可能有用)。这段代码的作用是类字符创建一个变量,该变量从主包中获取一个值: 更改字符。关于此:
package {
import flash.display.MovieClip;
public class Character extends MovieClip{
public function Character(a:int) {
//output will be the integer 10
trace(a);
}
}
}
主要内容如下:
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 char:Character=new Character(damage)
的值李>private var damage
角色
实例时将伤害值传递给构造函数。在创建实例后,当他想要利用伤害时,情况如何?构造函数完成后,a
不再存在,因为它是一个参数,不会存储在构造函数的属性中。还要记住,基本类型是作为值而不是引用传递的。因此,即使您将该值存储在属性中,如果在创建实例后损坏发生了变化,则字符
实例将只具有传递给构造函数的损坏初始值。真实故事。这种将值发送到另一个包的方式对于实时计算是没有用处的。