【问题标题】:How to access a public array/vector from another class如何从另一个类访问公共数组/向量
【发布时间】:2014-03-22 03:04:34
【问题描述】:

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

public var badChar:Vector.;

【问题讨论】:

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


    【解决方案1】:

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


    通过舞台进行课堂到课堂

    假设以下主要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 类:

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

    酒吧类

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

    类到类通过静态

    一些免责声明应该适用于Static 属性,但我会让您阅读这些内容。

    Foo 类:

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

    酒吧类

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

    通过新声明直接访问

    Foo 类:

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

    酒吧类

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

    通过共享访问

    Foo 类:

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

    酒吧类

    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 对象,其中更新的属性(例如bool)将反映在里面Bar.

    【讨论】:

    • 像个魅力男一样工作。现在阅读更多关于静态修饰符的内容。谢谢您的帮助。非常感谢
    猜你喜欢
    • 2016-04-22
    • 2013-02-01
    • 1970-01-01
    • 2020-11-17
    • 2014-09-05
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多