2012-04-03 7 views
0

Ich habe 2 Klassen, mit den Namen Class1 und Class2. Wie würde ich eine Funktion von Class1 in Class2 verwenden?Wie verwendet man Funktionen aus verschiedenen Klassen in Action Script 3

+0

Mehr Code wäre hilfreich, versuchen Sie einfach, AS3 zu lernen? Wahrscheinlich möchten Sie, dass Klasse2 'Klasse1' erweitert, aber ich müsste mehr darüber verstehen, was sie wirklich tun. – zzzzBov

+0

Lol! Alter, lerne etwas OOP! Aber ich denke, du musst wissen, was OOP ist zuerst :))))) –

Antwort

0

Es gibt viele verschiedene Möglichkeiten, dies zu tun.

Anruf Verfahren direkt auf einer Klasse

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"); 
    } 

} 

eine ref von einer anderen Klasse an eine Funktion

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 
    } 

} 

Sie auch Klassen und Call-Methoden, die auf der Superklasse

Class1 verlängern

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"); 
    } 

} 

unter diesem Link Werfen Sie einen Blick für weitere r eading: http://www.adobe.com/devnet/actionscript/articles/oop_as3.html

2

Um eine Funktion aus einer Klasse zu nutzen, müssen Sie eine Instanz davon über das new Schlüsselwort erstellen (es sei denn, die Funktion static ist). Diese Instanz könnte innerhalb Class2 erstellt werden:

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
// 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

können Sie die function/property von Class2 von Class1 nennen, wenn das function/property 'sichtbar' für Class1 ist. Der Zugriff auf Eigenschaften/Methoden der Klasse wird durch ein bestimmtes Attribut gesteuert, das folgende Werte haben kann: internal (default),private,public,protected,... Überprüfen Sie this.

Dann, wenn es ‚sichtbar‘ ist, alles, was Sie brauchen, ist Bezug auf die Klasse haben (für den Zugriff static Eigenschaften/Methoden) oder Instanz der Klasse (für den Zugriff non-static Eigenschaften/Methoden).

Verwandte Themen