Как использовать функции из разных классов в Action Script 3 - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть 2 класса с именами Class1 и Class2.

Как бы я использовал функцию из Class1, в Class2?

Ответы [ 4 ]

2 голосов
/ 03 апреля 2012

Чтобы получить доступ к функции из класса, вам нужно создать ее экземпляр с помощью ключевого слова new (если функция не static). Этот экземпляр может быть создан в Class2:

public class Class2
{

    // The property holding your instance is defined here so you can access
    // it within any method of this class, as this is defined at class-level
    // rather than within a function (like the constructor).
    private var class1:Class1;


    /**
     * Class2's constructor.
     * (Called automatically when an instance of Class2 is created).
     */
    public function Class2()
    {
        // Create an instance of Class1 and assign it to the class-level
        // property "class1" (defined above).
        class1 = new Class1();

        // You can call methods of Class1 now, via class1.
        class1.someMethod();
    }

}
0 голосов
/ 03 апреля 2012

Вы можете вызвать function/property из Class2 из Class1, если этот function/property «виден» для Class1.Доступ к свойствам / методам класса контролируется определенным атрибутом, который может иметь следующие значения: internal (default),private,public,protected,... Проверить this .

Тогда, если он «видим», все, что вам нужно, этоиметь ссылку на класс (для доступа к static свойствам / методам) или к экземпляру класса (для доступа к non-static свойствам / методам).

0 голосов
/ 03 апреля 2012
// Main.as
package {

    public class Main() {
        public function Main() {
        }

        public function hello():void {
            trace("Hello from class Main"):
        }
    }
}

//Hi.as
package {
    public class Hi() {

        private var _main:Main;

        public function Hi() {
        }

        public function fromMain():void {
            _main = new Main();    //initialize an object of class Main()
            _main.hello();    //call methods
        }
    }
}
0 голосов
/ 03 апреля 2012

Есть много разных способов сделать это.

Вызов метода непосредственно в классе

Class1

class Class1{
     public function Class1(){
          var class2:Class2 = new Class2(); //create a new Class2 object
          class2.CallMe(); //call the CallMe function on Class2, note the . to indicate CallMe is a property of Class2
     }

 }

Class2

class Class2{
     public function Class2(){ //class 2 constructor. This is always called when you create a new Object()

     }

     public function CallMe():void{ //note this function is public
         trace("I'm class 2");
     }

 }

Передать ссылку на функцию из другого класса

Class1

class Class1{
     public function Class1(){
          var class2:Class2 = new Class2(this.CallBack); //create a new Class2 object
          //note I didn't add () to the end of CallBack, I just used the function name
     }

    private function CallBack(aString:String):void{ //note we can use private here
         trace(aString) //I'm from Class2
  }

 }

Class2

class Class2{
     public function Class2(aFunction:Function){ //class 2 constructor. Here we an accept the function
          aFunction("I'm from Class2"); //note I can pass a string back to class1
     }

 }

Вы также можете расширять классы и вызывать методы в суперклассе

Class1

class Class1 extends Class2{
     public function Class1(){
        super.CallFromClass(); //I'm super
     }

 }

Class2

class Class2{
     public function Class1(){

     }

    public function CallFromClass():void{
        trace("I'm super");
   }

 }

Посмотрите эту ссылку для дальнейшего чтения: http://www.adobe.com/devnet/actionscript/articles/oop_as3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...