【发布时间】:2015-08-21 20:36:48
【问题描述】:
我是 AS3 的新手。我有 2 个文件:
main.as:
package
{
import flash.display.*;
public class Main extends Sprite
{
public function Main()
{
var f0:Flower = new Flower("rose");
var f1:Flower = new Flower("daisy");
}
}
}
花.as:
package
{
public class Flower
{
public var namex:String;
public function Flower(name:String)
{
trace("Previous public var name: " + namex);
namex = name;
}
}
}
基本上,我的输出中有 2 个空值。第一个我明白为什么;当我第一次触发时
var f1:Flower = new Flower("rose");
它调用花的函数并要求跟踪尚未设置的var,因此我们得到一个null。在跟踪之后,它设置了 var
namex = name;
这是值字符串rose。但是,当我触发花雏菊时,我应该(在我看来)收到这条消息:“Previous public var: rose”,因为当我们触发玫瑰时,我们告诉他将 public var namex 设置为我们首先设置的值主要供应(玫瑰)。 那么为什么我得到 2 个 null 而不是 1 个 null,另一个不应该是“Previous public var: rose”;
另外一件事,我能清楚地解释一下是什么
var f1:Flower = new Flower("rose");
确实如此吗?它会创建一个对象吗?一个实例?还是只为flower.as中的函数提供一个值(玫瑰)?
【问题讨论】:
-
阅读 AS3 OOP 教程。这是基本的 OOP 东西。只有静态变量在类实例之间共享。您的 namex 变量未设置为静态...因此 Flower 类的每个实例都不同。
-
一旦在 main.as 中触发,这些实例是否会保存在某个地方?实例到底是什么?价值“上升”?正如我所说,我是初学者;这对我来说不是基本的。顺便说一句,我将 public var 设置为“public static var”,现在出现错误:null。
标签: actionscript-3 class var