2012-06-18 55 views
1

所以我有两个类的A类B类AS3:从一个类到另一个的呼叫功能

我有希望在A类使用功能,但我的Flash FLA文件链接到B

所以我也做了以下内容:

A类 - 的功能

public function Fb_Checks() 
    { 
     // constructor code 
     load_top_bar(); 
    } 

B类 - 进口

import ClassA; 

然后,如果我尝试从B类中调用A类功能:

Fb_Checks(); 

我收到以下错误:

Call to a possibly undefined method Fb_Checks.

有更多的东西我应该做的事让这个工作?

回答

2

您需要了解更多关于OOP的信息。它如何工作,那么理解概念会更容易。

现在简单的解释:我们有ClassA的ClassB的ClassC

ClassA 
{ 
    var value:ClassB; 

    public function ClassA() 
    { 
     // each variable needs to initialize unless it is the ClassC, see below 
     // Only after that you will be able to reach the public properties 
     // of the class. 
     value = new ClassB(); 
     value.calculate(); 
    } 
} 

ClassB 
{ 
    var value:Number; 

    public function ClassB() 
    { 

    } 

    public function calculate():void 
    { 
     // these must be statis 
     ClassC.sum(150, 450); 
    } 
} 

ClassC 
{ 
    // if the function is static, then you can call it without initializing 
    // the class 
    static public function sum(value1:Number, value2:Number):Number 
    { 
     return value1 + value2; 
    } 
} 
1

您必须先创建ClassA的实例,然后才能调用其公共函数。

package 
{ 
    import ClassA; 

    public class ClassB 
    { 

     public function ClassB() 
     { 
      var instanceOfA:ClassA = new ClassA(); 

      instanceOfA.Fb_Checks(); 
     } 
    } 
} 

如果你想使它像你的例子一样工作,你应该用ClassA扩展你的ClassB。在这种情况下,它是公共的,受保护的功能也可以在ClassB中使用。

package 
{ 
    import ClassA; 

    public class ClassB extends ClassA 
    { 

     public function ClassB() 
     { 
      Fb_Checks(); 
     } 
    } 
} 
+0

所以我想它就像你的底例如,从ClassB的工作除了已经延伸“影片剪辑”和你不能扩展可以吗? –

+0

不可以,但是如果ClassA扩展了MovieClip,ClassB也会继承MovieClip –

+1

是的,您可以:'ClassA扩展MovieClip'和'ClassB扩展ClassA'。而'ClassB'将能够访问'ClassA'和'MovieClip'中的所有'public',''''''internal'函数。 –