如何从另一个类访问公共数组/向量

时间:2014-02-20 21:40:46

标签: actionscript-3 flash-builder flash-cs5

我的Main类文件中有一个存储对象的向量。我希望能够从不同的类向该SAME向量添加更多对象。我在我的主类中给了向量“public”修饰符。我现在需要语法在我的其他类文件中引用它

public var badChar:Vector。;

1 个答案:

答案 0 :(得分:0)

你有选择。您如何处理它取决于您的项目设置和财产的需求。它是一个实例化的对象,还是应该只有一个(即使该类被多次实例化)?无论与舞台有任何关系,您是否需要直接访问它?以下每种解决方案都有利有弊。


通过舞台上的班级

假设以下主要foo.as类:

package {
    public class Foo {
        public var bool:Boolean = true;
    }
}

酒吧课程:

package {
    public class Bar extends Sprite {
        import flash.events.Event;

        public function Bar() {
            addEventListener(Event.ADDED_TO_STAGE, accessFoo);
        }

        private function accessFoo(e:Event):void {
            trace(this.parent["f"].bool); // traces "true"
        }
    }
}

文件代码:

var f:Foo = new Foo();
var b:Bar = new Bar();
addChild(b);

继承

Foo Class:

package {
    public class Foo {
        public var bool:Boolean = true;
    }
}

Bar Class

package {
    public class Bar extends Foo {
        public function Bar() {
            trace(bool); // traces "true"
        }
    }
}

通过静态的类到类

有些免责声明应该是为了Static属性,但我会留给您阅读。

Foo Class:

package {
    public class Foo {
        public static var bool:Boolean = true;
    }
}

Bar Class

package {
    public class Bar {
        public function Bar() {
            trace(Foo.bool); // traces "true"
        }
    }
}

通过新声明直接访问

Foo Class:

package {
    public class Foo {
        public var bool:Boolean = true;
    }
}

Bar Class

package {
    public class Bar {
        import Foo;

        public function Bar() {
            trace(new Foo().bool); // traces "true"
        }
    }
}

通过共享访问

Foo Class:

package {
    public class Foo {
        public var bool:Boolean = true;
    }
}

Bar Class

package {
    public class Bar {
        import Foo;
        public var fluffy:Foo;

        public function Bar() {
            trace(fluffy.bool);
        }
    }
}

文件代码:

var f:Foo = new Foo();
var b:Bar = new Bar();
b.fluffy = f;

请注意,在文档代码中的第三行之后,fluffy不再是未声明的变量,现在将指向f对象,其中的属性已更新(例如{{1} }})将反映在bool内部。